[jboss-cvs] JBossAS SVN: r65972 - in projects/aop/trunk/aop/src: resources/test/annotatedAdviceParams and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Oct 9 10:30:50 EDT 2007
Author: flavia.rainone at jboss.com
Date: 2007-10-09 10:30:50 -0400 (Tue, 09 Oct 2007)
New Revision: 65972
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldAccessTransformer.java
projects/aop/trunk/aop/src/resources/test/annotatedAdviceParams/jboss-aop.xml
projects/aop/trunk/aop/src/test/org/jboss/test/aop/annotatedAdviceParams/ArgInvalidJDK50TestCase.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/annotatedAdviceParams/ArgsInvalidPOJO.java
Log:
[JBAOP-472] Bug solved and tested with field write wrappers
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldAccessTransformer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldAccessTransformer.java 2007-10-09 13:46:29 UTC (rev 65971)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldAccessTransformer.java 2007-10-09 14:30:50 UTC (rev 65972)
@@ -24,10 +24,6 @@
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
-import org.jboss.aop.AspectManager;
-import org.jboss.aop.ClassAdvisor;
-import org.jboss.aop.classpool.AOPClassPool;
-import org.jboss.aop.util.Advisable;
import javassist.CannotCompileException;
import javassist.ClassPool;
@@ -38,9 +34,16 @@
import javassist.CtNewMethod;
import javassist.Modifier;
import javassist.NotFoundException;
+import javassist.bytecode.MethodInfo;
+import javassist.bytecode.SignatureAttribute;
import javassist.expr.ExprEditor;
import javassist.expr.FieldAccess;
+import org.jboss.aop.AspectManager;
+import org.jboss.aop.ClassAdvisor;
+import org.jboss.aop.classpool.AOPClassPool;
+import org.jboss.aop.util.Advisable;
+
/**
* @author <a href="mailto:kabirkhan at bigfoot.com">Kabir Khan</a>
*/
@@ -86,7 +89,6 @@
for (int index = 0; it.hasNext(); index++, fieldIndex++)
{
CtField field = (CtField) it.next();
-
JoinpointClassification classificationGet = instrumentor.joinpointClassifier.classifyFieldGet(field, advisor);
JoinpointClassification classificationSet = instrumentor.joinpointClassifier.classifyFieldSet(field, advisor);
if (!isPrepared(classificationGet) && !isPrepared(classificationSet))
@@ -581,6 +583,14 @@
wmethod.setModifiers(mod);
clazz.addMethod(wmethod);
+ SignatureAttribute ai = (SignatureAttribute) field.getFieldInfo2().getAttribute(SignatureAttribute.tag);
+ if (ai != null)
+ {
+ MethodInfo wrapperInfo = wmethod.getMethodInfo2();
+ SignatureAttribute methodAtt = new SignatureAttribute(wrapperInfo.getConstPool(), "(" + ai.getSignature() + ")V");
+ wrapperInfo.addAttribute(methodAtt);
+ }
+
return wmethod;
}
Modified: projects/aop/trunk/aop/src/resources/test/annotatedAdviceParams/jboss-aop.xml
===================================================================
--- projects/aop/trunk/aop/src/resources/test/annotatedAdviceParams/jboss-aop.xml 2007-10-09 13:46:29 UTC (rev 65971)
+++ projects/aop/trunk/aop/src/resources/test/annotatedAdviceParams/jboss-aop.xml 2007-10-09 14:30:50 UTC (rev 65972)
@@ -385,59 +385,59 @@
<finally name="finally6" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Before7(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Before7(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Before7)">
<before name="before7" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Before8(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Before8(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Before8)">
<before name="before8" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Around5(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Around5(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Around5)">
<around name="around5" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Around7(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Around7(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Around7)">
<around name="around7" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Around8(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Around8(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Around8)">
<around name="around8" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*After5(java.util.List))">/>
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*After5(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*After5)">
<after name="after5" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*After7(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*After7(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*After7)">
<after name="after7" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*After8(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*After8(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*After8)">
<after name="after8" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Throwing2(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Throwing2(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Throwing2)">
<throwing name="throwing2" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Throwing7(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Throwing7(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Throwing7)">
<throwing name="throwing7" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Throwing8(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Throwing8(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Throwing8)">
<throwing name="throwing8" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Finally5(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Finally5(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Finally5)">
<finally name="finally5" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Finally7(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Finally7(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Finally7)">
<finally name="finally7" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
- <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Finally8(java.util.List))">
+ <bind pointcut="execution(void org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Finally8(java.util.List)) OR set(java.util.List org.jboss.test.aop.annotatedAdviceParams.ArgsInvalidPOJO->*Finally8)">
<finally name="finally8" aspect="org.jboss.test.aop.annotatedAdviceParams.ArgAspectGenerics"/>
</bind>
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/annotatedAdviceParams/ArgInvalidJDK50TestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/annotatedAdviceParams/ArgInvalidJDK50TestCase.java 2007-10-09 13:46:29 UTC (rev 65971)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/annotatedAdviceParams/ArgInvalidJDK50TestCase.java 2007-10-09 14:30:50 UTC (rev 65972)
@@ -383,4 +383,162 @@
}
assertTrue(thrown);
}
+
+ public void testGenerics3()
+ {
+ List<SuperValue> list = new ArrayList<SuperValue>();
+ boolean thrown = false;
+ try
+ {
+ pojo.field5Before7 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5Before8 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5Around5 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5Around7 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5Around8 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5After5 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5After7 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5After8 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5Throwing2 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5Throwing7 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5Throwing8 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5Finally5 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5Finally7 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+
+ thrown = false;
+ try
+ {
+ pojo.field5Finally8 = list;
+ }
+ catch(NoMatchingAdviceException e)
+ {
+ thrown = true;
+ }
+ assertTrue(thrown);
+ }
}
\ No newline at end of file
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/annotatedAdviceParams/ArgsInvalidPOJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/annotatedAdviceParams/ArgsInvalidPOJO.java 2007-10-09 13:46:29 UTC (rev 65971)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/annotatedAdviceParams/ArgsInvalidPOJO.java 2007-10-09 14:30:50 UTC (rev 65972)
@@ -60,6 +60,22 @@
public static boolean field4After5;
public static boolean field4Finally2;
+ /* List<SuperValue> field5 */
+ public List<SuperValue> field5Before7;
+ public List<SuperValue> field5Before8;
+ public List<SuperValue> field5Around5;
+ public List<SuperValue> field5Around7;
+ public List<SuperValue> field5Around8;
+ public List<SuperValue> field5After5;
+ public List<SuperValue> field5After7;
+ public List<SuperValue> field5After8;
+ public List<SuperValue> field5Throwing2;
+ public List<SuperValue> field5Throwing7;
+ public List<SuperValue> field5Throwing8;
+ public List<SuperValue> field5Finally5;
+ public List<SuperValue> field5Finally7;
+ public List<SuperValue> field5Finally8;
+
/* bunch1(int, double, float, String, int) */
public int bunch1Around1(int x, double y, float z, String str, int q)
More information about the jboss-cvs-commits
mailing list