org.spicefactory.pimento.property
Class AbstractPropertyHandler

java.lang.Object
  extended by org.spicefactory.pimento.property.AbstractPropertyHandler
All Implemented Interfaces:
PropertyHandler
Direct Known Subclasses:
BooleanHandler, DateHandler, EnumHandler, NumberHandler, StringHandler

public abstract class AbstractPropertyHandler
extends Object
implements PropertyHandler

Base class for all simple properties.

Author:
Jens Halm

Constructor Summary
AbstractPropertyHandler()
           
 
Method Summary
protected  Property getProperty()
          Returns the property managed by this handler.
 Object getValueForSnapshot(Object entity, SnapshotEncoder encoder, FetchMode fetchMode)
          Reads the specified property from the given entity and returns it in a form suitable for inclusion in an entity snapshot.
 void init(Property property)
           
 Object prepareValueFromSnapshot(Object entity, Object value, SnapshotDecoder decoder, EntityState state)
          Prepares the specified property value, performing all necessary conversions, but without actually applying it to the specified entity.
 void setValue(Object entity, Object value)
          Sets the specified property value of the given entity.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractPropertyHandler

public AbstractPropertyHandler()
Method Detail

getProperty

protected Property getProperty()
Returns the property managed by this handler.

Returns:
the property managed by this handler

init

public void init(Property property)
Specified by:
init in interface PropertyHandler

getValueForSnapshot

public Object getValueForSnapshot(Object entity,
                                  SnapshotEncoder encoder,
                                  FetchMode fetchMode)
Description copied from interface: PropertyHandler
Reads the specified property from the given entity and returns it in a form suitable for inclusion in an entity snapshot. For associations this means that non-null values should be converted to snapshots themselves, using the provided SnapshotEncoder instance. Simple values could be returned as-is in most cases.

Specified by:
getValueForSnapshot in interface PropertyHandler
Parameters:
entity - the entity to extract the property value from
encoder - the encoder to use for encoding associations
fetchMode - the fetchMode to use if the property type is an association
Returns:
the current value of the property as a simple value, an entity snapshot or an instance of PropertyState

prepareValueFromSnapshot

public Object prepareValueFromSnapshot(Object entity,
                                       Object value,
                                       SnapshotDecoder decoder,
                                       EntityState state)
Description copied from interface: PropertyHandler
Prepares the specified property value, performing all necessary conversions, but without actually applying it to the specified entity. The prepared values will be collected in a PropertyChangeSet instance which gets passed to any configured interceptors before the property is applied with the setValue method of this class.

Specified by:
prepareValueFromSnapshot in interface PropertyHandler
Parameters:
entity - the entity to prepare the property for
value - the new value for the property
decoder - the decoder to use for decoding associations
state - the state of the entity
Returns:
the (possibly converted) value of the property as it will later be applied to the entity.

setValue

public void setValue(Object entity,
                     Object value)
Description copied from interface: PropertyHandler
Sets the specified property value of the given entity. This method can safely assume that the value has been property prepared (possibly converted) with the prepareValueFromSnapshot method of this class before this method gets invoked.

Specified by:
setValue in interface PropertyHandler
Parameters:
entity - the entity to set the property for
value - the new value for the property