[jboss-cvs] JBossAS SVN: r60872 - in projects/aop/trunk/aop/src/main/org/jboss/aop: instrument and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Feb 24 11:44:39 EST 2007


Author: scott.stark at jboss.org
Date: 2007-02-24 11:44:39 -0500 (Sat, 24 Feb 2007)
New Revision: 60872

Modified:
   projects/aop/trunk/aop/src/main/org/jboss/aop/advice/PerVmAdvice.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/TransformerCommon.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/ProxyFactory.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java
Log:
JBAOP-368, update toClass class to always include a ProtectionDomain

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/PerVmAdvice.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/PerVmAdvice.java	2007-02-24 14:11:19 UTC (rev 60871)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/PerVmAdvice.java	2007-02-24 16:44:39 UTC (rev 60872)
@@ -23,6 +23,7 @@
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.security.ProtectionDomain;
 import java.util.ArrayList;
 
 import javassist.CannotCompileException;
@@ -185,7 +186,8 @@
             invoke.setModifiers(javassist.Modifier.PUBLIC);
             clazz.addMethod(invoke);
 
-            iclass = TransformerCommon.toClass(clazz, cl);
+            ProtectionDomain pd = aspect.getClass().getProtectionDomain();
+            iclass = TransformerCommon.toClass(clazz, cl, pd);
          }
       }
       Interceptor rtn = (Interceptor) iclass.newInstance();
@@ -261,7 +263,8 @@
       }
       invoke.setModifiers(javassist.Modifier.PUBLIC);
       clazz.addMethod(invoke);
-      Class iclass = TransformerCommon.toClass(clazz);
+      ProtectionDomain pd = aspect.getClass().getProtectionDomain();
+      Class iclass = TransformerCommon.toClass(clazz, pd);
 
       Interceptor rtn = (Interceptor) iclass.newInstance();
       Field f = iclass.getField("aspectField");

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java	2007-02-24 14:11:19 UTC (rev 60871)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java	2007-02-24 16:44:39 UTC (rev 60872)
@@ -26,6 +26,7 @@
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
+import java.security.ProtectionDomain;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -391,7 +392,8 @@
          ClassPool pool = manager.findClassPool(classloader);
          GeneratedClassInfo generatedClass = generateJoinpointClass(pool, info);
          
-         Class clazz = toClass(pool, generatedClass.getGenerated());
+         ProtectionDomain pd = advisorClass.getProtectionDomain();
+         Class clazz = toClass(pool, generatedClass.getGenerated(), pd);
          Object obj = instantiateClass(clazz, generatedClass.getAroundSetups());
          
          joinpointField.set(advisor, obj);
@@ -406,9 +408,9 @@
       initialised = true;
    }
 
-   private Class toClass(ClassPool pool, CtClass ctclass) throws NotFoundException, CannotCompileException, ClassNotFoundException
+   private Class toClass(ClassPool pool, CtClass ctclass, ProtectionDomain pd) throws NotFoundException, CannotCompileException, ClassNotFoundException
    {
-      return TransformerCommon.toClass(ctclass);
+      return TransformerCommon.toClass(ctclass, pd);
    }
    
    private Object instantiateClass(Class clazz, AdviceSetup[] aroundSetups) throws Exception

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/TransformerCommon.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/TransformerCommon.java	2007-02-24 14:11:19 UTC (rev 60871)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/TransformerCommon.java	2007-02-24 16:44:39 UTC (rev 60872)
@@ -30,6 +30,7 @@
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
+import java.security.ProtectionDomain;
 
 import org.jboss.aop.AspectManager;
 import org.jboss.aop.classpool.AOPClassPool;
@@ -99,11 +100,11 @@
             // if load time
             if (System.getSecurityManager() == null)
             {
-               ToClassAction.NON_PRIVILEGED.toClass(newClass, null);
+               ToClassAction.NON_PRIVILEGED.toClass(newClass, null, null);
             }
             else
             {
-               ToClassAction.PRIVILEGED.toClass(newClass, null);
+               ToClassAction.PRIVILEGED.toClass(newClass, null, null);
             }
          }
 
@@ -118,31 +119,32 @@
       }
    }
 
-   public static Class toClass(CtClass newClass) throws CannotCompileException
+   public static Class toClass(CtClass newClass, ProtectionDomain pd) throws CannotCompileException
    {
       registerGeneratedClass(newClass);
 
       if (System.getSecurityManager() == null)
       {
-         return ToClassAction.NON_PRIVILEGED.toClass(newClass, null);
+         return ToClassAction.NON_PRIVILEGED.toClass(newClass, null, pd);
       }
       else
       {
-         return ToClassAction.PRIVILEGED.toClass(newClass, null);
+         return ToClassAction.PRIVILEGED.toClass(newClass, null, pd);
       }
    }
 
