| 
 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.dbunit.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  java.util.HashMap | childrenHashMap for managing listeners for specific properties. | 
| protected  java.beans.PropertyChangeListener[] | listenersThe array of listeners. | 
| protected  java.lang.Object | sourceThe object to be provided as the "source" for any generated events. | 
| Constructor Summary | |
| PropertyChangeMulticaster(java.lang.Object sourceBean)Constructs a PropertyChangeMulticasterobject. | |
| Method Summary | |
|  void | addPropertyChangeListener(java.beans.PropertyChangeListener listener)Add a VetoableChangeListener to the listener list. | 
|  void | addPropertyChangeListener(java.lang.String propertyName,
                          java.beans.PropertyChangeListener listener)Add a PropertyChangeListener for a specific property. | 
|  void | addPropertyChangeListenerIfAbsent(java.beans.PropertyChangeListener listener)Add a PropertyChangeListener to the listener list if it is not already present. | 
|  void | addPropertyChangeListenerIfAbsent(java.lang.String propertyName,
                                  java.beans.PropertyChangeListener listener)Add a PropertyChangeListener for a specific property, if it is not already registered. | 
|  void | firePropertyChange(java.beans.PropertyChangeEvent evt)Fire an existing PropertyChangeEvent to any registered listeners. | 
|  void | firePropertyChange(java.lang.String propertyName,
                   boolean oldValue,
                   boolean newValue)Report a boolean bound property update to any registered listeners. | 
|  void | firePropertyChange(java.lang.String propertyName,
                   int oldValue,
                   int newValue)Report an int bound property update to any registered listeners. | 
|  void | firePropertyChange(java.lang.String propertyName,
                   java.lang.Object oldValue,
                   java.lang.Object newValue)Report a bound property update to any registered listeners. | 
| protected  PropertyChangeMulticaster | getChild(java.lang.String propertyName)Return the child associated with property, or null if no such | 
|  boolean | hasListeners(java.lang.String propertyName)Check if there are any listeners for a specific property. | 
| protected  void | multicast(java.beans.PropertyChangeEvent evt)Helper method to relay evt to all listeners. | 
|  void | removePropertyChangeListener(java.beans.PropertyChangeListener listener)Remove a PropertyChangeListener from the listener list. | 
|  void | removePropertyChangeListener(java.lang.String propertyName,
                             java.beans.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 java.beans.PropertyChangeListener[] listeners
protected final java.lang.Object source
protected java.util.HashMap children
| Constructor Detail | 
public PropertyChangeMulticaster(java.lang.Object sourceBean)
PropertyChangeMulticaster object.
sourceBean - The bean to be given as the source for any events.
java.lang.NullPointerException - if sourceBean is null| Method Detail | 
protected PropertyChangeMulticaster getChild(java.lang.String propertyName)
public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
listener - The PropertyChangeListener to be added
java.lang.NullPointerException - If listener is nullpublic void addPropertyChangeListenerIfAbsent(java.beans.PropertyChangeListener listener)
listener - The PropertyChangeListener to be added
java.lang.NullPointerException - If listener is nullpublic void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
listener - The PropertyChangeListener to be removed
public void addPropertyChangeListener(java.lang.String propertyName,
                                      java.beans.PropertyChangeListener listener)
propertyName - The name of the property to listen on.listener - The PropertyChangeListener to be added
java.lang.NullPointerException - If listener is null
public void addPropertyChangeListenerIfAbsent(java.lang.String propertyName,
                                              java.beans.PropertyChangeListener listener)
propertyName - The name of the property to listen on.listener - The PropertyChangeListener to be added
java.lang.NullPointerException - If listener is null
public void removePropertyChangeListener(java.lang.String propertyName,
                                         java.beans.PropertyChangeListener listener)
propertyName - The name of the property that was listened on.listener - The PropertyChangeListener to be removedprotected void multicast(java.beans.PropertyChangeEvent evt)
public void firePropertyChange(java.lang.String propertyName,
                               java.lang.Object oldValue,
                               java.lang.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(java.lang.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(java.lang.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(java.beans.PropertyChangeEvent evt)
evt - The PropertyChangeEvent object.public boolean hasListeners(java.lang.String propertyName)
propertyName - the property name.
| 
 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||