[jbosscache-commits] JBoss Cache SVN: r7266 - in pojo/trunk: src/main/java/org/jboss/cache/pojo/impl and 2 other directories.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Mon Dec 8 18:07:39 EST 2008
Author: jason.greene at jboss.com
Date: 2008-12-08 18:07:39 -0500 (Mon, 08 Dec 2008)
New Revision: 7266
Modified:
pojo/trunk/pom.xml
pojo/trunk/src/main/java/org/jboss/cache/pojo/impl/CachedType.java
pojo/trunk/src/main/java/org/jboss/cache/pojo/memory/FieldPersistentReference.java
pojo/trunk/src/main/java/org/jboss/cache/pojo/memory/MethodPersistentReference.java
pojo/trunk/src/main/java/org/jboss/cache/pojo/util/Instantiator.java
pojo/trunk/src/main/java/org/jboss/cache/pojo/util/PrivilegedCode.java
Log:
Use propper permissions
Modified: pojo/trunk/pom.xml
===================================================================
--- pojo/trunk/pom.xml 2008-12-08 18:59:07 UTC (rev 7265)
+++ pojo/trunk/pom.xml 2008-12-08 23:07:39 UTC (rev 7266)
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<properties>
<jbosscache-pojo-version>3.0.0.CR3</jbosscache-pojo-version>
- <jbosscache-core-version>3.0.0-SNAPSHOT</jbosscache-core-version>
+ <jbosscache-core-version>3.0.1.GA</jbosscache-core-version>
<jboss.aop.version>2.0.0.GA</jboss.aop.version>
</properties>
<parent>
Modified: pojo/trunk/src/main/java/org/jboss/cache/pojo/impl/CachedType.java
===================================================================
--- pojo/trunk/src/main/java/org/jboss/cache/pojo/impl/CachedType.java 2008-12-08 18:59:07 UTC (rev 7265)
+++ pojo/trunk/src/main/java/org/jboss/cache/pojo/impl/CachedType.java 2008-12-08 23:07:39 UTC (rev 7266)
@@ -8,14 +8,10 @@
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.WeakHashMap;
-import org.jboss.aop.Advisor;
-import org.jboss.aop.joinpoint.FieldInvocation;
import org.jboss.cache.pojo.memory.FieldPersistentReference;
import org.jboss.cache.pojo.memory.PersistentReference;
import org.jboss.cache.pojo.util.PrivilegedCode;
@@ -30,6 +26,8 @@
public class CachedType
{
+ private static PrivilegedCode priv = new PrivilegedCode();
+
// Types that are considered "primitive".
private static final Set<Object> immediates =
new HashSet<Object>(Arrays.asList(new Object[]{
@@ -97,7 +95,7 @@
{
return fields;
}
-
+
public List<FieldPersistentReference> getFinalFields()
{
return finalFields;
@@ -217,13 +215,13 @@
Field f = classFields[i];
if (isNonReplicable(f)) continue;
- PrivilegedCode.setAccessible(f);
+ priv.setAccessible(f);
FieldPersistentReference persistentRef = new FieldPersistentReference(f, PersistentReference.REFERENCE_SOFT);
fields.add(persistentRef);
fieldMap.put(f.getName(), persistentRef);
-
+
if (Modifier.isFinal(f.getModifiers()))
finalFields.add(persistentRef);
}
Modified: pojo/trunk/src/main/java/org/jboss/cache/pojo/memory/FieldPersistentReference.java
===================================================================
--- pojo/trunk/src/main/java/org/jboss/cache/pojo/memory/FieldPersistentReference.java 2008-12-08 18:59:07 UTC (rev 7265)
+++ pojo/trunk/src/main/java/org/jboss/cache/pojo/memory/FieldPersistentReference.java 2008-12-08 23:07:39 UTC (rev 7266)
@@ -33,6 +33,7 @@
*/
public class FieldPersistentReference extends PersistentReference
{
+ private static PrivilegedCode priv = new PrivilegedCode();
private String name;
@@ -50,7 +51,7 @@
if ((returnValue = internalGet()) != null) return returnValue;
Field field = getMappedClass().getDeclaredField(name);
- PrivilegedCode.setAccessible(field);
+ priv.setAccessible(field);
buildReference(field);
return field;
}
Modified: pojo/trunk/src/main/java/org/jboss/cache/pojo/memory/MethodPersistentReference.java
===================================================================
--- pojo/trunk/src/main/java/org/jboss/cache/pojo/memory/MethodPersistentReference.java 2008-12-08 18:59:07 UTC (rev 7265)
+++ pojo/trunk/src/main/java/org/jboss/cache/pojo/memory/MethodPersistentReference.java 2008-12-08 23:07:39 UTC (rev 7266)
@@ -32,6 +32,8 @@
*/
public class MethodPersistentReference extends ArgumentPersistentReference
{
+ private static PrivilegedCode priv = new PrivilegedCode();
+
public MethodPersistentReference(Method method, int referenceType)
{
super(method != null ? method.getDeclaringClass() : null, method, referenceType);
@@ -52,7 +54,7 @@
if ((returnValue = internalGet()) != null) return returnValue;
Method aMethod = getMappedClass().getDeclaredMethod(name, getArguments());
- PrivilegedCode.setAccessible(aMethod);
+ priv.setAccessible(aMethod);
buildReference(aMethod);
return aMethod;
}
Modified: pojo/trunk/src/main/java/org/jboss/cache/pojo/util/Instantiator.java
===================================================================
--- pojo/trunk/src/main/java/org/jboss/cache/pojo/util/Instantiator.java 2008-12-08 18:59:07 UTC (rev 7265)
+++ pojo/trunk/src/main/java/org/jboss/cache/pojo/util/Instantiator.java 2008-12-08 23:07:39 UTC (rev 7266)
@@ -8,12 +8,14 @@
public class Instantiator
{
+ private static PrivilegedCode priv = new PrivilegedCode();
+
private static abstract class Allocator
{
public Object allocate(Class<?> c) throws Exception
{
Constructor<?> constructor = c.getDeclaredConstructor();
- PrivilegedCode.setAccessible(constructor);
+ priv.setAccessible(constructor);
return constructor.newInstance();
}
}
@@ -47,7 +49,7 @@
{
final Class<?> clazz = Class.forName("sun.misc.Unsafe");
final Field field = clazz.getDeclaredField("theUnsafe");
- PrivilegedCode.setAccessible(field);
+ priv.setAccessible(field);
final Object object = field.get(null);
final Method method = clazz.getMethod("allocateInstance", Class.class);
Modified: pojo/trunk/src/main/java/org/jboss/cache/pojo/util/PrivilegedCode.java
===================================================================
--- pojo/trunk/src/main/java/org/jboss/cache/pojo/util/PrivilegedCode.java 2008-12-08 18:59:07 UTC (rev 7265)
+++ pojo/trunk/src/main/java/org/jboss/cache/pojo/util/PrivilegedCode.java 2008-12-08 23:07:39 UTC (rev 7266)
@@ -1,6 +1,7 @@
package org.jboss.cache.pojo.util;
import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.ReflectPermission;
import java.security.AccessController;
import java.security.PrivilegedAction;
@@ -9,10 +10,19 @@
*
* @author Jason T. Greene
*/
-public class PrivilegedCode
+public final class PrivilegedCode
{
- public static void setAccessible(final AccessibleObject object)
+ private static final java.security.Permission ACCESS = new ReflectPermission("suppressAccessChecks");
+
+ public PrivilegedCode()
{
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null)
+ sm.checkPermission(ACCESS);
+ }
+
+ public void setAccessible(final AccessibleObject object)
+ {
if (object.isAccessible())
return;
More information about the jbosscache-commits
mailing list