[jboss-cvs] JBossAS SVN: r63952 - projects/aop/trunk/aop/src/main/org/jboss/aop/instrument.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jul 10 14:03:41 EDT 2007


Author: kabir.khan at jboss.com
Date: 2007-07-10 14:03:40 -0400 (Tue, 10 Jul 2007)
New Revision: 63952

Modified:
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorMethodExecutionTransformer.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodExecutionTransformer.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedMethodExecutionTransformer.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/OptimizedMethodExecutionTransformer.java
Log:
Copy across Signature attribute for method wrappers so that we can use generics

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorMethodExecutionTransformer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorMethodExecutionTransformer.java	2007-07-10 17:49:11 UTC (rev 63951)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorMethodExecutionTransformer.java	2007-07-10 18:03:40 UTC (rev 63952)
@@ -120,14 +120,14 @@
             clazz);
       clazz.addMethod(original);
       long hash = JavassistMethodHashing.methodHash(original);
-      moveAnnotations(mixinMethod, original);
+      moveAnnotationsAndCopySignature(mixinMethod, original);
 
       String wrappedName = ClassAdvisor.notAdvisedMethodName(clazz.getName(), originalName);
       CtMethod wmethod = CtNewMethod.copy(original, clazz, null);
 
       wmethod.setName(wrappedName);
       clazz.addMethod(wmethod);
-      moveAnnotations(original, wmethod);
+      moveAnnotationsAndCopySignature(original, wmethod);
 
       original.setName(wrappedName);
       wmethod.setName(originalName);
@@ -160,7 +160,7 @@
       String originalName = trans.getOriginalName();
       wmethod.setName(wrappedName);
       trans.getClazz().addMethod(wmethod);
-      moveAnnotations(trans.getMethod(), wmethod);
+      moveAnnotationsAndCopySignature(trans.getMethod(), wmethod);
       trans.getMethod().setName(wrappedName);
       wmethod.setName(originalName);
 

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodExecutionTransformer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodExecutionTransformer.java	2007-07-10 17:49:11 UTC (rev 63951)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodExecutionTransformer.java	2007-07-10 18:03:40 UTC (rev 63952)
@@ -35,6 +35,7 @@
 import javassist.bytecode.AnnotationsAttribute;
 import javassist.bytecode.MethodInfo;
 import javassist.bytecode.ParameterAnnotationsAttribute;
+import javassist.bytecode.SignatureAttribute;
 import javassist.bytecode.annotation.Annotation;
 
 import org.jboss.aop.ClassAdvisor;
@@ -230,7 +231,7 @@
       }
    }
 
-   protected void moveAnnotations(CtMethod src, CtMethod dest) throws NotFoundException
+   protected void moveAnnotationsAndCopySignature(CtMethod src, CtMethod dest) throws NotFoundException
    {
       MethodInfo mi = src.getMethodInfo2();
       MethodInfo wmi = dest.getMethodInfo2();
@@ -240,6 +241,7 @@
       int numParams = src.getParameterTypes().length;
       moveParameterAnnotations(numParams, mi, wmi, ParameterAnnotationsAttribute.visibleTag);
       moveParameterAnnotations(numParams, mi, wmi, ParameterAnnotationsAttribute.invisibleTag);
+      copySignature(mi, wmi);
    }
 
    private void moveAnnotations(MethodInfo src, MethodInfo dest, String annotationTag)
@@ -269,6 +271,15 @@
       }
    }
 
+   private void copySignature(MethodInfo src, MethodInfo dest)
+   {
+      SignatureAttribute attribute = (SignatureAttribute) src.getAttribute(SignatureAttribute.tag);
+      if (attribute != null)
+      {
+         dest.addAttribute(attribute.copy(dest.getConstPool(), new HashMap()));
+      }
+   }
+   
    protected static String getAopReturnStr(CtMethod method)throws NotFoundException
    {
       return getAopReturnStr(method.getReturnType().equals(CtClass.voidType));

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedMethodExecutionTransformer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedMethodExecutionTransformer.java	2007-07-10 17:49:11 UTC (rev 63951)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedMethodExecutionTransformer.java	2007-07-10 18:03:40 UTC (rev 63952)
@@ -53,7 +53,7 @@
       String originalName = trans.getOriginalName();
       wmethod.setName(wrappedName);
       trans.getClazz().addMethod(wmethod);
-      moveAnnotations(trans.getMethod(), wmethod);
+      moveAnnotationsAndCopySignature(trans.getMethod(), wmethod);
       trans.getMethod().setName(wrappedName);
       wmethod.setName(originalName);
       

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/OptimizedMethodExecutionTransformer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/OptimizedMethodExecutionTransformer.java	2007-07-10 17:49:11 UTC (rev 63951)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/OptimizedMethodExecutionTransformer.java	2007-07-10 18:03:40 UTC (rev 63952)
@@ -55,7 +55,7 @@
       String originalName = trans.getOriginalName();
       wmethod.setName(wrappedName);
       trans.getClazz().addMethod(wmethod);
-      moveAnnotations(trans.getMethod(), wmethod);
+      moveAnnotationsAndCopySignature(trans.getMethod(), wmethod);
       String optimizedInvocation = OptimizedMethodInvocations.createOptimizedInvocationClass(trans.getInstrumentor(), trans.getClazz(), trans.getMethod(), wmethod);
       trans.getMethod().setName(wrappedName);
       wmethod.setName(originalName);




More information about the jboss-cvs-commits mailing list