Path: blob/master/test/jdk/java/beans/Introspector/AnonymousClassBeanPropertyTest.java
41149 views
/*1* Copyright (c) 2016, 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.BeanInfo;24import java.beans.BeanProperty;25import java.beans.IntrospectionException;26import java.beans.Introspector;27import java.beans.PropertyChangeListener;28import java.beans.PropertyDescriptor;2930import java.util.Arrays;313233/**34* @test35* @bug 8132973 8132732 8155013 815495836* @summary Some check for BeanProperty annotation37* @author a.stepanov38* @run main AnonymousClassBeanPropertyTest39*/40//TODO in final revision each test should have only one checkInfo/checkAlternate41public class AnonymousClassBeanPropertyTest {4243private final static String DESCRIPTION = "TEST";44private final static boolean BOUND = true;45private final static boolean EXPERT = false;46private final static boolean HIDDEN = true;47private final static boolean PREFERRED = false;48private final static boolean REQUIRED = true;49private final static boolean UPDATE = false;5051private final static double X = java.lang.Math.PI;5253private final static String54V_NAME = "java.lang.Math.PI",55V_SHORT = "PI",56V = Double.toString(X);5758private final static String DESCRIPTION_2 = "XYZ";596061// ---------- test cases (interfaces) ----------6263public interface IPublic {64double getX();65}6667private interface IGet {68double getX();69}7071private interface ISet {72void setX(double v);73}7475private interface IGetByIndex {76double getX(int i);77}7879private interface ISetByIndex {80void setX(int i, double v);81}8283private interface IGetArray {84double[] getX();85}8687private interface ISetArray {88void setX(double a[]);89}9091private interface IGetBoth {92double getX(int i);93double[] getX();94}9596private interface ISetBoth {97void setX(int i, double v);98void setX(double a[]);99}100101private interface IGetSet {102double getX();103void setX(double v);104}105106private interface IGetSetByIndex {107double getX(int i);108void setX(int i, double v);109}110111private interface IGetSetBoth {112double getX(int i);113double[] getX();114void setX(int i, double v);115void setX(double a[]);116}117118private interface IIs {119boolean isX();120}121122123// ---------- checks ----------124125private static boolean check(String what, boolean v, boolean ref) {126127boolean ok = (v == ref);128if (!ok) { System.out.println(129"invalid " + what + ": " + v + ", expected: " + ref); }130return ok;131}132133private static boolean checkInfo(Class<?> c, String what, boolean checkVals) {134135BeanInfo i;136try { i = Introspector.getBeanInfo(c, Object.class); }137catch (IntrospectionException e) { throw new RuntimeException(e); }138139System.out.println("\nchecking info for " + what);140141PropertyDescriptor descriptors[] = i.getPropertyDescriptors();142int nd = descriptors.length;143if (nd != 1) {144System.out.println("invalid number of descriptors: " + nd);145return false;146}147148PropertyDescriptor d = descriptors[0];149150String descr = d.getShortDescription();151boolean ok = descr.equals(DESCRIPTION);152if (!ok) { System.out.println("invalid description: " + descr +153", expected: " + DESCRIPTION); }154155ok &= check("isBound", d.isBound(), BOUND);156ok &= check("isExpert", d.isExpert(), EXPERT);157ok &= check("isHidden", d.isHidden(), HIDDEN);158ok &= check("isPreferred", d.isPreferred(), PREFERRED);159ok &= check("required", (boolean) d.getValue("required"), REQUIRED);160ok &= check("visualUpdate",161(boolean) d.getValue("visualUpdate"), UPDATE);162163if (!checkVals) { return ok; }164165Object vals[] = (Object[]) d.getValue("enumerationValues");166if (vals == null) {167System.out.println("null enumerationValues");168return false;169}170171if (vals.length == 0) {172System.out.println("empty enumerationValues");173return false;174}175176boolean okVals = (177(vals.length == 3) &&178vals[0].toString().equals(V_SHORT) &&179vals[1].toString().equals(V) &&180vals[2].toString().equals(V_NAME));181182if (!okVals) {183System.out.println("invalid enumerationValues:");184for (Object v: vals) { System.out.println(v.toString()); }185}186187return (ok && okVals);188}189190private static boolean checkAlternativeInfo(Class<?> c, String what) {191192BeanInfo i;193try { i = Introspector.getBeanInfo(c, Object.class); }194catch (IntrospectionException e) { throw new RuntimeException(e); }195196System.out.println("checking alternative info for " + what);197198PropertyDescriptor descriptors[] = i.getPropertyDescriptors();199int nd = descriptors.length;200if (nd != 1) {201System.out.println("invalid number of descriptors: " + nd);202return false;203}204205PropertyDescriptor d = descriptors[0];206207String descr = d.getShortDescription();208boolean ok = descr.equals(DESCRIPTION_2);209if (!ok) { System.out.println("invalid alternative description: " +210descr + ", expected: " + DESCRIPTION_2); }211212ok &= check("isBound", d.isBound(), !BOUND);213ok &= check("isExpert", d.isExpert(), !EXPERT);214ok &= check("isHidden", d.isHidden(), !HIDDEN);215ok &= check("isPreferred", d.isPreferred(), !PREFERRED);216ok &= check("required", (boolean) d.getValue("required"), !REQUIRED);217ok &= check("visualUpdate",218(boolean) d.getValue("visualUpdate"), !UPDATE);219220Object vals[] = (Object[]) d.getValue("enumerationValues");221if (vals != null && vals.length > 0) {222System.out.println("non-empty enumerationValues:");223for (Object v: vals) { System.out.print(v.toString()); }224System.out.println();225return false;226}227228return ok;229}230231232233// ---------- run tests ----------234235public static void main(String[] args) {236237boolean passed = true, ok, ok2;238239//----------------------------------------------------------------------240241// TODO: please uncomment/update after 8154958 fix242/*243IPublic testPublic = new IPublic() {244@BeanProperty(245description = DESCRIPTION,246bound = BOUND,247expert = EXPERT,248hidden = HIDDEN,249preferred = PREFERRED,250required = REQUIRED,251visualUpdate = UPDATE,252enumerationValues = {V_NAME})253@Override254public double getX() { return X; }255256public void addPropertyChangeListener(PropertyChangeListener l) {}257public void removePropertyChangeListener(PropertyChangeListener l) {}258};259ok = checkInfo(testPublic.getClass(), "IPublic", true);260System.out.println("OK = " + ok);261passed = passed && ok;262*/263264//----------------------------------------------------------------------265266IGet testGet = new IGet() {267@BeanProperty(268description = DESCRIPTION,269bound = BOUND,270expert = EXPERT,271hidden = HIDDEN,272preferred = PREFERRED,273required = REQUIRED,274visualUpdate = UPDATE,275enumerationValues = {V_NAME})276@Override277public double getX() { return X; }278279public void addPropertyChangeListener(PropertyChangeListener l) {}280public void removePropertyChangeListener(PropertyChangeListener l) {}281};282ok = checkInfo(testGet.getClass(), "IGet", true);283System.out.println("OK = " + ok);284passed = passed && ok;285286//----------------------------------------------------------------------287288ISet testSet = new ISet() {289290private double x;291292@BeanProperty(293description = DESCRIPTION,294bound = BOUND,295expert = EXPERT,296hidden = HIDDEN,297preferred = PREFERRED,298required = REQUIRED,299visualUpdate = UPDATE,300enumerationValues = {V_NAME})301@Override302public void setX(double v) { x = v; }303304public void addPropertyChangeListener(PropertyChangeListener l) {}305public void removePropertyChangeListener(PropertyChangeListener l) {}306};307ok = checkInfo(testSet.getClass(), "ISet", true);308System.out.println("OK = " + ok);309passed = passed && ok;310311//----------------------------------------------------------------------312313IGetByIndex testGetByIndex = new IGetByIndex() {314315private final double x[] = {X, X};316317@BeanProperty(318description = DESCRIPTION,319bound = BOUND,320expert = EXPERT,321hidden = HIDDEN,322preferred = PREFERRED,323required = REQUIRED,324visualUpdate = UPDATE,325enumerationValues = {V_NAME})326@Override327public double getX(int i) { return x[i]; }328329public void addPropertyChangeListener(PropertyChangeListener l) {}330public void removePropertyChangeListener(PropertyChangeListener l) {}331};332ok = checkInfo(testGetByIndex.getClass(), "IGetByIndex", true);333System.out.println("OK = " + ok);334passed = passed && ok;335336//----------------------------------------------------------------------337338ISetByIndex testSetByIndex = new ISetByIndex() {339340private final double x[] = {X, X, X};341342@BeanProperty(343description = DESCRIPTION,344bound = BOUND,345expert = EXPERT,346hidden = HIDDEN,347preferred = PREFERRED,348required = REQUIRED,349visualUpdate = UPDATE,350enumerationValues = {V_NAME})351@Override352public void setX(int i, double v) { x[i] = v; }353354public void addPropertyChangeListener(PropertyChangeListener l) {}355public void removePropertyChangeListener(PropertyChangeListener l) {}356};357ok = checkInfo(testSetByIndex.getClass(), "ISetByIndex", true);358System.out.println("OK = " + ok);359passed = passed && ok;360361//----------------------------------------------------------------------362363// TODO: please uncomment/update after 8155013 fix364/*365IGetArray testGetArray = new IGetArray() {366367private final double x[] = {X, X};368369@BeanProperty(370description = DESCRIPTION,371bound = BOUND,372expert = EXPERT,373hidden = HIDDEN,374preferred = PREFERRED,375required = REQUIRED,376visualUpdate = UPDATE,377enumerationValues = {V_NAME})378@Override379public double[] getX() { return x; }380381public void addPropertyChangeListener(PropertyChangeListener l) {}382public void removePropertyChangeListener(PropertyChangeListener l) {}383};384ok = checkInfo(testGetArray.getClass(), "IGetArray", true);385System.out.println("OK = " + ok);386passed = passed && ok;387*/388389//----------------------------------------------------------------------390391// TODO: please uncomment/update after 8155013 fix392/*393ISetArray testSetArray = new ISetArray() {394395private double x[];396397@BeanProperty(398description = DESCRIPTION,399bound = BOUND,400expert = EXPERT,401hidden = HIDDEN,402preferred = PREFERRED,403required = REQUIRED,404visualUpdate = UPDATE,405enumerationValues = {V_NAME})406@Override407public void setX(double a[]) { x = Arrays.copyOf(a, a.length); }408409public void addPropertyChangeListener(PropertyChangeListener l) {}410public void removePropertyChangeListener(PropertyChangeListener l) {}411};412ok = checkInfo(testSetArray.getClass(), "ISetArray", true);413System.out.println("OK = " + ok);414passed = passed && ok;415*/416417//----------------------------------------------------------------------418419IGetBoth testGetBoth_1 = new IGetBoth() {420421private final double x[] = {X, X};422423@BeanProperty(424description = DESCRIPTION,425bound = BOUND,426expert = EXPERT,427hidden = HIDDEN,428preferred = PREFERRED,429required = REQUIRED,430visualUpdate = UPDATE,431enumerationValues = {V_NAME})432@Override433public double getX(int i) { return x[i]; }434@Override435public double[] getX() { return x; }436437public void addPropertyChangeListener(PropertyChangeListener l) {}438public void removePropertyChangeListener(PropertyChangeListener l) {}439};440ok = checkInfo(testGetBoth_1.getClass(), "IGetBoth-1", true);441System.out.println("OK = " + ok);442passed = passed && ok;443444// TODO: please uncomment/update after 8155013 fix445/*446IGetBoth testGetBoth_2 = new IGetBoth() {447448private final double x[] = {X, X};449450@Override451public double getX(int i) { return x[i]; }452@BeanProperty(453description = DESCRIPTION,454bound = BOUND,455expert = EXPERT,456hidden = HIDDEN,457preferred = PREFERRED,458required = REQUIRED,459visualUpdate = UPDATE,460enumerationValues = {V_NAME})461@Override462public double[] getX() { return x; }463464public void addPropertyChangeListener(PropertyChangeListener l) {}465public void removePropertyChangeListener(PropertyChangeListener l) {}466};467ok = checkInfo(testGetBoth_2.getClass(), "IGetBoth-2", true);468System.out.println("OK = " + ok);469passed = passed && ok;470*/471472// TODO: please uncomment/update after 8132732 fix473/*474IGetBoth testGetBoth_3 = new IGetBoth() {475476private final double x[] = {X, X};477478@BeanProperty(479description = DESCRIPTION,480bound = BOUND,481expert = EXPERT,482hidden = HIDDEN,483preferred = PREFERRED,484required = REQUIRED,485visualUpdate = UPDATE,486enumerationValues = {V_NAME})487@Override488public double getX(int i) { return x[i]; }489@BeanProperty(490description = DESCRIPTION_2,491bound = !BOUND,492expert = !EXPERT,493hidden = !HIDDEN,494preferred = !PREFERRED,495required = !REQUIRED,496visualUpdate = !UPDATE)497@Override498public double[] getX() { return x; }499500public void addPropertyChangeListener(PropertyChangeListener l) {}501public void removePropertyChangeListener(PropertyChangeListener l) {}502};503ok = checkInfo(testGetBoth_3.getClass(), "IGetBoth-3", true);504System.out.println("OK = " + ok);505ok2 = checkAlternativeInfo(testGetBoth_3.getClass(), "IGetBoth-3");506System.out.println("OK = " + ok2);507passed = passed && (ok || ok2);508*/509510//----------------------------------------------------------------------511512ISetBoth testSetBoth_1 = new ISetBoth() {513514private double x[] = new double[3];515516@BeanProperty(517description = DESCRIPTION,518bound = BOUND,519expert = EXPERT,520hidden = HIDDEN,521preferred = PREFERRED,522required = REQUIRED,523visualUpdate = UPDATE,524enumerationValues = {V_NAME})525@Override526public void setX(int i, double v) { x[i] = v; }527@Override528public void setX(double[] a) { x = Arrays.copyOf(a, a.length); }529530public void addPropertyChangeListener(PropertyChangeListener l) {}531public void removePropertyChangeListener(PropertyChangeListener l) {}532};533ok = checkInfo(testSetBoth_1.getClass(), "ISetBoth-1", true);534System.out.println("OK = " + ok);535passed = passed && ok;536537// TODO: please uncomment/update after 8155013 fix538/*539ISetBoth testSetBoth_2 = new ISetBoth() {540541private double x[] = new double[3];542543@Override544public void setX(int i, double v) { x[i] = v; }545@BeanProperty(546description = DESCRIPTION,547bound = BOUND,548expert = EXPERT,549hidden = HIDDEN,550preferred = PREFERRED,551required = REQUIRED,552visualUpdate = UPDATE,553enumerationValues = {V_NAME})554@Override555public void setX(double[] a) { x = Arrays.copyOf(a, a.length); }556557public void addPropertyChangeListener(PropertyChangeListener l) {}558public void removePropertyChangeListener(PropertyChangeListener l) {}559};560ok = checkInfo(testSetBoth_2.getClass(), "ISetBoth-2", true);561System.out.println("OK = " + ok);562passed = passed && ok;563*/564565// TODO: please uncomment/update after 8132732 fix566/*567ISetBoth testSetBoth_3 = new ISetBoth() {568569private double x[] = {X, X};570571@BeanProperty(572description = DESCRIPTION,573bound = BOUND,574expert = EXPERT,575hidden = HIDDEN,576preferred = PREFERRED,577required = REQUIRED,578visualUpdate = UPDATE,579enumerationValues = {V_NAME})580@Override581public void setX(int i, double v) { x[i] = v; }582@BeanProperty(583description = DESCRIPTION_2,584bound = !BOUND,585expert = !EXPERT,586hidden = !HIDDEN,587preferred = !PREFERRED,588required = !REQUIRED,589visualUpdate = !UPDATE)590@Override591public void setX(double[] a) { x = Arrays.copyOf(a, a.length); }592593public void addPropertyChangeListener(PropertyChangeListener l) {}594public void removePropertyChangeListener(PropertyChangeListener l) {}595};596ok = checkInfo(testSetBoth_3.getClass(), "ISetBoth-3", true);597System.out.println("OK = " + ok);598ok2 = checkAlternativeInfo(testSetBoth_3.getClass(), "ISetBoth-3");599System.out.println("OK = " + ok2);600passed = passed && (ok || ok2);601*/602603//----------------------------------------------------------------------604605IGetSet testGetSet_1 = new IGetSet() {606607private double x;608609@BeanProperty(610description = DESCRIPTION,611bound = BOUND,612expert = EXPERT,613hidden = HIDDEN,614preferred = PREFERRED,615required = REQUIRED,616visualUpdate = UPDATE,617enumerationValues = {V_NAME})618@Override619public double getX() { return x; }620@Override621public void setX(double v) { x = v; }622623public void addPropertyChangeListener(PropertyChangeListener l) {}624public void removePropertyChangeListener(PropertyChangeListener l) {}625};626ok = checkInfo(testGetSet_1.getClass(), "IGetSet-1", true);627System.out.println("OK = " + ok);628passed = passed && ok;629630631IGetSet testGetSet_2 = new IGetSet() {632633private double x;634635@Override636public double getX() { return x; }637@BeanProperty(638description = DESCRIPTION,639bound = BOUND,640expert = EXPERT,641hidden = HIDDEN,642preferred = PREFERRED,643required = REQUIRED,644visualUpdate = UPDATE,645enumerationValues = {V_NAME})646@Override647public void setX(double v) { x = v; }648649public void addPropertyChangeListener(PropertyChangeListener l) {}650public void removePropertyChangeListener(PropertyChangeListener l) {}651};652ok = checkInfo(testGetSet_2.getClass(), "IGetSet-2", true);653System.out.println("OK = " + ok);654passed = passed && ok;655656IGetSet testGetSet_3 = new IGetSet() {657658private double x;659660@Override661@BeanProperty(662description = DESCRIPTION,663bound = BOUND,664expert = EXPERT,665hidden = HIDDEN,666preferred = PREFERRED,667required = REQUIRED,668visualUpdate = UPDATE,669enumerationValues = {V_NAME})670public double getX() { return x; }671@BeanProperty(672description = DESCRIPTION_2,673bound = !BOUND,674expert = !EXPERT,675hidden = !HIDDEN,676preferred = !PREFERRED,677required = !REQUIRED,678visualUpdate = !UPDATE)679@Override680public void setX(double v) { x = v; }681682public void addPropertyChangeListener(PropertyChangeListener l) {}683public void removePropertyChangeListener(PropertyChangeListener l) {}684};685ok = checkInfo(testGetSet_3.getClass(), "IGetSet-3", true);686System.out.println("OK = " + ok);687passed = passed && ok;688689//----------------------------------------------------------------------690691IGetSetByIndex testGetSetByIndex_1 = new IGetSetByIndex() {692693private final double x[] = {X, X};694695@BeanProperty(696description = DESCRIPTION,697bound = BOUND,698expert = EXPERT,699hidden = HIDDEN,700preferred = PREFERRED,701required = REQUIRED,702visualUpdate = UPDATE,703enumerationValues = {V_NAME})704@Override705public double getX(int i) { return x[i]; }706@Override707public void setX(int i, double v) { x[i] = v; }708709public void addPropertyChangeListener(PropertyChangeListener l) {}710public void removePropertyChangeListener(PropertyChangeListener l) {}711};712ok = checkInfo(testGetSetByIndex_1.getClass(), "IGetSetByIndex-1", true);713System.out.println("OK = " + ok);714passed = passed && ok;715716717IGetSetByIndex testGetSetByIndex_2 = new IGetSetByIndex() {718719private final double x[] = {X, X};720721@Override722public double getX(int i) { return x[i]; }723@BeanProperty(724description = DESCRIPTION,725bound = BOUND,726expert = EXPERT,727hidden = HIDDEN,728preferred = PREFERRED,729required = REQUIRED,730visualUpdate = UPDATE,731enumerationValues = {V_NAME})732@Override733public void setX(int i, double v) { x[i] = v; }734735public void addPropertyChangeListener(PropertyChangeListener l) {}736public void removePropertyChangeListener(PropertyChangeListener l) {}737};738ok = checkInfo(testGetSetByIndex_2.getClass(), "IGetSetByIndex-2", true);739System.out.println("OK = " + ok);740passed = passed && ok;741742IGetSetByIndex testGetSetByIndex_3 = new IGetSetByIndex() {743744private double x[] = {X, X};745746@BeanProperty(747description = DESCRIPTION,748bound = BOUND,749expert = EXPERT,750hidden = HIDDEN,751preferred = PREFERRED,752required = REQUIRED,753visualUpdate = UPDATE,754enumerationValues = {V_NAME})755@Override756public double getX(int i) {757return x[i];758}759@BeanProperty(760description = DESCRIPTION_2,761bound = !BOUND,762expert = !EXPERT,763hidden = !HIDDEN,764preferred = !PREFERRED,765required = !REQUIRED,766visualUpdate = !UPDATE)767@Override768public void setX(int i, double v) {769x[i] = v;770}771772public void addPropertyChangeListener(PropertyChangeListener l) {}773public void removePropertyChangeListener(PropertyChangeListener l) {}774};775ok = checkInfo(testGetSetByIndex_3.getClass(), "IGetSetByIndex-3", true);776System.out.println("OK = " + ok);777passed = passed && ok;778779//----------------------------------------------------------------------780781// TODO: please uncomment/update after 8155013 fix782/*783IGetSetBoth testGetSetBoth_1 = new IGetSetBoth() {784785private double x[] = {X, X};786787@Override788public double getX(int i) { return x[i]; }789@BeanProperty(790description = DESCRIPTION,791bound = BOUND,792expert = EXPERT,793hidden = HIDDEN,794preferred = PREFERRED,795required = REQUIRED,796visualUpdate = UPDATE,797enumerationValues = {V_NAME})798@Override799public double[] getX() { return x; }800@Override801public void setX(int i, double v) { x[i] = v; }802@Override803public void setX(double[] a) { x = Arrays.copyOf(a, a.length); }804805public void addPropertyChangeListener(PropertyChangeListener l) {}806public void removePropertyChangeListener(PropertyChangeListener l) {}807};808ok = checkInfo(testGetSetBoth_1.getClass(), "IGetSetBoth-1", true);809System.out.println("OK = " + ok);810passed = passed && ok;811*/812813// TODO: please uncomment/update after 8155013 fix814/*815IGetSetBoth testGetSetBoth_2 = new IGetSetBoth() {816817private double x[] = {X, X};818819@Override820public double getX(int i) { return x[i]; }821@Override822public double[] getX() { return x; }823@Override824public void setX(int i, double v) { x[i] = v; }825@BeanProperty(826description = DESCRIPTION,827bound = BOUND,828expert = EXPERT,829hidden = HIDDEN,830preferred = PREFERRED,831required = REQUIRED,832visualUpdate = UPDATE,833enumerationValues = {V_NAME})834@Override835public void setX(double[] a) { x = Arrays.copyOf(a, a.length); }836837public void addPropertyChangeListener(PropertyChangeListener l) {}838public void removePropertyChangeListener(PropertyChangeListener l) {}839};840ok = checkInfo(testGetSetBoth_2.getClass(), "IGetSetBoth-2", true);841System.out.println("OK = " + ok);842passed = passed && ok;843*/844845// TODO: please uncomment/update after 8155013 fix846/*847IGetSetBoth testGetSetBoth_3 = new IGetSetBoth() {848849private double x[] = {X, X};850851@BeanProperty(852description = DESCRIPTION,853bound = BOUND,854expert = EXPERT,855hidden = HIDDEN,856preferred = PREFERRED,857required = REQUIRED,858visualUpdate = UPDATE,859enumerationValues = {V_NAME})860@Override861public double getX(int i) { return x[i]; }862@Override863public double[] getX() { return x; }864@Override865public void setX(int i, double v) { x[i] = v; }866@BeanProperty(867description = DESCRIPTION_2,868bound = !BOUND,869expert = !EXPERT,870hidden = !HIDDEN,871preferred = !PREFERRED,872required = !REQUIRED,873visualUpdate = !UPDATE)874@Override875public void setX(double[] a) { x = Arrays.copyOf(a, a.length); }876877public void addPropertyChangeListener(PropertyChangeListener l) {}878public void removePropertyChangeListener(PropertyChangeListener l) {}879};880ok = checkInfo(testGetSetBoth_3.getClass(), "IGetSetBoth-3", true);881System.out.println("OK = " + ok);882ok2 = checkAlternativeInfo(883testGetSetBoth_3.getClass(), "IGetSetBoth-3");884System.out.println("OK = " + ok2);885passed = passed && (ok || ok2);886*/887888//----------------------------------------------------------------------889890IIs testIs_1 = new IIs() {891892@BeanProperty(893description = DESCRIPTION,894bound = BOUND,895expert = EXPERT,896hidden = HIDDEN,897preferred = PREFERRED,898required = REQUIRED,899visualUpdate = UPDATE)900@Override901public boolean isX() { return false; }902903public void addPropertyChangeListener(PropertyChangeListener l) {}904public void removePropertyChangeListener(PropertyChangeListener l) {}905};906ok = checkInfo(testIs_1.getClass(), "IIs-1", false);907System.out.println("OK = " + ok);908passed = passed && ok;909910911IIs testIs_2 = new IIs() {912913private boolean b;914915@Override916public boolean isX() { return b; }917918@BeanProperty(919description = DESCRIPTION,920bound = BOUND,921expert = EXPERT,922hidden = HIDDEN,923preferred = PREFERRED,924required = REQUIRED,925visualUpdate = UPDATE)926public void setX(boolean v) { b = v; }927928public void addPropertyChangeListener(PropertyChangeListener l) {}929public void removePropertyChangeListener(PropertyChangeListener l) {}930};931ok = checkInfo(testIs_2.getClass(), "IIs-2", false);932System.out.println("OK = " + ok);933passed = passed && ok;934935936IIs testIs_3 = new IIs() {937938@BeanProperty(939description = DESCRIPTION,940bound = BOUND,941expert = EXPERT,942hidden = HIDDEN,943preferred = PREFERRED,944required = REQUIRED,945visualUpdate = UPDATE)946@Override947public boolean isX() { return false; }948949@BeanProperty(950description = DESCRIPTION_2,951bound = !BOUND,952expert = !EXPERT,953hidden = !HIDDEN,954preferred = !PREFERRED,955required = !REQUIRED,956visualUpdate = !UPDATE)957public boolean getX() { return false; }958959public void addPropertyChangeListener(PropertyChangeListener l) {}960public void removePropertyChangeListener(PropertyChangeListener l) {}961};962ok = checkInfo(testIs_3.getClass(), "IIs-3", false);963System.out.println("OK = " + ok);964ok2 = checkAlternativeInfo(testIs_3.getClass(), "IIs-3");965System.out.println("OK = " + ok2);966passed = passed && (ok || ok2);967968IIs testIs_4 = new IIs() {969970private boolean b;971972@BeanProperty(973description = DESCRIPTION,974bound = BOUND,975expert = EXPERT,976hidden = HIDDEN,977preferred = PREFERRED,978required = REQUIRED,979visualUpdate = UPDATE)980@Override981public boolean isX() { return b; }982983@BeanProperty(984description = DESCRIPTION_2,985bound = !BOUND,986expert = !EXPERT,987hidden = !HIDDEN,988preferred = !PREFERRED,989required = !REQUIRED,990visualUpdate = !UPDATE)991public void setX(boolean v) { b = v; }992993public void addPropertyChangeListener(PropertyChangeListener l) {}994public void removePropertyChangeListener(PropertyChangeListener l) {}995};996ok = checkInfo(testIs_4.getClass(), "IIs-4", false);997System.out.println("OK = " + ok);998passed = passed && ok;9991000//----------------------------------------------------------------------100110021003if (!passed) { throw new RuntimeException("test failed"); }1004System.out.println("\ntest passed");1005}1006}100710081009