Browse Source

133770 'call and ltw': now attempts to grab a delegate for a non-locally defined type, giving the super-loader chance to weave a type with ITDs.

tags/post_pr_153572
aclement 17 years ago
parent
commit
efb2dd01da

+ 28
- 0
tests/ltw/callMunging/case1/HierMain.java View File

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

+ 2
- 2
tests/src/org/aspectj/systemtest/ajc150/ltw/LTWTests.java View File

@@ -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() {

+ 15
- 0
tests/src/org/aspectj/systemtest/ajc150/ltw/ltw-tests.xml View File

@@ -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"/>

Loading…
Cancel
Save