|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.ObjectEDU.oswego.cs.dl.util.concurrent.PropertyChangeMulticaster
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. ]
| Field Summary | |
protected HashMap |
children
HashMap for managing listeners for specific properties. |
protected PropertyChangeListener[] |
listeners
The array of listeners. |
protected Object |
source
The object to be provided as the "source" for any generated events. |
| Constructor Summary | |
PropertyChangeMulticaster(Object sourceBean)
Constructs a PropertyChangeMulticaster object. |
|
| Method Summary | |
void |
addPropertyChangeListener(PropertyChangeListener listener)
Add a VetoableChangeListener to the listener list. |
void |
addPropertyChangeListener(String propertyName,
PropertyChangeListener listener)
Add a PropertyChangeListener for a specific property. |
void |
addPropertyChangeListenerIfAbsent(PropertyChangeListener listener)
Add a PropertyChangeListener to the listener list if it is not already present. |
void |
addPropertyChangeListenerIfAbsent(String propertyName,
PropertyChangeListener listener)
Add a PropertyChangeListener for a specific property, if it is not already registered. |
void |
firePropertyChange(PropertyChangeEvent evt)
Fire an existing PropertyChangeEvent to any registered listeners. |
void |
firePropertyChange(String propertyName,
boolean oldValue,
boolean newValue)
Report a boolean bound property update to any registered listeners. |
void |
firePropertyChange(String propertyName,
int oldValue,
int newValue)
Report an int bound property update to any registered listeners. |
void |
firePropertyChange(String propertyName,
Object oldValue,
Object newValue)
Report a bound property update to any registered listeners. |
protected PropertyChangeMulticaster |
getChild(String propertyName)
Return the child associated with property, or null if no such |
boolean |
hasListeners(String propertyName)
Check if there are any listeners for a specific property. |
protected void |
multicast(PropertyChangeEvent evt)
Helper method to relay evt to all listeners. |
void |
removePropertyChangeListener(PropertyChangeListener listener)
Remove a PropertyChangeListener from the listener list. |
void |
removePropertyChangeListener(String propertyName,
PropertyChangeListener listener)
Remove a PropertyChangeListener for a specific property. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
protected transient PropertyChangeListener[] listeners
protected final Object source
protected HashMap children
| Constructor Detail |
public PropertyChangeMulticaster(Object sourceBean)
PropertyChangeMulticaster object.
sourceBean - The bean to be given as the source for any events.
NullPointerException - if sourceBean is null| Method Detail |
protected PropertyChangeMulticaster getChild(String propertyName)
public void addPropertyChangeListener(PropertyChangeListener listener)
listener - The PropertyChangeListener to be added
NullPointerException - If listener is nullpublic void addPropertyChangeListenerIfAbsent(PropertyChangeListener listener)
listener - The PropertyChangeListener to be added
NullPointerException - If listener is nullpublic void removePropertyChangeListener(PropertyChangeListener listener)
listener - The PropertyChangeListener to be removed
public void addPropertyChangeListener(String propertyName,
PropertyChangeListener listener)
propertyName - The name of the property to listen on.listener - The PropertyChangeListener to be added
NullPointerException - If listener is null
public void addPropertyChangeListenerIfAbsent(String propertyName,
PropertyChangeListener listener)
propertyName - The name of the property to listen on.listener - The PropertyChangeListener to be added
NullPointerException - If listener is null
public void removePropertyChangeListener(String propertyName,
PropertyChangeListener listener)
propertyName - The name of the property that was listened on.listener - The PropertyChangeListener to be removedprotected void multicast(PropertyChangeEvent evt)
public void firePropertyChange(String propertyName,
Object oldValue,
Object newValue)
propertyName - The programmatic name of the property
that was changed.oldValue - The old value of the property.newValue - The new value of the property.
public void firePropertyChange(String propertyName,
int oldValue,
int newValue)
This is merely a convenience wrapper around the more general firePropertyChange method that takes Object values.
propertyName - The programmatic name of the property
that was changed.oldValue - The old value of the property.newValue - The new value of the property.
public void firePropertyChange(String propertyName,
boolean oldValue,
boolean newValue)
This is merely a convenience wrapper around the more general firePropertyChange method that takes Object values.
propertyName - The programmatic name of the property
that was changed.oldValue - The old value of the property.newValue - The new value of the property.public void firePropertyChange(PropertyChangeEvent evt)
evt - The PropertyChangeEvent object.public boolean hasListeners(String propertyName)
propertyName - the property name.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||