public abstract class AbstractConverter extends java.lang.Object implements Converter
Converter
implementation that provides the structure
for handling conversion to and from a specified type.
This implementation provides the basic structure for
converting to/from a specified type optionally using a default
value or throwing a ConversionException
if a
conversion error occurs.
Implementations should provide conversion to the specified
type and from the specified type to a String
value
by implementing the following methods:
convertToString(value)
- convert to a String
(default implementation uses the objects toString()
method).convertToType(Class, value)
- convert
to the specified type
The default value has to be compliant to the default type of this
converter - which is enforced by the generic type parameter. If a
conversion is not possible and a default value is set, the converter
tries to transform the default value to the requested target type.
If this fails, a ConversionException
if thrown.
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
DEFAULT_CONFIG_MSG
Debug logging message to indicate default value configuration
|
private java.lang.Object |
defaultValue
The default value specified to our Constructor, if any.
|
private org.apache.commons.logging.Log |
log
Logging for this instance.
|
private static java.lang.String |
PACKAGE
Current package name
|
private boolean |
useDefault
Should we return the default value on conversion errors?
|
Constructor and Description |
---|
AbstractConverter()
Construct a Converter that throws a
ConversionException if an error occurs. |
AbstractConverter(java.lang.Object defaultValue)
Construct a Converter that returns a default
value if an error occurs.
|
Modifier and Type | Method and Description |
---|---|
protected ConversionException |
conversionException(java.lang.Class<?> type,
java.lang.Object value)
Generates a standard conversion exception with a message indicating that
the passed in value cannot be converted to the desired target type.
|
<T> T |
convert(java.lang.Class<T> type,
java.lang.Object value)
Convert the input object into an output object of the
specified type.
|
protected java.lang.Object |
convertArray(java.lang.Object value)
Return the first element from an Array (or Collection)
or the value unchanged if not an Array (or Collection).
|
private <T> T |
convertToDefaultType(java.lang.Class<T> targetClass,
java.lang.Object value)
Performs a conversion to the default type.
|
protected java.lang.String |
convertToString(java.lang.Object value)
Convert the input object into a String.
|
protected abstract <T> T |
convertToType(java.lang.Class<T> type,
java.lang.Object value)
Convert the input object into an output object of the
specified type.
|
protected java.lang.Object |
getDefault(java.lang.Class<?> type)
Return the default value for conversions to the specified
type.
|
protected abstract java.lang.Class<?> |
getDefaultType()
Return the default type this
Converter handles. |
protected <T> T |
handleError(java.lang.Class<T> type,
java.lang.Object value,
java.lang.Throwable cause)
Handle Conversion Errors.
|
protected <T> T |
handleMissing(java.lang.Class<T> type)
Handle missing values.
|
boolean |
isUseDefault()
Indicates whether a default value will be returned or exception
thrown in the event of a conversion error.
|
(package private) org.apache.commons.logging.Log |
log()
Accessor method for Log instance.
|
protected void |
setDefaultValue(java.lang.Object defaultValue)
Set the default value, converting as required.
|
java.lang.String |
toString()
Provide a String representation of this converter.
|
(package private) java.lang.String |
toString(java.lang.Class<?> type)
Provide a String representation of a
java.lang.Class . |
private static final java.lang.String DEFAULT_CONFIG_MSG
private static final java.lang.String PACKAGE
private transient org.apache.commons.logging.Log log
private boolean useDefault
private java.lang.Object defaultValue
public AbstractConverter()
ConversionException
if an error occurs.public AbstractConverter(java.lang.Object defaultValue)
defaultValue
- The default value to be returned
if the value to be converted is missing or an error
occurs converting the value.protected ConversionException conversionException(java.lang.Class<?> type, java.lang.Object value)
type
- the target typevalue
- the value to be convertedConversionException
with a standard messagepublic <T> T convert(java.lang.Class<T> type, java.lang.Object value)
convert
in interface Converter
T
- the target type of the conversiontype
- Data type to which this value should be convertedvalue
- The input value to be convertedConversionException
- if conversion cannot be performed
successfully and no default is specified.protected java.lang.Object convertArray(java.lang.Object value)
value
- The value to convertprivate <T> T convertToDefaultType(java.lang.Class<T> targetClass, java.lang.Object value)
T
- the type of the result objecttargetClass
- the target class of the conversionvalue
- the value to be convertedprotected java.lang.String convertToString(java.lang.Object value) throws java.lang.Throwable
N.B.This implementation simply uses the value's
toString()
method and should be overriden if a
more sophisticated mechanism for conversion to a String
is required.
value
- The input value to be converted.java.lang.Throwable
- if an error occurs converting to a Stringprotected abstract <T> T convertToType(java.lang.Class<T> type, java.lang.Object value) throws java.lang.Throwable
Typical implementations will provide a minimum of
String to type
conversion.
T
- Target type of the conversion.type
- Data type to which this value should be converted.value
- The input value to be converted.java.lang.Throwable
- if an error occurs converting to the specified typeprotected java.lang.Object getDefault(java.lang.Class<?> type)
type
- Data type to which this value should be converted.protected abstract java.lang.Class<?> getDefaultType()
Converter
handles.Converter
handles.protected <T> T handleError(java.lang.Class<T> type, java.lang.Object value, java.lang.Throwable cause)
If a default value has been specified then it is returned otherwise a ConversionException is thrown.
T
- Target type of the conversion.type
- Data type to which this value should be converted.value
- The input value to be convertedcause
- The exception thrown by the convert
methodConversionException
- if no default value has been
specified for this Converter
.protected <T> T handleMissing(java.lang.Class<T> type)
If a default value has been specified, then it is returned (after a cast to the desired target class); otherwise a ConversionException is thrown.
T
- the desired target typetype
- Data type to which this value should be converted.ConversionException
- if no default value has been
specified for this Converter
.public boolean isUseDefault()
true
if a default value will be returned for
conversion errors or false
if a ConversionException
will be thrown.org.apache.commons.logging.Log log()
The Log instance variable is transient and accessing it through this method ensures it is re-initialized when this instance is de-serialized.
protected void setDefaultValue(java.lang.Object defaultValue)
If the default value is different from the type the
Converter
handles, it will be converted
to the handled type.
defaultValue
- The default value to be returned
if the value to be converted is missing or an error
occurs converting the value.ConversionException
- if an error occurs converting
the default valuepublic java.lang.String toString()
toString
in class java.lang.Object
java.lang.String toString(java.lang.Class<?> type)
java.lang.Class
.type
- The java.lang.Class
.Copyright (c) 2000-2008 - Apache Software Foundation