Skip to content

Commit 4a7b96c

Browse files
committed
take element/key/value objects into account for the best possible type descriptor
1 parent 7398e0e commit 4a7b96c

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ protected Collection convertToTypedCollection(
529529
methodParam.increaseNestingLevel();
530530
}
531531
Object convertedElement = convertIfNecessary(
532-
indexedPropertyName, null, element, elementType, typeDescriptor.getElementTypeDescriptor());
532+
indexedPropertyName, null, element, elementType, typeDescriptor.getElementTypeDescriptor(element));
533533
if (methodParam != null) {
534534
methodParam.decreaseNestingLevel();
535535
}
@@ -624,12 +624,12 @@ protected Map convertToTypedMap(
624624
methodParam.setTypeIndexForCurrentLevel(0);
625625
}
626626
Object convertedKey = convertIfNecessary(keyedPropertyName, null, key, keyType,
627-
typeDescriptor.getMapKeyTypeDescriptor());
627+
typeDescriptor.getMapKeyTypeDescriptor(key));
628628
if (methodParam != null) {
629629
methodParam.setTypeIndexForCurrentLevel(1);
630630
}
631631
Object convertedValue = convertIfNecessary(keyedPropertyName, null, value, valueType,
632-
typeDescriptor.getMapValueTypeDescriptor());
632+
typeDescriptor.getMapValueTypeDescriptor(value));
633633
if (methodParam != null) {
634634
methodParam.decreaseNestingLevel();
635635
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ public TypeDescriptor getMapKeyTypeDescriptor() {
324324
*/
325325
public TypeDescriptor getMapKeyTypeDescriptor(Object key) {
326326
TypeDescriptor keyType = getMapKeyTypeDescriptor();
327-
return (keyType != TypeDescriptor.UNKNOWN ? keyType : TypeDescriptor.forObject(key));
327+
return (!TypeDescriptor.UNKNOWN.equals(keyType) ? keyType : TypeDescriptor.forObject(key));
328328
}
329329

330330
/**
@@ -353,7 +353,7 @@ public TypeDescriptor getMapValueTypeDescriptor() {
353353
*/
354354
public TypeDescriptor getMapValueTypeDescriptor(Object value) {
355355
TypeDescriptor valueType = getMapValueTypeDescriptor();
356-
return (valueType != TypeDescriptor.UNKNOWN ? valueType : TypeDescriptor.forObject(value));
356+
return (!TypeDescriptor.UNKNOWN.equals(valueType) ? valueType : TypeDescriptor.forObject(value));
357357
}
358358

359359
/**

0 commit comments

Comments
 (0)