aboutsummaryrefslogtreecommitdiffstats
path: root/tests/java5/ataspectj
diff options
context:
space:
mode:
authoravasseur <avasseur>2005-10-18 15:52:50 +0000
committeravasseur <avasseur>2005-10-18 15:52:50 +0000
commit51a117846c60df84bd6b368cd2297c8ebd8f2cca (patch)
tree65651ab3536efebf3ad5fa440f76ead8068e2e93 /tests/java5/ataspectj
parentae612d9752200a3784de33ea6b79815e77aabaed (diff)
downloadaspectj-51a117846c60df84bd6b368cd2297c8ebd8f2cca.tar.gz
aspectj-51a117846c60df84bd6b368cd2297c8ebd8f2cca.zip
due fix and test for @AJ ITD reweavable, serialization of the method delegate munger
Diffstat (limited to 'tests/java5/ataspectj')
-rw-r--r--tests/java5/ataspectj/ajc-ant.xml39
-rw-r--r--tests/java5/ataspectj/ataspectj/DeclareParentsImplementsReweavableTest.java65
-rw-r--r--tests/java5/ataspectj/ataspectj/DeclareParentsImplementsReweavableTestAspect.java26
-rw-r--r--tests/java5/ataspectj/ataspectj/aop-decptest.xml8
-rw-r--r--tests/java5/ataspectj/ataspectj/aop-decptest2.xml8
5 files changed, 146 insertions, 0 deletions
diff --git a/tests/java5/ataspectj/ajc-ant.xml b/tests/java5/ataspectj/ajc-ant.xml
index 393b92f30..6d0dcee0e 100644
--- a/tests/java5/ataspectj/ajc-ant.xml
+++ b/tests/java5/ataspectj/ajc-ant.xml
@@ -122,4 +122,43 @@
<jvmarg value="-Daj5.def=ataspectj/aop-unweavabletest.xml"/>
</java>
</target>
+
+ <target name="ltw.Decp">
+ <java fork="yes" classname="ataspectj.DeclareParentsInterfaceTest" failonerror="yes">
+ <classpath>
+ <path refid="aj.path"/>
+ </classpath>
+ <jvmarg value="-javaagent:${aj.root}/lib/test/loadtime5.jar"/>
+ <jvmarg value="-Daj5.def=ataspectj/aop-decptest.xml"/>
+ </java>
+ <java fork="yes" classname="ataspectj.DeclareParentsImplementsTest" failonerror="yes">
+ <classpath>
+ <path refid="aj.path"/>
+ </classpath>
+ <jvmarg value="-javaagent:${aj.root}/lib/test/loadtime5.jar"/>
+ <jvmarg value="-Daj5.def=ataspectj/aop-decptest.xml"/>
+ </java>
+ </target>
+
+ <target name="ltw.Decp2">
+ <!-- javac compile the 2nd aspect -->
+ <javac destdir="${aj.sandbox}"
+ srcdir="${basedir}"
+ includes="ataspectj/DeclareParentsImplementsReweavableTestAspect.java"
+ debug="true">
+ <classpath>
+ <path refid="aj.path"/>
+ <pathelement path="${aj.sandbox}"/>
+ </classpath>
+ </javac>
+
+ <java fork="yes" classname="ataspectj.DeclareParentsImplementsReweavableTest" failonerror="yes">
+ <classpath>
+ <path refid="aj.path"/>
+ </classpath>
+ <jvmarg value="-javaagent:${aj.root}/lib/test/loadtime5.jar"/>
+ <jvmarg value="-Daj5.def=ataspectj/aop-decptest2.xml"/>
+ <jvmarg line="${jdwp}"/>
+ </java>
+ </target>
</project> \ No newline at end of file
diff --git a/tests/java5/ataspectj/ataspectj/DeclareParentsImplementsReweavableTest.java b/tests/java5/ataspectj/ataspectj/DeclareParentsImplementsReweavableTest.java
new file mode 100644
index 000000000..5e1a7d3c0
--- /dev/null
+++ b/tests/java5/ataspectj/ataspectj/DeclareParentsImplementsReweavableTest.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Contributors.
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Alexandre Vasseur initial implementation
+ *******************************************************************************/
+package ataspectj;
+
+import junit.framework.TestCase;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.DeclareParents;
+
+import java.util.Arrays;
+
+/**
+ * @author <a href="mailto:alex AT gnilux DOT com">Alexandre Vasseur</a>
+ */
+public class DeclareParentsImplementsReweavableTest extends TestCase {
+
+ static class Target {}
+
+ static interface I1 { int do1(); }
+
+ static class Imp1 implements I1 {
+ public int do1() {return 1;}
+ }
+
+ public static interface I2 { int do2(); }
+
+ public static class Imp2 implements I2 {
+ public int do2() {return 2;}
+ }
+
+ @Aspect
+ static class TestAspect {
+
+ @DeclareParents("ataspectj.DeclareParentsImplementsReweavableTest.Target")
+ public static I1 i1 = new Imp1();
+ }
+
+ public void testDecPInt() {
+ Class[] intfs = Target.class.getInterfaces();
+ assertTrue("I1 was not introduced", Arrays.asList(intfs).contains(I1.class));
+ assertEquals(1, ((I1)new Target()).do1());
+
+ // test stuff weaved in by DeclareParentsImplementsReweavableAspect
+ // thru reweable mode
+ assertTrue("I2 was not introduced", Arrays.asList(intfs).contains(I2.class));
+ assertEquals(2, ((I2)new Target()).do2());
+ }
+
+ public static void main(String[] args) {
+ TestHelper.runAndThrowOnFailure(suite());
+ }
+
+ public static junit.framework.Test suite() {
+ return new junit.framework.TestSuite(DeclareParentsImplementsReweavableTest.class);
+ }
+
+}
diff --git a/tests/java5/ataspectj/ataspectj/DeclareParentsImplementsReweavableTestAspect.java b/tests/java5/ataspectj/ataspectj/DeclareParentsImplementsReweavableTestAspect.java
new file mode 100644
index 000000000..c75585f75
--- /dev/null
+++ b/tests/java5/ataspectj/ataspectj/DeclareParentsImplementsReweavableTestAspect.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Contributors.
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Alexandre Vasseur initial implementation
+ *******************************************************************************/
+package ataspectj;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.DeclareParents;
+
+/**
+ * @author <a href="mailto:alex AT gnilux DOT com">Alexandre Vasseur</a>
+ */
+@Aspect
+public class DeclareParentsImplementsReweavableTestAspect {
+
+ @DeclareParents("ataspectj.DeclareParentsImplementsReweavableTest.Target")
+ public static DeclareParentsImplementsReweavableTest.I2 i2 = new DeclareParentsImplementsReweavableTest.Imp2();
+
+}
diff --git a/tests/java5/ataspectj/ataspectj/aop-decptest.xml b/tests/java5/ataspectj/ataspectj/aop-decptest.xml
new file mode 100644
index 000000000..fe04e96b1
--- /dev/null
+++ b/tests/java5/ataspectj/ataspectj/aop-decptest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<aspectj>
+ <weaver options="-XmessageHandlerClass:ataspectj.TestHelper"/>
+ <aspects>
+ <aspect name="ataspectj.DeclareParentsImplementsTest.TestAspect"/>
+ <aspect name="ataspectj.DeclareParentsInterfaceTest.TestAspect"/>
+ </aspects>
+</aspectj>
diff --git a/tests/java5/ataspectj/ataspectj/aop-decptest2.xml b/tests/java5/ataspectj/ataspectj/aop-decptest2.xml
new file mode 100644
index 000000000..2fc5016f8
--- /dev/null
+++ b/tests/java5/ataspectj/ataspectj/aop-decptest2.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<aspectj>
+ <weaver options="-XmessageHandlerClass:ataspectj.TestHelper"/>
+ <aspects>
+ <aspect name="ataspectj.DeclareParentsImplementsReweavableTest.TestAspect"/>
+ <aspect name="ataspectj.DeclareParentsImplementsReweavableTestAspect"/>
+ </aspects>
+</aspectj>