19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
20 * or visit www.oracle.com if you need additional information or have any |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 */ |
22 */ |
23 |
23 |
24 import static java.lang.module.ModuleFinder.empty; |
|
25 import static org.testng.Assert.assertSame; |
24 import static org.testng.Assert.assertSame; |
26 import static org.testng.Assert.assertTrue; |
25 import static org.testng.Assert.assertTrue; |
27 |
26 |
28 import java.lang.ClassLoader; |
27 import java.lang.ClassLoader; |
29 import java.lang.String; |
28 import java.lang.String; |
95 * are loaded from layer 1, the other services are loaded from boot layer |
94 * are loaded from layer 1, the other services are loaded from boot layer |
96 */ |
95 */ |
97 public void testOneLayer() throws Exception { |
96 public void testOneLayer() throws Exception { |
98 ModuleFinder finder1 = ModuleFinder.of(MOD_DIR1); |
97 ModuleFinder finder1 = ModuleFinder.of(MOD_DIR1); |
99 Configuration cf1 = Layer.boot().configuration() |
98 Configuration cf1 = Layer.boot().configuration() |
100 .resolveRequiresAndUses(finder1, empty(), Set.of("test")); |
99 .resolveRequiresAndUses(finder1, ModuleFinder.of(), Set.of("test")); |
101 ClassLoader scl = ClassLoader.getSystemClassLoader(); |
100 ClassLoader scl = ClassLoader.getSystemClassLoader(); |
102 Layer layer1 = Layer.boot().defineModulesWithManyLoaders(cf1, scl); |
101 Layer layer1 = Layer.boot().defineModulesWithManyLoaders(cf1, scl); |
103 ClassLoader cl1 = layer1.findLoader("test"); |
102 ClassLoader cl1 = layer1.findLoader("test"); |
104 |
103 |
105 Method m = cl1.loadClass("test.XMLFactoryHelper").getMethod("instantiateXMLService", String.class); |
104 Method m = cl1.loadClass("test.XMLFactoryHelper").getMethod("instantiateXMLService", String.class); |
125 * are loaded from layer 1, the services provided by provider2 are loaded from layer 2 |
124 * are loaded from layer 1, the services provided by provider2 are loaded from layer 2 |
126 */ |
125 */ |
127 public void testTwoLayer() throws Exception { |
126 public void testTwoLayer() throws Exception { |
128 ModuleFinder finder1 = ModuleFinder.of(MOD_DIR1); |
127 ModuleFinder finder1 = ModuleFinder.of(MOD_DIR1); |
129 Configuration cf1 = Layer.boot().configuration() |
128 Configuration cf1 = Layer.boot().configuration() |
130 .resolveRequiresAndUses(finder1, empty(), Set.of("test")); |
129 .resolveRequiresAndUses(finder1, ModuleFinder.of(), Set.of("test")); |
131 ClassLoader scl = ClassLoader.getSystemClassLoader(); |
130 ClassLoader scl = ClassLoader.getSystemClassLoader(); |
132 Layer layer1 = Layer.boot().defineModulesWithManyLoaders(cf1, scl); |
131 Layer layer1 = Layer.boot().defineModulesWithManyLoaders(cf1, scl); |
133 |
132 |
134 ModuleFinder finder2 = ModuleFinder.of(MOD_DIR2); |
133 ModuleFinder finder2 = ModuleFinder.of(MOD_DIR2); |
135 Configuration cf2 = cf1.resolveRequiresAndUses(finder2, empty(), Set.of("test")); |
134 Configuration cf2 = cf1.resolveRequiresAndUses(finder2, ModuleFinder.of(), Set.of("test")); |
136 Layer layer2 = layer1.defineModulesWithOneLoader(cf2, layer1.findLoader("test")); |
135 Layer layer2 = layer1.defineModulesWithOneLoader(cf2, layer1.findLoader("test")); |
137 ClassLoader cl2 = layer2.findLoader("test"); |
136 ClassLoader cl2 = layer2.findLoader("test"); |
138 |
137 |
139 Method m = cl2.loadClass("test.XMLFactoryHelper").getMethod("instantiateXMLService", String.class); |
138 Method m = cl2.loadClass("test.XMLFactoryHelper").getMethod("instantiateXMLService", String.class); |
140 for (String service : services1) { |
139 for (String service : services1) { |
159 * are loaded from layer 1, the services provided by provider2 are loaded from layer 2 |
158 * are loaded from layer 1, the services provided by provider2 are loaded from layer 2 |
160 */ |
159 */ |
161 public void testTwoLayerWithDuplicate() throws Exception { |
160 public void testTwoLayerWithDuplicate() throws Exception { |
162 ModuleFinder finder1 = ModuleFinder.of(MOD_DIR1, MOD_DIR2); |
161 ModuleFinder finder1 = ModuleFinder.of(MOD_DIR1, MOD_DIR2); |
163 Configuration cf1 = Layer.boot().configuration() |
162 Configuration cf1 = Layer.boot().configuration() |
164 .resolveRequiresAndUses(finder1, empty(), Set.of("test")); |
163 .resolveRequiresAndUses(finder1, ModuleFinder.of(), Set.of("test")); |
165 ClassLoader scl = ClassLoader.getSystemClassLoader(); |
164 ClassLoader scl = ClassLoader.getSystemClassLoader(); |
166 Layer layer1 = Layer.boot().defineModulesWithManyLoaders(cf1, scl); |
165 Layer layer1 = Layer.boot().defineModulesWithManyLoaders(cf1, scl); |
167 |
166 |
168 ModuleFinder finder2 = ModuleFinder.of(MOD_DIR2); |
167 ModuleFinder finder2 = ModuleFinder.of(MOD_DIR2); |
169 Configuration cf2 = cf1.resolveRequiresAndUses(finder2, empty(), Set.of("test")); |
168 Configuration cf2 = cf1.resolveRequiresAndUses(finder2, ModuleFinder.of(), Set.of("test")); |
170 Layer layer2 = layer1.defineModulesWithOneLoader(cf2, layer1.findLoader("test")); |
169 Layer layer2 = layer1.defineModulesWithOneLoader(cf2, layer1.findLoader("test")); |
171 ClassLoader cl2 = layer2.findLoader("test"); |
170 ClassLoader cl2 = layer2.findLoader("test"); |
172 |
171 |
173 Method m = cl2.loadClass("test.XMLFactoryHelper").getMethod("instantiateXMLService", String.class); |
172 Method m = cl2.loadClass("test.XMLFactoryHelper").getMethod("instantiateXMLService", String.class); |
174 for (String service : services1) { |
173 for (String service : services1) { |