31 * sun.hotspot.WhiteBox$WhiteBoxPermission |
31 * sun.hotspot.WhiteBox$WhiteBoxPermission |
32 * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI JVMDefineModule |
32 * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI JVMDefineModule |
33 */ |
33 */ |
34 |
34 |
35 import static jdk.test.lib.Asserts.*; |
35 import static jdk.test.lib.Asserts.*; |
|
36 import java.sql.Time; |
36 |
37 |
37 public class JVMDefineModule { |
38 public class JVMDefineModule { |
38 |
39 |
39 public static void main(String args[]) throws Throwable { |
40 public static void main(String args[]) throws Throwable { |
40 MyClassLoader cl = new MyClassLoader(); |
41 MyClassLoader cl = new MyClassLoader(); |
236 if (!e.getMessage().contains("Invalid package name")) { |
237 if (!e.getMessage().contains("Invalid package name")) { |
237 throw new RuntimeException("Failed to get expected IAE message for bad package name: " + e.getMessage()); |
238 throw new RuntimeException("Failed to get expected IAE message for bad package name: " + e.getMessage()); |
238 } |
239 } |
239 } |
240 } |
240 |
241 |
|
242 // Package named "java" defined to a class loader other than the boot or platform class loader, expect an IAE |
|
243 m = ModuleHelper.ModuleObject("modulejavapkg1", cl, new String[] { "java/foo" }); |
|
244 try { |
|
245 // module m is defined to an instance of MyClassLoader class loader |
|
246 ModuleHelper.DefineModule(m, "9.0", "modulejavapkg1", new String[] { "java/foo" }); |
|
247 throw new RuntimeException("Failed to get expected IAE for package java/foo"); |
|
248 } catch(IllegalArgumentException e) { |
|
249 if (!e.getMessage().contains("prohibited package name")) { |
|
250 throw new RuntimeException("Failed to get expected IAE message for prohibited package name: " + e.getMessage()); |
|
251 } |
|
252 } |
|
253 |
|
254 // Package named "javabar" defined to a class loader other than the boot or platform class loader, should be ok |
|
255 m = ModuleHelper.ModuleObject("modulejavapkg2", cl, new String[] { "javabar" }); |
|
256 assertNotNull(m, "Module should not be null"); |
|
257 ModuleHelper.DefineModule(m, "9.0", "modulejavapkg2", new String[] { "javabar" }); |
|
258 |
|
259 // Package named "java" defined to the boot class loader, should be ok |
|
260 // m's type is a java.lang.Object, module is java.base |
|
261 // java.base module is defined to the boot loader |
|
262 ClassLoader boot_loader = m.getClass().getClassLoader(); |
|
263 m = ModuleHelper.ModuleObject("modulejavapkg3", boot_loader, new String[] { "java/foo" }); |
|
264 assertNotNull(m, "Module should not be null"); |
|
265 ModuleHelper.DefineModule(m, "9.0", "modulejavapkg3", new String[] { "java/foo" }); |
|
266 |
|
267 // Package named "java" defined to the platform class loader, should be ok |
|
268 // java.sql module defined to the platform class loader. |
|
269 java.sql.Time jst = new java.sql.Time(45 * 1000); |
|
270 ClassLoader platform_loader = jst.getClass().getClassLoader(); |
|
271 m = ModuleHelper.ModuleObject("modulejavapkg4", platform_loader, new String[] { "java/foo" }); |
|
272 assertNotNull(m, "Module should not be null"); |
|
273 ModuleHelper.DefineModule(m, "9.0", "modulejavapkg4", new String[] { "java/foo" }); |
|
274 |
241 // module version that is null, should be okay |
275 // module version that is null, should be okay |
242 m = ModuleHelper.ModuleObject("module8", cl, new String[] { "a_package_8" }); |
276 m = ModuleHelper.ModuleObject("module8", cl, new String[] { "a_package_8" }); |
243 assertNotNull(m, "Module should not be null"); |
277 assertNotNull(m, "Module should not be null"); |
244 ModuleHelper.DefineModule(m, null, "module8/here", new String[] { "a_package_8" }); |
278 ModuleHelper.DefineModule(m, null, "module8/here", new String[] { "a_package_8" }); |
245 |
279 |