[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