From 97033d66fbbe8b32ddf4e849c9e071938adf3b04 Mon Sep 17 00:00:00 2001 From: Keith Donald Date: Fri, 7 Jan 2011 05:57:25 +0000 Subject: [PATCH] switched to better encapsulated convert(Object, TypeDescriptor) where possible git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3880 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../FormattingConversionServiceTests.java | 4 ++-- .../core/convert/ConversionService.java | 8 +++++++- .../ConvertingPropertyEditorAdapter.java | 2 +- .../support/GenericConversionService.java | 8 ++++++++ .../support/DefaultConversionTests.java | 20 +++++++------------ .../GenericConversionServiceTests.java | 18 ++++++++--------- ...essionTestsUsingCoreConversionService.java | 8 +++++--- 7 files changed, 38 insertions(+), 30 deletions(-) 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 a37809574cf..ec27aa11fc6 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 @@ -190,7 +190,7 @@ public class FormattingConversionServiceTests { @Test public void testParseEmptyString() throws ParseException { formattingService.addFormatterForFieldType(Number.class, new NumberFormatter()); - assertNull(formattingService.convert("", TypeDescriptor.valueOf(String.class), TypeDescriptor.valueOf(Integer.class))); + assertNull(formattingService.convert("", TypeDescriptor.valueOf(Integer.class))); } @Test @@ -205,7 +205,7 @@ public class FormattingConversionServiceTests { @Test public void testParseEmptyStringDefault() throws ParseException { - assertNull(formattingService.convert("", TypeDescriptor.valueOf(String.class), TypeDescriptor.valueOf(Integer.class))); + assertNull(formattingService.convert("", TypeDescriptor.valueOf(Integer.class))); } diff --git a/org.springframework.core/src/main/java/org/springframework/core/convert/ConversionService.java b/org.springframework.core/src/main/java/org/springframework/core/convert/ConversionService.java index 82acf00d525..d5c5654d452 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/convert/ConversionService.java +++ b/org.springframework.core/src/main/java/org/springframework/core/convert/ConversionService.java @@ -64,4 +64,10 @@ public interface ConversionService { */ Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType); -} + // 3.1 additions that encapsulate TypeDescriptor.forObject(source) + + boolean canConvert(Object source, TypeDescriptor targetType); + + Object convert(Object source, TypeDescriptor targetType); + +} \ No newline at end of file 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 946fdd6b135..725aa1c00d0 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 @@ -56,7 +56,7 @@ public class ConvertingPropertyEditorAdapter extends PropertyEditorSupport { @Override public void setAsText(String text) throws IllegalArgumentException { - setValue(this.conversionService.convert(text, TypeDescriptor.valueOf(String.class), this.targetDescriptor)); + setValue(this.conversionService.convert(text, this.targetDescriptor)); } @Override diff --git a/org.springframework.core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java b/org.springframework.core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java index e0d30af05bf..657b7d2447e 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java +++ b/org.springframework.core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java @@ -188,6 +188,14 @@ public class GenericConversionService implements ConversionService, ConverterReg return result; } + public boolean canConvert(Object source, TypeDescriptor targetType) { + return canConvert(TypeDescriptor.forObject(source), targetType); + } + + public Object convert(Object source, TypeDescriptor targetType) { + return convert(source, TypeDescriptor.forObject(source), targetType); + } + public String toString() { List converterStrings = new ArrayList(); for (Map, MatchableConverters> targetConverters : this.converters.values()) { 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 b87e8f39ec2..807ddf501fd 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 @@ -287,8 +287,7 @@ public class DefaultConversionTests { @Test public void convertArrayToCollectionGenericTypeConversion() throws Exception { - List result = (List) conversionService.convert(new String[] { "1", "2", "3" }, TypeDescriptor - .valueOf(String[].class), new TypeDescriptor(getClass().getDeclaredField("genericList"))); + List result = (List) conversionService.convert(new String[] { "1", "2", "3" }, new TypeDescriptor(getClass().getDeclaredField("genericList"))); assertEquals(new Integer("1"), result.get(0)); assertEquals(new Integer("2"), result.get(1)); assertEquals(new Integer("3"), result.get(2)); @@ -298,7 +297,7 @@ public class DefaultConversionTests { public void testSpr7766() throws Exception { ConverterRegistry registry = ((ConverterRegistry) conversionService); registry.addConverter(new ColorConverter()); - List colors = (List) conversionService.convert(new String[] { "ffffff", "#000000" }, TypeDescriptor.valueOf(String[].class), new TypeDescriptor(new MethodParameter(getClass().getMethod("handlerMethod", List.class), 0))); + List colors = (List) conversionService.convert(new String[] { "ffffff", "#000000" }, new TypeDescriptor(new MethodParameter(getClass().getMethod("handlerMethod", List.class), 0))); assertEquals(2, colors.size()); assertEquals(Color.WHITE, colors.get(0)); assertEquals(Color.BLACK, colors.get(1)); @@ -531,8 +530,7 @@ public class DefaultConversionTests { foo.add("1"); foo.add("2"); foo.add("3"); - List bar = (List) conversionService.convert(foo, TypeDescriptor.forObject(foo), - new TypeDescriptor(getClass().getField("genericList"))); + List bar = (List) conversionService.convert(foo, new TypeDescriptor(getClass().getField("genericList"))); assertEquals(new Integer(1), bar.get(0)); assertEquals(new Integer(2), bar.get(1)); assertEquals(new Integer(3), bar.get(2)); @@ -540,8 +538,7 @@ public class DefaultConversionTests { @Test public void convertCollectionToCollectionNull() throws Exception { - List bar = (List) conversionService.convert(null, - TypeDescriptor.valueOf(LinkedHashSet.class), new TypeDescriptor(getClass().getField("genericList"))); + List bar = (List) conversionService.convert(null, new TypeDescriptor(getClass().getField("genericList"))); assertNull(bar); } @@ -551,8 +548,7 @@ public class DefaultConversionTests { foo.add("1"); foo.add("2"); foo.add("3"); - List bar = (List) conversionService.convert(foo, TypeDescriptor.valueOf(LinkedHashSet.class), TypeDescriptor - .valueOf(List.class)); + List bar = (List) conversionService.convert(foo, TypeDescriptor.valueOf(List.class)); assertEquals("1", bar.get(0)); assertEquals("2", bar.get(1)); assertEquals("3", bar.get(2)); @@ -565,8 +561,7 @@ public class DefaultConversionTests { map.put("2", "2"); map.put("3", "3"); Collection values = map.values(); - List bar = (List) conversionService.convert(values, - TypeDescriptor.forObject(values), new TypeDescriptor(getClass().getField("genericList"))); + List bar = (List) conversionService.convert(values, new TypeDescriptor(getClass().getField("genericList"))); assertEquals(3, bar.size()); assertEquals(new Integer(1), bar.get(0)); assertEquals(new Integer(2), bar.get(1)); @@ -580,8 +575,7 @@ public class DefaultConversionTests { Map foo = new HashMap(); foo.put("1", "BAR"); foo.put("2", "BAZ"); - Map map = (Map) conversionService.convert(foo, - TypeDescriptor.forObject(foo), new TypeDescriptor(getClass().getField("genericMap"))); + Map map = (Map) conversionService.convert(foo, new TypeDescriptor(getClass().getField("genericMap"))); assertEquals(FooEnum.BAR, map.get(1)); assertEquals(FooEnum.BAZ, map.get(2)); } 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 033396842ef..acb23e98bb0 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 @@ -109,12 +109,13 @@ public class GenericConversionServiceTests { } public void convertNullTargetClass() { - assertNull(conversionService.convert("3", null)); + assertNull(conversionService.convert("3", (Class) null)); + assertNull(conversionService.convert("3", TypeDescriptor.NULL)); } @Test public void convertNullTypeDescriptor() { - assertNull(conversionService.convert("3", TypeDescriptor.valueOf(String.class), TypeDescriptor.NULL)); + assertNull(conversionService.convert("3", TypeDescriptor.NULL)); } @Test @@ -147,10 +148,8 @@ 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.valueOf(String.class), TypeDescriptor - .valueOf(boolean.class))); - b = (Boolean) conversionService.convert("true", TypeDescriptor.valueOf(String.class), TypeDescriptor - .valueOf(boolean.class)); + assertTrue(conversionService.canConvert(TypeDescriptor.valueOf(String.class), TypeDescriptor.valueOf(boolean.class))); + b = (Boolean) conversionService.convert("true", TypeDescriptor.valueOf(boolean.class)); assertEquals(Boolean.TRUE, b); } @@ -260,8 +259,7 @@ public class GenericConversionServiceTests { GenericConversionService conversionService = ConversionServiceFactory.createDefaultConversionService(); Map input = new LinkedHashMap(); input.put("key", "value"); - Object converted = conversionService.convert(input, TypeDescriptor.forObject(input), - new TypeDescriptor(getClass().getField("wildcardMap"))); + Object converted = conversionService.convert(input, new TypeDescriptor(getClass().getField("wildcardMap"))); assertEquals(input, converted); } @@ -344,7 +342,7 @@ public class GenericConversionServiceTests { source.add("3"); TypeDescriptor td = new TypeDescriptor(getClass().getField("list")); for (int i = 0; i < 1000000; i++) { - conversionService.convert(source, TypeDescriptor.forObject(source), td); + conversionService.convert(source, td); } watch.stop(); watch.start("convert 4,000,000 manually"); @@ -371,7 +369,7 @@ public class GenericConversionServiceTests { source.put("3", "3"); TypeDescriptor td = new TypeDescriptor(getClass().getField("map")); for (int i = 0; i < 1000000; i++) { - conversionService.convert(source, TypeDescriptor.forObject(source), td); + conversionService.convert(source, td); } watch.stop(); watch.start("convert 4,000,000 manually"); diff --git a/org.springframework.expression/src/test/java/org/springframework/expression/spel/ExpressionTestsUsingCoreConversionService.java b/org.springframework.expression/src/test/java/org/springframework/expression/spel/ExpressionTestsUsingCoreConversionService.java index 3f377db603a..e8b7c5b925e 100644 --- a/org.springframework.expression/src/test/java/org/springframework/expression/spel/ExpressionTestsUsingCoreConversionService.java +++ b/org.springframework.expression/src/test/java/org/springframework/expression/spel/ExpressionTestsUsingCoreConversionService.java @@ -16,14 +16,16 @@ package org.springframework.expression.spel; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertTrue; + import java.util.ArrayList; import java.util.Collection; import java.util.List; -import static junit.framework.Assert.*; import org.junit.Before; import org.junit.Test; - import org.springframework.core.MethodParameter; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.TypeDescriptor; @@ -141,7 +143,7 @@ public class ExpressionTestsUsingCoreConversionService extends ExpressionTestCas private final ConversionService service = ConversionServiceFactory.createDefaultConversionService(); public Object convertValue(Object value, TypeDescriptor typeDescriptor) throws EvaluationException { - return this.service.convert(value, TypeDescriptor.forObject(value), typeDescriptor); + return this.service.convert(value, typeDescriptor); } public boolean canConvert(TypeDescriptor sourceType, TypeDescriptor targetType) {