-   public static Class toClass(CtClass newClass, ClassLoader loader) throws CannotCompileException
+   public static Class toClass(CtClass newClass, ClassLoader loader, ProtectionDomain pd)
+      throws CannotCompileException
    {
       registerGeneratedClass(newClass);
 
       if (System.getSecurityManager() == null)
       {
-         return ToClassAction.NON_PRIVILEGED.toClass(newClass, loader);
+         return ToClassAction.NON_PRIVILEGED.toClass(newClass, loader, pd);
       }
       else
       {
-         return ToClassAction.PRIVILEGED.toClass(newClass, loader);
+         return ToClassAction.PRIVILEGED.toClass(newClass, loader, pd);
       }
    }
 
@@ -245,11 +247,13 @@
 
    private interface ToClassAction
    {
-      Class toClass(CtClass clazz, ClassLoader loader) throws CannotCompileException;
+      Class toClass(CtClass clazz, ClassLoader loader, ProtectionDomain pd)
+         throws CannotCompileException;
 
       ToClassAction PRIVILEGED = new ToClassAction()
       {
-         public Class toClass(final CtClass clazz, final ClassLoader loader)  throws CannotCompileException
+         public Class toClass(final CtClass clazz, final ClassLoader loader, final ProtectionDomain pd)
+            throws CannotCompileException
          {
             try
             {
@@ -261,11 +265,7 @@
                      {
                         clazz.debugWriteFile();
                      }
-                     if (loader != null)
-                     {
-                        return clazz.toClass(loader, null);
-                     }
-                     return clazz.toClass();
+                     return clazz.toClass(loader, pd);
                   }
                });
             }
@@ -283,17 +283,14 @@
 
       ToClassAction NON_PRIVILEGED = new ToClassAction()
       {
-         public Class toClass(CtClass clazz, ClassLoader loader) throws CannotCompileException
+         public Class toClass(CtClass clazz, ClassLoader loader, ProtectionDomain pd)
+            throws CannotCompileException
          {
             if (AspectManager.debugClasses)
             {
                clazz.debugWriteFile();
             }
-            if (loader != null)
-            {
-               return clazz.toClass(loader, null);
-            }
-            return clazz.toClass();
+            return clazz.toClass(loader, pd);
          }
       };
    }

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java	2007-02-24 14:11:19 UTC (rev 60871)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/ClassProxyFactory.java	2007-02-24 16:44:39 UTC (rev 60872)
@@ -24,6 +24,7 @@
 import java.lang.ref.WeakReference;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.security.ProtectionDomain;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -309,7 +310,8 @@
    private static Class generateProxy(Class clazz, ProxyMixin[] mixins) throws Exception
    {
       CtClass proxy = createProxyCtClass(mixins, clazz);
-      Class proxyClass = TransformerCommon.toClass(proxy);
+      ProtectionDomain pd = clazz.getProtectionDomain();
+      Class proxyClass = TransformerCommon.toClass(proxy, pd);
       Map methodmap = ClassProxyFactory.getMethodMap(proxyClass); 
       Field field = proxyClass.getDeclaredField("methodMap");
       SecurityActions.setAccessible(field);

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/ProxyFactory.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/ProxyFactory.java	2007-02-24 14:11:19 UTC (rev 60871)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/ProxyFactory.java	2007-02-24 16:44:39 UTC (rev 60872)
@@ -36,6 +36,7 @@
 import org.jboss.util.id.GUID;
 
 import java.lang.reflect.Field;
+import java.security.ProtectionDomain;
 import java.util.HashSet;
 import java.util.Map;
 
@@ -112,8 +113,14 @@
    throws Exception
    {
       CtClass proxy = createProxyCtClass(loader, mixins, interfaces);
-
-      Class clazz = TransformerCommon.toClass(proxy, loader);
+      // Choose the first non-null ProtectionDomain
+      int length = interfaces != null ? interfaces.length: 0;
+      ProtectionDomain pd = null;
+      for(int n = 0; n < interfaces.length && pd == null; n ++)
+      {
+        pd = interfaces[n].getProtectionDomain(); 
+      }
+      Class clazz = TransformerCommon.toClass(proxy, loader, pd);
       Map methodmap = ClassProxyFactory.getMethodMap(clazz);
       Field field = clazz.getDeclaredField("methodMap");
       SecurityActions.setAccessible(field);

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java	2007-02-24 14:11:19 UTC (rev 60871)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java	2007-02-24 16:44:39 UTC (rev 60872)
@@ -22,6 +22,7 @@
 package org.jboss.aop.proxy.container;
 
 import java.lang.reflect.Method;
+import java.security.ProtectionDomain;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -135,8 +136,8 @@
    {
       ArrayList introductions = advisor.getInterfaceIntroductions();
       CtClass proxy = createProxyCtClass(objectAsSuper, introductions, clazz, advisor);
-      
-      Class proxyClass = TransformerCommon.toClass(proxy);
+      ProtectionDomain pd = clazz.getProtectionDomain();
+      Class proxyClass = TransformerCommon.toClass(proxy, pd);
       return proxyClass;
    }
 




More information about the jboss-cvs-commits mailing list