[jboss-cvs] JBossAS SVN: r103261 - projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Mar 30 09:55:46 EDT 2010


Author: kabir.khan at jboss.com
Date: 2010-03-30 09:55:45 -0400 (Tue, 30 Mar 2010)
New Revision: 103261

Modified:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMemberFactory.java
Log:
[JBREFLECT-109] Use privileged block when generating the classes

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMemberFactory.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMemberFactory.java	2010-03-30 13:51:19 UTC (rev 103260)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/bytecode/JavassistMemberFactory.java	2010-03-30 13:55:45 UTC (rev 103261)
@@ -25,6 +25,9 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.lang.reflect.Constructor;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import javassist.CannotCompileException;
@@ -260,7 +263,7 @@
       try
       {
          //Create a new public class
-         ClassFile cf = new ClassFile(false, getGeneratedClassName(), superClass.getName());
+         final ClassFile cf = new ClassFile(false, getGeneratedClassName(), superClass.getName());
          cf.setAccessFlags(AccessFlag.PUBLIC);
          cf.setInterfaces(getInterfaceNames());
 
@@ -274,9 +277,27 @@
             debugWriteFile(cf);
 
 
-         ClassLoader cl = target.getClassPool().getClassLoader();
-         return FactoryHelper.toClass(cf, cl);
+         final ClassLoader cl = target.getClassPool().getClassLoader();
+         
+         return AccessController.doPrivileged(new PrivilegedExceptionAction<Class<T>>()
+         {
+            public Class<T> run() throws Exception
+            {
+               return FactoryHelper.toClass(cf, cl);
+            }
+         });
+         
       }
+      catch(RuntimeException e)
+      {
+         throw e;
+      }
+      catch (PrivilegedActionException e)
+      {
+         if (e.getCause() instanceof RuntimeException)
+            throw (RuntimeException)e.getCause();
+         throw new RuntimeException(e.getCause());
+      }
       catch (Exception e)
       {
          throw new RuntimeException(e);




More information about the jboss-cvs-commits mailing list