polish
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()) + "="
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user