Browse Source

take element/key/value objects into account for the best possible type descriptor

3.0.x
Juergen Hoeller 14 years ago
parent
commit
4a7b96c4ca
  1. 6
      org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java
  2. 4
      org.springframework.core/src/main/java/org/springframework/core/convert/TypeDescriptor.java

6
org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java

@ -529,7 +529,7 @@ class TypeConverterDelegate { @@ -529,7 +529,7 @@ class TypeConverterDelegate {
methodParam.increaseNestingLevel();
}
Object convertedElement = convertIfNecessary(
indexedPropertyName, null, element, elementType, typeDescriptor.getElementTypeDescriptor());
indexedPropertyName, null, element, elementType, typeDescriptor.getElementTypeDescriptor(element));
if (methodParam != null) {
methodParam.decreaseNestingLevel();
}
@ -624,12 +624,12 @@ class TypeConverterDelegate { @@ -624,12 +624,12 @@ class TypeConverterDelegate {
methodParam.setTypeIndexForCurrentLevel(0);
}
Object convertedKey = convertIfNecessary(keyedPropertyName, null, key, keyType,
typeDescriptor.getMapKeyTypeDescriptor());
typeDescriptor.getMapKeyTypeDescriptor(key));
if (methodParam != null) {
methodParam.setTypeIndexForCurrentLevel(1);
}
Object convertedValue = convertIfNecessary(keyedPropertyName, null, value, valueType,
typeDescriptor.getMapValueTypeDescriptor());
typeDescriptor.getMapValueTypeDescriptor(value));
if (methodParam != null) {
methodParam.decreaseNestingLevel();
}

4
org.springframework.core/src/main/java/org/springframework/core/convert/TypeDescriptor.java

@ -324,7 +324,7 @@ public class TypeDescriptor { @@ -324,7 +324,7 @@ public class TypeDescriptor {
*/
public TypeDescriptor getMapKeyTypeDescriptor(Object key) {
TypeDescriptor keyType = getMapKeyTypeDescriptor();
return (keyType != TypeDescriptor.UNKNOWN ? keyType : TypeDescriptor.forObject(key));
return (!TypeDescriptor.UNKNOWN.equals(keyType) ? keyType : TypeDescriptor.forObject(key));
}
/**
@ -353,7 +353,7 @@ public class TypeDescriptor { @@ -353,7 +353,7 @@ public class TypeDescriptor {
*/
public TypeDescriptor getMapValueTypeDescriptor(Object value) {
TypeDescriptor valueType = getMapValueTypeDescriptor();
return (valueType != TypeDescriptor.UNKNOWN ? valueType : TypeDescriptor.forObject(value));
return (!TypeDescriptor.UNKNOWN.equals(valueType) ? valueType : TypeDescriptor.forObject(value));
}
/**

Loading…
Cancel
Save