quick attempt to fix core.convert breakage
This commit is contained in:
parent
eb3ece4208
commit
dffec3cdcd
|
|
@ -18,9 +18,8 @@ package org.springframework.expression.spel.support;
|
||||||
|
|
||||||
import org.springframework.core.convert.ConvertException;
|
import org.springframework.core.convert.ConvertException;
|
||||||
import org.springframework.core.convert.ConverterNotFoundException;
|
import org.springframework.core.convert.ConverterNotFoundException;
|
||||||
import org.springframework.core.convert.ConversionService;
|
|
||||||
import org.springframework.core.convert.TypeDescriptor;
|
import org.springframework.core.convert.TypeDescriptor;
|
||||||
import org.springframework.core.convert.service.DefaultConversionService;
|
import org.springframework.core.convert.support.DefaultConversionService;
|
||||||
import org.springframework.expression.EvaluationException;
|
import org.springframework.expression.EvaluationException;
|
||||||
import org.springframework.expression.TypeConverter;
|
import org.springframework.expression.TypeConverter;
|
||||||
import org.springframework.expression.spel.SpelException;
|
import org.springframework.expression.spel.SpelException;
|
||||||
|
|
@ -34,28 +33,31 @@ import org.springframework.util.Assert;
|
||||||
*/
|
*/
|
||||||
public class StandardTypeConverter implements TypeConverter {
|
public class StandardTypeConverter implements TypeConverter {
|
||||||
|
|
||||||
private ConversionService conversionService;
|
private org.springframework.core.convert.TypeConverter typeConverter;
|
||||||
|
|
||||||
public StandardTypeConverter() {
|
public StandardTypeConverter() {
|
||||||
conversionService = new DefaultConversionService();
|
this.typeConverter = new DefaultConversionService();
|
||||||
}
|
}
|
||||||
|
|
||||||
public StandardTypeConverter(ConversionService conversionService) {
|
public StandardTypeConverter(org.springframework.core.convert.TypeConverter typeConverter) {
|
||||||
Assert.notNull(conversionService, "The conversionService must not be null");
|
Assert.notNull(typeConverter, "TypeConverter must not be null");
|
||||||
this.conversionService = conversionService;
|
this.typeConverter = typeConverter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <T> T convertValue(Object value, Class<T> targetType) throws EvaluationException {
|
public <T> T convertValue(Object value, Class<T> targetType) throws EvaluationException {
|
||||||
return (T) convertValue(value,TypeDescriptor.valueOf(targetType));
|
return (T) convertValue(value, TypeDescriptor.valueOf(targetType));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public Object convertValue(Object value, TypeDescriptor typeDescriptor) throws EvaluationException {
|
public Object convertValue(Object value, TypeDescriptor typeDescriptor) throws EvaluationException {
|
||||||
try {
|
try {
|
||||||
return conversionService.convert(value, typeDescriptor);
|
return this.typeConverter.convert(value, typeDescriptor);
|
||||||
} catch (ConverterNotFoundException cenfe) {
|
}
|
||||||
|
catch (ConverterNotFoundException cenfe) {
|
||||||
throw new SpelException(cenfe, SpelMessages.TYPE_CONVERSION_ERROR, value.getClass(), typeDescriptor.asString());
|
throw new SpelException(cenfe, SpelMessages.TYPE_CONVERSION_ERROR, value.getClass(), typeDescriptor.asString());
|
||||||
} catch (ConvertException ce) {
|
}
|
||||||
|
catch (ConvertException ce) {
|
||||||
throw new SpelException(ce, SpelMessages.TYPE_CONVERSION_ERROR, value.getClass(), typeDescriptor.asString());
|
throw new SpelException(ce, SpelMessages.TYPE_CONVERSION_ERROR, value.getClass(), typeDescriptor.asString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -65,7 +67,7 @@ public class StandardTypeConverter implements TypeConverter {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canConvert(Class<?> sourceType, TypeDescriptor targetType) {
|
public boolean canConvert(Class<?> sourceType, TypeDescriptor targetType) {
|
||||||
return conversionService.canConvert(sourceType, targetType);
|
return this.typeConverter.canConvert(sourceType, targetType);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.core.convert.TypeDescriptor;
|
import org.springframework.core.convert.TypeDescriptor;
|
||||||
import org.springframework.core.convert.service.DefaultConversionService;
|
import org.springframework.core.convert.support.DefaultConversionService;
|
||||||
import org.springframework.core.convert.service.GenericConversionService;
|
import org.springframework.core.convert.support.GenericConversionService;
|
||||||
import org.springframework.expression.EvaluationException;
|
import org.springframework.expression.EvaluationException;
|
||||||
import org.springframework.expression.Expression;
|
import org.springframework.expression.Expression;
|
||||||
import org.springframework.expression.TypeConverter;
|
import org.springframework.expression.TypeConverter;
|
||||||
|
|
@ -64,14 +64,14 @@ public class ExpressionTestsUsingCoreConversionService extends ExpressionTestCas
|
||||||
// ArrayList containing List<Integer> to List<String>
|
// ArrayList containing List<Integer> to List<String>
|
||||||
Class<?> clazz = typeDescriptorForListOfString.getElementType();
|
Class<?> clazz = typeDescriptorForListOfString.getElementType();
|
||||||
assertEquals(String.class,clazz);
|
assertEquals(String.class,clazz);
|
||||||
List l = (List) tcs.convert(listOfInteger, typeDescriptorForListOfString);
|
List l = (List) tcs.convertValue(listOfInteger, typeDescriptorForListOfString);
|
||||||
assertNotNull(l);
|
assertNotNull(l);
|
||||||
|
|
||||||
// ArrayList containing List<String> to List<Integer>
|
// ArrayList containing List<String> to List<Integer>
|
||||||
clazz = typeDescriptorForListOfInteger.getElementType();
|
clazz = typeDescriptorForListOfInteger.getElementType();
|
||||||
assertEquals(Integer.class,clazz);
|
assertEquals(Integer.class,clazz);
|
||||||
|
|
||||||
l = (List) tcs.convert(listOfString, typeDescriptorForListOfString);
|
l = (List) tcs.convertValue(listOfString, typeDescriptorForListOfString);
|
||||||
assertNotNull(l);
|
assertNotNull(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,29 +89,29 @@ public class ExpressionTestsUsingCoreConversionService extends ExpressionTestCas
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Type convertor that uses the core conversion service.
|
* Type converter that uses the core conversion service.
|
||||||
*/
|
*/
|
||||||
private static class TypeConvertorUsingConversionService extends DefaultConversionService implements TypeConverter {
|
private static class TypeConvertorUsingConversionService implements TypeConverter {
|
||||||
|
|
||||||
|
private final DefaultConversionService service = new DefaultConversionService();
|
||||||
|
|
||||||
public boolean canConvert(Class<?> sourceType, Class<?> targetType) {
|
public boolean canConvert(Class<?> sourceType, Class<?> targetType) {
|
||||||
return super.canConvert(sourceType, TypeDescriptor.valueOf(targetType));
|
return this.service.canConvert(sourceType, TypeDescriptor.valueOf(targetType));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canConvert(Class<?> sourceType, TypeDescriptor typeDescriptor) {
|
public boolean canConvert(Class<?> sourceType, TypeDescriptor typeDescriptor) {
|
||||||
return super.canConvert(sourceType, typeDescriptor);
|
return this.service.canConvert(sourceType, typeDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <T> T convertValue(Object value, Class<T> targetType) throws EvaluationException {
|
public <T> T convertValue(Object value, Class<T> targetType) throws EvaluationException {
|
||||||
return (T)super.convert(value,TypeDescriptor.valueOf(targetType));
|
return (T) this.service.convert(value,TypeDescriptor.valueOf(targetType));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public Object convertValue(Object value, TypeDescriptor typeDescriptor)
|
public Object convertValue(Object value, TypeDescriptor typeDescriptor) throws EvaluationException {
|
||||||
throws EvaluationException {
|
return this.service.convert(value, typeDescriptor);
|
||||||
return super.convert(value, typeDescriptor);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue