< prev index next >

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

Print this page

        

@@ -32,12 +32,13 @@
  */
 
 import java.io.File;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles.Lookup;
-import java.lang.invoke.MethodHandles.Lookup.ClassOption;
+
 import static java.lang.invoke.MethodHandles.lookup;
+import static java.lang.invoke.MethodHandles.Lookup.ClassOption.*;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;

@@ -63,14 +64,18 @@
 
     private static final Path SRC_DIR = Paths.get(Utils.TEST_SRC, "src");
     private static final Path CLASSES_DIR = Paths.get("classes");
     private static final Path CLASSES_10_DIR = Paths.get("classes_10");
 
+    private static byte[] hiddenClassBytes;
+
     @BeforeTest
     static void setup() throws IOException {
         compileSources(SRC_DIR, CLASSES_DIR);
 
+        hiddenClassBytes = Files.readAllBytes(CLASSES_DIR.resolve("HiddenClass.class"));
+
         // compile with --release 10 with no NestHost and NestMembers attribute
         compileSources(SRC_DIR.resolve("Outer.java"), CLASSES_10_DIR, "--release", "10");
         compileSources(SRC_DIR.resolve("EnclosingClass.java"), CLASSES_10_DIR, "--release", "10");
     }
 

@@ -160,16 +165,16 @@
     }
 
     // Verify the nest host and nest members of a hidden class and hidden nestmate class
     @Test
     public void testHiddenNestHost() throws Throwable {
-        byte[] hc1 = Files.readAllBytes(CLASSES_DIR.resolve("HiddenClass.class"));
+        byte[] hc1 = hiddenClassBytes;
         Lookup lookup1 = lookup().defineHiddenClass(hc1, false);
         Class<?> host = lookup1.lookupClass();
 
         byte[] hc2 = Files.readAllBytes(CLASSES_DIR.resolve("Lambda.class"));
-        Lookup lookup2 = lookup1.defineHiddenClass(hc2, false, ClassOption.NESTMATE);
+        Lookup lookup2 = lookup1.defineHiddenClass(hc2, false, NESTMATE);
         Class<?> member = lookup2.lookupClass();
 
         // test nest membership and reflection API
         assertTrue(host.isNestmateOf(member));
         assertTrue(host.getNestHost() == host);

@@ -223,11 +228,11 @@
     public void defineHiddenClass(String name, boolean nestmate) throws Exception {
         byte[] bytes = Files.readAllBytes(CLASSES_DIR.resolve(name + ".class"));
         Class<?> hc;
         Class<?> host;
         if (nestmate) {
-            hc = lookup().defineHiddenClass(bytes, false, ClassOption.NESTMATE).lookupClass();
+            hc = lookup().defineHiddenClass(bytes, false, NESTMATE).lookupClass();
             host = lookup().lookupClass().getNestHost();
         } else {
             hc = lookup().defineHiddenClass(bytes, false).lookupClass();
             host = hc;
         }

@@ -264,12 +269,11 @@
     }
 
     @Test(expectedExceptions = {IllegalAccessException.class})
     public void lessPrivilegedLookup() throws Throwable {
         Lookup lookup = lookup().dropLookupMode(Lookup.PRIVATE);
-        byte[] bytes = Files.readAllBytes(CLASSES_DIR.resolve("HiddenClass.class"));
-        lookup.defineHiddenClass(bytes, false);
+        lookup.defineHiddenClass(hiddenClassBytes, false);
     }
 
     @DataProvider(name = "nestedTypesOrAnonymousClass")
     private Object[][] nestedTypesOrAnonymousClass() {
         return new Object[][] {
< prev index next >