fixed autoboxing bug
This commit is contained in:
parent
c5cc75693d
commit
18be2ffadc
|
|
@ -38,9 +38,8 @@ import org.springframework.util.Assert;
|
|||
/**
|
||||
* Base implementation of a conversion service. Initially empty, e.g. no converters are registered by default.
|
||||
*
|
||||
* TODO - custom converters
|
||||
* TODO - object to collection/map converters
|
||||
* TODO - allow registration of converters to apply on presence of annotation values on setter or field e.g. String-to-@Mask String to apply a mask
|
||||
* TODO - allow registration of converters to apply on presence of annotation values on setter or field
|
||||
*
|
||||
* @author Keith Donald
|
||||
*/
|
||||
|
|
@ -141,9 +140,6 @@ public class GenericTypeConverter implements TypeConverter, ConverterRegistry {
|
|||
if (source == null) {
|
||||
return null;
|
||||
}
|
||||
if (source.getClass().isAssignableFrom(targetType.getType())) {
|
||||
return (T) source;
|
||||
}
|
||||
ConversionExecutor executor = getConversionExecutor(source.getClass(), targetType);
|
||||
if (executor != null) {
|
||||
return (T) executor.execute(source);
|
||||
|
|
@ -196,7 +192,10 @@ public class GenericTypeConverter implements TypeConverter, ConverterRegistry {
|
|||
return null;
|
||||
}
|
||||
}
|
||||
Converter converter = findRegisteredConverter(sourceClass, targetType.getType());
|
||||
if (sourceType.isAssignableTo(targetType)) {
|
||||
return NoOpConversionExecutor.INSTANCE;
|
||||
}
|
||||
Converter converter = findRegisteredConverter(sourceType.getType(), targetType.getType());
|
||||
if (converter != null) {
|
||||
return new StaticConversionExecutor(sourceType, targetType, converter);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -113,16 +113,16 @@ public class HelperTests extends ExpressionTestCase {
|
|||
StandardTypeConverter typeConverter = new StandardTypeConverter();
|
||||
|
||||
// Calling foo(String,int) with (String,Integer) requires boxing conversion of argument one
|
||||
//checkMatch(new Class[]{String.class,Integer.TYPE},new Class[]{String.class,Integer.class},typeConverter,ArgsMatchKind.REQUIRES_CONVERSION,1);
|
||||
checkMatch(new Class[]{String.class,Integer.TYPE},new Class[]{String.class,Integer.class},typeConverter,ArgsMatchKind.REQUIRES_CONVERSION,1);
|
||||
|
||||
// Passing (int,String) on call to foo(Integer,String) requires boxing conversion of argument zero
|
||||
//checkMatch(new Class[]{Integer.TYPE,String.class},new Class[]{Integer.class, String.class},typeConverter,ArgsMatchKind.REQUIRES_CONVERSION,0);
|
||||
checkMatch(new Class[]{Integer.TYPE,String.class},new Class[]{Integer.class, String.class},typeConverter,ArgsMatchKind.REQUIRES_CONVERSION,0);
|
||||
|
||||
// Passing (int,Sub) on call to foo(Integer,Super) requires boxing conversion of argument zero
|
||||
//checkMatch(new Class[]{Integer.TYPE,Sub.class},new Class[]{Integer.class, Super.class},typeConverter,ArgsMatchKind.REQUIRES_CONVERSION,0);
|
||||
checkMatch(new Class[]{Integer.TYPE,Sub.class},new Class[]{Integer.class, Super.class},typeConverter,ArgsMatchKind.REQUIRES_CONVERSION,0);
|
||||
|
||||
// Passing (int,Sub,boolean) on call to foo(Integer,Super,Boolean) requires boxing conversion of arguments zero and two
|
||||
//checkMatch(new Class[]{Integer.TYPE,Sub.class,Boolean.TYPE},new Class[]{Integer.class, Super.class,Boolean.class},typeConverter,ArgsMatchKind.REQUIRES_CONVERSION,0,2);
|
||||
checkMatch(new Class[]{Integer.TYPE,Sub.class,Boolean.TYPE},new Class[]{Integer.class, Super.class,Boolean.class},typeConverter,ArgsMatchKind.REQUIRES_CONVERSION,0,2);
|
||||
}
|
||||
|
||||
public void testReflectionHelperCompareArguments_NotAMatch() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue