--- a/jdk/src/java.desktop/share/classes/com/sun/beans/introspect/PropertyInfo.java Tue Jul 21 09:51:33 2015 +0300
+++ b/jdk/src/java.desktop/share/classes/com/sun/beans/introspect/PropertyInfo.java Sat Jul 18 15:09:28 2015 +0300
@@ -40,7 +40,7 @@
import static com.sun.beans.finder.ClassFinder.findClass;
public final class PropertyInfo {
- public enum Name {bound, expert, hidden, preferred, visualUpdate, description, enumerationValues}
+ public enum Name {bound, expert, hidden, preferred, required, visualUpdate, description, enumerationValues}
private static final String VETO_EXCEPTION_NAME = "java.beans.PropertyVetoException";
private static final Class<?> VETO_EXCEPTION;
@@ -120,6 +120,7 @@
put(Name.bound, Boolean.FALSE);
}
put(Name.expert, annotation.expert());
+ put(Name.required, annotation.required());
put(Name.hidden, annotation.hidden());
put(Name.preferred, annotation.preferred());
put(Name.visualUpdate, annotation.visualUpdate());
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/beans/Introspector/8130937/TestBooleanBeanProperties.java Sat Jul 18 15:09:28 2015 +0300
@@ -0,0 +1,380 @@
+/*
+ * Copyright (c) 2015, 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.
+ */
+
+import java.beans.BeanProperty;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.beans.PropertyDescriptor;
+
+/**
+ * @test
+ * @bug 8130937
+ * @summary Tests the booleans properties of the BeanProperty annotation
+ * @library ..
+ */
+public final class TestBooleanBeanProperties {
+
+ public static void main(final String[] args) {
+ test(Empty.class, false, false, false, false, false, false);
+ test(BoundTrue.class, false, false, false, false, false, false);
+ test(BoundFalse.class, false, false, false, false, false, false);
+ test(BoundListener.class, true, false, false, false, false, false);
+ test(BoundFalseListener.class, false, false, false, false, false, false);
+ test(BoundTrueListener.class, true, false, false, false, false, false);
+ test(ExpertTrue.class, false, true, false, false, false, false);
+ test(ExpertFalse.class, false, false, false, false, false, false);
+ test(HiddenTrue.class, false, false, true, false, false, false);
+ test(HiddenFalse.class, false, false, false, false, false, false);
+ test(PreferredTrue.class, false, false, false, true, false, false);
+ test(PreferredFalse.class, false, false, false, false, false, false);
+ test(RequiredTrue.class, false, false, false, false, true, false);
+ test(RequiredFalse.class, false, false, false, false, false, false);
+ test(VisualUpdateTrue.class, false, false, false, false, false, true);
+ test(VisualUpdateFalse.class, false, false, false, false, false, false);
+ test(All.class, true, true, true, true, true, true);
+ }
+
+ private static void test(Class<?> cls, boolean isBound, boolean isExpert,
+ boolean isHidden, boolean isPref, boolean isReq,
+ boolean isVS) {
+ PropertyDescriptor pd = BeanUtils.getPropertyDescriptor(cls, "value");
+ if (pd.isBound() != isBound) {
+ throw new RuntimeException("isBound should be: " + isBound);
+ }
+ if (pd.isExpert() != isExpert || getValue(pd, "expert") != isExpert) {
+ throw new RuntimeException("isExpert should be:" + isExpert);
+ }
+ if (pd.isHidden() != isHidden || getValue(pd, "hidden") != isHidden) {
+ throw new RuntimeException("isHidden should be: " + isHidden);
+ }
+ if (pd.isPreferred() != isPref) {
+ throw new RuntimeException("isPreferred should be: " + isPref);
+ }
+ if (getValue(pd, "required") != isReq) {
+ throw new RuntimeException("required should be: " + isReq);
+ }
+ if (getValue(pd, "visualUpdate") != isVS) {
+ throw new RuntimeException("required should be: " + isVS);
+ }
+ }
+
+ private static boolean getValue(PropertyDescriptor pd, String value) {
+ return (boolean) pd.getValue(value);
+ }
+ ////////////////////////////////////////////////////////////////////////////
+
+ public static final class Empty {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+
+ public static final class All {
+
+ private int value;
+
+ private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(bound = true, expert = true, hidden = true,
+ preferred = true, required = true, visualUpdate = true)
+ public void setValue(int value) {
+ this.value = value;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener l) {
+ pcs.addPropertyChangeListener(l);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener l) {
+ pcs.removePropertyChangeListener(l);
+ }
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ // bound property
+ ////////////////////////////////////////////////////////////////////////////
+
+ public static final class BoundTrue {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(bound = true)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+
+ public static final class BoundFalse {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(bound = false)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+
+ public static final class BoundListener {
+
+ private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ public void setValue(int value) {
+ this.value = value;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener l) {
+ pcs.addPropertyChangeListener(l);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener l) {
+ pcs.removePropertyChangeListener(l);
+ }
+ }
+
+ public static final class BoundFalseListener {
+
+ private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(bound = false)
+ public void setValue(int value) {
+ this.value = value;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener l) {
+ pcs.addPropertyChangeListener(l);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener l) {
+ pcs.removePropertyChangeListener(l);
+ }
+ }
+
+ public static final class BoundTrueListener {
+
+ private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(bound = true)
+ public void setValue(int value) {
+ this.value = value;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener l) {
+ pcs.addPropertyChangeListener(l);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener l) {
+ pcs.removePropertyChangeListener(l);
+ }
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ // expert property
+ ////////////////////////////////////////////////////////////////////////////
+
+ public static final class ExpertTrue {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(expert = true)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+
+ public static final class ExpertFalse {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(expert = false)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ // hidden property
+ ////////////////////////////////////////////////////////////////////////////
+
+ public static final class HiddenTrue {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(hidden = true)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+
+ public static final class HiddenFalse {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(hidden = false)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ // preferred property
+ ////////////////////////////////////////////////////////////////////////////
+
+ public static final class PreferredTrue {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(preferred = true)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+
+ public static final class PreferredFalse {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(preferred = false)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ // required property
+ ////////////////////////////////////////////////////////////////////////////
+
+ public static final class RequiredTrue {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(required = true)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+
+ public static final class RequiredFalse {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(required = false)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ // visualUpdate property
+ ////////////////////////////////////////////////////////////////////////////
+
+ public static final class VisualUpdateTrue {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(visualUpdate = true)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+
+ public static final class VisualUpdateFalse {
+
+ private int value;
+
+ public int getValue() {
+ return value;
+ }
+
+ @BeanProperty(visualUpdate = false)
+ public void setValue(int value) {
+ this.value = value;
+ }
+ }
+}