[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