aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/ltw/callMunging/case1/HierMain.java28
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/ltw/LTWTests.java4
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/ltw/ltw-tests.xml15
3 files changed, 45 insertions, 2 deletions
diff --git a/tests/ltw/callMunging/case1/HierMain.java b/tests/ltw/callMunging/case1/HierMain.java
new file mode 100644
index 000000000..8fdb1c570
--- /dev/null
+++ b/tests/ltw/callMunging/case1/HierMain.java
@@ -0,0 +1,28 @@
+import java.lang.reflect.Method;
+import java.net.URLClassLoader;
+import java.net.URL;
+import java.io.File;
+import org.aspectj.weaver.loadtime.WeavingURLClassLoader;
+
+public class HierMain {
+
+ public static void main(String []argv) {
+ try {
+ System.out.println("into:main");
+ ClassLoader baseLoader = HierMain.class.getClassLoader();
+ URL base = baseLoader.getResource("HierMain.class");
+ String urlstr = base.toExternalForm();
+ int idx = urlstr.indexOf("classes.jar!");
+ String sub = urlstr.substring("jar:".length(), idx)+"/sub.hiddenjar";
+ URL subUrls[] = new URL[] { new URL(sub) };
+ WeavingURLClassLoader loader = new WeavingURLClassLoader(subUrls, baseLoader);
+ Class clazzA = Class.forName("A", false, loader);
+ Method clazzAMethod = clazzA.getMethod("method",null);
+ clazzAMethod.invoke(clazzA.newInstance(),null);
+ System.out.println("leave:main");
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+
+}
diff --git a/tests/src/org/aspectj/systemtest/ajc150/ltw/LTWTests.java b/tests/src/org/aspectj/systemtest/ajc150/ltw/LTWTests.java
index afb9aeb5e..38346279e 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/ltw/LTWTests.java
+++ b/tests/src/org/aspectj/systemtest/ajc150/ltw/LTWTests.java
@@ -130,8 +130,8 @@ public class LTWTests extends org.aspectj.testing.XMLBasedAjcTestCase {
runTest("aggressive ltw - decp - 2");
}
- public void testWeavingTargetOfCallAggressivelyInLTW_DeclareAnnotation_pr133770() {
- runTest("aggressive ltw - deca");
+ public void testWeavingTargetOfCallAggressivelyInLTW_DeclareParents_Hierarchy_pr133770() {
+ runTest("aggressive ltw - hierarchy");
}
public void testSeparateCompilationDeclareParentsCall_pr133770() {
diff --git a/tests/src/org/aspectj/systemtest/ajc150/ltw/ltw-tests.xml b/tests/src/org/aspectj/systemtest/ajc150/ltw/ltw-tests.xml
index abd117964..1866789ef 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/ltw/ltw-tests.xml
+++ b/tests/src/org/aspectj/systemtest/ajc150/ltw/ltw-tests.xml
@@ -156,6 +156,21 @@
</run>
</ajc-test>
+ <ajc-test dir="ltw/callMunging/case1" title="aggressive ltw - hierarchy">
+ <compile files="T.java,HierMain.java" outjar="classes.jar"/>
+ <compile files="A.java" outjar="sub.hiddenjar" classpath="classes.jar"/>
+ <compile files="X.java" outjar="aspects.jar" classpath="classes.jar" options="-Xlint:ignore"/>
+ <run class="HierMain" ltw="aop.xml">
+ <stdout>
+ <line text="into:main"/>
+ <line text="A.method() running"/>
+ <line text="advice running"/>
+ <line text="T.m1() running"/>
+ <line text="leave:main"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
<ajc-test dir="ltw/callMunging/case3" title="aggressive ltw - decp - 2">
<compile files="A.java,T.java,S.java,Main.java" outjar="classes.jar"/>
<compile files="X.java" outjar="aspects.jar" classpath="classes.jar" options="-Xlint:ignore"/>