< prev index next >

test/jdk/java/lang/invoke/modules/m1/p1/Main.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 43,63 **** private Class<?> p1_Type1; // m1, exported private Class<?> p2_Type2; // m1, not exported private Class<?> q1_Type1; // m2, exported private Class<?> q2_Type2; // m2, not exported ! private Class<?> x500NameClass; // java.base, not exported private Class<?> unnamedClass; // class in unnamed module @BeforeTest public void setup() throws Exception { try { p1_Type1 = Class.forName("p1.Type1"); p2_Type2 = Class.forName("p2.Type2"); q1_Type1 = Class.forName("q1.Type1"); q2_Type2 = Class.forName("q2.Type2"); ! x500NameClass = Class.forName("sun.security.x509.X500Name"); unnamedClass = Class.forName("Unnamed"); } catch (ClassNotFoundException e) { throw new AssertionError(e); } --- 43,63 ---- private Class<?> p1_Type1; // m1, exported private Class<?> p2_Type2; // m1, not exported private Class<?> q1_Type1; // m2, exported private Class<?> q2_Type2; // m2, not exported ! private Class<?> signalClass; // java.base, not exported private Class<?> unnamedClass; // class in unnamed module @BeforeTest public void setup() throws Exception { try { p1_Type1 = Class.forName("p1.Type1"); p2_Type2 = Class.forName("p2.Type2"); q1_Type1 = Class.forName("q1.Type1"); q2_Type2 = Class.forName("q2.Type2"); ! signalClass = Class.forName("jdk.internal.misc.Signal"); unnamedClass = Class.forName("Unnamed"); } catch (ClassNotFoundException e) { throw new AssertionError(e); }
*** 103,113 **** findConstructor(lookup, q1_Type1, void.class); // [A2] findConstructorExpectingIAE(lookup, q2_Type2, void.class); // [A3] // java.base findConstructor(lookup, Object.class, void.class); // [A2] ! findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class); // [A3] // unnamed findConstructor(lookup, unnamedClass, void.class); // [A3] } --- 103,113 ---- findConstructor(lookup, q1_Type1, void.class); // [A2] findConstructorExpectingIAE(lookup, q2_Type2, void.class); // [A3] // java.base findConstructor(lookup, Object.class, void.class); // [A2] ! findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); // [A3] // unnamed findConstructor(lookup, unnamedClass, void.class); // [A3] }
*** 128,191 **** findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class); // unnamed findConstructor(lookup, unnamedClass, void.class); } /** * Hop to lookup class in another named module * ! * [A0] has no access */ public void testFromNamedToNamedModule() throws Exception { Lookup lookup = MethodHandles.lookup().in(q1_Type1); ! assertTrue(lookup.lookupModes() == 0); // [A0] // m1 findConstructorExpectingIAE(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class); // m2 ! findConstructorExpectingIAE(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base ! findConstructorExpectingIAE(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class); // unnamed findConstructorExpectingIAE(lookup, unnamedClass, void.class); } /** * Hop to lookup class in an unnamed module * ! * [A0] has no access */ public void testFromNamedToUnnamedModule() throws Exception { Lookup lookup = MethodHandles.lookup().in(unnamedClass); ! assertTrue(lookup.lookupModes() == 0); // [A0] // m1 ! findConstructorExpectingIAE(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class); // m2 ! findConstructorExpectingIAE(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base ! findConstructorExpectingIAE(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class); // unnamed ! findConstructorExpectingIAE(lookup, unnamedClass, void.class); } /** * Hop from unnamed to named module. * --- 128,210 ---- findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); // unnamed findConstructor(lookup, unnamedClass, void.class); } /** * Hop to lookup class in another named module * ! * [A0] has PUBLIC access if accessible; otherwise no access ! * [A1] old lookup class becomes previous lookup class */ public void testFromNamedToNamedModule() throws Exception { + // m2/q1_Type1 is accessible to m1 whereas m2/q_Type2 is not accessible Lookup lookup = MethodHandles.lookup().in(q1_Type1); ! assertTrue(lookup.lookupModes() == PUBLIC); // [A0] ! assertTrue(lookup.previousLookupClass() == Main.class); // [A1] ! ! Lookup lookup2 = MethodHandles.lookup().in(q2_Type2); ! assertTrue(lookup2.lookupModes() == 0); // [A0] ! assertTrue(lookup2.previousLookupClass() == Main.class); // [A1] // m1 findConstructorExpectingIAE(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class); + findConstructorExpectingIAE(lookup2, p1_Type1, void.class); + findConstructorExpectingIAE(lookup2, p2_Type2, void.class); + // m2 ! findConstructor(lookup, q1_Type1, void.class); // m2/q1 is exported findConstructorExpectingIAE(lookup, q2_Type2, void.class); + findConstructorExpectingIAE(lookup2, q1_Type1, void.class); + findConstructorExpectingIAE(lookup2, q2_Type2, void.class); + // java.base ! findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); ! ! findConstructorExpectingIAE(lookup2, Object.class, void.class); ! findConstructorExpectingIAE(lookup2, signalClass, void.class, String.class); // unnamed findConstructorExpectingIAE(lookup, unnamedClass, void.class); + + findConstructorExpectingIAE(lookup2, unnamedClass, void.class); + } /** * Hop to lookup class in an unnamed module * ! * [A0] has PUBLIC access */ public void testFromNamedToUnnamedModule() throws Exception { Lookup lookup = MethodHandles.lookup().in(unnamedClass); ! assertTrue(lookup.lookupModes() == PUBLIC); // [A0] // m1 ! findConstructor(lookup, p1_Type1, void.class); // p1 is exported findConstructorExpectingIAE(lookup, p2_Type2, void.class); // m2 ! findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base ! findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); // unnamed ! findConstructor(lookup, unnamedClass, void.class); } /** * Hop from unnamed to named module. *
*** 204,227 **** findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class); // unnamed findConstructor(lookup, unnamedClass, void.class); } /** * MethodHandles.publicLookup() * ! * [A0] has PUBLIC|UNCONDITIONAL access */ public void testPublicLookup() throws Exception { Lookup lookup = MethodHandles.publicLookup(); ! assertTrue(lookup.lookupModes() == (PUBLIC|UNCONDITIONAL)); // A0 // m1 findConstructor(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class); --- 223,246 ---- findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); // unnamed findConstructor(lookup, unnamedClass, void.class); } /** * MethodHandles.publicLookup() * ! * [A0] has UNCONDITIONAL access */ public void testPublicLookup() throws Exception { Lookup lookup = MethodHandles.publicLookup(); ! assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0 // m1 findConstructor(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class);
*** 229,276 **** findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class); // unnamed findConstructor(lookup, unnamedClass, void.class); } /** * Hop from publicLookup to accessible type in java.base */ public void testPublicLookupToBaseModule() throws Exception { Lookup lookup = MethodHandles.publicLookup().in(String.class); ! assertTrue(lookup.lookupModes() == PUBLIC); // A0 // m1 ! findConstructorExpectingIAE(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class); // m2 ! findConstructorExpectingIAE(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class); // unnamed ! findConstructorExpectingIAE(lookup, unnamedClass, void.class); } /** * Hop from publicLookup to accessible type in named module. * ! * [A0] has PUBLIC access */ public void testPublicLookupToAccessibleTypeInNamedModule() throws Exception { Lookup lookup = MethodHandles.publicLookup().in(p1_Type1); ! assertTrue(lookup.lookupModes() == PUBLIC); // A0 // m1 findConstructor(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class); --- 248,297 ---- findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); // unnamed findConstructor(lookup, unnamedClass, void.class); } /** * Hop from publicLookup to accessible type in java.base + * + * [A0] has UNCONDITIONAL access */ public void testPublicLookupToBaseModule() throws Exception { Lookup lookup = MethodHandles.publicLookup().in(String.class); ! assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0 // m1 ! findConstructor(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class); // m2 ! findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); // unnamed ! findConstructor(lookup, unnamedClass, void.class); } /** * Hop from publicLookup to accessible type in named module. * ! * [A0] has UNCONDITIONAL access */ public void testPublicLookupToAccessibleTypeInNamedModule() throws Exception { Lookup lookup = MethodHandles.publicLookup().in(p1_Type1); ! assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0 // m1 findConstructor(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class);
*** 278,288 **** findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class); // unnamed findConstructor(lookup, unnamedClass, void.class); } --- 299,309 ---- findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); // unnamed findConstructor(lookup, unnamedClass, void.class); }
*** 303,326 **** findConstructorExpectingIAE(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructorExpectingIAE(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class); // unnamed findConstructorExpectingIAE(lookup, unnamedClass, void.class); } /** * Teleport from publicLookup to public type in unnamed module * ! * [A0] has PUBLIC access */ public void testPublicLookupToUnnamedModule() throws Exception { Lookup lookup = MethodHandles.publicLookup().in(unnamedClass); ! assertTrue(lookup.lookupModes() == PUBLIC); // A0 // m1 findConstructor(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class); --- 324,347 ---- findConstructorExpectingIAE(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructorExpectingIAE(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); // unnamed findConstructorExpectingIAE(lookup, unnamedClass, void.class); } /** * Teleport from publicLookup to public type in unnamed module * ! * [A0] has UNCONDITIONAL access */ public void testPublicLookupToUnnamedModule() throws Exception { Lookup lookup = MethodHandles.publicLookup().in(unnamedClass); ! assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0 // m1 findConstructor(lookup, p1_Type1, void.class); findConstructorExpectingIAE(lookup, p2_Type2, void.class);
*** 328,338 **** findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class); // unnamed findConstructor(lookup, unnamedClass, void.class); } --- 349,359 ---- findConstructor(lookup, q1_Type1, void.class); findConstructorExpectingIAE(lookup, q2_Type2, void.class); // java.base findConstructor(lookup, Object.class, void.class); ! findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); // unnamed findConstructor(lookup, unnamedClass, void.class); }
< prev index next >