[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