diff --git a/jdk/src/share/classes/java/beans/PropertyChangeSupport.java b/jdk/src/share/classes/java/beans/PropertyChangeSupport.java index 2a3f79ff3f2..04b510ae2ca 100644 --- a/jdk/src/share/classes/java/beans/PropertyChangeSupport.java +++ b/jdk/src/share/classes/java/beans/PropertyChangeSupport.java @@ -34,12 +34,49 @@ import java.util.Map.Entry; /** * This is a utility class that can be used by beans that support bound - * properties. You can use an instance of this class as a member field - * of your bean and delegate various work to it. + * properties. It manages a list of listeners and dispatches + * {@link PropertyChangeEvent}s to them. You can use an instance of this class + * as a member field of your bean and delegate these types of work to it. + * The {@link PropertyChangeListener} can be registered for all properties + * or for a property specified by name. + *
+ * Here is an example of {@code PropertyChangeSupport} usage that follows + * the rules and recommendations laid out in the JavaBeans™ specification: + *
+ * public class MyBean { + * private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); * + * public void addPropertyChangeListener(PropertyChangeListener listener) { + * this.pcs.addPropertyChangeListener(listener); + * } + * + * public void removePropertyChangeListener(PropertyChangeListener listener) { + * this.pcs.removePropertyChangeListener(listener); + * } + * + * private String value; + * + * public String getValue() { + * return this.value; + * } + * + * public void setValue(String newValue) { + * String oldValue = this.value; + * this.value = newValue; + * this.pcs.firePropertyChange("value", oldValue, newValue); + * } + * + * [...] + * } + *+ *
+ * A {@code PropertyChangeSupport} instance is thread-safe. + *
* This class is serializable. When it is serialized it will save * (and restore) any listeners that are themselves serializable. Any * non-serializable listeners will be skipped during serialization. + * + * @see VetoableChangeSupport */ public class PropertyChangeSupport implements Serializable { private PropertyChangeListenerMap map = new PropertyChangeListenerMap(); diff --git a/jdk/src/share/classes/java/beans/VetoableChangeSupport.java b/jdk/src/share/classes/java/beans/VetoableChangeSupport.java index f6707b49f7f..addf68b36cd 100644 --- a/jdk/src/share/classes/java/beans/VetoableChangeSupport.java +++ b/jdk/src/share/classes/java/beans/VetoableChangeSupport.java @@ -34,12 +34,49 @@ import java.util.Map.Entry; /** * This is a utility class that can be used by beans that support constrained - * properties. You can use an instance of this class as a member field - * of your bean and delegate various work to it. + * properties. It manages a list of listeners and dispatches + * {@link PropertyChangeEvent}s to them. You can use an instance of this class + * as a member field of your bean and delegate these types of work to it. + * The {@link VetoableChangeListener} can be registered for all properties + * or for a property specified by name. + *
+ * Here is an example of {@code VetoableChangeSupport} usage that follows + * the rules and recommendations laid out in the JavaBeans™ specification: + *
+ * public class MyBean { + * private final VetoableChangeSupport vcs = new VetoableChangeSupport(this); * + * public void addVetoableChangeListener(VetoableChangeListener listener) { + * this.vcs.addVetoableChangeListener(listener); + * } + * + * public void removeVetoableChangeListener(VetoableChangeListener listener) { + * this.vcs.removeVetoableChangeListener(listener); + * } + * + * private String value; + * + * public String getValue() { + * return this.value; + * } + * + * public void setValue(String newValue) throws PropertyVetoException { + * String oldValue = this.value; + * this.vcs.fireVetoableChange("value", oldValue, newValue); + * this.value = newValue; + * } + * + * [...] + * } + *+ *
+ * A {@code VetoableChangeSupport} instance is thread-safe. + *
* This class is serializable. When it is serialized it will save * (and restore) any listeners that are themselves serializable. Any * non-serializable listeners will be skipped during serialization. + * + * @see PropertyChangeSupport */ public class VetoableChangeSupport implements Serializable { private VetoableChangeListenerMap map = new VetoableChangeListenerMap();