< 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 >