org.springframework.binding.value.support
Class AbstractDerivedValueModel

java.lang.Object
  extended by org.springframework.binding.value.support.AbstractPropertyChangePublisher
      extended by org.springframework.binding.value.support.AbstractValueModel
          extended by org.springframework.binding.value.support.AbstractDerivedValueModel
All Implemented Interfaces:
DerivedValueModel, PropertyChangePublisher, ValueModel
Direct Known Subclasses:
MessageFormatValueModel, MethodInvokingDerivedValueModel

public abstract class AbstractDerivedValueModel
extends AbstractValueModel
implements DerivedValueModel

Abstract base class for value models that derive their value from one or more "source" value model. Provides a hook to notify when any of the "source" value models change.

Author:
Oliver Hutchison

Field Summary
 
Fields inherited from class org.springframework.binding.value.support.AbstractValueModel
logger
 
Fields inherited from interface org.springframework.binding.value.ValueModel
VALUE_PROPERTY
 
Constructor Summary
protected AbstractDerivedValueModel(ValueModel[] sourceValueModels)
          Create a derivedValueModel based on the given sourceValueModels.
 
Method Summary
 ValueModel[] getSourceValueModels()
          Returns an array of all values models that are used to derive the value represented by this value model.
protected  Object[] getSourceValues()
          Convenience method to extract values from all sourceValueModels that influence the derived value.
 boolean isReadOnly()
          A derived valueModel is always readOnly.
 void setValue(Object newValue)
          A DerivedValueModel's value is based on other valueModels, it cannot be set.
protected abstract  void sourceValuesChanged()
          Derive the value from the source values and fire a valueChangeEvent to notify listeners.
 
Methods inherited from class org.springframework.binding.value.support.AbstractValueModel
addValueChangeListener, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChangeEvent, fireValueChangeWhenStillEqual, getValueChangeDetector, hasValueChanged, removeValueChangeListener, setValueChangeDetector, setValueSilently
 
Methods inherited from class org.springframework.binding.value.support.AbstractPropertyChangePublisher
addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, firePropertiesChanged, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, getPropertyChangeListeners, getPropertyChangeListeners, getVetoableChangeListeners, getVetoableChangeListeners, hasChanged, hasChanged, hasChanged, hasChanged, hasChanged, hasChanged, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.springframework.binding.value.ValueModel
addValueChangeListener, getValue, removeValueChangeListener, setValueSilently
 

Constructor Detail

AbstractDerivedValueModel

protected AbstractDerivedValueModel(ValueModel[] sourceValueModels)
Create a derivedValueModel based on the given sourceValueModels. When any of these valueModels has their value changed, the derivedValueModel will update its value.

Parameters:
sourceValueModels - an Array of valueModels that influence the derived value.
Method Detail

getSourceValueModels

public ValueModel[] getSourceValueModels()
Description copied from interface: DerivedValueModel
Returns an array of all values models that are used to derive the value represented by this value model.

Specified by:
getSourceValueModels in interface DerivedValueModel

getSourceValues

protected Object[] getSourceValues()
Convenience method to extract values from all sourceValueModels that influence the derived value.

Returns:
an Array containing the source values in the same order as the source valueModels were defined.

sourceValuesChanged

protected abstract void sourceValuesChanged()
Derive the value from the source values and fire a valueChangeEvent to notify listeners.


isReadOnly

public boolean isReadOnly()
A derived valueModel is always readOnly.

Specified by:
isReadOnly in interface DerivedValueModel
See Also:
setValue(Object)

setValue

public void setValue(Object newValue)
A DerivedValueModel's value is based on other valueModels, it cannot be set. Will throw an UnsupportedOperationException when used.

Specified by:
setValue in interface ValueModel
Parameters:
newValue - the value to be set


Copyright © 2004-2008 The Spring Framework. All Rights Reserved.