jdk/test/java/lang/reflect/Method/DefaultMethodModeling.java
changeset 21677 03f1370d6d68
parent 21600 48d56047f54d
parent 21676 36165f46628f
child 21678 253076d1df15
--- a/jdk/test/java/lang/reflect/Method/DefaultMethodModeling.java	Thu Nov 14 23:32:31 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(){}
-}