< prev index next >

test/runtime/modules/AccessCheckUnnamed.java

Print this page




  38 
  39 public class AccessCheckUnnamed {
  40 
  41     // Test that a class in the unnamed module can not access a package in a
  42     // named module that has not been unqualifiedly exported.
  43     public static void main(String args[]) throws Throwable {
  44         Object m1x, m2x;
  45 
  46         // Get the java.lang.Module object for module java.base.
  47         Class jlObject = Class.forName("java.lang.Object");
  48         Object jlObject_jlM = jlObject.getModule();
  49         assertNotNull(jlObject_jlM, "jlModule object of java.lang.Object should not be null");
  50 
  51         // Get the class loader for AccessCheckWorks and assume it's also used to
  52         // load class p2.c2.
  53         ClassLoader this_cldr = AccessCheckUnnamed.class.getClassLoader();
  54 
  55         // Define a module for p2.
  56         m2x = ModuleHelper.ModuleObject("module_two", this_cldr, new String[] { "p2" });
  57         assertNotNull(m2x, "Module should not be null");
  58         ModuleHelper.DefineModule(m2x, "9.0", "m2x/there", new String[] { "p2" });
  59         ModuleHelper.AddReadsModule(m2x, jlObject_jlM);
  60 
  61         // p1.c1's ctor tries to call a method in p2.c2.  This should fail because
  62         // p1 is in the unnamed module and p2.c2 is not unqualifiedly exported.
  63         Class p1_c1_class = Class.forName("p1.c1");
  64         try {
  65             Object c1_obj = p1_c1_class.newInstance();
  66             throw new RuntimeException("Failed to get IAE (p2 in m2x is not exported to unnamed module)");
  67         } catch (IllegalAccessError f) {
  68             System.out.println(f.getMessage());
  69             if (!f.getMessage().contains("does not export p2 to unnamed module")) {
  70                 throw new RuntimeException("Wrong message: " + f.getMessage());
  71             }
  72         }
  73     }
  74 }
  75 


  38 
  39 public class AccessCheckUnnamed {
  40 
  41     // Test that a class in the unnamed module can not access a package in a
  42     // named module that has not been unqualifiedly exported.
  43     public static void main(String args[]) throws Throwable {
  44         Object m1x, m2x;
  45 
  46         // Get the java.lang.Module object for module java.base.
  47         Class jlObject = Class.forName("java.lang.Object");
  48         Object jlObject_jlM = jlObject.getModule();
  49         assertNotNull(jlObject_jlM, "jlModule object of java.lang.Object should not be null");
  50 
  51         // Get the class loader for AccessCheckWorks and assume it's also used to
  52         // load class p2.c2.
  53         ClassLoader this_cldr = AccessCheckUnnamed.class.getClassLoader();
  54 
  55         // Define a module for p2.
  56         m2x = ModuleHelper.ModuleObject("module_two", this_cldr, new String[] { "p2" });
  57         assertNotNull(m2x, "Module should not be null");
  58         ModuleHelper.DefineModule(m2x, false, "9.0", "m2x/there", new String[] { "p2" });
  59         ModuleHelper.AddReadsModule(m2x, jlObject_jlM);
  60 
  61         // p1.c1's ctor tries to call a method in p2.c2.  This should fail because
  62         // p1 is in the unnamed module and p2.c2 is not unqualifiedly exported.
  63         Class p1_c1_class = Class.forName("p1.c1");
  64         try {
  65             Object c1_obj = p1_c1_class.newInstance();
  66             throw new RuntimeException("Failed to get IAE (p2 in m2x is not exported to unnamed module)");
  67         } catch (IllegalAccessError f) {
  68             System.out.println(f.getMessage());
  69             if (!f.getMessage().contains("does not export p2 to unnamed module")) {
  70                 throw new RuntimeException("Wrong message: " + f.getMessage());
  71             }
  72         }
  73     }
  74 }
  75 
< prev index next >