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.public boolean isUseDefault()
true
if a default value will be returned for
conversion errors or false
if a ConversionException
will be thrown.public <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.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 --> 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 convertArray(java.lang.Object value)
value
- The value to convertprotected <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
.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 valueprotected abstract java.lang.Class<?> getDefaultType()
Converter
handles.Converter
handles.protected java.lang.Object getDefault(java.lang.Class<?> type)
type
- Data type to which this value should be converted.public java.lang.String toString()
toString
in class java.lang.Object
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.
java.lang.String toString(java.lang.Class<?> type)
java.lang.Class
.type
- The java.lang.Class
.private <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 ConversionException conversionException(java.lang.Class<?> type, java.lang.Object value)
type
- the target typevalue
- the value to be convertedConversionException
with a standard messageCopyright (c) 2000-2008 - Apache Software Foundation