@@ -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(); | |||
} | |||
} | |||
} |
@@ -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() { |
@@ -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"/> |