8016725: TEST_BUG: java/lang/reflect/Method/DefaultMethodModeling.java failing intermittently
Summary: Moved DefaultMethodModeling.java to its own directory to avoid conflicts with Equals.java.
Reviewed-by: darcy
--- a/jdk/test/java/lang/reflect/Method/DefaultMethodModeling.java Mon Nov 04 10:12:18 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8011590
- * @summary Check modeling of default methods
- * @author Joseph D. Darcy
- */
-
-import java.util.Objects;
-import java.lang.reflect.*;
-import java.lang.annotation.*;
-
-import static java.lang.reflect.Modifier.*;
-
-public class DefaultMethodModeling {
- public static void main(String... args) {
- int failures = 0;
-
- Class<?>[] classes = {SuperC.class, SuperCchild.class,
- SuperI.class, SuperIchild.class,
- SuperIwithDefault.class, SuperIwithDefaultChild.class,
- Base.class, Combo1.class, Combo2.class,
- SonSuperIwithDefault.class, DaughterSuperIwithDefault.class, GrandchildSuperIwithDefault.class, D.class,
- B.class, C.class, B1.class, D1.class
- };
-
- for(Class<?> clazz : classes) {
- System.err.println(clazz.toString());
- for(Method m : clazz.getMethods()) {
- if (m.getDeclaringClass() != java.lang.Object.class)
- failures += testMethod(m);
- }
- }
-
- if (failures > 0)
- throw new RuntimeException();
- }
-
- private static int testMethod(Method m) {
- ExpectedModel em = Objects.requireNonNull(m.getAnnotation(ExpectedModel.class));
- boolean failed = false;
-
- if (m.getModifiers() != em.modifiers()) {
- failed = true;
- System.err.printf("Unexpected modifiers %d; expected %d%n", m.getModifiers(), em.modifiers());
- }
-
- if (m.isDefault() != em.isDefault()) {
- failed = true;
- System.err.printf("Unexpected isDefualt %b; expected b%n", m.isDefault(), em.isDefault());
- }
-
- if (!m.getDeclaringClass().equals(em.declaringClass())) {
- failed = true;
- System.err.printf("Unexpected isDefualt %s; expected %s%n",
- m.getDeclaringClass().toString(), em.declaringClass().toString());
- }
-
- return (!failed) ? 0 :1;
- }
-}
-
-@Retention(RetentionPolicy.RUNTIME)
-@interface ExpectedModel {
- boolean isDefault() default false;
- int modifiers() default PUBLIC;
- Class<?> declaringClass();
-}
-
-abstract class SuperC {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperC.class)
- public abstract void foo();
-
- @ExpectedModel(declaringClass=SuperC.class)
- public void bar() {
- ;
- }
-}
-
-class SuperCchild extends SuperC {
- @ExpectedModel(declaringClass=SuperCchild.class)
- @Override
- public void foo() {;}
-}
-
-// -=-=-=-
-
-interface SuperI {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperI.class)
- void foo();
-
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperI.class)
- void bar();
-}
-
-class SuperIchild implements SuperI {
- @ExpectedModel(declaringClass=SuperIchild.class)
- public void foo() {;}
-
- @ExpectedModel(declaringClass=SuperIchild.class)
- public void bar() {;}
-}
-
-// -=-=-=-
-
-interface SuperIwithDefault {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperIwithDefault.class)
- void foo();
-
- @ExpectedModel(isDefault=true, declaringClass=SuperIwithDefault.class)
- default void bar() {
- ;
- }
-}
-
-class SuperIwithDefaultChild implements SuperIwithDefault {
- @ExpectedModel(declaringClass=SuperIwithDefaultChild.class)
- @Override
- public void foo() {;}
-}
-
-// -=-=-=-
-
-abstract class Base {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=Base.class)
- abstract public void baz();
-
- @ExpectedModel(declaringClass=Base.class)
- public void quux() {;}
-}
-
-abstract class Combo1 extends Base implements SuperI {
- @ExpectedModel(declaringClass=Combo1.class)
- public void wombat() {}
-}
-
-abstract class Combo2 extends Base implements SuperIwithDefault {
- @ExpectedModel(declaringClass=Combo2.class)
- public void wombat() {}
-}
-
-// -=-=-=-
-
-interface SonSuperIwithDefault extends SuperIwithDefault {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SonSuperIwithDefault.class)
- void baz();
-
- @ExpectedModel(isDefault=true, declaringClass=SonSuperIwithDefault.class)
- default void bazD() {;}
-}
-
-interface DaughterSuperIwithDefault extends SuperIwithDefault {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=DaughterSuperIwithDefault.class)
- void quux();
-
- @ExpectedModel(isDefault=true, declaringClass=DaughterSuperIwithDefault.class)
- default void quuxD() {;}
-}
-
-interface GrandchildSuperIwithDefault extends SonSuperIwithDefault, DaughterSuperIwithDefault {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=GrandchildSuperIwithDefault.class)
- void wombat();
-
- @ExpectedModel(isDefault=true, declaringClass=GrandchildSuperIwithDefault.class)
- default void wombatD() {;}
-
-}
-
-class D implements GrandchildSuperIwithDefault {
- @ExpectedModel(declaringClass=D.class)
- public void wombat(){}
-
- @ExpectedModel(declaringClass=D.class)
- public void baz(){}
-
- @ExpectedModel(declaringClass=D.class)
- public void foo(){}
-
- @ExpectedModel(declaringClass=D.class)
- public void quux(){}
-}
-
-class D1 implements SonSuperIwithDefault, DaughterSuperIwithDefault {
- @ExpectedModel(declaringClass=D1.class)
- public void foo(){}
-
- @ExpectedModel(declaringClass=D1.class)
- public void baz(){}
-
- @ExpectedModel(declaringClass=D1.class)
- public void quux(){}
-}
-
-// -=-=-=-
-
-// What does re-abstraction look like?
-
-class A implements SuperIwithDefault {
- @ExpectedModel(declaringClass=A.class)
- @Override
- public void foo(){;}
-}
-
-abstract class B extends A {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=B.class)
- @Override
- public abstract void bar();
-}
-
-class C extends B implements SuperIwithDefault {
- @ExpectedModel(declaringClass=C.class)
- public void bar(){}
-}
-
-abstract class A1 implements SonSuperIwithDefault {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=A1.class)
- public abstract void baz();
-
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=A1.class)
- public abstract void foo();
-}
-
-class B1 extends A1 {
- @ExpectedModel(declaringClass=B1.class)
- @Override
- public void foo(){;}
-
- @ExpectedModel(declaringClass=B1.class)
- @Override
- public void baz(){}
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/reflect/Method/defaultMethodModeling/DefaultMethodModeling.java Mon Nov 04 15:21:47 2013 +0100
@@ -0,0 +1,253 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8011590
+ * @summary Check modeling of default methods
+ * @author Joseph D. Darcy
+ */
+
+import java.util.Objects;
+import java.lang.reflect.*;
+import java.lang.annotation.*;
+
+import static java.lang.reflect.Modifier.*;
+
+public class DefaultMethodModeling {
+ public static void main(String... args) {
+ int failures = 0;
+
+ Class<?>[] classes = {SuperC.class, SuperCchild.class,
+ SuperI.class, SuperIchild.class,
+ SuperIwithDefault.class, SuperIwithDefaultChild.class,
+ Base.class, Combo1.class, Combo2.class,
+ SonSuperIwithDefault.class, DaughterSuperIwithDefault.class, GrandchildSuperIwithDefault.class, D.class,
+ B.class, C.class, B1.class, D1.class
+ };
+
+ for(Class<?> clazz : classes) {
+ System.err.println(clazz.toString());
+ for(Method m : clazz.getMethods()) {
+ if (m.getDeclaringClass() != java.lang.Object.class)
+ failures += testMethod(m);
+ }
+ }
+
+ if (failures > 0)
+ throw new RuntimeException();
+ }
+
+ private static int testMethod(Method m) {
+ ExpectedModel em = Objects.requireNonNull(m.getAnnotation(ExpectedModel.class));
+ boolean failed = false;
+
+ if (m.getModifiers() != em.modifiers()) {
+ failed = true;
+ System.err.printf("Unexpected modifiers %d; expected %d%n", m.getModifiers(), em.modifiers());
+ }
+
+ if (m.isDefault() != em.isDefault()) {
+ failed = true;
+ System.err.printf("Unexpected isDefualt %b; expected b%n", m.isDefault(), em.isDefault());
+ }
+
+ if (!m.getDeclaringClass().equals(em.declaringClass())) {
+ failed = true;
+ System.err.printf("Unexpected isDefualt %s; expected %s%n",
+ m.getDeclaringClass().toString(), em.declaringClass().toString());
+ }
+
+ return (!failed) ? 0 :1;
+ }
+}
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface ExpectedModel {
+ boolean isDefault() default false;
+ int modifiers() default PUBLIC;
+ Class<?> declaringClass();
+}
+
+abstract class SuperC {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperC.class)
+ public abstract void foo();
+
+ @ExpectedModel(declaringClass=SuperC.class)
+ public void bar() {
+ ;
+ }
+}
+
+class SuperCchild extends SuperC {
+ @ExpectedModel(declaringClass=SuperCchild.class)
+ @Override
+ public void foo() {;}
+}
+
+// -=-=-=-
+
+interface SuperI {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperI.class)
+ void foo();
+
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperI.class)
+ void bar();
+}
+
+class SuperIchild implements SuperI {
+ @ExpectedModel(declaringClass=SuperIchild.class)
+ public void foo() {;}
+
+ @ExpectedModel(declaringClass=SuperIchild.class)
+ public void bar() {;}
+}
+
+// -=-=-=-
+
+interface SuperIwithDefault {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperIwithDefault.class)
+ void foo();
+
+ @ExpectedModel(isDefault=true, declaringClass=SuperIwithDefault.class)
+ default void bar() {
+ ;
+ }
+}
+
+class SuperIwithDefaultChild implements SuperIwithDefault {
+ @ExpectedModel(declaringClass=SuperIwithDefaultChild.class)
+ @Override
+ public void foo() {;}
+}
+
+// -=-=-=-
+
+abstract class Base {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=Base.class)
+ abstract public void baz();
+
+ @ExpectedModel(declaringClass=Base.class)
+ public void quux() {;}
+}
+
+abstract class Combo1 extends Base implements SuperI {
+ @ExpectedModel(declaringClass=Combo1.class)
+ public void wombat() {}
+}
+
+abstract class Combo2 extends Base implements SuperIwithDefault {
+ @ExpectedModel(declaringClass=Combo2.class)
+ public void wombat() {}
+}
+
+// -=-=-=-
+
+interface SonSuperIwithDefault extends SuperIwithDefault {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SonSuperIwithDefault.class)
+ void baz();
+
+ @ExpectedModel(isDefault=true, declaringClass=SonSuperIwithDefault.class)
+ default void bazD() {;}
+}
+
+interface DaughterSuperIwithDefault extends SuperIwithDefault {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=DaughterSuperIwithDefault.class)
+ void quux();
+
+ @ExpectedModel(isDefault=true, declaringClass=DaughterSuperIwithDefault.class)
+ default void quuxD() {;}
+}
+
+interface GrandchildSuperIwithDefault extends SonSuperIwithDefault, DaughterSuperIwithDefault {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=GrandchildSuperIwithDefault.class)
+ void wombat();
+
+ @ExpectedModel(isDefault=true, declaringClass=GrandchildSuperIwithDefault.class)
+ default void wombatD() {;}
+
+}
+
+class D implements GrandchildSuperIwithDefault {
+ @ExpectedModel(declaringClass=D.class)
+ public void wombat(){}
+
+ @ExpectedModel(declaringClass=D.class)
+ public void baz(){}
+
+ @ExpectedModel(declaringClass=D.class)
+ public void foo(){}
+
+ @ExpectedModel(declaringClass=D.class)
+ public void quux(){}
+}
+
+class D1 implements SonSuperIwithDefault, DaughterSuperIwithDefault {
+ @ExpectedModel(declaringClass=D1.class)
+ public void foo(){}
+
+ @ExpectedModel(declaringClass=D1.class)
+ public void baz(){}
+
+ @ExpectedModel(declaringClass=D1.class)
+ public void quux(){}
+}
+
+// -=-=-=-
+
+// What does re-abstraction look like?
+
+class A implements SuperIwithDefault {
+ @ExpectedModel(declaringClass=A.class)
+ @Override
+ public void foo(){;}
+}
+
+abstract class B extends A {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=B.class)
+ @Override
+ public abstract void bar();
+}
+
+class C extends B implements SuperIwithDefault {
+ @ExpectedModel(declaringClass=C.class)
+ public void bar(){}
+}
+
+abstract class A1 implements SonSuperIwithDefault {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=A1.class)
+ public abstract void baz();
+
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=A1.class)
+ public abstract void foo();
+}
+
+class B1 extends A1 {
+ @ExpectedModel(declaringClass=B1.class)
+ @Override
+ public void foo(){;}
+
+ @ExpectedModel(declaringClass=B1.class)
+ @Override
+ public void baz(){}
+}