org.exolab.castor.mapping

Class GeneralizedFieldHandler

public abstract class GeneralizedFieldHandler extends AbstractFieldHandler

An extended version of the FieldHandler interface which is used for making generic libraries of FieldHandlers which can be used for more than one field or class, but have similar conversion algorithms.

Version: $Revision: 6216 $ $Date: 2005-01-18 17:29:45 -0700 (Tue, 18 Jan 2005) $

Author: Keith Visco

See Also: FieldDescriptor FieldHandler

Nested Class Summary
static classGeneralizedFieldHandler.GFHConverterEnumeration
Constructor Summary
protected GeneralizedFieldHandler()
Creates a new default GeneralizedFieldHandler.
Method Summary
abstract ObjectconvertUponGet(Object value)
This method is used to convert the value when the getValue method is called.
abstract ObjectconvertUponSet(Object value)
This method is used to convert the value when the setValue method is called.
abstract ClassgetFieldType()
Returns the class type for the field that this GeneralizedFieldHandler converts to and from.
ObjectgetValue(Object object)
Returns the value of the field from the object.
ObjectnewInstance(Object parent)
Creates a new instance of the object described by this field.
ObjectnewInstance(Object parent, Object[] args)
Creates a new instance of the object described by this field.
voidresetValue(Object object)
Sets the value of the field to a default value.
voidsetCollectionIteration(boolean autoCollectionIteration)
Sets whether or not this GeneralizedFieldHandler should automatically iterate over the collection returned by the target object and pass only the items (one by one) to the convertUponGet method.
voidsetFieldHandler(FieldHandler handler)
Sets the FieldHandler that this FieldHander delegates to.
voidsetValue(Object object, Object value)
Sets the value of the field on the object.

Constructor Detail

GeneralizedFieldHandler

protected GeneralizedFieldHandler()
Creates a new default GeneralizedFieldHandler. This method should be called by all extending classes so that any important initialization code will be executed.

Method Detail

convertUponGet

public abstract Object convertUponGet(Object value)
This method is used to convert the value when the getValue method is called. The getValue method will obtain the actual field value from given 'parent' object. This convert method is then invoked with the field's value. The value returned from this method will be the actual value returned by getValue method.

Parameters: value the object value to convert after performing a get operation

Returns: the converted value.

convertUponSet

public abstract Object convertUponSet(Object value)
This method is used to convert the value when the setValue method is called. The setValue method will call this method to obtain the converted value. The converted value will then be used as the value to set for the field.

Parameters: value the object value to convert before performing a set operation

Returns: the converted value.

getFieldType

public abstract Class getFieldType()
Returns the class type for the field that this GeneralizedFieldHandler converts to and from. This should be the type that is used in the object model.

Returns: the class type of of the field

getValue

public final Object getValue(Object object)
Returns the value of the field from the object.

Parameters: object The object

Returns: The value of the field

Throws: IllegalStateException The Java object has changed and is no longer supported by this handler, or the handler is not compatiable with the Java object

newInstance

public Object newInstance(Object parent)
Creates a new instance of the object described by this field.

Parameters: parent The object for which the field is created

Returns: A new instance of the field's value

Throws: IllegalStateException This field is a simple type and cannot be instantiated

newInstance

public Object newInstance(Object parent, Object[] args)
Creates a new instance of the object described by this field.

Parameters: parent The object for which the field is created args the set of constructor arguments

Returns: A new instance of the field's value

Throws: IllegalStateException This field is a simple type and cannot be instantiated

resetValue

public final void resetValue(Object object)
Sets the value of the field to a default value.

Reference fields are set to null, primitive fields are set to their default value, collection fields are emptied of all elements.

Parameters: object The object

Throws: IllegalStateException The Java object has changed and is no longer supported by this handler, or the handler is not compatiable with the Java object

setCollectionIteration

public void setCollectionIteration(boolean autoCollectionIteration)
Sets whether or not this GeneralizedFieldHandler should automatically iterate over the collection returned by the target object and pass only the items (one by one) to the convertUponGet method. As of Castor 0.9.6 this is true by default.

Parameters: autoCollectionIteration a boolean that when true indicates that this GeneralizedFieldHandler should automatically iterate over a collection and pass only collection items to the convertUponGet method.

setFieldHandler

public final void setFieldHandler(FieldHandler handler)
Sets the FieldHandler that this FieldHander delegates to. A call to this method must be made with a non-null FieldHandler before this GeneralizedFieldHandler can be used.

Parameters: handler the FieldHandler to delegate to

setValue

public final void setValue(Object object, Object value)
Sets the value of the field on the object.

Parameters: object The object. value The new value.

Throws: IllegalStateException The Java object has changed and is no longer supported by this handler, or the handler is not compatiable with the Java object. IllegalArgumentException The value passed is not of a supported type.

Intalio Inc. (C) 1999-2006. All rights reserved http://www.intalio.com