diff --git a/org.springframework.context/src/main/java/org/springframework/context/expression/MapAccessor.java b/org.springframework.context/src/main/java/org/springframework/context/expression/MapAccessor.java index dd1d77079b5..9a15f6091c8 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/expression/MapAccessor.java +++ b/org.springframework.context/src/main/java/org/springframework/context/expression/MapAccessor.java @@ -18,7 +18,6 @@ package org.springframework.context.expression; import java.util.Map; -import org.springframework.core.convert.TypeDescriptor; import org.springframework.expression.AccessException; import org.springframework.expression.EvaluationContext; import org.springframework.expression.PropertyAccessor; @@ -39,7 +38,7 @@ public class MapAccessor implements PropertyAccessor { } public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException { - return new TypedValue(((Map) target).get(name), TypeDescriptor.OBJECT); + return new TypedValue(((Map) target).get(name)); } public boolean canWrite(EvaluationContext context, Object target, String name) throws AccessException { @@ -52,7 +51,7 @@ public class MapAccessor implements PropertyAccessor { } public Class[] getSpecificTargetClasses() { - return new Class[] {Map.class}; + return new Class[] { Map.class }; } } diff --git a/org.springframework.context/src/main/java/org/springframework/validation/AbstractPropertyBindingResult.java b/org.springframework.context/src/main/java/org/springframework/validation/AbstractPropertyBindingResult.java index 1b3c0e44ce8..20d0db18ef5 100644 --- a/org.springframework.context/src/main/java/org/springframework/validation/AbstractPropertyBindingResult.java +++ b/org.springframework.context/src/main/java/org/springframework/validation/AbstractPropertyBindingResult.java @@ -115,10 +115,11 @@ public abstract class AbstractPropertyBindingResult extends AbstractBindingResul } } if (this.conversionService != null) { - // Try custom formatter... + // Try custom converter... TypeDescriptor fieldDesc = getPropertyAccessor().getPropertyTypeDescriptor(fixedField); - if (fieldDesc != null && this.conversionService.canConvert(fieldDesc, TypeDescriptor.STRING)) { - return this.conversionService.convert(value, fieldDesc, TypeDescriptor.STRING); + TypeDescriptor strDesc = TypeDescriptor.valueOf(String.class); + if (fieldDesc != null && this.conversionService.canConvert(fieldDesc, strDesc)) { + return this.conversionService.convert(value, fieldDesc, strDesc); } } return value; @@ -152,7 +153,7 @@ public abstract class AbstractPropertyBindingResult extends AbstractBindingResul TypeDescriptor td = (field != null ? getPropertyAccessor().getPropertyTypeDescriptor(fixedField(field)) : TypeDescriptor.valueOf(valueType)); - if (this.conversionService.canConvert(TypeDescriptor.STRING, td)) { + if (this.conversionService.canConvert(TypeDescriptor.valueOf(String.class), td)) { editor = new ConvertingPropertyEditorAdapter(this.conversionService, td); } } diff --git a/org.springframework.context/src/test/java/org/springframework/format/support/FormattingConversionServiceTests.java b/org.springframework.context/src/test/java/org/springframework/format/support/FormattingConversionServiceTests.java index e786c422c17..a1b60f8f7a9 100644 --- a/org.springframework.context/src/test/java/org/springframework/format/support/FormattingConversionServiceTests.java +++ b/org.springframework.context/src/test/java/org/springframework/format/support/FormattingConversionServiceTests.java @@ -95,9 +95,9 @@ public class FormattingConversionServiceTests { }); formattingService.addFormatterForFieldAnnotation(new JodaDateTimeFormatAnnotationFormatterFactory()); String formatted = (String) formattingService.convert(new LocalDate(2009, 10, 31).toDateTimeAtCurrentTime() - .toDate(), new TypeDescriptor(Model.class.getField("date")), TypeDescriptor.STRING); + .toDate(), new TypeDescriptor(Model.class.getField("date")), TypeDescriptor.valueOf(String.class)); assertEquals("10/31/09", formatted); - LocalDate date = new LocalDate(formattingService.convert("10/31/09", TypeDescriptor.STRING, + LocalDate date = new LocalDate(formattingService.convert("10/31/09", TypeDescriptor.valueOf(String.class), new TypeDescriptor(Model.class.getField("date")))); assertEquals(new LocalDate(2009, 10, 31), date); } @@ -105,34 +105,34 @@ public class FormattingConversionServiceTests { @Test public void testPrintNull() throws ParseException { formattingService.addFormatterForFieldType(Number.class, new NumberFormatter()); - assertEquals("", formattingService.convert(null, TypeDescriptor.valueOf(Integer.class), TypeDescriptor.STRING)); + assertEquals("", formattingService.convert(null, TypeDescriptor.valueOf(Integer.class), TypeDescriptor.valueOf(String.class))); } @Test public void testParseNull() throws ParseException { formattingService.addFormatterForFieldType(Number.class, new NumberFormatter()); - assertNull(formattingService.convert(null, TypeDescriptor.STRING, TypeDescriptor.valueOf(Integer.class))); + assertNull(formattingService.convert(null, TypeDescriptor.valueOf(String.class), TypeDescriptor.valueOf(Integer.class))); } @Test public void testParseEmptyString() throws ParseException { formattingService.addFormatterForFieldType(Number.class, new NumberFormatter()); - assertNull(formattingService.convert("", TypeDescriptor.STRING, TypeDescriptor.valueOf(Integer.class))); + assertNull(formattingService.convert("", TypeDescriptor.valueOf(String.class), TypeDescriptor.valueOf(Integer.class))); } @Test public void testPrintNullDefault() throws ParseException { - assertEquals(null, formattingService.convert(null, TypeDescriptor.valueOf(Integer.class), TypeDescriptor.STRING)); + assertEquals(null, formattingService.convert(null, TypeDescriptor.valueOf(Integer.class), TypeDescriptor.valueOf(String.class))); } @Test public void testParseNullDefault() throws ParseException { - assertNull(formattingService.convert(null, TypeDescriptor.STRING, TypeDescriptor.valueOf(Integer.class))); + assertNull(formattingService.convert(null, TypeDescriptor.valueOf(String.class), TypeDescriptor.valueOf(Integer.class))); } @Test public void testParseEmptyStringDefault() throws ParseException { - assertNull(formattingService.convert("", TypeDescriptor.STRING, TypeDescriptor.valueOf(Integer.class))); + assertNull(formattingService.convert("", TypeDescriptor.valueOf(String.class), TypeDescriptor.valueOf(Integer.class))); } private static class Model { diff --git a/org.springframework.core/src/main/java/org/springframework/core/convert/TypeDescriptor.java b/org.springframework.core/src/main/java/org/springframework/core/convert/TypeDescriptor.java index d777c26eadb..7cffa308c38 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/convert/TypeDescriptor.java +++ b/org.springframework.core/src/main/java/org/springframework/core/convert/TypeDescriptor.java @@ -19,6 +19,7 @@ package org.springframework.core.convert; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.util.Collection; +import java.util.HashMap; import java.util.Map; import org.springframework.core.GenericCollectionTypeResolver; @@ -39,13 +40,20 @@ public class TypeDescriptor { /** Constant defining an 'unknown' TypeDescriptor */ public static final TypeDescriptor NULL = new TypeDescriptor(); - /** Constant defining a TypeDescriptor for java.lang.Object */ - public static final TypeDescriptor OBJECT = new TypeDescriptor(Object.class); - - /** Constant defining a TypeDescriptor for java.lang.String */ - public static final TypeDescriptor STRING = new TypeDescriptor(String.class); - + private static final Map, TypeDescriptor> typeDescriptorCache = new HashMap, TypeDescriptor>(); + static { + typeDescriptorCache.put(String.class, new TypeDescriptor(String.class)); + typeDescriptorCache.put(Byte.class, new TypeDescriptor(Byte.class)); + typeDescriptorCache.put(Character.class, new TypeDescriptor(Character.class)); + typeDescriptorCache.put(Boolean.class, new TypeDescriptor(Boolean.class)); + typeDescriptorCache.put(Short.class, new TypeDescriptor(Short.class)); + typeDescriptorCache.put(Integer.class, new TypeDescriptor(Integer.class)); + typeDescriptorCache.put(Long.class, new TypeDescriptor(Long.class)); + typeDescriptorCache.put(Float.class, new TypeDescriptor(Float.class)); + typeDescriptorCache.put(Double.class, new TypeDescriptor(Double.class)); + } + private Object value; private Class type; @@ -413,11 +421,9 @@ public class TypeDescriptor { public static TypeDescriptor valueOf(Class type) { if (type == null) { return TypeDescriptor.NULL; - } else if (type.equals(String.class)) { - return TypeDescriptor.STRING; - } else { - return new TypeDescriptor(type); } + TypeDescriptor desc = typeDescriptorCache.get(type); + return desc != null ? desc : new TypeDescriptor(type); } /** diff --git a/org.springframework.core/src/main/java/org/springframework/core/convert/support/ConvertingPropertyEditorAdapter.java b/org.springframework.core/src/main/java/org/springframework/core/convert/support/ConvertingPropertyEditorAdapter.java index d78630c9afd..946fdd6b135 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/convert/support/ConvertingPropertyEditorAdapter.java +++ b/org.springframework.core/src/main/java/org/springframework/core/convert/support/ConvertingPropertyEditorAdapter.java @@ -50,19 +50,19 @@ public class ConvertingPropertyEditorAdapter extends PropertyEditorSupport { Assert.notNull(targetDescriptor, "TypeDescriptor must not be null"); this.conversionService = conversionService; this.targetDescriptor = targetDescriptor; - this.canConvertToString = conversionService.canConvert(this.targetDescriptor, TypeDescriptor.STRING); + this.canConvertToString = conversionService.canConvert(this.targetDescriptor, TypeDescriptor.valueOf(String.class)); } @Override public void setAsText(String text) throws IllegalArgumentException { - setValue(this.conversionService.convert(text, TypeDescriptor.STRING, this.targetDescriptor)); + setValue(this.conversionService.convert(text, TypeDescriptor.valueOf(String.class), this.targetDescriptor)); } @Override public String getAsText() { if (this.canConvertToString) { - return (String) this.conversionService.convert(getValue(), this.targetDescriptor, TypeDescriptor.STRING); + return (String) this.conversionService.convert(getValue(), this.targetDescriptor, TypeDescriptor.valueOf(String.class)); } else { return null; diff --git a/org.springframework.core/src/test/java/org/springframework/core/convert/support/DefaultConversionTests.java b/org.springframework.core/src/test/java/org/springframework/core/convert/support/DefaultConversionTests.java index 2d87bf688f4..8e8606a4745 100644 --- a/org.springframework.core/src/test/java/org/springframework/core/convert/support/DefaultConversionTests.java +++ b/org.springframework.core/src/test/java/org/springframework/core/convert/support/DefaultConversionTests.java @@ -414,7 +414,7 @@ public class DefaultConversionTests { public void convertCollectionToStringWithElementConversion() throws Exception { List list = Arrays.asList(new Integer[] { 3, 5 }); String result = (String) conversionService.convert(list, - new TypeDescriptor(getClass().getField("genericList")), TypeDescriptor.STRING); + new TypeDescriptor(getClass().getField("genericList")), TypeDescriptor.valueOf(String.class)); assertEquals("3,5", result); } @@ -429,7 +429,7 @@ public class DefaultConversionTests { @Test public void convertStringToCollectionWithElementConversion() throws Exception { - List result = (List) conversionService.convert("1,2,3", TypeDescriptor.STRING, + List result = (List) conversionService.convert("1,2,3", TypeDescriptor.valueOf(String.class), new TypeDescriptor(getClass().getField("genericList"))); assertEquals(3, result.size()); assertEquals(new Integer(1), result.get(0)); @@ -679,7 +679,7 @@ public class DefaultConversionTests { @Test public void convertObjectToObjectFinderMethodWithNull() { - TestEntity e = (TestEntity) conversionService.convert(null, TypeDescriptor.STRING, TypeDescriptor.valueOf(TestEntity.class)); + TestEntity e = (TestEntity) conversionService.convert(null, TypeDescriptor.valueOf(String.class), TypeDescriptor.valueOf(TestEntity.class)); assertNull(e); } diff --git a/org.springframework.core/src/test/java/org/springframework/core/convert/support/GenericConversionServiceTests.java b/org.springframework.core/src/test/java/org/springframework/core/convert/support/GenericConversionServiceTests.java index fa5ea0fdbdb..c9e72667b52 100644 --- a/org.springframework.core/src/test/java/org/springframework/core/convert/support/GenericConversionServiceTests.java +++ b/org.springframework.core/src/test/java/org/springframework/core/convert/support/GenericConversionServiceTests.java @@ -88,7 +88,7 @@ public class GenericConversionServiceTests { @Test public void convertNullTypeDescriptor() { - assertNull(conversionService.convert("3", TypeDescriptor.STRING, TypeDescriptor.NULL)); + assertNull(conversionService.convert("3", TypeDescriptor.valueOf(String.class), TypeDescriptor.NULL)); } @Test @@ -121,9 +121,9 @@ public class GenericConversionServiceTests { assertTrue(conversionService.canConvert(String.class, boolean.class)); Boolean b = conversionService.convert("true", boolean.class); assertEquals(Boolean.TRUE, b); - assertTrue(conversionService.canConvert(TypeDescriptor.STRING, TypeDescriptor + assertTrue(conversionService.canConvert(TypeDescriptor.valueOf(String.class), TypeDescriptor .valueOf(boolean.class))); - b = (Boolean) conversionService.convert("true", TypeDescriptor.STRING, TypeDescriptor + b = (Boolean) conversionService.convert("true", TypeDescriptor.valueOf(String.class), TypeDescriptor .valueOf(boolean.class)); assertEquals(Boolean.TRUE, b); } diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/common/CompositeStringExpression.java b/org.springframework.expression/src/main/java/org/springframework/expression/common/CompositeStringExpression.java index 1334f40e43a..04fc1a561ec 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/common/CompositeStringExpression.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/common/CompositeStringExpression.java @@ -107,11 +107,11 @@ public class CompositeStringExpression implements Expression { } public TypeDescriptor getValueTypeDescriptor(EvaluationContext context) { - return TypeDescriptor.STRING; + return TypeDescriptor.valueOf(String.class); } public TypeDescriptor getValueTypeDescriptor() { - return TypeDescriptor.STRING; + return TypeDescriptor.valueOf(String.class); } public void setValue(EvaluationContext context, Object value) throws EvaluationException { @@ -157,11 +157,11 @@ public class CompositeStringExpression implements Expression { } public TypeDescriptor getValueTypeDescriptor(Object rootObject) throws EvaluationException { - return TypeDescriptor.STRING; + return TypeDescriptor.valueOf(String.class); } public TypeDescriptor getValueTypeDescriptor(EvaluationContext context, Object rootObject) throws EvaluationException { - return TypeDescriptor.STRING; + return TypeDescriptor.valueOf(String.class); } public boolean isWritable(EvaluationContext context, Object rootObject) throws EvaluationException { diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/common/LiteralExpression.java b/org.springframework.expression/src/main/java/org/springframework/expression/common/LiteralExpression.java index 834ded0d205..43d61bedfb7 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/common/LiteralExpression.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/common/LiteralExpression.java @@ -62,11 +62,11 @@ public class LiteralExpression implements Expression { } public TypeDescriptor getValueTypeDescriptor(EvaluationContext context) { - return TypeDescriptor.STRING; + return TypeDescriptor.valueOf(String.class); } public TypeDescriptor getValueTypeDescriptor() { - return TypeDescriptor.STRING; + return TypeDescriptor.valueOf(String.class); } public void setValue(EvaluationContext context, Object value) throws EvaluationException { @@ -91,49 +91,40 @@ public class LiteralExpression implements Expression { return String.class; } - public T getValue(Object rootObject, Class desiredResultType) throws EvaluationException { Object value = getValue(rootObject); return ExpressionUtils.convert(null, value, desiredResultType); } - public String getValue(EvaluationContext context, Object rootObject) throws EvaluationException { return this.literalValue; } - public T getValue(EvaluationContext context, Object rootObject, Class desiredResultType) throws EvaluationException { Object value = getValue(context, rootObject); return ExpressionUtils.convert(null, value, desiredResultType); } - public Class getValueType(Object rootObject) throws EvaluationException { return String.class; } - public Class getValueType(EvaluationContext context, Object rootObject) throws EvaluationException { return String.class; } - public TypeDescriptor getValueTypeDescriptor(Object rootObject) throws EvaluationException { - return TypeDescriptor.STRING; + return TypeDescriptor.valueOf(String.class); } - public TypeDescriptor getValueTypeDescriptor(EvaluationContext context, Object rootObject) throws EvaluationException { - return TypeDescriptor.STRING; + return TypeDescriptor.valueOf(String.class); } - public boolean isWritable(EvaluationContext context, Object rootObject) throws EvaluationException { return false; } - public void setValue(EvaluationContext context, Object rootObject, Object value) throws EvaluationException { throw new EvaluationException(literalValue, "Cannot call setValue() on a LiteralExpression"); } diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Identifier.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Identifier.java index f0a5b00411e..e1745353012 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Identifier.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Identifier.java @@ -29,7 +29,7 @@ public class Identifier extends SpelNodeImpl { public Identifier(String payload,int pos) { super(pos); - this.id = new TypedValue(payload, STRING_TYPE_DESCRIPTOR); + this.id = new TypedValue(payload); } @Override diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java index 7b0d36f8a24..96f273b9dfd 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java @@ -55,7 +55,7 @@ public class Indexer extends SpelNodeImpl { if (targetObject instanceof Map && (children[0] instanceof PropertyOrFieldReference)) { PropertyOrFieldReference reference = (PropertyOrFieldReference)children[0]; index = reference.getName(); - indexValue = new TypedValue(index, TypeDescriptor.STRING); + indexValue = new TypedValue(index); } else { // In case the map key is unqualified, we want it evaluated against the root object so @@ -75,23 +75,20 @@ public class Indexer extends SpelNodeImpl { if (targetObject == null) { // Current decision: attempt to index into null map == exception and does not just return null throw new SpelEvaluationException(getStartPosition(),SpelMessage.CANNOT_INDEX_INTO_NULL_VALUE); -// if (targetObjectTypeDescriptor.isMapEntryTypeKnown()) { -// return new TypedValue(null,TypeDescriptor.valueOf(targetObjectTypeDescriptor.getMapValueType())); -// } else { -// return new TypedValue(null,TypeDescriptor.NULL); -// } } Object possiblyConvertedKey = index; if (targetObjectTypeDescriptor.isMapEntryTypeKnown()) { possiblyConvertedKey = state.convertValue(index,TypeDescriptor.valueOf(targetObjectTypeDescriptor.getMapKeyType())); } Object o = ((Map) targetObject).get(possiblyConvertedKey); - TypeDescriptor resultDescriptor = (targetObjectTypeDescriptor.isMapEntryTypeKnown() ? - TypeDescriptor.valueOf(targetObjectTypeDescriptor.getMapValueType()) : TypeDescriptor.OBJECT); - return new TypedValue(o,resultDescriptor); + if (targetObjectTypeDescriptor.isMapEntryTypeKnown()) { + return new TypedValue(o, targetObjectTypeDescriptor.getMapValueTypeDescriptor()); + } else { + return new TypedValue(o); + } } - int idx = (Integer)state.convertValue(index, INTEGER_TYPE_DESCRIPTOR); + int idx = (Integer)state.convertValue(index, TypeDescriptor.valueOf(Integer.class)); if (targetObject == null) { throw new SpelEvaluationException(getStartPosition(),SpelMessage.CANNOT_INDEX_INTO_NULL_VALUE); @@ -139,7 +136,7 @@ public class Indexer extends SpelNodeImpl { if (idx >= ctxString.length()) { throw new SpelEvaluationException(getStartPosition(),SpelMessage.STRING_INDEX_OUT_OF_BOUNDS, ctxString.length(), idx); } - return new TypedValue(String.valueOf(ctxString.charAt(idx)),STRING_TYPE_DESCRIPTOR); + return new TypedValue(String.valueOf(ctxString.charAt(idx))); } throw new SpelEvaluationException(getStartPosition(),SpelMessage.INDEXING_NOT_SUPPORTED_FOR_TYPE, targetObjectTypeDescriptor.asString()); } @@ -175,11 +172,11 @@ public class Indexer extends SpelNodeImpl { } if (targetObjectTypeDescriptor.isArray()) { - int idx = (Integer)state.convertValue(index, INTEGER_TYPE_DESCRIPTOR); + int idx = (Integer)state.convertValue(index, TypeDescriptor.valueOf(Integer.class)); setArrayElement(state, contextObject.getValue(), idx, newValue, targetObjectTypeDescriptor.getElementType()); } else if (targetObjectTypeDescriptor.isCollection()) { - int idx = (Integer)state.convertValue(index, INTEGER_TYPE_DESCRIPTOR); + int idx = (Integer)state.convertValue(index, TypeDescriptor.valueOf(Integer.class)); Collection c = (Collection) targetObject; if (idx >= c.size()) { throw new SpelEvaluationException(getStartPosition(),SpelMessage.COLLECTION_INDEX_OUT_OF_BOUNDS, c.size(), idx); @@ -215,35 +212,35 @@ public class Indexer extends SpelNodeImpl { if (arrayComponentType == Integer.TYPE) { int[] array = (int[]) ctx; checkAccess(array.length, idx); - array[idx] = (Integer)state.convertValue(newValue, INTEGER_TYPE_DESCRIPTOR); + array[idx] = (Integer)state.convertValue(newValue, TypeDescriptor.valueOf(Integer.class)); } else if (arrayComponentType == Boolean.TYPE) { boolean[] array = (boolean[]) ctx; checkAccess(array.length, idx); - array[idx] = (Boolean)state.convertValue(newValue, BOOLEAN_TYPE_DESCRIPTOR); + array[idx] = (Boolean)state.convertValue(newValue, TypeDescriptor.valueOf(Boolean.class)); } else if (arrayComponentType == Character.TYPE) { char[] array = (char[]) ctx; checkAccess(array.length, idx); - array[idx] = (Character)state.convertValue(newValue, CHARACTER_TYPE_DESCRIPTOR); + array[idx] = (Character)state.convertValue(newValue, TypeDescriptor.valueOf(Character.class)); } else if (arrayComponentType == Long.TYPE) { long[] array = (long[]) ctx; checkAccess(array.length, idx); - array[idx] = (Long)state.convertValue(newValue, LONG_TYPE_DESCRIPTOR); + array[idx] = (Long)state.convertValue(newValue, TypeDescriptor.valueOf(Long.class)); } else if (arrayComponentType == Short.TYPE) { short[] array = (short[]) ctx; checkAccess(array.length, idx); - array[idx] = (Short)state.convertValue(newValue, SHORT_TYPE_DESCRIPTOR); + array[idx] = (Short)state.convertValue(newValue, TypeDescriptor.valueOf(Short.class)); } else if (arrayComponentType == Double.TYPE) { double[] array = (double[]) ctx; checkAccess(array.length, idx); - array[idx] = (Double)state.convertValue(newValue, DOUBLE_TYPE_DESCRIPTOR); + array[idx] = (Double)state.convertValue(newValue, TypeDescriptor.valueOf(Double.class)); } else if (arrayComponentType == Float.TYPE) { float[] array = (float[]) ctx; checkAccess(array.length, idx); - array[idx] = (Float)state.convertValue(newValue, FLOAT_TYPE_DESCRIPTOR); + array[idx] = (Float)state.convertValue(newValue, TypeDescriptor.valueOf(Float.class)); } else if (arrayComponentType == Byte.TYPE) { byte[] array = (byte[]) ctx; checkAccess(array.length, idx); - array[idx] = (Byte)state.convertValue(newValue, BYTE_TYPE_DESCRIPTOR); + array[idx] = (Byte)state.convertValue(newValue, TypeDescriptor.valueOf(Byte.class)); } else { Object[] array = (Object[]) ctx; checkAccess(array.length, idx); diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/IntLiteral.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/IntLiteral.java index 2b9c845fc09..8dd98c55318 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/IntLiteral.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/IntLiteral.java @@ -14,7 +14,7 @@ public class IntLiteral extends Literal { IntLiteral(String payload, int pos, int value) { super(payload, pos); - this.value = new TypedValue(value, INTEGER_TYPE_DESCRIPTOR); + this.value = new TypedValue(value); } @Override diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java index 77eeba6a76f..6ac11d8372e 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java @@ -30,7 +30,7 @@ public class LongLiteral extends Literal { LongLiteral(String payload, int pos, long value) { super(payload, pos); - this.value = new TypedValue(value, LONG_TYPE_DESCRIPTOR); + this.value = new TypedValue(value); } @Override diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpAnd.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpAnd.java index dbabeaee25f..4aa8d35c83a 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpAnd.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpAnd.java @@ -16,6 +16,7 @@ package org.springframework.expression.spel.ast; +import org.springframework.core.convert.TypeDescriptor; import org.springframework.expression.EvaluationException; import org.springframework.expression.TypedValue; import org.springframework.expression.spel.ExpressionState; @@ -44,7 +45,7 @@ public class OpAnd extends Operator { try { TypedValue typedValue = getLeftOperand().getValueInternal(state); this.assertTypedValueNotNull(typedValue); - leftValue = (Boolean)state.convertValue(typedValue, BOOLEAN_TYPE_DESCRIPTOR); + leftValue = (Boolean)state.convertValue(typedValue, TypeDescriptor.valueOf(Boolean.class)); } catch (SpelEvaluationException ee) { ee.setPosition(getLeftOperand().getStartPosition()); @@ -58,7 +59,7 @@ public class OpAnd extends Operator { try { TypedValue typedValue = getRightOperand().getValueInternal(state); this.assertTypedValueNotNull(typedValue); - rightValue = (Boolean)state.convertValue(typedValue, BOOLEAN_TYPE_DESCRIPTOR); + rightValue = (Boolean)state.convertValue(typedValue, TypeDescriptor.valueOf(Boolean.class)); } catch (SpelEvaluationException ee) { ee.setPosition(getRightOperand().getStartPosition()); diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java index edd96e29515..75ae01c62cf 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java @@ -42,11 +42,11 @@ public class OpDivide extends Operator { Number op1 = (Number) operandOne; Number op2 = (Number) operandTwo; if (op1 instanceof Double || op2 instanceof Double) { - return new TypedValue(op1.doubleValue() / op2.doubleValue(), DOUBLE_TYPE_DESCRIPTOR); + return new TypedValue(op1.doubleValue() / op2.doubleValue()); } else if (op1 instanceof Long || op2 instanceof Long) { - return new TypedValue(op1.longValue() / op2.longValue(), LONG_TYPE_DESCRIPTOR); + return new TypedValue(op1.longValue() / op2.longValue()); } else { // TODO what about non-int result of the division? - return new TypedValue(op1.intValue() / op2.intValue(), INTEGER_TYPE_DESCRIPTOR); + return new TypedValue(op1.intValue() / op2.intValue()); } } Object result = state.operate(Operation.DIVIDE, operandOne, operandTwo); diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpMinus.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpMinus.java index 67dd05cd3cb..0843575cac6 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpMinus.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpMinus.java @@ -51,11 +51,11 @@ public class OpMinus extends Operator { if (operand instanceof Number) { Number n = (Number) operand; if (operand instanceof Double) { - return new TypedValue(0 - n.doubleValue(),DOUBLE_TYPE_DESCRIPTOR); + return new TypedValue(0 - n.doubleValue()); } else if (operand instanceof Long) { - return new TypedValue(0 - n.longValue(),LONG_TYPE_DESCRIPTOR); + return new TypedValue(0 - n.longValue()); } else { - return new TypedValue(0 - n.intValue(),INTEGER_TYPE_DESCRIPTOR); + return new TypedValue(0 - n.intValue()); } } return state.operate(Operation.SUBTRACT, operand, null); @@ -66,17 +66,17 @@ public class OpMinus extends Operator { Number op1 = (Number) left; Number op2 = (Number) right; if (op1 instanceof Double || op2 instanceof Double) { - return new TypedValue(op1.doubleValue() - op2.doubleValue(),DOUBLE_TYPE_DESCRIPTOR); + return new TypedValue(op1.doubleValue() - op2.doubleValue()); } else if (op1 instanceof Long || op2 instanceof Long) { - return new TypedValue(op1.longValue() - op2.longValue(),LONG_TYPE_DESCRIPTOR); + return new TypedValue(op1.longValue() - op2.longValue()); } else { - return new TypedValue(op1.intValue() - op2.intValue(),INTEGER_TYPE_DESCRIPTOR); + return new TypedValue(op1.intValue() - op2.intValue()); } } else if (left instanceof String && right instanceof Integer && ((String)left).length()==1) { String theString = (String) left; Integer theInteger = (Integer) right; // implements character - int (ie. b - 1 = a) - return new TypedValue(Character.toString((char) (theString.charAt(0) - theInteger)),STRING_TYPE_DESCRIPTOR); + return new TypedValue(Character.toString((char) (theString.charAt(0) - theInteger))); } return state.operate(Operation.SUBTRACT, left, right); } diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpModulus.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpModulus.java index c60ff662223..04ef2ffaef3 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpModulus.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpModulus.java @@ -41,11 +41,11 @@ public class OpModulus extends Operator { Number op1 = (Number) operandOne; Number op2 = (Number) operandTwo; if (op1 instanceof Double || op2 instanceof Double) { - return new TypedValue(op1.doubleValue() % op2.doubleValue(),DOUBLE_TYPE_DESCRIPTOR); + return new TypedValue(op1.doubleValue() % op2.doubleValue()); } else if (op1 instanceof Long || op2 instanceof Long) { - return new TypedValue(op1.longValue() % op2.longValue(),LONG_TYPE_DESCRIPTOR); + return new TypedValue(op1.longValue() % op2.longValue()); } else { - return new TypedValue(op1.intValue() % op2.intValue(),INTEGER_TYPE_DESCRIPTOR); + return new TypedValue(op1.intValue() % op2.intValue()); } } return state.operate(Operation.MODULUS, operandOne, operandTwo); diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpMultiply.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpMultiply.java index 148d318b93a..e4565e211ad 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpMultiply.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpMultiply.java @@ -60,11 +60,11 @@ public class OpMultiply extends Operator { Number leftNumber = (Number) operandOne; Number rightNumber = (Number) operandTwo; if (leftNumber instanceof Double || rightNumber instanceof Double) { - return new TypedValue(leftNumber.doubleValue() * rightNumber.doubleValue(), DOUBLE_TYPE_DESCRIPTOR); + return new TypedValue(leftNumber.doubleValue() * rightNumber.doubleValue()); } else if (leftNumber instanceof Long || rightNumber instanceof Long) { - return new TypedValue(leftNumber.longValue() * rightNumber.longValue(), LONG_TYPE_DESCRIPTOR); + return new TypedValue(leftNumber.longValue() * rightNumber.longValue()); } else { - return new TypedValue(leftNumber.intValue() * rightNumber.intValue(), INTEGER_TYPE_DESCRIPTOR); + return new TypedValue(leftNumber.intValue() * rightNumber.intValue()); } } else if (operandOne instanceof String && operandTwo instanceof Integer) { int repeats = (Integer) operandTwo; @@ -72,7 +72,7 @@ public class OpMultiply extends Operator { for (int i = 0; i < repeats; i++) { result.append(operandOne); } - return new TypedValue(result.toString(), STRING_TYPE_DESCRIPTOR); + return new TypedValue(result.toString()); } return state.operate(Operation.MULTIPLY, operandOne, operandTwo); } diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpOr.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpOr.java index 4099dd5ca67..832c21f5942 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpOr.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpOr.java @@ -16,6 +16,7 @@ package org.springframework.expression.spel.ast; +import org.springframework.core.convert.TypeDescriptor; import org.springframework.expression.EvaluationException; import org.springframework.expression.TypedValue; import org.springframework.expression.spel.ExpressionState; @@ -43,7 +44,7 @@ public class OpOr extends Operator { try { TypedValue typedValue = getLeftOperand().getValueInternal(state); this.assertTypedValueNotNull(typedValue); - leftValue = (Boolean)state.convertValue(typedValue, BOOLEAN_TYPE_DESCRIPTOR); + leftValue = (Boolean)state.convertValue(typedValue, TypeDescriptor.valueOf(Boolean.class)); } catch (SpelEvaluationException see) { see.setPosition(getLeftOperand().getStartPosition()); @@ -57,7 +58,7 @@ public class OpOr extends Operator { try { TypedValue typedValue = getRightOperand().getValueInternal(state); this.assertTypedValueNotNull(typedValue); - rightValue = (Boolean)state.convertValue(typedValue, BOOLEAN_TYPE_DESCRIPTOR); + rightValue = (Boolean)state.convertValue(typedValue, TypeDescriptor.valueOf(Boolean.class)); } catch (SpelEvaluationException see) { see.setPosition(getRightOperand().getStartPosition()); // TODO end positions here and in similar situations diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java index a449e319892..eb1f55c82ae 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java @@ -49,11 +49,11 @@ public class OpPlus extends Operator { Object operandOne = leftOp.getValueInternal(state).getValue(); if (operandOne instanceof Number) { if (operandOne instanceof Double) { - return new TypedValue(((Double) operandOne).doubleValue(), DOUBLE_TYPE_DESCRIPTOR); + return new TypedValue(((Double) operandOne).doubleValue()); } else if (operandOne instanceof Long) { - return new TypedValue(((Long) operandOne).longValue(), LONG_TYPE_DESCRIPTOR); + return new TypedValue(((Long) operandOne).longValue()); } else { - return new TypedValue(((Integer) operandOne).intValue(), INTEGER_TYPE_DESCRIPTOR); + return new TypedValue(((Integer) operandOne).intValue()); } } return state.operate(Operation.ADD, operandOne, null); @@ -65,22 +65,22 @@ public class OpPlus extends Operator { Number op1 = (Number) operandOne; Number op2 = (Number) operandTwo; if (op1 instanceof Double || op2 instanceof Double) { - return new TypedValue(op1.doubleValue() + op2.doubleValue(),DOUBLE_TYPE_DESCRIPTOR); + return new TypedValue(op1.doubleValue() + op2.doubleValue()); } else if (op1 instanceof Long || op2 instanceof Long) { - return new TypedValue(op1.longValue() + op2.longValue(),LONG_TYPE_DESCRIPTOR); + return new TypedValue(op1.longValue() + op2.longValue()); } else { // TODO what about overflow? - return new TypedValue(op1.intValue() + op2.intValue(),INTEGER_TYPE_DESCRIPTOR); + return new TypedValue(op1.intValue() + op2.intValue()); } } else if (operandOne instanceof String && operandTwo instanceof String) { - return new TypedValue(new StringBuilder((String) operandOne).append((String) operandTwo).toString(),STRING_TYPE_DESCRIPTOR); + return new TypedValue(new StringBuilder((String) operandOne).append((String) operandTwo).toString()); } else if (operandOne instanceof String) { StringBuilder result = new StringBuilder((String)operandOne); result.append((operandTwo==null?"null":operandTwo.toString())); - return new TypedValue(result.toString(),STRING_TYPE_DESCRIPTOR); + return new TypedValue(result.toString()); } else if (operandTwo instanceof String) { StringBuilder result = new StringBuilder((operandOne==null?"null":operandOne.toString())); result.append((String)operandTwo); - return new TypedValue(result.toString(),STRING_TYPE_DESCRIPTOR); + return new TypedValue(result.toString()); } return state.operate(Operation.ADD, operandOne, operandTwo); } diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OperatorNot.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OperatorNot.java index 12b6e0c7916..f07da1c99a5 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OperatorNot.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OperatorNot.java @@ -16,6 +16,7 @@ package org.springframework.expression.spel.ast; +import org.springframework.core.convert.TypeDescriptor; import org.springframework.expression.EvaluationException; import org.springframework.expression.TypedValue; import org.springframework.expression.spel.ExpressionState; @@ -43,7 +44,7 @@ public class OperatorNot extends SpelNodeImpl { // Not is a unary operator so do if (TypedValue.NULL_TYPED_VALUE.equals(typedValue)) { throw new SpelEvaluationException(SpelMessage.TYPE_CONVERSION_ERROR, "null", "boolean"); } - boolean value = (Boolean) state.convertValue(typedValue, BOOLEAN_TYPE_DESCRIPTOR); + boolean value = (Boolean) state.convertValue(typedValue, TypeDescriptor.valueOf(Boolean.class)); return BooleanTypedValue.forValue(!value); } catch (SpelEvaluationException see) { diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OperatorPower.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OperatorPower.java index 24134b47cad..f15e7d04310 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OperatorPower.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/OperatorPower.java @@ -44,16 +44,16 @@ public class OperatorPower extends Operator { Number op1 = (Number) operandOne; Number op2 = (Number) operandTwo; if (op1 instanceof Double || op2 instanceof Double) { - return new TypedValue(Math.pow(op1.doubleValue(),op2.doubleValue()),DOUBLE_TYPE_DESCRIPTOR); + return new TypedValue(Math.pow(op1.doubleValue(),op2.doubleValue())); } else if (op1 instanceof Long || op2 instanceof Long) { double d= Math.pow(op1.longValue(), op2.longValue()); - return new TypedValue((long)d, LONG_TYPE_DESCRIPTOR); + return new TypedValue((long)d); } else { double d= Math.pow(op1.longValue(), op2.longValue()); if (d > Integer.MAX_VALUE) { - return new TypedValue((long)d,LONG_TYPE_DESCRIPTOR); + return new TypedValue((long)d); } else { - return new TypedValue((int)d,INTEGER_TYPE_DESCRIPTOR); + return new TypedValue((int)d); } } } diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/QualifiedIdentifier.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/QualifiedIdentifier.java index 680224e7177..427e33b7673 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/QualifiedIdentifier.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/QualifiedIdentifier.java @@ -49,7 +49,7 @@ public class QualifiedIdentifier extends SpelNodeImpl { } sb.append(value); } - this.value = new TypedValue(sb.toString(),STRING_TYPE_DESCRIPTOR); + this.value = new TypedValue(sb.toString()); } return this.value; } diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/RealLiteral.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/RealLiteral.java index 6f1a67de9b2..c3a1566a1ca 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/RealLiteral.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/RealLiteral.java @@ -28,7 +28,7 @@ public class RealLiteral extends Literal { public RealLiteral(String payload, int pos, double value) { super(payload, pos); - this.value = new TypedValue(value,DOUBLE_TYPE_DESCRIPTOR); + this.value = new TypedValue(value); } @Override diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java index 29e532deea8..b3ac0b0314c 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java @@ -16,7 +16,6 @@ package org.springframework.expression.spel.ast; -import org.springframework.core.convert.TypeDescriptor; import org.springframework.expression.EvaluationException; import org.springframework.expression.TypedValue; import org.springframework.expression.common.ExpressionUtils; @@ -35,18 +34,6 @@ import org.springframework.util.Assert; */ public abstract class SpelNodeImpl implements SpelNode { - static TypeDescriptor OBJECT_TYPE_DESCRIPTOR = TypeDescriptor.OBJECT; - static TypeDescriptor STRING_TYPE_DESCRIPTOR = TypeDescriptor.STRING; - static TypeDescriptor CLASS_TYPE_DESCRIPTOR = TypeDescriptor.valueOf(Class.class); - static TypeDescriptor BOOLEAN_TYPE_DESCRIPTOR = TypeDescriptor.valueOf(Boolean.class); - static TypeDescriptor CHARACTER_TYPE_DESCRIPTOR = TypeDescriptor.valueOf(Character.class); - static TypeDescriptor BYTE_TYPE_DESCRIPTOR = TypeDescriptor.valueOf(Byte.class); - static TypeDescriptor SHORT_TYPE_DESCRIPTOR = TypeDescriptor.valueOf(Short.class); - static TypeDescriptor INTEGER_TYPE_DESCRIPTOR = TypeDescriptor.valueOf(Integer.class); - static TypeDescriptor LONG_TYPE_DESCRIPTOR = TypeDescriptor.valueOf(Long.class); - static TypeDescriptor FLOAT_TYPE_DESCRIPTOR = TypeDescriptor.valueOf(Float.class); - static TypeDescriptor DOUBLE_TYPE_DESCRIPTOR = TypeDescriptor.valueOf(Double.class); - private static SpelNodeImpl[] NO_CHILDREN = new SpelNodeImpl[0]; protected int pos; // start = top 16bits, end = bottom 16bits diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/StringLiteral.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/StringLiteral.java index 729cefb7463..2e3ff12dc43 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/StringLiteral.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/StringLiteral.java @@ -31,7 +31,7 @@ public class StringLiteral extends Literal { super(payload,pos); // TODO should these have been skipped being created by the parser rules? or not? value = value.substring(1, value.length() - 1); - this.value = new TypedValue(value.replaceAll("''", "'"),STRING_TYPE_DESCRIPTOR); + this.value = new TypedValue(value.replaceAll("''", "'")); } @Override diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/TypeReference.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/TypeReference.java index ac7b38a3f11..77724ec3a4e 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/TypeReference.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/ast/TypeReference.java @@ -39,10 +39,10 @@ public class TypeReference extends SpelNodeImpl { TypeCode tc = TypeCode.valueOf(typename.toUpperCase()); if (tc != TypeCode.OBJECT) { // it is a primitive type - return new TypedValue(tc.getType(),CLASS_TYPE_DESCRIPTOR); + return new TypedValue(tc.getType()); } } - return new TypedValue(state.findType(typename),CLASS_TYPE_DESCRIPTOR); + return new TypedValue(state.findType(typename)); } @Override diff --git a/org.springframework.expression/src/test/java/org/springframework/expression/spel/ExpressionStateTests.java b/org.springframework.expression/src/test/java/org/springframework/expression/spel/ExpressionStateTests.java index 62e42b0e53b..321d32e0c30 100644 --- a/org.springframework.expression/src/test/java/org/springframework/expression/spel/ExpressionStateTests.java +++ b/org.springframework.expression/src/test/java/org/springframework/expression/spel/ExpressionStateTests.java @@ -257,10 +257,10 @@ public class ExpressionStateTests extends ExpressionTestCase { @Test public void testTypeConversion() throws EvaluationException { ExpressionState state = getState(); - String s = (String)state.convertValue(34,TypeDescriptor.STRING); + String s = (String)state.convertValue(34, TypeDescriptor.valueOf(String.class)); Assert.assertEquals("34",s); - s = (String)state.convertValue(new TypedValue(34),TypeDescriptor.STRING); + s = (String)state.convertValue(new TypedValue(34), TypeDescriptor.valueOf(String.class)); Assert.assertEquals("34",s); } diff --git a/org.springframework.expression/src/test/java/org/springframework/expression/spel/MapAccessTests.java b/org.springframework.expression/src/test/java/org/springframework/expression/spel/MapAccessTests.java index 90d4c0e2df3..6bada765d11 100644 --- a/org.springframework.expression/src/test/java/org/springframework/expression/spel/MapAccessTests.java +++ b/org.springframework.expression/src/test/java/org/springframework/expression/spel/MapAccessTests.java @@ -29,7 +29,6 @@ import org.springframework.expression.PropertyAccessor; import org.springframework.expression.TypedValue; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; -import org.springframework.core.convert.TypeDescriptor; /** * Testing variations on map access. @@ -78,7 +77,7 @@ public class MapAccessTests extends ExpressionTestCase { } public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException { - return new TypedValue(((Map) target).get(name), TypeDescriptor.OBJECT); + return new TypedValue(((Map) target).get(name)); } public boolean canWrite(EvaluationContext context, Object target, String name) throws AccessException { diff --git a/org.springframework.expression/src/test/java/org/springframework/expression/spel/PropertyAccessTests.java b/org.springframework.expression/src/test/java/org/springframework/expression/spel/PropertyAccessTests.java index 7ad18186a3a..e33fdf26070 100644 --- a/org.springframework.expression/src/test/java/org/springframework/expression/spel/PropertyAccessTests.java +++ b/org.springframework.expression/src/test/java/org/springframework/expression/spel/PropertyAccessTests.java @@ -17,8 +17,8 @@ package org.springframework.expression.spel; import junit.framework.Assert; -import org.junit.Test; +import org.junit.Test; import org.springframework.core.convert.TypeDescriptor; import org.springframework.expression.AccessException; import org.springframework.expression.EvaluationContext; @@ -26,8 +26,8 @@ import org.springframework.expression.EvaluationException; import org.springframework.expression.Expression; import org.springframework.expression.PropertyAccessor; import org.springframework.expression.TypedValue; -import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.standard.SpelExpression; +import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; ///CLOVER:OFF @@ -155,7 +155,7 @@ public class PropertyAccessTests extends ExpressionTestCase { public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException { if (!name.equals("flibbles")) throw new RuntimeException("Assertion Failed! name should be flibbles"); - return new TypedValue(flibbles, TypeDescriptor.STRING); + return new TypedValue(flibbles, TypeDescriptor.valueOf(String.class)); } public void write(EvaluationContext context, Object target, String name, Object newValue) diff --git a/org.springframework.expression/src/test/java/org/springframework/expression/spel/SpringEL300Tests.java b/org.springframework.expression/src/test/java/org/springframework/expression/spel/SpringEL300Tests.java index b0a83f33c02..e823b4817ee 100644 --- a/org.springframework.expression/src/test/java/org/springframework/expression/spel/SpringEL300Tests.java +++ b/org.springframework.expression/src/test/java/org/springframework/expression/spel/SpringEL300Tests.java @@ -21,9 +21,8 @@ import java.util.Map; import java.util.Properties; import junit.framework.Assert; -import org.junit.Test; -import org.springframework.core.convert.TypeDescriptor; +import org.junit.Test; import org.springframework.expression.AccessException; import org.springframework.expression.EvaluationContext; import org.springframework.expression.EvaluationException; @@ -219,7 +218,7 @@ public class SpringEL300Tests extends ExpressionTestCase { } public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException { - return new TypedValue(((Map) target).get(name), TypeDescriptor.OBJECT); + return new TypedValue(((Map) target).get(name)); } public boolean canWrite(EvaluationContext context, Object target, String name) throws AccessException {