< prev index next >

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

Print this page
rev 59275 : [mq]: v1

@@ -283,43 +283,33 @@
 
     @Test(dataProvider = "nestedTypesOrAnonymousClass")
     public void hasInnerClassesOrEnclosingMethodAttribute(String className, String badDeclaringClassName) throws Throwable {
         byte[] bytes = Files.readAllBytes(CLASSES_10_DIR.resolve(className + ".class"));
         Class<?> hc = lookup().defineHiddenClass(bytes, false).lookupClass();
-        hiddenClassWithBadAttribute(hc, badDeclaringClassName, null);
+        hiddenClassWithBadAttribute(hc, badDeclaringClassName);
     }
 
-    private static final String BAD_NEST_HOST_CLASS_ERROR = "Unable to load nest-host class (Outer) of Outer$Inner/";
-
     // define a hidden class with static nest membership
-    // it fails when it attempts to validate the nest membership
     @Test
     public void hasStaticNestHost() throws Exception {
         byte[] bytes = Files.readAllBytes(CLASSES_DIR.resolve("Outer$Inner.class"));
         Class<?> hc = lookup().defineHiddenClass(bytes, false).lookupClass();
-        hiddenClassWithBadAttribute(hc, "Outer", BAD_NEST_HOST_CLASS_ERROR);
+        hiddenClassWithBadAttribute(hc, "Outer");
     }
 
     @Test
     public void hasStaticNestMembers() throws Throwable {
         byte[] bytes = Files.readAllBytes(CLASSES_DIR.resolve("Outer.class"));
         Class<?> hc = lookup().defineHiddenClass(bytes, false).lookupClass();
         assertHiddenClass(hc);
         assertTrue(hc.getNestHost() == hc);
-        try {
-            // fail to validate the static nest membership
-            hc.getNestMembers();
-            assertTrue(false);
-        } catch (NoClassDefFoundError e) {
-            if (!e.getMessage().equals("Outer$Inner")) {
-                throw e;
-            }
-        }
+        Class<?>[] members = hc.getNestMembers();
+        assertTrue(members.length == 1 && members[0] == hc);
     }
 
     // a hidden class with bad InnerClasses or EnclosingMethod attribute
-    private void hiddenClassWithBadAttribute(Class<?> hc, String badDeclaringClassName, String badNestMembersError) {
+    private void hiddenClassWithBadAttribute(Class<?> hc, String badDeclaringClassName) {
         assertTrue(hc.isHiddenClass());
         assertTrue(hc.getCanonicalName() == null);
         assertTrue(hc.getName().contains("/"));
 
         if (badDeclaringClassName == null) {

@@ -331,21 +321,15 @@
             assertFalse(hc.isMemberClass());
         } else {
             declaringClassNotFound(hc, badDeclaringClassName);
         }
 
-        // validation of nest membership may fail
+        // validation of nest membership
         assertTrue(hc.getNestHost() == hc);
-        try {
             // validate the static nest membership
-            hc.getNestMembers();
-            assertTrue(badNestMembersError == null);
-        } catch (NoClassDefFoundError e) {
-            if (!e.getMessage().startsWith(badNestMembersError)) {
-                throw e;
-            }
-        }
+        Class<?>[] members = hc.getNestMembers();
+        assertTrue(members.length == 1 && members[0] == hc);
     }
 
     // Class::getSimpleName, Class::isMemberClass
     private void declaringClassNotFound(Class<?> c, String cn) {
         try {
< prev index next >