| java.lang.Object EDU.oswego.cs.dl.util.concurrent.PropertyChangeMulticaster
PropertyChangeMulticaster | public class PropertyChangeMulticaster implements Serializable(Code) | | This class is interoperable with java.beans.PropertyChangeSupport,
but relies on a streamlined copy-on-write scheme similar to
that used in CopyOnWriteArrayList. This leads to much better
performance in most event-intensive programs. It also adheres to clarified
semantics of add and remove operations.
Sample usage.
class Thing {
protected Color myColor = Color.red; // an example property
protected PropertyChangeMulticaster listeners =
new PropertyChangeMulticaster(this);
// registration methods, including:
void addListener(PropertyChangeListener l) {
// Use the `ifAbsent' version to avoid duplicate notifications
listeners.addPropertyChangeListenerIfAbsent(l);
}
public synchronized Color getColor() { // accessor
return myColor;
}
// internal synchronized state change method; returns old value
protected synchronized Color assignColor(Color newColor) {
Color oldColor = myColor;
myColor = newColor;
return oldColor;
}
public void setColor(Color newColor) {
// atomically change state
Color oldColor = assignColor(newColor);
// broadcast change notification without holding synch lock
listeners.firePropertyChange("color", oldColor, newColor);
}
}
[ Introduction to this package. ]
|
Method Summary | |
public synchronized void | addPropertyChangeListener(PropertyChangeListener listener) Add a VetoableChangeListener to the listener list. | public void | addPropertyChangeListener(String propertyName, PropertyChangeListener listener) Add a PropertyChangeListener for a specific property. | public synchronized void | addPropertyChangeListenerIfAbsent(PropertyChangeListener listener) Add a PropertyChangeListener to the listener list if it is
not already present. | public void | addPropertyChangeListenerIfAbsent(String propertyName, PropertyChangeListener listener) Add a PropertyChangeListener for a specific property, if it is not
already registered. | public void | firePropertyChange(String propertyName, Object oldValue, Object newValue) Report a bound property update to any registered listeners. | public void | firePropertyChange(String propertyName, int oldValue, int newValue) Report an int bound property update to any registered listeners. | public void | firePropertyChange(String propertyName, boolean oldValue, boolean newValue) Report a boolean bound property update to any registered listeners. | public void | firePropertyChange(PropertyChangeEvent evt) Fire an existing PropertyChangeEvent to any registered listeners. | protected synchronized PropertyChangeMulticaster | getChild(String propertyName) | public boolean | hasListeners(String propertyName) Check if there are any listeners for a specific property.
If propertyName is null, return whether there are any listeners at all.
Parameters: propertyName - the property name. | protected void | multicast(PropertyChangeEvent evt) Helper method to relay evt to all listeners. | public synchronized void | removePropertyChangeListener(PropertyChangeListener listener) Remove a PropertyChangeListener from the listener list. | public void | removePropertyChangeListener(String propertyName, PropertyChangeListener listener) Remove a PropertyChangeListener for a specific property.
Affects only the given property. |
children | protected HashMap children(Code) | | HashMap for managing listeners for specific properties.
Maps property names to PropertyChangeMulticaster objects.
|
source | final protected Object source(Code) | | The object to be provided as the "source" for any generated events.
|
PropertyChangeMulticaster | public PropertyChangeMulticaster(Object sourceBean)(Code) | | Constructs a PropertyChangeMulticaster object.
Parameters: sourceBean - The bean to be given as the source for any events. exception: NullPointerException - if sourceBean is null |
addPropertyChangeListener | public synchronized void addPropertyChangeListener(PropertyChangeListener listener)(Code) | | Add a VetoableChangeListener to the listener list.
The listener is registered for all properties.
If the listener is added multiple times, it will
receive multiple change notifications upon any firePropertyChange
Parameters: listener - The PropertyChangeListener to be added exception: NullPointerException - If listener is null |
addPropertyChangeListener | public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)(Code) | | Add a PropertyChangeListener for a specific property. The listener
will be invoked only when a call on firePropertyChange names that
specific property. However, if a listener is registered both for all
properties and a specific property, it will receive multiple
notifications upon changes to that property.
Parameters: propertyName - The name of the property to listen on. Parameters: listener - The PropertyChangeListener to be added exception: NullPointerException - If listener is null |
addPropertyChangeListenerIfAbsent | public synchronized void addPropertyChangeListenerIfAbsent(PropertyChangeListener listener)(Code) | | Add a PropertyChangeListener to the listener list if it is
not already present.
The listener is registered for all properties.
The operation maintains Set semantics: If the listener is already
registered, the operation has no effect.
Parameters: listener - The PropertyChangeListener to be added exception: NullPointerException - If listener is null |
addPropertyChangeListenerIfAbsent | public void addPropertyChangeListenerIfAbsent(String propertyName, PropertyChangeListener listener)(Code) | | Add a PropertyChangeListener for a specific property, if it is not
already registered. The listener
will be invoked only when a call on firePropertyChange names that
specific property.
Parameters: propertyName - The name of the property to listen on. Parameters: listener - The PropertyChangeListener to be added exception: NullPointerException - If listener is null |
firePropertyChange | public void firePropertyChange(String propertyName, Object oldValue, Object newValue)(Code) | | Report a bound property update to any registered listeners.
No event is fired if old and new are equal and non-null.
Parameters: propertyName - The programmatic name of the propertythat was changed. Parameters: oldValue - The old value of the property. Parameters: newValue - The new value of the property. |
firePropertyChange | public void firePropertyChange(String propertyName, int oldValue, int newValue)(Code) | | Report an int bound property update to any registered listeners.
No event is fired if old and new are equal and non-null.
This is merely a convenience wrapper around the more general
firePropertyChange method that takes Object values.
Parameters: propertyName - The programmatic name of the propertythat was changed. Parameters: oldValue - The old value of the property. Parameters: newValue - The new value of the property. |
firePropertyChange | public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)(Code) | | Report a boolean bound property update to any registered listeners.
No event is fired if old and new are equal and non-null.
This is merely a convenience wrapper around the more general
firePropertyChange method that takes Object values.
Parameters: propertyName - The programmatic name of the propertythat was changed. Parameters: oldValue - The old value of the property. Parameters: newValue - The new value of the property. |
firePropertyChange | public void firePropertyChange(PropertyChangeEvent evt)(Code) | | Fire an existing PropertyChangeEvent to any registered listeners.
No event is fired if the given event's old and new values are
equal and non-null.
Parameters: evt - The PropertyChangeEvent object. |
hasListeners | public boolean hasListeners(String propertyName)(Code) | | Check if there are any listeners for a specific property.
If propertyName is null, return whether there are any listeners at all.
Parameters: propertyName - the property name. true if there are one or more listeners for the given property |
multicast | protected void multicast(PropertyChangeEvent evt)(Code) | | Helper method to relay evt to all listeners.
Called by all public firePropertyChange methods.
|
removePropertyChangeListener | public synchronized void removePropertyChangeListener(PropertyChangeListener listener)(Code) | | Remove a PropertyChangeListener from the listener list.
It removes at most one occurrence of the given listener.
If the listener was added multiple times it must be removed
mulitple times.
This removes a PropertyChangeListener that was registered
for all properties, and has no effect if registered for only
one or more specified properties.
Parameters: listener - The PropertyChangeListener to be removed |
removePropertyChangeListener | public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)(Code) | | Remove a PropertyChangeListener for a specific property.
Affects only the given property.
If the listener is also registered for all properties,
then it will continue to be registered for them.
Parameters: propertyName - The name of the property that was listened on. Parameters: listener - The PropertyChangeListener to be removed |
|
|