org.exolab.castor.mapping.loader

Class FieldHandlerImpl

Implemented Interfaces:
FieldHandler

public final class FieldHandlerImpl
extends AbstractFieldHandler

A field handler that knows how to get/set the values of a field directly or through the get/set methods. Uses reflection.

Note: the field Java type is obtained from TypeInfo.getFieldType(), but if the field is a collection, the actual field/accessor type is obtained from TypeInfo.getCollectionHandler() and the object to create (with newInstance) is the former field type.

Version:
$Revision: 1.2 $ $Date: 2003/04/16 07:15:35 $
Author:
Assaf Arkin

Constructor Summary

FieldHandlerImpl(Field field, TypeInfo typeInfo)
Construct a new field handler for the specified field.
FieldHandlerImpl(String fieldName, Method[] getSequence, Method[] setSequence, Method getMethod, Method setMethod, TypeInfo typeInfo)
Construct a new field handler for the specified field that is accessed through the accessor methods (get/set).
FieldHandlerImpl(FieldHandler handler, TypeInfo typeInfo)
Construct a new field handler for the specified field.

Method Summary

TypeConvertor
getConvertFrom()
String
getConvertParam()
TypeConvertor
getConvertTo()
Object
getValue(Object object)
Returns the value of the field from the object.
boolean
isCollection()
Return true if the field is a collection.
Object
newInstance(Object parent)
Creates a new instance of the object described by this field.
Object
newInstance(Object parent, Object[] args)
Creates a new instance of the object described by this field.
void
resetValue(Object object)
Sets the value of the field to a default value.
void
setAddMethod(Method method)
Mutator method used by Introspector.
void
setConvertFrom(TypeConvertor convertor)
Sets the TypeConvertor used during calls to getValue
void
setConvertTo(TypeConvertor convertor)
Sets the TypeConvertor used during calls to setValue
void
setCreateMethod(Method method)
Mutator method used by MappingLoader and Introspector.
void
setHasDeleteMethod(Method hasMethod, Method deleteMethod)
Mutator method used by MappingLoader and Introspector.
void
setReadMethod(Method method)
Mutator method used by Introspector.
(package private) void
setRequired(boolean required)
Mutator method used by MappingLoader.
void
setValue(Object object, Object value)
Sets the value of the field on the object.
void
setWriteMethod(Method method)
Mutator method used by Introspector.
String
toString()

Methods inherited from class org.exolab.castor.mapping.AbstractFieldHandler

getFieldDescriptor, getValue, newInstance, newInstance, resetValue, setFieldDescriptor, setValue

Methods inherited from class org.exolab.castor.mapping.ExtendedFieldHandler

checkValidity, getFieldDescriptor, getValue, newInstance, newInstance, resetValue, setFieldDescriptor, setValue

Methods inherited from class org.exolab.castor.mapping.loader.FieldHandlerFriend

checkValidity, getFieldDescriptor, getValue, newInstance, resetValue, setFieldDescriptor, setValue

Constructor Details

FieldHandlerImpl

public FieldHandlerImpl(Field field,
                        TypeInfo typeInfo)
            throws MappingException
Construct a new field handler for the specified field. The field must be public, and may not be static or transient. The field name is determined from the Java field, the type from the type information.
Parameters:
field - The field being described
typeInfo - Type information
Throws:
MappingException - If the field is not public, is static or transient

FieldHandlerImpl

public FieldHandlerImpl(String fieldName,
                        Method[] getSequence,
                        Method[] setSequence,
                        Method getMethod,
                        Method setMethod,
                        TypeInfo typeInfo)
            throws MappingException
Construct a new field handler for the specified field that is accessed through the accessor methods (get/set). The accessor methods must be public and not static. The field name is required for descriptive purposes. The field type must match the return value of the get method and the single parameter of the set method. Either get or set methods are optional.
Parameters:
fieldName - The field being described
getMethod - The method used to retrieve the field value, must accept no parameters and have a return type castable to the field type
setMethod - The method used to set the field value, must accept a single paramater that is castable to the field type
typeInfo - Type information
Throws:
MappingException - If the get or set method are not public, are static, or do not specify the proper types

FieldHandlerImpl

public FieldHandlerImpl(FieldHandler handler,
                        TypeInfo typeInfo)
            throws MappingException
Construct a new field handler for the specified field. The field must be public, and may not be static or transient. The field name is determined from the Java field, the type from the type information.
Parameters:
typeInfo - Type information
Throws:
MappingException - If the field is not public, is static or transient

Method Details

getConvertFrom

public TypeConvertor getConvertFrom()

getConvertParam

public String getConvertParam()

getConvertTo

public TypeConvertor getConvertTo()

getValue

public Object getValue(Object object)
Returns the value of the field from the object.
Specified by:
getValue in interface FieldHandler
Overrides:
getValue in interface AbstractFieldHandler
Parameters:
object - The object
Returns:
The value of the field

isCollection

public boolean isCollection()
Return true if the field is a collection.

newInstance

public Object newInstance(Object parent)
            throws IllegalStateException
Creates a new instance of the object described by this field.
Specified by:
newInstance in interface FieldHandler
Overrides:
newInstance in interface AbstractFieldHandler
Parameters:
parent - The object for which the field is created
Returns:
A new instance of the field's value

newInstance

public Object newInstance(Object parent,
                          Object[] args)
            throws IllegalStateException
Creates a new instance of the object described by this field.
Overrides:
newInstance in interface AbstractFieldHandler
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

resetValue

public 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.

Specified by:
resetValue in interface FieldHandler
Overrides:
resetValue in interface AbstractFieldHandler
Parameters:
object - The object

setAddMethod

public void setAddMethod(Method method)
            throws MappingException
Mutator method used by Introspector. Please understand how this method is used before you start playing with it! :-)

setConvertFrom

public void setConvertFrom(TypeConvertor convertor)
Sets the TypeConvertor used during calls to getValue
Parameters:
convertor - the TypeConvertor to use during calls to getValue

setConvertTo

public void setConvertTo(TypeConvertor convertor)
Sets the TypeConvertor used during calls to setValue
Parameters:
convertor - the TypeConvertor to use during calls to setValue

setCreateMethod

public void setCreateMethod(Method method)
            throws MappingException
Mutator method used by MappingLoader and Introspector. Please understand how this method is used before you start playing with it! :-)

setHasDeleteMethod

public void setHasDeleteMethod(Method hasMethod,
                               Method deleteMethod)
            throws MappingException
Mutator method used by MappingLoader and Introspector. Please understand how this method is used before you start playing with it! :-)

setReadMethod

public void setReadMethod(Method method)
            throws MappingException
Mutator method used by Introspector. Please understand how this method is used before you start playing with it! :-)

setRequired

(package private)  void setRequired(boolean required)

setValue

public void setValue(Object object,
                     Object value)
Sets the value of the field on the object.
Specified by:
setValue in interface FieldHandler
Overrides:
setValue in interface AbstractFieldHandler
Parameters:
object - The object
value - The new value

setWriteMethod

public void setWriteMethod(Method method)
            throws MappingException
Mutator method used by Introspector. Please understand how this method is used before you start playing with it! :-)

toString

public String toString()

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