1 public class test_retval_loading_constraint_violated {
3 public static void main(String[] args) {
4 TestController ct = new TestController();
6 TestLoader ld1 = new TestLoader(ClassLoader.getSystemClassLoader(), "ld1", ct);
7 TestLoader ld2 = new TestLoader(ClassLoader.getSystemClassLoader(), "ld2", ct);
9 ld1.addClassfile("BarUseFoo", "classes1/BarUseFoo.class");
10 ld1.addClassfile("Foo", "classes1/Foo.class");
11 ld1.addDelegation("BarPassFoo", ld2);
12 ld1.addParentDelegation("java.lang.Object");
13 ld1.addParentDelegation("java.lang.String");
15 ld2.addClassfile("BarPassFoo", "classes2/BarPassFoo.class");
16 ld2.addClassfile("Foo", "classes2/Foo.class");
17 ld2.addParentDelegation("java.lang.Object");
18 ld2.addParentDelegation("java.lang.String");
21 // loading & linking BarUseFoo
22 ct.expect("requested", ld1, "BarUseFoo");
23 ct.expectLoadFromSystem(ld1, "java.lang.Object");
24 ct.expect("defined", ld1, "<BarUseFoo>");
25 ct.expect("loaded", ld1, "<BarUseFoo>");
27 Class cls = ct.loadClass(ld1, "BarUseFoo");
29 // executing BarUseFoo.useReturnedFoo: new BarPassFoo
30 ct.expectDelegation(ld1, ld2, "BarPassFoo");
31 // ...linking BarPassFoo
32 ct.expectLoadFromSystem(ld2, "java.lang.Object");
33 ct.expectDelegationDefinition(ld1, ld2, "BarPassFoo");
35 // resolving BarPassFoo.createFoo
36 ct.expect("requested", ld2, "Foo");
37 ct.expect("defined", ld2, "<Foo>");
38 ct.expect("requested", ld1, "Foo");
39 // ...the loading constraing (ld1,ld2,Foo) is violated
40 ct.expect("exception", "java.lang.LinkageError", "<BarUseFoo>");
42 ct.checkStringGetterMustFail(cls, "useReturnedFoo");