From 027bd242603e5d4c85e5182349176ac4ac0a7163 Mon Sep 17 00:00:00 2001 From: Keith Donald Date: Fri, 11 Dec 2009 18:16:38 +0000 Subject: [PATCH] polish --- .../support/CollectionToArrayConverter.java | 2 +- .../convert/support/MapToCollectionConverter.java | 10 +++++++--- .../core/convert/support/MapToObjectConverter.java | 13 ++++--------- .../core/convert/support/ObjectToMapConverter.java | 14 +++++--------- 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToArrayConverter.java b/org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToArrayConverter.java index 0e18f79daf..5bdac898fd 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToArrayConverter.java +++ b/org.springframework.core/src/main/java/org/springframework/core/convert/support/CollectionToArrayConverter.java @@ -33,7 +33,7 @@ import org.springframework.core.convert.converter.GenericConverter; /** * Converts a Collection to an Array. * First, creates a new Array of the requested targetType with a length equal to the size of the source Collection. - * Then sets collection element into the array. + * Then sets each collection element into the array. * Will perform an element conversion from the collection's parameterized type to the array's component type if necessary. * * @author Keith Donald diff --git a/org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToCollectionConverter.java b/org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToCollectionConverter.java index eaf1e72816..4d9b824047 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToCollectionConverter.java +++ b/org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToCollectionConverter.java @@ -51,8 +51,12 @@ final class MapToCollectionConverter implements ConditionalGenericConverter { } public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) { - return this.conversionService.canConvert(sourceType.getMapKeyTypeDescriptor(), targetType.getElementTypeDescriptor()) && - this.conversionService.canConvert(sourceType.getMapValueTypeDescriptor(), targetType.getElementTypeDescriptor()); + if (String.class.equals(targetType.getType())) { + return this.conversionService.canConvert(sourceType.getMapKeyTypeDescriptor(), targetType.getElementTypeDescriptor()) && + this.conversionService.canConvert(sourceType.getMapValueTypeDescriptor(), targetType.getElementTypeDescriptor()); + } else { + return this.conversionService.canConvert(sourceType.getMapValueTypeDescriptor(), targetType.getElementTypeDescriptor()); + } } @SuppressWarnings("unchecked") @@ -80,7 +84,7 @@ final class MapToCollectionConverter implements ConditionalGenericConverter { Collection target = CollectionFactory.createCollection(targetType.getType(), sourceMap.size()); MapEntryConverter converter = new MapEntryConverter(sourceKeyType, sourceValueType, targetElementType, targetElementType, keysCompatible, valuesCompatible, this.conversionService); - if (targetElementType.getType().equals(String.class)) { + if (String.class.equals(targetElementType.getType())) { for (Object entry : sourceMap.entrySet()) { Map.Entry mapEntry = (Map.Entry) entry; String property = converter.convertKey(mapEntry.getKey()) + "=" diff --git a/org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToObjectConverter.java b/org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToObjectConverter.java index 376f535d47..c823a6363e 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToObjectConverter.java +++ b/org.springframework.core/src/main/java/org/springframework/core/convert/support/MapToObjectConverter.java @@ -42,8 +42,7 @@ final class MapToObjectConverter implements ConditionalGenericConverter { } public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) { - return this.conversionService.canConvert(sourceType.getMapKeyTypeDescriptor(), targetType) - && this.conversionService.canConvert(sourceType.getMapValueTypeDescriptor(), targetType); + return this.conversionService.canConvert(sourceType.getMapValueTypeDescriptor(), targetType); } public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { @@ -63,13 +62,9 @@ final class MapToObjectConverter implements ConditionalGenericConverter { if (sourceValueType != TypeDescriptor.NULL && sourceValueType.isAssignableTo(targetType)) { valuesCompatible = true; } - if (valuesCompatible) { - return firstValue; - } else { - MapEntryConverter converter = new MapEntryConverter(sourceValueType, sourceValueType, targetType, - targetType, true, valuesCompatible, this.conversionService); - return converter.convertValue(firstValue); - } + MapEntryConverter converter = new MapEntryConverter(sourceValueType, sourceValueType, targetType, + targetType, true, valuesCompatible, this.conversionService); + return converter.convertValue(firstValue); } } diff --git a/org.springframework.core/src/main/java/org/springframework/core/convert/support/ObjectToMapConverter.java b/org.springframework.core/src/main/java/org/springframework/core/convert/support/ObjectToMapConverter.java index da2f210b0b..1ff1dd0394 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/convert/support/ObjectToMapConverter.java +++ b/org.springframework.core/src/main/java/org/springframework/core/convert/support/ObjectToMapConverter.java @@ -65,15 +65,11 @@ final class ObjectToMapConverter implements ConditionalGenericConverter { if (sourceType != TypeDescriptor.NULL && sourceType.isAssignableTo(targetValueType)) { valuesCompatible = true; } - if (keysCompatible && valuesCompatible) { - target.put(source, source); - } else { - MapEntryConverter converter = new MapEntryConverter(sourceType, sourceType, targetKeyType, targetValueType, - keysCompatible, valuesCompatible, this.conversionService); - Object key = converter.convertKey(source); - Object value = converter.convertValue(source); - target.put(key, value); - } + MapEntryConverter converter = new MapEntryConverter(sourceType, sourceType, targetKeyType, targetValueType, + keysCompatible, valuesCompatible, this.conversionService); + Object key = converter.convertKey(source); + Object value = converter.convertValue(source); + target.put(key, value); return target; }