[jboss-svn-commits] JBL Code SVN: r7646 - labs/jbossrules/trunk/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:24:01 EST 2006


Author: tirelli
Date: 2006-11-16 10:23:58 -0500 (Thu, 16 Nov 2006)
New Revision: 7646

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

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java	2006-11-16 15:19:33 UTC (rev 7645)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java	2006-11-16 15:23:58 UTC (rev 7646)
@@ -17,6 +17,9 @@
  */
 
 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;
@@ -48,6 +51,16 @@
 
     private static final String BASE_PACKAGE = "org/drools/base";
 
+    private static final ProtectionDomain PROTECTION_DOMAIN;
+
+    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 {
@@ -66,7 +79,8 @@
             final ByteArrayClassLoader classLoader = new ByteArrayClassLoader( Thread.currentThread().getContextClassLoader() );
             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 );
@@ -324,11 +338,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