35 * @run main/othervm -Xbootclasspath/a:. Umod_ExpQualOther |
35 * @run main/othervm -Xbootclasspath/a:. Umod_ExpQualOther |
36 */ |
36 */ |
37 |
37 |
38 import static jdk.test.lib.Asserts.*; |
38 import static jdk.test.lib.Asserts.*; |
39 |
39 |
40 import java.lang.reflect.Layer; |
|
41 import java.lang.module.Configuration; |
40 import java.lang.module.Configuration; |
42 import java.lang.module.ModuleDescriptor; |
41 import java.lang.module.ModuleDescriptor; |
43 import java.lang.module.ModuleFinder; |
42 import java.lang.module.ModuleFinder; |
44 import java.util.HashMap; |
43 import java.util.HashMap; |
45 import java.util.Map; |
44 import java.util.Map; |
57 // class p1.c1 defined in m1x tries to access p2.c2 defined in m2x |
56 // class p1.c1 defined in m1x tries to access p2.c2 defined in m2x |
58 // Access denied since although m1x can read m2x, p2 is exported only to m3x. |
57 // Access denied since although m1x can read m2x, p2 is exported only to m3x. |
59 // |
58 // |
60 public class Umod_ExpQualOther { |
59 public class Umod_ExpQualOther { |
61 |
60 |
62 // Create a Layer over the boot layer. |
61 // Create a layer over the boot layer. |
63 // Define modules within this layer to test access between |
62 // Define modules within this layer to test access between |
64 // publically defined classes within packages of those modules. |
63 // publically defined classes within packages of those modules. |
65 public void createLayerOnBoot() throws Throwable { |
64 public void createLayerOnBoot() throws Throwable { |
66 |
65 |
67 // Define module: m1x (need to define m1x to establish the Layer successfully) |
66 // Define module: m1x (need to define m1x to establish the layer successfully) |
68 // Can read: java.base, m2x, m3x |
67 // Can read: java.base, m2x, m3x |
69 // Packages: none |
68 // Packages: none |
70 // Packages exported: none |
69 // Packages exported: none |
71 ModuleDescriptor descriptor_m1x = |
70 ModuleDescriptor descriptor_m1x = |
72 ModuleDescriptor.newModule("m1x") |
71 ModuleDescriptor.newModule("m1x") |
96 |
95 |
97 // Set up a ModuleFinder containing all modules for this layer. |
96 // Set up a ModuleFinder containing all modules for this layer. |
98 ModuleFinder finder = ModuleLibrary.of(descriptor_m1x, descriptor_m2x, descriptor_m3x); |
97 ModuleFinder finder = ModuleLibrary.of(descriptor_m1x, descriptor_m2x, descriptor_m3x); |
99 |
98 |
100 // Resolves "m1x" |
99 // Resolves "m1x" |
101 Configuration cf = Layer.boot() |
100 Configuration cf = ModuleLayer.boot() |
102 .configuration() |
101 .configuration() |
103 .resolve(finder, ModuleFinder.of(), Set.of("m1x")); |
102 .resolve(finder, ModuleFinder.of(), Set.of("m1x")); |
104 |
103 |
105 // map each module to differing class loaders for this test |
104 // map each module to differing class loaders for this test |
106 Map<String, ClassLoader> map = new HashMap<>(); |
105 Map<String, ClassLoader> map = new HashMap<>(); |
107 map.put("m1x", MySameClassLoader.loader1); |
106 map.put("m1x", MySameClassLoader.loader1); |
108 map.put("m2x", MySameClassLoader.loader1); |
107 map.put("m2x", MySameClassLoader.loader1); |
109 map.put("m3x", MySameClassLoader.loader1); |
108 map.put("m3x", MySameClassLoader.loader1); |
110 |
109 |
111 // Create Layer that contains m1x, m2x and m3x |
110 // Create layer that contains m1x, m2x and m3x |
112 Layer layer = Layer.boot().defineModules(cf, map::get); |
111 ModuleLayer layer = ModuleLayer.boot().defineModules(cf, map::get); |
113 |
112 |
114 assertTrue(layer.findLoader("m1x") == MySameClassLoader.loader1); |
113 assertTrue(layer.findLoader("m1x") == MySameClassLoader.loader1); |
115 assertTrue(layer.findLoader("m2x") == MySameClassLoader.loader1); |
114 assertTrue(layer.findLoader("m2x") == MySameClassLoader.loader1); |
116 assertTrue(layer.findLoader("m3x") == MySameClassLoader.loader1); |
115 assertTrue(layer.findLoader("m3x") == MySameClassLoader.loader1); |
117 assertTrue(layer.findLoader("java.base") == null); |
116 assertTrue(layer.findLoader("java.base") == null); |