[jboss-svn-commits] JBL Code SVN: r7643 - labs/jbossrules/branches/3.0.x/drools-core/src/main/java/org/drools/base

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Nov 16 10:16:27 EST 2006


Author: tirelli
Date: 2006-11-16 10:16:24 -0500 (Thu, 16 Nov 2006)
New Revision: 7643

Modified:
   labs/jbossrules/branches/3.0.x/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
Log:
JBRULES-562: Setting the protection domain when creating field accessors

Modified: labs/jbossrules/branches/3.0.x/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java	2006-11-16 14:12:57 UTC (rev 7642)
+++ labs/jbossrules/branches/3.0.x/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java	2006-11-16 15:16:24 UTC (rev 7643)
@@ -18,6 +18,9 @@
 
 import java.beans.IntrospectionException;
 import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
 
 import org.drools.RuntimeDroolsException;
 import org.drools.asm.ClassWriter;
@@ -37,15 +40,21 @@
 
 public class ClassFieldExtractorFactory {
 
-    private static final String GETTER         = "get";
-
-    private static final String BOOLEAN_GETTER = "is";
-
     private static final String BASE_PACKAGE   = "org/drools/base";
 
     private static final String BASE_EXTRACTOR = "org/drools/base/BaseClassFieldExtractor";
+    
+    private static final ProtectionDomain PROTECTION_DOMAIN;
 
-    public static BaseClassFieldExtractor getClassFieldExtractor(final Class clazz,
+    static {
+            PROTECTION_DOMAIN = (ProtectionDomain) AccessController.doPrivileged( new PrivilegedAction() {
+                public Object run() {
+                    return ClassFieldExtractorFactory.class.getProtectionDomain();
+                }
+            } );
+    }
+
+        public static BaseClassFieldExtractor getClassFieldExtractor(final Class clazz,
                                                                  final String fieldName) {
         try {
             final ClassFieldInspector inspector = new ClassFieldInspector( clazz );
@@ -70,7 +79,8 @@
             final ByteArrayClassLoader classLoader = new ByteArrayClassLoader( parent );
             final Class newClass = classLoader.defineClass( className.replace( '/',
                                                                                '.' ),
-                                                            bytes );
+                                                            bytes,
+                                                            PROTECTION_DOMAIN);
             // instantiating target class
             final Object[] params = {clazz, fieldName};
             return (BaseClassFieldExtractor) newClass.getConstructors()[0].newInstance( params );
@@ -352,11 +362,13 @@
         }
 
         public Class defineClass(final String name,
-                                 final byte[] bytes) {
+                                 final byte[] bytes,
+                                 ProtectionDomain domain) {
             return defineClass( name,
                                 bytes,
                                 0,
-                                bytes.length );
+                                bytes.length,
+                                domain);
         }
     }
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list