< prev index next >

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

Print this page
rev 58768 : 8238358: Implementation of JEP 371: Hidden Classes
Reviewed-by: alanb, cjplummer, coleenp, dholmes, dlong, forax, jlahoda, psandoz, plevart, vromero
Contributed-by: mandy.chung@oracle.com, lois.foltan@oracle.com, david.holmes@oracle.com, harold.seigel@oracle.com, serguei.spitsyn@oracle.com, alex.buckley@oracle.com, jamsheed.c.m@oracle.com, jan.lahoda@oracle.com, amy.lu@oracle.com
rev 58769 : imported patch type-descriptor-name


 122 
 123         // test setAccessible
 124         checkSetAccessible(c, "realTest");
 125         checkSetAccessible(c, "test");
 126     }
 127 
 128     // primitive class is not a hidden class
 129     @Test
 130     public void primitiveClass() {
 131         assertFalse(int.class.isHidden());
 132         assertFalse(String.class.isHidden());
 133     }
 134 
 135     private void testHiddenArray(Class<?> type) throws Exception {
 136         // array of hidden class
 137         Object array = Array.newInstance(type, 2);
 138         Class<?> arrayType = array.getClass();
 139         assertTrue(arrayType.isArray());
 140         assertTrue(Array.getLength(array) == 2);
 141         assertFalse(arrayType.isHidden());
 142         assertTrue(arrayType.getName().startsWith("[LHiddenClass/"), "unexpected name: " + arrayType.getName());
 143 
 144         assertTrue(arrayType.getComponentType().isHidden());
 145         assertTrue(arrayType.getComponentType() == type);
 146         Object t = type.newInstance();
 147         Array.set(array, 0, t);
 148         Object o = Array.get(array, 0);
 149         assertTrue(o == t);
 150     }
 151 
 152     private void checkSetAccessible(Class<?> c, String name, Class<?>... ptypes) throws Exception {
 153         Method m = c.getDeclaredMethod(name, ptypes);
 154         assertTrue(m.trySetAccessible());
 155         m.setAccessible(true);
 156     }
 157 
 158     // Define a hidden class that uses lambda
 159     // This verifies LambdaMetaFactory supports the caller which is a hidden class
 160     @Test
 161     public void testLambda() throws Throwable {
 162         HiddenTest t = (HiddenTest)defineHiddenClass("Lambda").newInstance();




 122 
 123         // test setAccessible
 124         checkSetAccessible(c, "realTest");
 125         checkSetAccessible(c, "test");
 126     }
 127 
 128     // primitive class is not a hidden class
 129     @Test
 130     public void primitiveClass() {
 131         assertFalse(int.class.isHidden());
 132         assertFalse(String.class.isHidden());
 133     }
 134 
 135     private void testHiddenArray(Class<?> type) throws Exception {
 136         // array of hidden class
 137         Object array = Array.newInstance(type, 2);
 138         Class<?> arrayType = array.getClass();
 139         assertTrue(arrayType.isArray());
 140         assertTrue(Array.getLength(array) == 2);
 141         assertFalse(arrayType.isHidden());
 142         assertTrue(arrayType.getName().matches("\\[LHiddenClass;/0x[0-9a-f]+"), "unexpected name: " + arrayType.getName());
 143 
 144         assertTrue(arrayType.getComponentType().isHidden());
 145         assertTrue(arrayType.getComponentType() == type);
 146         Object t = type.newInstance();
 147         Array.set(array, 0, t);
 148         Object o = Array.get(array, 0);
 149         assertTrue(o == t);
 150     }
 151 
 152     private void checkSetAccessible(Class<?> c, String name, Class<?>... ptypes) throws Exception {
 153         Method m = c.getDeclaredMethod(name, ptypes);
 154         assertTrue(m.trySetAccessible());
 155         m.setAccessible(true);
 156     }
 157 
 158     // Define a hidden class that uses lambda
 159     // This verifies LambdaMetaFactory supports the caller which is a hidden class
 160     @Test
 161     public void testLambda() throws Throwable {
 162         HiddenTest t = (HiddenTest)defineHiddenClass("Lambda").newInstance();


< prev index next >