[jboss-cvs] JBossAS SVN: r110532 - projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 4 09:35:00 EST 2011


Author: alesj
Date: 2011-02-04 09:35:00 -0500 (Fri, 04 Feb 2011)
New Revision: 110532

Modified:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/MemberAccessorFactory.java
Log:
Simple refactoring, and SM usage.


Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/MemberAccessorFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/MemberAccessorFactory.java	2011-02-04 14:32:44 UTC (rev 110531)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/accessor/MemberAccessorFactory.java	2011-02-04 14:35:00 UTC (rev 110532)
@@ -25,6 +25,7 @@
 import java.io.File;
 import java.io.FileReader;
 import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 import java.util.HashSet;
@@ -35,6 +36,7 @@
 import org.jboss.reflect.plugins.accessor.reflect.ReflectAccessorFactory;
 import org.jboss.reflect.spi.ConstructorInfo;
 import org.jboss.reflect.spi.FieldInfo;
+import org.jboss.reflect.spi.MemberInfo;
 import org.jboss.reflect.spi.MethodInfo;
 
 /**
@@ -68,7 +70,6 @@
    {
       FORCE_GENERATE = new CopyOnWriteArraySet<String>(initForceGenerate(MemberAccessorFactory.class.getName() + ".file")); 
    }
-   
 
    public void addForceGenerate(String s)
    {
@@ -88,7 +89,7 @@
          {
             public Set<String> run() throws Exception
             {
-               String generateFile = System.getProperty(MemberAccessorFactory.class.getName() + ".file", null);
+               String generateFile = System.getProperty(name, null);
                Set<String> forceGenerate = new HashSet<String>();
                if (generateFile != null)
                {
@@ -132,8 +133,6 @@
       }
    }
 
-   
-   
    /**
     * Create a new JavassistReflectionFactory.
     * 
@@ -156,11 +155,9 @@
     */
    public MethodAccessor createMethod(MethodInfo info, String sig, SignatureKey key) throws Throwable
    {
-      MethodAccessor method = generateAccessor(sig) ?
-            GeneratedMemberAccessorFactory.generateMethodAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, info.getDeclaringClass().getClassLoader(), info, sig, key) :
+      return generateAccessor(sig) ?
+            GeneratedMemberAccessorFactory.generateMethodAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, getClassLoader(info), info, sig, key) :
                ReflectAccessorFactory.createMethodAccessor(info);
-      
-      return method;
    }
    
    /**
@@ -174,11 +171,9 @@
     */
    public ConstructorAccessor createConstructor(ConstructorInfo info, String sig, SignatureKey key) throws Throwable
    {
-      ConstructorAccessor ctor = generateAccessor(sig) ?
-            GeneratedMemberAccessorFactory.generateConstructorAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, info.getDeclaringClass().getClassLoader(), info, sig, key) :
+      return generateAccessor(sig) ?
+            GeneratedMemberAccessorFactory.generateConstructorAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, getClassLoader(info), info, sig, key) :
                ReflectAccessorFactory.createConstructorAccessor(info);
-            
-      return ctor;
    }
    
    /**
@@ -191,17 +186,28 @@
     */
    public FieldAccessor createField(FieldInfo info, String sig) throws Throwable
    {
-      FieldAccessor field = generateAccessor(sig) ?
-            GeneratedMemberAccessorFactory.generateFieldAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, info.getDeclaringClass().getClassLoader(), info, sig) :
+      return generateAccessor(sig) ?
+            GeneratedMemberAccessorFactory.generateFieldAccessor(GeneratedMemberAccessorFactory.MAGIC_ACCESSOR_IMPL, getClassLoader(info), info, sig) :
                ReflectAccessorFactory.createFieldAccessor(info);
-            
-      return field;
    }
-   
+
    private boolean generateAccessor(String signature)
    {
-      if (FORCE_GENERATE.isEmpty())
-         return true;
-      return FORCE_GENERATE.contains(signature);
+      return FORCE_GENERATE.isEmpty() || FORCE_GENERATE.contains(signature);
    }
+
+   private ClassLoader getClassLoader(final MemberInfo mi)
+   {
+      SecurityManager sm = System.getSecurityManager();
+      if (sm != null)
+         return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+         {
+            public ClassLoader run()
+            {
+               return mi.getDeclaringClass().getClassLoader();
+            }
+         });
+      else
+         return mi.getDeclaringClass().getClassLoader();
+   }
 }



More information about the jboss-cvs-commits mailing list