org.springframework.binding.value.support
Class BufferedValueModel

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.BufferedValueModel
All Implemented Interfaces:
PropertyChangePublisher, ValueModelWrapper, ValueModel
Direct Known Subclasses:
BufferedCollectionValueModel

public class BufferedValueModel
extends AbstractValueModel
implements ValueModelWrapper

A value model that wraps another value model; delaying or buffering changes until a commit is triggered. TODO: more class docs...

Author:
Karsten Lentzsch, Keith Donald, Oliver Hutchison

Field Summary
static String BUFFERING_PROPERTY
          Name of the bound property buffering.
 
Fields inherited from class org.springframework.binding.value.support.AbstractValueModel
logger
 
Fields inherited from interface org.springframework.binding.value.ValueModel
VALUE_PROPERTY
 
Constructor Summary
BufferedValueModel(ValueModel wrappedModel)
          Constructs a BufferedValueHolder that wraps the given wrappedModel.
BufferedValueModel(ValueModel wrappedModel, CommitTrigger commitTrigger)
          Constructs a BufferedValueHolder that wraps the given wrappedModel and listens to the provided commitTrigger for commit and revert events.
 
Method Summary
 void commit()
          Commits the value buffered by this value model back to the wrapped value model.
 CommitTrigger getCommitTrigger()
          Returns the CommitTrigger that is used to trigger commit and flush events.
 ValueModel getInnerMostWrappedValueModel()
          Returns the inner most wrappedModel; i.e.
 Object getValue()
          Returns the wrappedModel value if no value has been set since the last commit or flush, and returns the buffered value otherwise.
protected  Object getValueToCommit()
          Provides a hook that allows for modification of the value that is committed to the underlying value model.
 ValueModel getWrappedValueModel()
          Returns the wrappedModel, i.e.
 boolean isBuffering()
          Returns whether this model buffers a value or not, that is, whether a value has been assigned since the last commit or flush.
protected  void onWrappedValueChanged()
          Called when the value held by the wrapped value model changes.
 void revert()
          Reverts the value held by the value model back to the value held by the wrapped value model.
 void setCommitTrigger(CommitTrigger commitTrigger)
          Sets the CommitTrigger that triggers the commit and flush events.
 void setValue(Object value)
          Sets a new buffered value and turns this BufferedValueModel into the buffering state.
 String toString()
           
 
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, wait, wait, wait
 

Field Detail

BUFFERING_PROPERTY

public static final String BUFFERING_PROPERTY
Name of the bound property buffering.

See Also:
Constant Field Values
Constructor Detail

BufferedValueModel

public BufferedValueModel(ValueModel wrappedModel)
Constructs a BufferedValueHolder that wraps the given wrappedModel.

Parameters:
wrappedModel - the value model to be buffered

BufferedValueModel

public BufferedValueModel(ValueModel wrappedModel,
                          CommitTrigger commitTrigger)
Constructs a BufferedValueHolder that wraps the given wrappedModel and listens to the provided commitTrigger for commit and revert events.

Parameters:
wrappedModel - the value model to be buffered
commitTrigger - the commit trigger that triggers the commit or flush event
Method Detail

getCommitTrigger

public final CommitTrigger getCommitTrigger()
Returns the CommitTrigger that is used to trigger commit and flush events.

Returns:
the CommitTrigger that is used to trigger commit and flush events

setCommitTrigger

public final void setCommitTrigger(CommitTrigger commitTrigger)
Sets the CommitTrigger that triggers the commit and flush events.

Parameters:
commitTrigger - the commit trigger; or null to deregister the existing trigger.

isBuffering

public boolean isBuffering()
Returns whether this model buffers a value or not, that is, whether a value has been assigned since the last commit or flush.

Returns:
true if a value has been assigned since the last commit or revert

getValue

public Object getValue()
Returns the wrappedModel value if no value has been set since the last commit or flush, and returns the buffered value otherwise.

Specified by:
getValue in interface ValueModel
Returns:
the buffered value

setValue

public void setValue(Object value)
Sets a new buffered value and turns this BufferedValueModel into the buffering state. The buffered value is not provided to the underlying model until the trigger channel indicates a commit.

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

getWrappedValueModel

public final ValueModel getWrappedValueModel()
Returns the wrappedModel, i.e. the underlying ValueModel that provides the unbuffered value.

Specified by:
getWrappedValueModel in interface ValueModelWrapper
Returns:
the ValueModel that provides the unbuffered value

getInnerMostWrappedValueModel

public final ValueModel getInnerMostWrappedValueModel()
Returns the inner most wrappedModel; i.e. the root ValueModel that provides the unbuffered value. This is found by repeatedly unwrapping any ValueModelWrappers until we find the inner most value model.

Specified by:
getInnerMostWrappedValueModel in interface ValueModelWrapper
Returns:
the inner most ValueModel that provides the unbuffered value
See Also:
ValueModelWrapper.getInnerMostWrappedValueModel()

onWrappedValueChanged

protected void onWrappedValueChanged()
Called when the value held by the wrapped value model changes.


commit

public void commit()
Commits the value buffered by this value model back to the wrapped value model.


getValueToCommit

protected Object getValueToCommit()
Provides a hook that allows for modification of the value that is committed to the underlying value model.


revert

public final void revert()
Reverts the value held by the value model back to the value held by the wrapped value model.


toString

public String toString()
Overrides:
toString in class Object


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