[jboss-cvs] JBossAS SVN: r69877 - projects/aop/trunk/aop/src/main/org/jboss/aop/instrument.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Feb 18 07:29:32 EST 2008
Author: stalep
Date: 2008-02-18 07:29:32 -0500 (Mon, 18 Feb 2008)
New Revision: 69877
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/Instrumentor.java
Log:
[JBAOP-528] Added a check that removes existing _getAdvisor() methods before it get transformed.
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/Instrumentor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/Instrumentor.java 2008-02-18 06:40:44 UTC (rev 69876)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/Instrumentor.java 2008-02-18 12:29:32 UTC (rev 69877)
@@ -170,6 +170,28 @@
}
return false;
}
+
+ public boolean isProxyObject(CtClass clazz) throws NotFoundException
+ {
+ CtClass[] interfaces = clazz.getInterfaces();
+ CtClass proxyObject = forName("javassist.util.proxy.ProxyObject");
+ for (int i = 0; i < interfaces.length; i++)
+ {
+ if (interfaces[i].equals(proxyObject)) return true;
+ if (interfaces[i].getName().equals("javassist.util.proxy.ProxyObject")) return true;
+ }
+ return false;
+ }
+
+ public void prepareClassForTransformation(CtClass clazz) throws NotFoundException
+ {
+ CtMethod[] methods = clazz.getDeclaredMethods();
+ for(int i=0; i < methods.length;i++)
+ {
+ if(methods[i].getName().equals("_getAdvisor"))
+ clazz.removeMethod(methods[i]);
+ }
+ }
public static boolean implementsAdvised(CtClass clazz) throws NotFoundException
{
@@ -688,6 +710,7 @@
clazz.isArray() ||
clazz.getName().startsWith("org.jboss.aop") ||
isAdvised(clazz) ||
+// isProxyObject(clazz) ||
!isTransformable(clazz));
}
@@ -700,6 +723,7 @@
try
{
if (shouldNotTransform(clazz)) return false;
+ prepareClassForTransformation(clazz);
if (AspectManager.verbose && logger.isDebugEnabled()) logger.debug("trying to transform " + clazz.getName());
DeclareChecker.checkDeclares(manager, clazz, advisor);
More information about the jboss-cvs-commits
mailing list