[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