< prev index next >
test/jdk/java/lang/invoke/modules/m1/p1/Main.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * 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,21 +43,21 @@
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<?> 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");
- x500NameClass = Class.forName("sun.security.x509.X500Name");
+ signalClass = Class.forName("jdk.internal.misc.Signal");
unnamedClass = Class.forName("Unnamed");
} catch (ClassNotFoundException e) {
throw new AssertionError(e);
}
@@ -103,11 +103,11 @@
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]
+ findConstructorExpectingIAE(lookup, signalClass, void.class, String.class); // [A3]
// unnamed
findConstructor(lookup, unnamedClass, void.class); // [A3]
}
@@ -128,64 +128,83 @@
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);
+ findConstructorExpectingIAE(lookup, signalClass, void.class, String.class);
// unnamed
findConstructor(lookup, unnamedClass, void.class);
}
/**
* Hop to lookup class in another named module
*
- * [A0] has no access
+ * [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() == 0); // [A0]
+ 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
- findConstructorExpectingIAE(lookup, q1_Type1, void.class);
+ 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
- findConstructorExpectingIAE(lookup, Object.class, void.class);
- findConstructorExpectingIAE(lookup, x500NameClass, void.class, String.class);
+ 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 no access
+ * [A0] has PUBLIC access
*/
public void testFromNamedToUnnamedModule() throws Exception {
Lookup lookup = MethodHandles.lookup().in(unnamedClass);
- assertTrue(lookup.lookupModes() == 0); // [A0]
+ assertTrue(lookup.lookupModes() == PUBLIC); // [A0]
// m1
- findConstructorExpectingIAE(lookup, p1_Type1, void.class);
+ findConstructor(lookup, p1_Type1, void.class); // p1 is exported
findConstructorExpectingIAE(lookup, p2_Type2, void.class);
// m2
- findConstructorExpectingIAE(lookup, q1_Type1, void.class);
+ findConstructor(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);
+ findConstructor(lookup, Object.class, void.class);
+ findConstructorExpectingIAE(lookup, signalClass, void.class, String.class);
// unnamed
- findConstructorExpectingIAE(lookup, unnamedClass, void.class);
+ findConstructor(lookup, unnamedClass, void.class);
}
/**
* Hop from unnamed to named module.
*
@@ -204,24 +223,24 @@
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);
+ findConstructorExpectingIAE(lookup, signalClass, void.class, String.class);
// unnamed
findConstructor(lookup, unnamedClass, void.class);
}
/**
* MethodHandles.publicLookup()
*
- * [A0] has PUBLIC|UNCONDITIONAL access
+ * [A0] has UNCONDITIONAL access
*/
public void testPublicLookup() throws Exception {
Lookup lookup = MethodHandles.publicLookup();
- assertTrue(lookup.lookupModes() == (PUBLIC|UNCONDITIONAL)); // A0
+ assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0
// m1
findConstructor(lookup, p1_Type1, void.class);
findConstructorExpectingIAE(lookup, p2_Type2, void.class);
@@ -229,48 +248,50 @@
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);
+ 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() == PUBLIC); // A0
+ assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0
// m1
- findConstructorExpectingIAE(lookup, p1_Type1, void.class);
+ findConstructor(lookup, p1_Type1, void.class);
findConstructorExpectingIAE(lookup, p2_Type2, void.class);
// m2
- findConstructorExpectingIAE(lookup, q1_Type1, void.class);
+ 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);
+ findConstructorExpectingIAE(lookup, signalClass, void.class, String.class);
// unnamed
- findConstructorExpectingIAE(lookup, unnamedClass, void.class);
+ findConstructor(lookup, unnamedClass, void.class);
}
/**
* Hop from publicLookup to accessible type in named module.
*
- * [A0] has PUBLIC access
+ * [A0] has UNCONDITIONAL access
*/
public void testPublicLookupToAccessibleTypeInNamedModule() throws Exception {
Lookup lookup = MethodHandles.publicLookup().in(p1_Type1);
- assertTrue(lookup.lookupModes() == PUBLIC); // A0
+ assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0
// m1
findConstructor(lookup, p1_Type1, void.class);
findConstructorExpectingIAE(lookup, p2_Type2, void.class);
@@ -278,11 +299,11 @@
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);
+ findConstructorExpectingIAE(lookup, signalClass, void.class, String.class);
// unnamed
findConstructor(lookup, unnamedClass, void.class);
}
@@ -303,24 +324,24 @@
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);
+ findConstructorExpectingIAE(lookup, signalClass, void.class, String.class);
// unnamed
findConstructorExpectingIAE(lookup, unnamedClass, void.class);
}
/**
* Teleport from publicLookup to public type in unnamed module
*
- * [A0] has PUBLIC access
+ * [A0] has UNCONDITIONAL access
*/
public void testPublicLookupToUnnamedModule() throws Exception {
Lookup lookup = MethodHandles.publicLookup().in(unnamedClass);
- assertTrue(lookup.lookupModes() == PUBLIC); // A0
+ assertTrue(lookup.lookupModes() == UNCONDITIONAL); // A0
// m1
findConstructor(lookup, p1_Type1, void.class);
findConstructorExpectingIAE(lookup, p2_Type2, void.class);
@@ -328,11 +349,11 @@
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);
+ findConstructorExpectingIAE(lookup, signalClass, void.class, String.class);
// unnamed
findConstructor(lookup, unnamedClass, void.class);
}
< prev index next >