26 * @modules java.base/jdk.internal.misc |
26 * @modules java.base/jdk.internal.misc |
27 * @library /test/lib .. |
27 * @library /test/lib .. |
28 * @compile p2/c2.java |
28 * @compile p2/c2.java |
29 * @compile p1/c1.java |
29 * @compile p1/c1.java |
30 * @build sun.hotspot.WhiteBox |
30 * @build sun.hotspot.WhiteBox |
31 * @compile/module=java.base java/lang/reflect/ModuleHelper.java |
31 * @compile/module=java.base java/lang/ModuleHelper.java |
32 * @run main ClassFileInstaller sun.hotspot.WhiteBox |
32 * @run main ClassFileInstaller sun.hotspot.WhiteBox |
33 * sun.hotspot.WhiteBox$WhiteBoxPermission |
33 * sun.hotspot.WhiteBox$WhiteBoxPermission |
34 * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI AccessCheckRead |
34 * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI AccessCheckRead |
35 */ |
35 */ |
36 |
36 |
37 import java.lang.reflect.Module; |
|
38 import static jdk.test.lib.Asserts.*; |
37 import static jdk.test.lib.Asserts.*; |
39 |
38 |
40 public class AccessCheckRead { |
39 public class AccessCheckRead { |
41 |
40 |
42 // Test that a class in a package in module_one cannot access a class in |
41 // Test that a class in a package in module_one cannot access a class in |
43 // a package in module_two if module_one cannot read module_two. |
42 // a package in module_two if module_one cannot read module_two. |
44 public static void main(String args[]) throws Throwable { |
43 public static void main(String args[]) throws Throwable { |
45 Object m1x, m2x; |
44 Object m1x, m2x; |
46 |
45 |
47 // Get the java.lang.reflect.Module object for module java.base. |
46 // Get the java.lang.Module object for module java.base. |
48 Class jlObject = Class.forName("java.lang.Object"); |
47 Class jlObject = Class.forName("java.lang.Object"); |
49 Object jlObject_jlrM = jlObject.getModule(); |
48 Object jlObject_jlM = jlObject.getModule(); |
50 assertNotNull(jlObject_jlrM, "jlrModule object of java.lang.Object should not be null"); |
49 assertNotNull(jlObject_jlM, "jlModule object of java.lang.Object should not be null"); |
51 |
50 |
52 // Get the class loader for AccessCheckRead and assume it's also used to |
51 // Get the class loader for AccessCheckRead and assume it's also used to |
53 // load classes p1.c1 and p2.c2. |
52 // load classes p1.c1 and p2.c2. |
54 ClassLoader this_cldr = AccessCheckRead.class.getClassLoader(); |
53 ClassLoader this_cldr = AccessCheckRead.class.getClassLoader(); |
55 |
54 |
56 // Define a module for p1. |
55 // Define a module for p1. |
57 m1x = ModuleHelper.ModuleObject("module_one", this_cldr, new String[] { "p1" }); |
56 m1x = ModuleHelper.ModuleObject("module_one", this_cldr, new String[] { "p1" }); |
58 assertNotNull(m1x, "Module should not be null"); |
57 assertNotNull(m1x, "Module should not be null"); |
59 ModuleHelper.DefineModule(m1x, "9.0", "m1x/here", new String[] { "p1" }); |
58 ModuleHelper.DefineModule(m1x, "9.0", "m1x/here", new String[] { "p1" }); |
60 ModuleHelper.AddReadsModule(m1x, jlObject_jlrM); |
59 ModuleHelper.AddReadsModule(m1x, jlObject_jlM); |
61 |
60 |
62 // Define a module for p2. |
61 // Define a module for p2. |
63 m2x = ModuleHelper.ModuleObject("module_two", this_cldr, new String[] { "p2" }); |
62 m2x = ModuleHelper.ModuleObject("module_two", this_cldr, new String[] { "p2" }); |
64 assertNotNull(m2x, "Module should not be null"); |
63 assertNotNull(m2x, "Module should not be null"); |
65 ModuleHelper.DefineModule(m2x, "9.0", "m2x/there", new String[] { "p2" }); |
64 ModuleHelper.DefineModule(m2x, "9.0", "m2x/there", new String[] { "p2" }); |
66 ModuleHelper.AddReadsModule(m2x, jlObject_jlrM); |
65 ModuleHelper.AddReadsModule(m2x, jlObject_jlM); |
67 |
66 |
68 // Make package p1 in m1x visible to everyone. |
67 // Make package p1 in m1x visible to everyone. |
69 ModuleHelper.AddModuleExportsToAll(m1x, "p1"); |
68 ModuleHelper.AddModuleExportsToAll(m1x, "p1"); |
70 |
69 |
71 Class p1_c1_class = Class.forName("p1.c1"); |
70 Class p1_c1_class = Class.forName("p1.c1"); |