com.iparelan.util.beans
Class PropertyChangeSupport

java.lang.Object
  extended by com.iparelan.util.beans.PropertyChangeSupport
All Implemented Interfaces:
PropertyChangeable, PropertyFireable

@Decorator
@ThreadSafe
@Copyright(value="Copyright © 2008, Iparelan Solutions, LLC. All rights reserved.")
public class PropertyChangeSupport
extends Object
implements PropertyChangeable, PropertyFireable

An alternative to PropertyChangeSupport with these enhancements:

  1. It guarantees that registered listeners do not strongly refer to observed beans (see the reference to the book "Hardcore Java" in the "See Also" section below).
  2. It is type-safe, ensuring that the types of old and new property values are compatible.

Version:
July 2008
Author:
Greg Mattes
See Also:
PropertyChangeSupport, "Hardcore Java," Simmons, Chapter 11, "A Weak Listener"
To Do:

Field Summary
private  oreilly.hcj.references.PropertyChangeSupport delegate
           
private  Object sourceBean
           
 
Constructor Summary
PropertyChangeSupport(Object sourceBean)
           
 
Method Summary
 void addPropertyChangeListener(PropertyChangeListener listener)
           
 void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
           
 void fireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue)
           
 void fireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue)
           
 void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue)
           
 void firePropertyChange(PropertyChangeEvent evt)
           
 void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
           
 void firePropertyChange(String propertyName, int oldValue, int newValue)
           
 void firePropertyChange(String propertyName, Object oldValue, Object newValue)
           
 PropertyChangeListener[] getPropertyChangeListeners()
           
 PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
           
 boolean hasListeners(String propertyName)
           
 void removePropertyChangeListener(PropertyChangeListener listener)
           
 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

delegate

private final oreilly.hcj.references.PropertyChangeSupport delegate

sourceBean

private final Object sourceBean
Constructor Detail

PropertyChangeSupport

public PropertyChangeSupport(Object sourceBean)
Method Detail

getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners()
Specified by:
getPropertyChangeListeners in interface PropertyChangeable
See Also:
PropertyChangeSupport.getPropertyChangeListeners()

getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners(String propertyName)
Specified by:
getPropertyChangeListeners in interface PropertyChangeable
See Also:
PropertyChangeSupport.getPropertyChangeListeners(String)

addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
Specified by:
addPropertyChangeListener in interface PropertyChangeable
See Also:
PropertyChangeSupport.addPropertyChangeListener(PropertyChangeListener)

addPropertyChangeListener

public void addPropertyChangeListener(String propertyName,
                                      PropertyChangeListener listener)
Specified by:
addPropertyChangeListener in interface PropertyChangeable
See Also:
PropertyChangeSupport.addPropertyChangeListener(String, PropertyChangeListener)

hasListeners

public boolean hasListeners(String propertyName)
Specified by:
hasListeners in interface PropertyChangeable
See Also:
PropertyChangeSupport.hasListeners(String)

removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener listener)
Specified by:
removePropertyChangeListener in interface PropertyChangeable
See Also:
PropertyChangeSupport.removePropertyChangeListener(PropertyChangeListener)

removePropertyChangeListener

public void removePropertyChangeListener(String propertyName,
                                         PropertyChangeListener listener)
Specified by:
removePropertyChangeListener in interface PropertyChangeable
See Also:
PropertyChangeSupport.removePropertyChangeListener(String, PropertyChangeListener)

firePropertyChange

public void firePropertyChange(String propertyName,
                               Object oldValue,
                               Object newValue)
Specified by:
firePropertyChange in interface PropertyFireable
See Also:
PropertyChangeSupport.firePropertyChange(String, Object, Object)

firePropertyChange

public void firePropertyChange(String propertyName,
                               boolean oldValue,
                               boolean newValue)
Specified by:
firePropertyChange in interface PropertyFireable
See Also:
PropertyChangeSupport.firePropertyChange(String, boolean, boolean)

firePropertyChange

public void firePropertyChange(String propertyName,
                               int oldValue,
                               int newValue)
Specified by:
firePropertyChange in interface PropertyFireable
See Also:
PropertyChangeSupport.firePropertyChange(String, int, int)

fireIndexedPropertyChange

public void fireIndexedPropertyChange(String propertyName,
                                      int index,
                                      Object oldValue,
                                      Object newValue)
Specified by:
fireIndexedPropertyChange in interface PropertyFireable
See Also:
PropertyChangeSupport.fireIndexedPropertyChange(String, int, Object, Object)

fireIndexedPropertyChange

public void fireIndexedPropertyChange(String propertyName,
                                      int index,
                                      boolean oldValue,
                                      boolean newValue)
Specified by:
fireIndexedPropertyChange in interface PropertyFireable
See Also:
PropertyChangeSupport.fireIndexedPropertyChange(String, int, boolean, boolean)

fireIndexedPropertyChange

public void fireIndexedPropertyChange(String propertyName,
                                      int index,
                                      int oldValue,
                                      int newValue)
Specified by:
fireIndexedPropertyChange in interface PropertyFireable
See Also:
PropertyChangeSupport.fireIndexedPropertyChange(String, int, int, int)

firePropertyChange

public void firePropertyChange(PropertyChangeEvent evt)
Specified by:
firePropertyChange in interface PropertyFireable
See Also:
PropertyChangeSupport.firePropertyChange(PropertyChangeEvent)


Copyright © 2008 Iparelan Solutions, LLC. All rights reserved.