< prev index next >

test/jdk/java/lang/invoke/defineHiddenClass/DefineClassWithClassData.java

Print this page




  96 
  97     @Test
  98     public void defineHiddenClass() throws Throwable {
  99         // define a hidden class
 100         Lookup lookup = MethodHandles.lookup().defineHiddenClassWithClassData(T_CLASS_BYTES, classData, false, NESTMATE);
 101         Class<?> c = lookup.lookupClass();
 102         assertTrue(c.getNestHost() == DefineClassWithClassData.class);
 103         assertTrue(c.isHiddenClass());
 104         assertEquals(classData, injectedData(c));
 105 
 106         // invoke int test(DefineClassWithClassData o)
 107         int x = testInjectedClass(c);
 108         assertTrue(x == privMethod());
 109 
 110         // dynamic nestmate is not listed in the return array of getNestMembers
 111         assertTrue(Stream.of(c.getNestHost().getNestMembers()).noneMatch(k -> k == c));
 112         assertTrue(c.isNestmateOf(DefineClassWithClassData.class));
 113     }
 114 
 115     @Test
 116     public void defineWeakClass() throws Throwable {
 117         // define a weak class
 118         Lookup lookup = MethodHandles.lookup().defineHiddenClassWithClassData(T_CLASS_BYTES, classData, true, WEAK);
 119         Class<?> c = lookup.lookupClass();
 120         assertTrue(c.getNestHost() == c);
 121         assertTrue(c.isHiddenClass());
 122     }
 123 
 124     @Test(expectedExceptions = IllegalAccessException.class)
 125     public void noPrivateLookupAccess() throws Throwable {
 126         Lookup lookup = MethodHandles.lookup().dropLookupMode(Lookup.PRIVATE);
 127         lookup.defineHiddenClassWithClassData(T2_CLASS_BYTES, classData, false, NESTMATE);
 128     }
 129 
 130     @Test
 131     public void teleportToNestmate() throws Throwable {
 132         Lookup lookup = MethodHandles.lookup()
 133             .defineHiddenClassWithClassData(T_CLASS_BYTES, classData, false, NESTMATE);
 134         Class<?> c = lookup.lookupClass();
 135         assertTrue(c.getNestHost() == DefineClassWithClassData.class);
 136         assertEquals(classData, injectedData(c));
 137         assertTrue(c.isHiddenClass());
 138 




  96 
  97     @Test
  98     public void defineHiddenClass() throws Throwable {
  99         // define a hidden class
 100         Lookup lookup = MethodHandles.lookup().defineHiddenClassWithClassData(T_CLASS_BYTES, classData, false, NESTMATE);
 101         Class<?> c = lookup.lookupClass();
 102         assertTrue(c.getNestHost() == DefineClassWithClassData.class);
 103         assertTrue(c.isHiddenClass());
 104         assertEquals(classData, injectedData(c));
 105 
 106         // invoke int test(DefineClassWithClassData o)
 107         int x = testInjectedClass(c);
 108         assertTrue(x == privMethod());
 109 
 110         // dynamic nestmate is not listed in the return array of getNestMembers
 111         assertTrue(Stream.of(c.getNestHost().getNestMembers()).noneMatch(k -> k == c));
 112         assertTrue(c.isNestmateOf(DefineClassWithClassData.class));
 113     }
 114 
 115     @Test
 116     public void defineStrongClass() throws Throwable {
 117         Lookup lookup = MethodHandles.lookup().defineHiddenClassWithClassData(T_CLASS_BYTES, classData, true, STRONG);

 118         Class<?> c = lookup.lookupClass();
 119         assertTrue(c.getNestHost() == c);
 120         assertTrue(c.isHiddenClass());
 121     }
 122 
 123     @Test(expectedExceptions = IllegalAccessException.class)
 124     public void noPrivateLookupAccess() throws Throwable {
 125         Lookup lookup = MethodHandles.lookup().dropLookupMode(Lookup.PRIVATE);
 126         lookup.defineHiddenClassWithClassData(T2_CLASS_BYTES, classData, false, NESTMATE);
 127     }
 128 
 129     @Test
 130     public void teleportToNestmate() throws Throwable {
 131         Lookup lookup = MethodHandles.lookup()
 132             .defineHiddenClassWithClassData(T_CLASS_BYTES, classData, false, NESTMATE);
 133         Class<?> c = lookup.lookupClass();
 134         assertTrue(c.getNestHost() == DefineClassWithClassData.class);
 135         assertEquals(classData, injectedData(c));
 136         assertTrue(c.isHiddenClass());
 137 


< prev index next >