hotspot/test/runtime/modules/JVMDefineModule.java
changeset 42307 cefc81dc1d52
parent 40631 ed82623d7831
child 42630 ae91fbc4b59f
equal deleted inserted replaced
42142:6d23d5e6b916 42307:cefc81dc1d52
    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