public class GenericConversionService extends Object implements ConfigurableConversionService
ConversionService
implementation suitable for use in most environments.
Indirectly implements ConverterRegistry
as registration API through the
ConfigurableConversionService
interface.Constructor and Description |
---|
GenericConversionService() |
Modifier and Type | Method and Description |
---|---|
void |
addConverter(Class<?> sourceType,
Class<?> targetType,
Converter<?,?> converter)
Add a plain converter to this registry.
|
void |
addConverter(Converter<?,?> converter)
Add a plain converter to this registry.
|
void |
addConverter(GenericConverter converter)
Add a generic converter to this registry.
|
void |
addConverterFactory(ConverterFactory<?,?> converterFactory)
Add a ranged converter factory to this registry.
|
boolean |
canBypassConvert(TypeDescriptor sourceType,
TypeDescriptor targetType)
Returns true if conversion between the sourceType and targetType can be bypassed.
|
boolean |
canConvert(Class<?> sourceType,
Class<?> targetType)
Returns true if objects of sourceType can be converted to targetType.
|
boolean |
canConvert(TypeDescriptor sourceType,
TypeDescriptor targetType)
Returns true if objects of sourceType can be converted to the targetType.
|
<T> T |
convert(Object source,
Class<T> targetType)
Convert the source to targetType.
|
Object |
convert(Object source,
TypeDescriptor targetType)
Convenience operation for converting a source object to the specified targetType,
where the targetType is a descriptor that provides additional conversion context.
|
Object |
convert(Object source,
TypeDescriptor sourceType,
TypeDescriptor targetType)
Convert the source to targetType.
|
protected Object |
convertNullSource(TypeDescriptor sourceType,
TypeDescriptor targetType)
Template method to convert a null source.
|
protected GenericConverter |
getConverter(TypeDescriptor sourceType,
TypeDescriptor targetType)
Hook method to lookup the converter for a given sourceType/targetType pair.
|
protected GenericConverter |
getDefaultConverter(TypeDescriptor sourceType,
TypeDescriptor targetType)
Return the default converter if no converter is found for the given sourceType/targetType pair.
|
void |
removeConvertible(Class<?> sourceType,
Class<?> targetType)
Remove any converters from sourceType to targetType.
|
String |
toString() |
public void addConverter(Converter<?,?> converter)
ConverterRegistry
addConverter
in interface ConverterRegistry
public void addConverter(Class<?> sourceType, Class<?> targetType, Converter<?,?> converter)
ConverterRegistry
addConverter
in interface ConverterRegistry
public void addConverter(GenericConverter converter)
ConverterRegistry
addConverter
in interface ConverterRegistry
public void addConverterFactory(ConverterFactory<?,?> converterFactory)
ConverterRegistry
addConverterFactory
in interface ConverterRegistry
public void removeConvertible(Class<?> sourceType, Class<?> targetType)
ConverterRegistry
removeConvertible
in interface ConverterRegistry
sourceType
- the source typetargetType
- the target typepublic boolean canConvert(Class<?> sourceType, Class<?> targetType)
ConversionService
ConversionService.convert(Object, Class)
is capable of converting an instance of sourceType to targetType.
Special note on collections, arrays, and maps types:
For conversion between collection, array, and map types, this method will return 'true'
even though a convert invocation may still generate a ConversionException
if the underlying elements are not convertible.
Callers are expected to handle this exceptional case when working with collections and maps.canConvert
in interface ConversionService
sourceType
- the source type to convert from (may be null if source is null)targetType
- the target type to convert to (required)public boolean canConvert(TypeDescriptor sourceType, TypeDescriptor targetType)
ConversionService
ConversionService.convert(Object, TypeDescriptor, TypeDescriptor)
is capable of converting an instance of sourceType to targetType.
Special note on collections, arrays, and maps types:
For conversion between collection, array, and map types, this method will return 'true'
even though a convert invocation may still generate a ConversionException
if the underlying elements are not convertible.
Callers are expected to handle this exceptional case when working with collections and maps.canConvert
in interface ConversionService
sourceType
- context about the source type to convert from (may be null if source is null)targetType
- context about the target type to convert to (required)public boolean canBypassConvert(TypeDescriptor sourceType, TypeDescriptor targetType)
sourceType
- context about the source type to convert from (may be null if source is null)targetType
- context about the target type to convert to (required)IllegalArgumentException
- if targetType is nullpublic <T> T convert(Object source, Class<T> targetType)
ConversionService
convert
in interface ConversionService
source
- the source object to convert (may be null)targetType
- the target type to convert to (required)public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType)
ConversionService
convert
in interface ConversionService
source
- the source object to convert (may be null)sourceType
- context about the source type converting from (may be null if source is null)targetType
- context about the target type to convert to (required)targetType
public Object convert(Object source, TypeDescriptor targetType)
convert(Object, TypeDescriptor, TypeDescriptor)
and
encapsulates the construction of the sourceType descriptor using
TypeDescriptor.forObject(Object)
.source
- the source objecttargetType
- the target typeConversionException
- if a conversion exception occurredIllegalArgumentException
- if targetType is null,
or sourceType is null but source is not nullprotected Object convertNullSource(TypeDescriptor sourceType, TypeDescriptor targetType)
Default implementation returns null
.
Subclasses may override to return custom null objects for specific target types.
sourceType
- the sourceType to convert fromtargetType
- the targetType to convert toprotected GenericConverter getConverter(TypeDescriptor sourceType, TypeDescriptor targetType)
sourceType
- the source type to convert fromtargetType
- the target type to convert tonull
if
no suitable converter was foundgetDefaultConverter(TypeDescriptor, TypeDescriptor)
protected GenericConverter getDefaultConverter(TypeDescriptor sourceType, TypeDescriptor targetType)
null
otherwise, indicating no suitable converter could be found.
Subclasses may override.sourceType
- the source type to convert fromtargetType
- the target type to convert to