Class GenericConversionService
- All Implemented Interfaces:
ConversionService
,ConverterRegistry
,ConfigurableConversionService
- Direct Known Subclasses:
DefaultConversionService
,FormattingConversionService
ConversionService
implementation suitable for use in most environments.
Indirectly implements ConverterRegistry
as registration API through the
ConfigurableConversionService
interface.- Since:
- 3.0
- Author:
- Keith Donald, Juergen Hoeller, Chris Beams, Phillip Webb, David Haraburda
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription<S,
T> void addConverter
(Class<S> sourceType, Class<T> targetType, Converter<? super S, ? extends T> 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<?, ?> factory) Add a ranged converter factory to this registry.boolean
canBypassConvert
(TypeDescriptor sourceType, TypeDescriptor targetType) Return whether conversion between the source type and the target type can be bypassed.boolean
canConvert
(Class<?> sourceType, Class<?> targetType) Returntrue
if objects ofsourceType
can be converted to thetargetType
.boolean
canConvert
(TypeDescriptor sourceType, TypeDescriptor targetType) Returntrue
if objects ofsourceType
can be converted to thetargetType
.<T> T
Convert the givensource
to the specifiedtargetType
.convert
(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) Convert the givensource
to the specifiedtargetType
.protected Object
convertNullSource
(TypeDescriptor sourceType, TypeDescriptor targetType) Template method to convert anull
source.protected GenericConverter
getConverter
(TypeDescriptor sourceType, TypeDescriptor targetType) Hook method to look up 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 fromsourceType
totargetType
.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.core.convert.ConversionService
convert
-
Constructor Details
-
GenericConversionService
public GenericConversionService()
-
-
Method Details
-
addConverter
Description copied from interface:ConverterRegistry
Add a plain converter to this registry. The convertible source/target type pair is derived from the Converter's parameterized types.- Specified by:
addConverter
in interfaceConverterRegistry
-
addConverter
public <S,T> void addConverter(Class<S> sourceType, Class<T> targetType, Converter<? super S, ? extends T> converter) Description copied from interface:ConverterRegistry
Add a plain converter to this registry. The convertible source/target type pair is specified explicitly.Allows for a Converter to be reused for multiple distinct pairs without having to create a Converter class for each pair.
- Specified by:
addConverter
in interfaceConverterRegistry
-
addConverter
Description copied from interface:ConverterRegistry
Add a generic converter to this registry.- Specified by:
addConverter
in interfaceConverterRegistry
-
addConverterFactory
Description copied from interface:ConverterRegistry
Add a ranged converter factory to this registry. The convertible source/target type pair is derived from the ConverterFactory's parameterized types.- Specified by:
addConverterFactory
in interfaceConverterRegistry
-
removeConvertible
Description copied from interface:ConverterRegistry
Remove any converters fromsourceType
totargetType
.- Specified by:
removeConvertible
in interfaceConverterRegistry
- Parameters:
sourceType
- the source typetargetType
- the target type
-
canConvert
Description copied from interface:ConversionService
Returntrue
if objects ofsourceType
can be converted to thetargetType
.If this method returns
true
, it meansConversionService.convert(Object, Class)
is capable of converting an instance ofsourceType
totargetType
.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 aConversionException
if the underlying elements are not convertible. Callers are expected to handle this exceptional case when working with collections and maps.- Specified by:
canConvert
in interfaceConversionService
- Parameters:
sourceType
- the source type to convert from (may benull
if source isnull
)targetType
- the target type to convert to (required)- Returns:
true
if a conversion can be performed,false
if not
-
canConvert
Description copied from interface:ConversionService
Returntrue
if objects ofsourceType
can be converted to thetargetType
. The TypeDescriptors provide additional context about the source and target locations where conversion would occur, often object fields or property locations.If this method returns
true
, it meansConversionService.convert(Object, TypeDescriptor, TypeDescriptor)
is capable of converting an instance ofsourceType
totargetType
.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 aConversionException
if the underlying elements are not convertible. Callers are expected to handle this exceptional case when working with collections and maps.- Specified by:
canConvert
in interfaceConversionService
- Parameters:
sourceType
- context about the source type to convert from (may benull
if source isnull
)targetType
- context about the target type to convert to (required)- Returns:
true
if a conversion can be performed between the source and target types,false
if not
-
canBypassConvert
Return whether conversion between the source type and the target type can be bypassed.More precisely, this method will return true if objects of sourceType can be converted to the target type by returning the source object unchanged.
- Parameters:
sourceType
- context about the source type to convert from (may benull
if source isnull
)targetType
- context about the target type to convert to (required)- Returns:
true
if conversion can be bypassed;false
otherwise- Throws:
IllegalArgumentException
- if targetType isnull
- Since:
- 3.2
-
convert
Description copied from interface:ConversionService
Convert the givensource
to the specifiedtargetType
.- Specified by:
convert
in interfaceConversionService
- Parameters:
source
- the source object to convert (may benull
)targetType
- the target type to convert to (required)- Returns:
- the converted object, an instance of targetType
-
convert
@Nullable public Object convert(@Nullable Object source, @Nullable TypeDescriptor sourceType, TypeDescriptor targetType) Description copied from interface:ConversionService
Convert the givensource
to the specifiedtargetType
. The TypeDescriptors provide additional context about the source and target locations where conversion will occur, often object fields or property locations.- Specified by:
convert
in interfaceConversionService
- Parameters:
source
- the source object to convert (may benull
)sourceType
- context about the source type to convert from (may benull
if source isnull
)targetType
- context about the target type to convert to (required)- Returns:
- the converted object, an instance of
targetType
-
toString
-
convertNullSource
@Nullable protected Object convertNullSource(@Nullable TypeDescriptor sourceType, TypeDescriptor targetType) Template method to convert anull
source.The default implementation returns
null
or the Java 8Optional.empty()
instance if the target type isjava.util.Optional
. Subclasses may override this to return customnull
objects for specific target types.- Parameters:
sourceType
- the source type to convert fromtargetType
- the target type to convert to- Returns:
- the converted null object
-
getConverter
@Nullable protected GenericConverter getConverter(TypeDescriptor sourceType, TypeDescriptor targetType) Hook method to look up the converter for a given sourceType/targetType pair. First queries this ConversionService's converter cache. On a cache miss, then performs an exhaustive search for a matching converter. If no converter matches, returns the default converter.- Parameters:
sourceType
- the source type to convert fromtargetType
- the target type to convert to- Returns:
- the generic converter that will perform the conversion,
or
null
if no suitable converter was found - See Also:
-
getDefaultConverter
@Nullable protected GenericConverter getDefaultConverter(TypeDescriptor sourceType, TypeDescriptor targetType) Return the default converter if no converter is found for the given sourceType/targetType pair.Returns a NO_OP Converter if the source type is assignable to the target type. Returns
null
otherwise, indicating no suitable converter could be found.- Parameters:
sourceType
- the source type to convert fromtargetType
- the target type to convert to- Returns:
- the default generic converter that will perform the conversion
-