org.springframework.core.convert.support
Class ObjectToObjectConverter

java.lang.Object
  extended by org.springframework.core.convert.support.ObjectToObjectConverter
All Implemented Interfaces:
ConditionalGenericConverter, GenericConverter

final class ObjectToObjectConverter
extends java.lang.Object
implements ConditionalGenericConverter

Generic Converter that attempts to convert a source Object to a target type by delegating to methods on the target type.

Calls the static valueOf(sourceType) method on the target type to perform the conversion, if such a method exists. Else calls the target type's Constructor that accepts a single sourceType argument, if such a Constructor exists. Else throws a ConversionFailedException.

Since:
3.0
Author:
Keith Donald, Juergen Hoeller

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.springframework.core.convert.converter.GenericConverter
GenericConverter.ConvertiblePair
 
Constructor Summary
ObjectToObjectConverter()
           
 
Method Summary
 java.lang.Object convert(java.lang.Object source, TypeDescriptor sourceType, TypeDescriptor targetType)
          Convert the source to the targetType described by the TypeDescriptor.
private static java.lang.reflect.Constructor<?> getConstructor(java.lang.Class<?> clazz, java.lang.Class<?> sourceParameterType)
           
 java.util.Set<GenericConverter.ConvertiblePair> getConvertibleTypes()
          Return the source and target types which this converter can convert between.
private static java.lang.reflect.Method getValueOfMethodOn(java.lang.Class<?> clazz, java.lang.Class<?> sourceParameterType)
           
(package private) static boolean hasValueOfMethodOrConstructor(java.lang.Class<?> clazz, java.lang.Class<?> sourceParameterType)
           
 boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType)
          Should the converter from sourceType to targetType currently under consideration be selected?
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ObjectToObjectConverter

ObjectToObjectConverter()
Method Detail

getConvertibleTypes

public java.util.Set<GenericConverter.ConvertiblePair> getConvertibleTypes()
Description copied from interface: GenericConverter
Return the source and target types which this converter can convert between.

Each entry is a convertible source-to-target type pair.

Specified by:
getConvertibleTypes in interface GenericConverter

matches

public boolean matches(TypeDescriptor sourceType,
                       TypeDescriptor targetType)
Description copied from interface: ConditionalGenericConverter
Should the converter from sourceType to targetType currently under consideration be selected?

Specified by:
matches in interface ConditionalGenericConverter
Parameters:
sourceType - the type descriptor of the field we are converting from
targetType - the type descriptor of the field we are converting to
Returns:
true if conversion should be performed, false otherwise

convert

public java.lang.Object convert(java.lang.Object source,
                                TypeDescriptor sourceType,
                                TypeDescriptor targetType)
Description copied from interface: GenericConverter
Convert the source to the targetType described by the TypeDescriptor.

Specified by:
convert in interface GenericConverter
Parameters:
source - the source object to convert (may be null)
sourceType - the type descriptor of the field we are converting from
targetType - the type descriptor of the field we are converting to
Returns:
the converted object

hasValueOfMethodOrConstructor

static boolean hasValueOfMethodOrConstructor(java.lang.Class<?> clazz,
                                             java.lang.Class<?> sourceParameterType)

getValueOfMethodOn

private static java.lang.reflect.Method getValueOfMethodOn(java.lang.Class<?> clazz,
                                                           java.lang.Class<?> sourceParameterType)

getConstructor

private static java.lang.reflect.Constructor<?> getConstructor(java.lang.Class<?> clazz,
                                                               java.lang.Class<?> sourceParameterType)