hotspot/test/runtime/modules/JVMDefineModule.java
changeset 46404 ae62ba99a1a7
parent 46388 d7a164ad6b7f
child 46458 3c12af929e7d
equal deleted inserted replaced
46403:f2b91b928476 46404:ae62ba99a1a7
    42         Object m;
    42         Object m;
    43 
    43 
    44         // NULL classloader argument, expect success
    44         // NULL classloader argument, expect success
    45         m = ModuleHelper.ModuleObject("mymodule", null, new String[] { "mypackage" });
    45         m = ModuleHelper.ModuleObject("mymodule", null, new String[] { "mypackage" });
    46         assertNotNull(m, "Module should not be null");
    46         assertNotNull(m, "Module should not be null");
    47         ModuleHelper.DefineModule(m, "9.0", "mymodule/here", new String[] { "mypackage" });
    47         ModuleHelper.DefineModule(m, false, "9.0", "mymodule/here", new String[] { "mypackage" });
    48 
    48 
    49 /* Invalid test, won't compile.
    49 /* Invalid test, won't compile.
    50         // Invalid classloader argument, expect an IAE
    50         // Invalid classloader argument, expect an IAE
    51         try {
    51         try {
    52             m = ModuleHelper.ModuleObject("mymodule_one", new Object(), new String[] { "mypackage1" });
    52             m = ModuleHelper.ModuleObject("mymodule_one", new Object(), new String[] { "mypackage1" });
    53             ModuleHelper.DefineModule(m,  "9.0", "mymodule/here", new String[] { "mypackage1" });
    53             ModuleHelper.DefineModule(m, false, "9.0", "mymodule/here", new String[] { "mypackage1" });
    54             throw new RuntimeException("Failed to get expected IAE for bad loader");
    54             throw new RuntimeException("Failed to get expected IAE for bad loader");
    55         } catch(IllegalArgumentException e) {
    55         } catch(IllegalArgumentException e) {
    56             // Expected
    56             // Expected
    57         }
    57         }
    58 */
    58 */
    59 
    59 
    60         // NULL package argument, should not throw an exception
    60         // NULL package argument, should not throw an exception
    61         m = ModuleHelper.ModuleObject("mymoduleTwo", cl, new String[] { "nullpkg" });
    61         m = ModuleHelper.ModuleObject("mymoduleTwo", cl, new String[] { "nullpkg" });
    62         assertNotNull(m, "Module should not be null");
    62         assertNotNull(m, "Module should not be null");
    63         ModuleHelper.DefineModule(m, "9.0", "mymoduleTwo/here", null);
    63         ModuleHelper.DefineModule(m, false, "9.0", "mymoduleTwo/here", null);
    64 
    64 
    65         // Null module argument, expect an NPE
    65         // Null module argument, expect an NPE
    66         try {
    66         try {
    67             ModuleHelper.DefineModule(null,  "9.0", "mymodule/here", new String[] { "mypackage1" });
    67             ModuleHelper.DefineModule(null, false, "9.0", "mymodule/here", new String[] { "mypackage1" });
    68             throw new RuntimeException("Failed to get expected NPE for null module");
    68             throw new RuntimeException("Failed to get expected NPE for null module");
    69         } catch(NullPointerException e) {
    69         } catch(NullPointerException e) {
    70             if (!e.getMessage().contains("Null module object")) {
    70             if (!e.getMessage().contains("Null module object")) {
    71               throw new RuntimeException("Failed to get expected IAE message for null module: " + e.getMessage());
    71               throw new RuntimeException("Failed to get expected IAE message for null module: " + e.getMessage());
    72             }
    72             }
    73             // Expected
    73             // Expected
    74         }
    74         }
    75 
    75 
    76         // Invalid module argument, expect an IAE
    76         // Invalid module argument, expect an IAE
    77         try {
    77         try {
    78             ModuleHelper.DefineModule(new Object(),  "9.0", "mymodule/here", new String[] { "mypackage1" });
    78             ModuleHelper.DefineModule(new Object(), false, "9.0", "mymodule/here", new String[] { "mypackage1" });
    79             throw new RuntimeException("Failed to get expected IAE or NPE for bad module");
    79             throw new RuntimeException("Failed to get expected IAE or NPE for bad module");
    80         } catch(IllegalArgumentException e) {
    80         } catch(IllegalArgumentException e) {
    81             if (!e.getMessage().contains("module is not an instance of type java.lang.Module")) {
    81             if (!e.getMessage().contains("module is not an instance of type java.lang.Module")) {
    82               throw new RuntimeException("Failed to get expected IAE message for bad module: " + e.getMessage());
    82               throw new RuntimeException("Failed to get expected IAE message for bad module: " + e.getMessage());
    83             }
    83             }
    84         }
    84         }
    85 
    85 
    86         // NULL module name, expect an IAE or NPE
    86         // NULL module name, expect an IAE or NPE
    87         try {
    87         try {
    88             m = ModuleHelper.ModuleObject(null, cl, new String[] { "mypackage2" });
    88             m = ModuleHelper.ModuleObject(null, cl, new String[] { "mypackage2" });
    89             ModuleHelper.DefineModule(m, "9.0", "mymodule/here", new String[] { "mypackage2" });
    89             ModuleHelper.DefineModule(m, false, "9.0", "mymodule/here", new String[] { "mypackage2" });
    90             throw new RuntimeException("Failed to get expected NPE for NULL module");
    90             throw new RuntimeException("Failed to get expected NPE for NULL module");
    91         } catch(IllegalArgumentException e) {
    91         } catch(IllegalArgumentException e) {
    92             // Expected
    92             // Expected
    93         } catch(NullPointerException e) {
    93         } catch(NullPointerException e) {
    94             // Expected
    94             // Expected
    95         }
    95         }
    96 
    96 
    97         // module name is java.base, expect an IAE
    97         // module name is java.base, expect an IAE
    98         m = ModuleHelper.ModuleObject("java.base", cl, new String[] { "mypackage3" });
    98         m = ModuleHelper.ModuleObject("java.base", cl, new String[] { "mypackage3" });
    99         try {
    99         try {
   100             ModuleHelper.DefineModule(m, "9.0", "mymodule/here", new String[] { "mypackage3" });
   100             ModuleHelper.DefineModule(m, false, "9.0", "mymodule/here", new String[] { "mypackage3" });
   101             throw new RuntimeException("Failed to get expected IAE for java.base, not defined with boot class loader");
   101             throw new RuntimeException("Failed to get expected IAE for java.base, not defined with boot class loader");
   102         } catch(IllegalArgumentException e) {
   102         } catch(IllegalArgumentException e) {
   103             if (!e.getMessage().contains("Class loader must be the boot class loader")) {
   103             if (!e.getMessage().contains("Class loader must be the boot class loader")) {
   104               throw new RuntimeException("Failed to get expected IAE message for java.base: " + e.getMessage());
   104               throw new RuntimeException("Failed to get expected IAE message for java.base: " + e.getMessage());
   105             }
   105             }
   106         }
   106         }
   107 
   107 
   108         // Empty entry in package list, expect an IAE
   108         // Empty entry in package list, expect an IAE
   109         m = ModuleHelper.ModuleObject("module.y", cl, new String[] { "mypackageX", "mypackageY" });
   109         m = ModuleHelper.ModuleObject("module.y", cl, new String[] { "mypackageX", "mypackageY" });
   110         try {
   110         try {
   111             ModuleHelper.DefineModule(m, "9.0", "mymodule/here", new String[] { "mypackageX", "", "mypackageY" });
   111             ModuleHelper.DefineModule(m, false, "9.0", "mymodule/here", new String[] { "mypackageX", "", "mypackageY" });
   112             throw new RuntimeException("Failed to get IAE for empty package");
   112             throw new RuntimeException("Failed to get IAE for empty package");
   113         } catch(IllegalArgumentException e) {
   113         } catch(IllegalArgumentException e) {
   114             if (!e.getMessage().contains("Invalid package name")) {
   114             if (!e.getMessage().contains("Invalid package name")) {
   115               throw new RuntimeException("Failed to get expected IAE message empty package entry: " + e.getMessage());
   115               throw new RuntimeException("Failed to get expected IAE message empty package entry: " + e.getMessage());
   116             }
   116             }
   117         }
   117         }
   118 
   118 
   119         // Duplicate module name, expect an ISE
   119         // Duplicate module name, expect an ISE
   120         m = ModuleHelper.ModuleObject("Module_A", cl, new String[] { "mypackage6" });
   120         m = ModuleHelper.ModuleObject("Module_A", cl, new String[] { "mypackage6" });
   121         assertNotNull(m, "Module should not be null");
   121         assertNotNull(m, "Module should not be null");
   122         ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "mypackage6" });
   122         ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "mypackage6" });
   123         try {
   123         try {
   124             ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "mypackage6a" });
   124             ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "mypackage6a" });
   125             throw new RuntimeException("Failed to get ISE for duplicate module");
   125             throw new RuntimeException("Failed to get ISE for duplicate module");
   126         } catch(IllegalStateException e) {
   126         } catch(IllegalStateException e) {
   127             if (!e.getMessage().contains("Module Module_A is already defined")) {
   127             if (!e.getMessage().contains("Module Module_A is already defined")) {
   128               throw new RuntimeException("Failed to get expected ISE message for duplicate module: " + e.getMessage());
   128               throw new RuntimeException("Failed to get expected ISE message for duplicate module: " + e.getMessage());
   129             }
   129             }
   130         }
   130         }
   131 
   131 
   132         // Package is already defined for class loader, expect an ISE
   132         // Package is already defined for class loader, expect an ISE
   133         m = ModuleHelper.ModuleObject("dupl.pkg.module", cl, new String[] { "mypackage6b" });
   133         m = ModuleHelper.ModuleObject("dupl.pkg.module", cl, new String[] { "mypackage6b" });
   134         try {
   134         try {
   135             ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "mypackage6" });
   135             ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "mypackage6" });
   136             throw new RuntimeException("Failed to get ISE for existing package");
   136             throw new RuntimeException("Failed to get ISE for existing package");
   137         } catch(IllegalStateException e) {
   137         } catch(IllegalStateException e) {
   138             if (!e.getMessage().contains("Package mypackage6 for module dupl.pkg.module is already in another module, Module_A, defined to the class loader")) {
   138             if (!e.getMessage().contains("Package mypackage6 for module dupl.pkg.module is already in another module, Module_A, defined to the class loader")) {
   139               throw new RuntimeException("Failed to get expected ISE message for duplicate package: " + e.getMessage());
   139               throw new RuntimeException("Failed to get expected ISE message for duplicate package: " + e.getMessage());
   140             }
   140             }
   141         }
   141         }
   142 
   142 
   143         // Empty module name, expect an IAE
   143         // Empty module name, expect an IAE
   144         try {
   144         try {
   145             m = ModuleHelper.ModuleObject("", cl, new String[] { "mypackage8" });
   145             m = ModuleHelper.ModuleObject("", cl, new String[] { "mypackage8" });
   146             ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "mypackage8" });
   146             ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "mypackage8" });
   147             throw new RuntimeException("Failed to get expected IAE for empty module name");
   147             throw new RuntimeException("Failed to get expected IAE for empty module name");
   148         } catch(IllegalArgumentException e) {
   148         } catch(IllegalArgumentException e) {
   149             // Expected
   149             // Expected
   150         }
   150         }
   151 
   151 
   152         // Module name with ';', not allowed in java source
   152         // Module name with ';', not allowed in java source
   153         try {
   153         try {
   154             m = ModuleHelper.ModuleObject("bad;name", cl, new String[] { "mypackage9" });
   154             m = ModuleHelper.ModuleObject("bad;name", cl, new String[] { "mypackage9" });
   155             ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "mypackage9" });
   155             ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "mypackage9" });
   156             throw new RuntimeException("Failed to get expected IAE for bad;name");
   156             throw new RuntimeException("Failed to get expected IAE for bad;name");
   157         } catch(IllegalArgumentException e) {
   157         } catch(IllegalArgumentException e) {
   158             // Expected
   158             // Expected
   159         }
   159         }
   160 
   160 
   161         // Module name with leading dot, not allowed in java source
   161         // Module name with leading dot, not allowed in java source
   162         try {
   162         try {
   163             m = ModuleHelper.ModuleObject(".leadingdot", cl, new String[] { "mypackage9a" });
   163             m = ModuleHelper.ModuleObject(".leadingdot", cl, new String[] { "mypackage9a" });
   164             ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "mypackage9a" });
   164             ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "mypackage9a" });
   165             throw new RuntimeException("Failed to get expected IAE for .leadingdot");
   165             throw new RuntimeException("Failed to get expected IAE for .leadingdot");
   166         } catch(IllegalArgumentException e) {
   166         } catch(IllegalArgumentException e) {
   167             // Expected
   167             // Expected
   168         }
   168         }
   169 
   169 
   170         // Module name with trailing dot, not allowed in java source
   170         // Module name with trailing dot, not allowed in java source
   171         try {
   171         try {
   172             m = ModuleHelper.ModuleObject("trailingdot.", cl, new String[] { "mypackage9b" });
   172             m = ModuleHelper.ModuleObject("trailingdot.", cl, new String[] { "mypackage9b" });
   173             ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "mypackage9b" });
   173             ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "mypackage9b" });
   174             throw new RuntimeException("Failed to get expected IAE for trailingdot.");
   174             throw new RuntimeException("Failed to get expected IAE for trailingdot.");
   175         } catch(IllegalArgumentException e) {
   175         } catch(IllegalArgumentException e) {
   176             // Expected
   176             // Expected
   177         }
   177         }
   178 
   178 
   179         // Module name with consecutive dots, not allowed in java source
   179         // Module name with consecutive dots, not allowed in java source
   180         try {
   180         try {
   181             m = ModuleHelper.ModuleObject("trailingdot.", cl, new String[] { "mypackage9b" });
   181             m = ModuleHelper.ModuleObject("trailingdot.", cl, new String[] { "mypackage9b" });
   182             ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "mypackage9b" });
   182             ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "mypackage9b" });
   183             throw new RuntimeException("Failed to get expected IAE for trailingdot.");
   183             throw new RuntimeException("Failed to get expected IAE for trailingdot.");
   184         } catch(IllegalArgumentException e) {
   184         } catch(IllegalArgumentException e) {
   185             // Expected
   185             // Expected
   186         }
   186         }
   187 
   187 
   188         // module name with multiple dots, should be okay
   188         // module name with multiple dots, should be okay
   189         m = ModuleHelper.ModuleObject("more.than.one.dat", cl, new String[] { "mypackage9d" });
   189         m = ModuleHelper.ModuleObject("more.than.one.dat", cl, new String[] { "mypackage9d" });
   190         assertNotNull(m, "Module should not be null");
   190         assertNotNull(m, "Module should not be null");
   191         ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "mypackage9d" });
   191         ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "mypackage9d" });
   192 
   192 
   193         // Zero length package list, should be okay
   193         // Zero length package list, should be okay
   194         m = ModuleHelper.ModuleObject("zero.packages", cl, new String[] { });
   194         m = ModuleHelper.ModuleObject("zero.packages", cl, new String[] { });
   195         assertNotNull(m, "Module should not be null");
   195         assertNotNull(m, "Module should not be null");
   196         ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { });
   196         ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { });
   197 
   197 
   198         // Invalid package name, expect an IAE
   198         // Invalid package name, expect an IAE
   199         m = ModuleHelper.ModuleObject("moduleFive", cl, new String[] { "your.package" });
   199         m = ModuleHelper.ModuleObject("moduleFive", cl, new String[] { "your.package" });
   200         try {
   200         try {
   201             ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "your.package" });
   201             ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "your.package" });
   202             throw new RuntimeException("Failed to get expected IAE for your.package");
   202             throw new RuntimeException("Failed to get expected IAE for your.package");
   203         } catch(IllegalArgumentException e) {
   203         } catch(IllegalArgumentException e) {
   204             if (!e.getMessage().contains("Invalid package name")) {
   204             if (!e.getMessage().contains("Invalid package name")) {
   205               throw new RuntimeException("Failed to get expected IAE message for bad package name: " + e.getMessage());
   205               throw new RuntimeException("Failed to get expected IAE message for bad package name: " + e.getMessage());
   206             }
   206             }
   207         }
   207         }
   208 
   208 
   209         // Invalid package name, expect an IAE
   209         // Invalid package name, expect an IAE
   210         m = ModuleHelper.ModuleObject("moduleSix", cl, new String[] { "foo" }); // Name irrelevant
   210         m = ModuleHelper.ModuleObject("moduleSix", cl, new String[] { "foo" }); // Name irrelevant
   211         try {
   211         try {
   212             ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { ";your/package" });
   212             ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { ";your/package" });
   213             throw new RuntimeException("Failed to get expected IAE for ;your.package");
   213             throw new RuntimeException("Failed to get expected IAE for ;your.package");
   214         } catch(IllegalArgumentException e) {
   214         } catch(IllegalArgumentException e) {
   215             if (!e.getMessage().contains("Invalid package name")) {
   215             if (!e.getMessage().contains("Invalid package name")) {
   216               throw new RuntimeException("Failed to get expected IAE message for bad package name: " + e.getMessage());
   216               throw new RuntimeException("Failed to get expected IAE message for bad package name: " + e.getMessage());
   217             }
   217             }
   218         }
   218         }
   219 
   219 
   220         // Invalid package name, expect an IAE
   220         // Invalid package name, expect an IAE
   221         m = ModuleHelper.ModuleObject("moduleSeven", cl, new String[] { "foo" }); // Name irrelevant
   221         m = ModuleHelper.ModuleObject("moduleSeven", cl, new String[] { "foo" }); // Name irrelevant
   222         try {
   222         try {
   223             ModuleHelper.DefineModule(m, "9.0", "module.name/here", new String[] { "7[743" });
   223             ModuleHelper.DefineModule(m, false, "9.0", "module.name/here", new String[] { "7[743" });
   224             throw new RuntimeException("Failed to get expected IAE for package 7[743");
   224             throw new RuntimeException("Failed to get expected IAE for package 7[743");
   225         } catch(IllegalArgumentException e) {
   225         } catch(IllegalArgumentException e) {
   226             if (!e.getMessage().contains("Invalid package name")) {
   226             if (!e.getMessage().contains("Invalid package name")) {
   227               throw new RuntimeException("Failed to get expected IAE message for bad package name: " + e.getMessage());
   227               throw new RuntimeException("Failed to get expected IAE message for bad package name: " + e.getMessage());
   228             }
   228             }
   230 
   230 
   231         // Package named "java" defined to a class loader other than the boot or platform class loader, expect an IAE
   231         // Package named "java" defined to a class loader other than the boot or platform class loader, expect an IAE
   232         m = ModuleHelper.ModuleObject("modulejavapkgOne", cl, new String[] { "java/foo" });
   232         m = ModuleHelper.ModuleObject("modulejavapkgOne", cl, new String[] { "java/foo" });
   233         try {
   233         try {
   234             // module m is defined to an instance of MyClassLoader class loader
   234             // module m is defined to an instance of MyClassLoader class loader
   235             ModuleHelper.DefineModule(m, "9.0", "modulejavapkgOne", new String[] { "java/foo" });
   235             ModuleHelper.DefineModule(m, false, "9.0", "modulejavapkgOne", new String[] { "java/foo" });
   236             throw new RuntimeException("Failed to get expected IAE for package java/foo");
   236             throw new RuntimeException("Failed to get expected IAE for package java/foo");
   237         } catch(IllegalArgumentException e) {
   237         } catch(IllegalArgumentException e) {
   238             if (!e.getMessage().contains("prohibited package name")) {
   238             if (!e.getMessage().contains("prohibited package name")) {
   239               throw new RuntimeException("Failed to get expected IAE message for prohibited package name: " + e.getMessage());
   239               throw new RuntimeException("Failed to get expected IAE message for prohibited package name: " + e.getMessage());
   240             }
   240             }
   241         }
   241         }
   242 
   242 
   243         // Package named "javabar" defined to a class loader other than the boot or platform class loader, should be ok
   243         // Package named "javabar" defined to a class loader other than the boot or platform class loader, should be ok
   244         m = ModuleHelper.ModuleObject("modulejavapkgTwo", cl, new String[] { "javabar" });
   244         m = ModuleHelper.ModuleObject("modulejavapkgTwo", cl, new String[] { "javabar" });
   245         assertNotNull(m, "Module should not be null");
   245         assertNotNull(m, "Module should not be null");
   246         ModuleHelper.DefineModule(m, "9.0", "modulejavapkgTwo", new String[] { "javabar" });
   246         ModuleHelper.DefineModule(m, false, "9.0", "modulejavapkgTwo", new String[] { "javabar" });
   247 
   247 
   248         // Package named "java" defined to the boot class loader, should be ok
   248         // Package named "java" defined to the boot class loader, should be ok
   249         //   m's type is a java.lang.Object, module is java.base
   249         //   m's type is a java.lang.Object, module is java.base
   250         //   java.base module is defined to the boot loader
   250         //   java.base module is defined to the boot loader
   251         ClassLoader boot_loader = m.getClass().getClassLoader();
   251         ClassLoader boot_loader = m.getClass().getClassLoader();
   252         m = ModuleHelper.ModuleObject("modulejavapkgThree", boot_loader, new String[] { "java/foo" });
   252         m = ModuleHelper.ModuleObject("modulejavapkgThree", boot_loader, new String[] { "java/foo" });
   253         assertNotNull(m, "Module should not be null");
   253         assertNotNull(m, "Module should not be null");
   254         ModuleHelper.DefineModule(m, "9.0", "modulejavapkgThree", new String[] { "java/foo" });
   254         ModuleHelper.DefineModule(m, false, "9.0", "modulejavapkgThree", new String[] { "java/foo" });
   255 
   255 
   256         // Package named "java" defined to the platform class loader, should be ok
   256         // Package named "java" defined to the platform class loader, should be ok
   257         //   java.sql module defined to the platform class loader.
   257         //   java.sql module defined to the platform class loader.
   258         java.sql.Time jst = new java.sql.Time(45 * 1000);
   258         java.sql.Time jst = new java.sql.Time(45 * 1000);
   259         ClassLoader platform_loader = jst.getClass().getClassLoader();
   259         ClassLoader platform_loader = jst.getClass().getClassLoader();
   260         m = ModuleHelper.ModuleObject("modulejavapkgFour", platform_loader, new String[] { "java/foo" });
   260         m = ModuleHelper.ModuleObject("modulejavapkgFour", platform_loader, new String[] { "java/foo" });
   261         assertNotNull(m, "Module should not be null");
   261         assertNotNull(m, "Module should not be null");
   262         ModuleHelper.DefineModule(m, "9.0", "modulejavapkgFour", new String[] { "java/foo" });
   262         ModuleHelper.DefineModule(m, false, "9.0", "modulejavapkgFour", new String[] { "java/foo" });
   263 
   263 
   264         // module version that is null, should be okay
   264         // module version that is null, should be okay
   265         m = ModuleHelper.ModuleObject("moduleEight", cl, new String[] { "a_package_8" });
   265         m = ModuleHelper.ModuleObject("moduleEight", cl, new String[] { "a_package_8" });
   266         assertNotNull(m, "Module should not be null");
   266         assertNotNull(m, "Module should not be null");
   267         ModuleHelper.DefineModule(m, null, "moduleEight/here", new String[] { "a_package_8" });
   267         ModuleHelper.DefineModule(m, false, null, "moduleEight/here", new String[] { "a_package_8" });
   268 
   268 
   269         // module version that is "", should be okay
   269         // module version that is "", should be okay
   270         m = ModuleHelper.ModuleObject("moduleNine", cl, new String[] { "a_package_9" });
   270         m = ModuleHelper.ModuleObject("moduleNine", cl, new String[] { "a_package_9" });
   271         assertNotNull(m, "Module should not be null");
   271         assertNotNull(m, "Module should not be null");
   272         ModuleHelper.DefineModule(m, "", "moduleNine/here", new String[] { "a_package_9" });
   272         ModuleHelper.DefineModule(m, false, "", "moduleNine/here", new String[] { "a_package_9" });
   273 
   273 
   274         // module location that is null, should be okay
   274         // module location that is null, should be okay
   275         m = ModuleHelper.ModuleObject("moduleTen", cl, new String[] { "a_package_10" });
   275         m = ModuleHelper.ModuleObject("moduleTen", cl, new String[] { "a_package_10" });
   276         assertNotNull(m, "Module should not be null");
   276         assertNotNull(m, "Module should not be null");
   277         ModuleHelper.DefineModule(m, "9.0", null, new String[] { "a_package_10" });
   277         ModuleHelper.DefineModule(m, false, "9.0", null, new String[] { "a_package_10" });
   278 
   278 
   279         // module location that is "", should be okay
   279         // module location that is "", should be okay
   280         m = ModuleHelper.ModuleObject("moduleEleven", cl, new String[] { "a_package_11" });
   280         m = ModuleHelper.ModuleObject("moduleEleven", cl, new String[] { "a_package_11" });
   281         assertNotNull(m, "Module should not be null");
   281         assertNotNull(m, "Module should not be null");
   282         ModuleHelper.DefineModule(m, "9.0", "", new String[] { "a_package_11" });
   282         ModuleHelper.DefineModule(m, false, "9.0", "", new String[] { "a_package_11" });
   283     }
   283     }
   284 
   284 
   285     static class MyClassLoader extends ClassLoader { }
   285     static class MyClassLoader extends ClassLoader { }
   286 }
   286 }