Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/beans/Introspector/Test8040656.java
47964 views
/*1* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223import java.beans.Introspector;24import java.beans.MethodDescriptor;2526/*27* @test28* @bug 804065629* @summary Tests that a normal method is preferred to a synthetic one30* @author Sergey Malenkov31*/3233public class Test8040656 {34public static void main(String[] args) throws Exception {35test(String.class, C.class);36test(String.class, C1.class);37test(String.class, C2.class);38test(String.class, C3.class);39test(String.class, C4.class);40test(String.class, C5.class);41test(String.class, C6.class);42test(String.class, C7.class);43test(String.class, C8.class);44test(String.class, C9.class);45}4647private static void test(Class<?> type, Class<?> bean) throws Exception {48for (MethodDescriptor md : Introspector.getBeanInfo(bean).getMethodDescriptors()) {49if (md.getName().equals("getFoo")) {50if (type != md.getMethod().getReturnType()) {51throw new Error("unexpected type");52}53}54}55}5657public interface A {58public Object getFoo();59}6061public class C implements A {62@Override63public String getFoo() {64return null;65}66}6768public class C1 implements A {69@Override70public String getFoo() {71return null;72}7374public String getFoo1() {75return null;76}77}7879public class C2 implements A {80@Override81public String getFoo() {82return null;83}8485public String getFoo1() {86return null;87}8889public String getFoo2() {90return null;91}92}9394public class C3 implements A {95@Override96public String getFoo() {97return null;98}99100public String getFoo1() {101return null;102}103104public String getFoo2() {105return null;106}107108public String getFoo3() {109return null;110}111}112113public class C4 implements A {114@Override115public String getFoo() {116return null;117}118119public String getFoo1() {120return null;121}122123public String getFoo2() {124return null;125}126127public String getFoo3() {128return null;129}130131public String getFoo4() {132return null;133}134}135136public class C5 implements A {137@Override138public String getFoo() {139return null;140}141142public String getFoo1() {143return null;144}145146public String getFoo2() {147return null;148}149150public String getFoo3() {151return null;152}153154public String getFoo4() {155return null;156}157158public String getFoo5() {159return null;160}161}162163public class C6 implements A {164@Override165public String getFoo() {166return null;167}168169public String getFoo1() {170return null;171}172173public String getFoo2() {174return null;175}176177public String getFoo3() {178return null;179}180181public String getFoo4() {182return null;183}184185public String getFoo5() {186return null;187}188189public String getFoo6() {190return null;191}192}193194public class C7 implements A {195@Override196public String getFoo() {197return null;198}199200public String getFoo1() {201return null;202}203204public String getFoo2() {205return null;206}207208public String getFoo3() {209return null;210}211212public String getFoo4() {213return null;214}215216public String getFoo5() {217return null;218}219220public String getFoo6() {221return null;222}223224public String getFoo7() {225return null;226}227}228229public class C8 implements A {230@Override231public String getFoo() {232return null;233}234235public String getFoo1() {236return null;237}238239public String getFoo2() {240return null;241}242243public String getFoo3() {244return null;245}246247public String getFoo4() {248return null;249}250251public String getFoo5() {252return null;253}254255public String getFoo6() {256return null;257}258259public String getFoo7() {260return null;261}262263public String getFoo8() {264return null;265}266}267268public class C9 implements A {269@Override270public String getFoo() {271return null;272}273274public String getFoo1() {275return null;276}277278public String getFoo2() {279return null;280}281282public String getFoo3() {283return null;284}285286public String getFoo4() {287return null;288}289290public String getFoo5() {291return null;292}293294public String getFoo6() {295return null;296}297298public String getFoo7() {299return null;300}301302public String getFoo8() {303return null;304}305306public String getFoo9() {307return null;308}309}310}311312313