[jboss-cvs] JBossAS SVN: r69389 - in projects/aop/trunk/aop/src: test/org/jboss/test/aop/proxy and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jan 28 10:43:08 EST 2008


Author: kabir.khan at jboss.com
Date: 2008-01-28 10:43:08 -0500 (Mon, 28 Jan 2008)
New Revision: 69389

Modified:
   projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/proxy/AnnotatedPOJO.java
Log:
[JBAOP-519] Don't add methods implemented by both the ContainerProxyFactory.createBasics() and by the proxied class

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	2008-01-28 15:38:46 UTC (rev 69388)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/proxy/container/ContainerProxyFactory.java	2008-01-28 15:43:08 UTC (rev 69389)
@@ -60,6 +60,7 @@
 import org.jboss.aop.instrument.TransformerCommon;
 import org.jboss.aop.introduction.InterfaceIntroduction;
 import org.jboss.aop.util.JavassistMethodHashing;
+import org.jboss.aop.util.MethodHashing;
 
 
 /**
@@ -101,6 +102,9 @@
    ProxyStrategy proxyStrategy;
    
    private CtConstructor defaultCtor;
+
+   /** Methods hardcoded in createBasics */
+   private HashSet<Long> hardcodedMethods = new HashSet<Long>();
    
    public static Class getProxyClass(Class clazz, AspectManager manager) throws Exception
    {
@@ -281,7 +285,7 @@
 
       copyAnnotations(superclass, proxy);
       copySignature(superclass, proxy);
-      
+
       return proxy;
    }
    
@@ -430,6 +434,7 @@
       CtMethod method = CtNewMethod.make(templateMethod.getReturnType(), name, templateMethod.getParameterTypes(), templateMethod.getExceptionTypes(), body, proxy);
       method.setModifiers(templateMethod.getModifiers());
       proxy.addMethod(method);
+      hardcodedMethods.add(JavassistMethodHashing.methodHash(method));
       return method;
    }
    
@@ -615,6 +620,8 @@
 
          Long hash = (Long) entry.getKey();
          if (addedMethods.contains(hash)) continue;
+         if (hardcodedMethods.contains(hash)) continue;
+         
          addedMethods.add(hash);
          String aopReturnStr = (m.getReturnType().equals(CtClass.voidType)) ? "" : "return ($r)";
          String returnStr = (m.getReturnType().equals(CtClass.voidType)) ? "" : "return ";

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/proxy/AnnotatedPOJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/proxy/AnnotatedPOJO.java	2008-01-28 15:38:46 UTC (rev 69388)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/proxy/AnnotatedPOJO.java	2008-01-28 15:43:08 UTC (rev 69389)
@@ -42,4 +42,9 @@
    {
       return x;
    }
+   
+   public String toString()
+   {
+      return "TEST";
+   }
 }




More information about the jboss-cvs-commits mailing list