@@ -787,8 +787,8 @@ else if (value instanceof Map) {
787
787
Class <?> mapKeyType = GenericCollectionTypeResolver .getMapKeyReturnType (pd .getReadMethod (), i + 1 );
788
788
// IMPORTANT: Do not pass full property name in here - property editors
789
789
// must not kick in for map keys but rather only for map values.
790
- Object convertedMapKey = convertIfNecessary ( null , null , key , mapKeyType ,
791
- new PropertyTypeDescriptor ( mapKeyType , new MethodParameter ( pd . getReadMethod (), - 1 ), pd ) );
790
+ TypeDescriptor typeDescriptor = mapKeyType != null ? TypeDescriptor . valueOf ( mapKeyType ) : TypeDescriptor . valueOf ( Object . class );
791
+ Object convertedMapKey = convertIfNecessary ( null , null , key , mapKeyType , typeDescriptor );
792
792
value = map .get (convertedMapKey );
793
793
}
794
794
else {
@@ -935,8 +935,10 @@ else if (propValue.getClass().isArray()) {
935
935
if (isExtractOldValueForEditor ()) {
936
936
oldValue = Array .get (propValue , arrayIndex );
937
937
}
938
+ MethodParameter methodParameter = new MethodParameter (pd .getReadMethod (), -1 );
939
+ methodParameter .increaseNestingLevel ();
938
940
Object convertedValue = convertIfNecessary (propertyName , oldValue , pv .getValue (), requiredType ,
939
- new PropertyTypeDescriptor (requiredType , new MethodParameter ( pd . getReadMethod (), - 1 ) , pd ));
941
+ new PropertyTypeDescriptor (requiredType , methodParameter , pd ));
940
942
Array .set (propValue , arrayIndex , convertedValue );
941
943
}
942
944
catch (IndexOutOfBoundsException ex ) {
@@ -954,8 +956,10 @@ else if (propValue instanceof List) {
954
956
if (isExtractOldValueForEditor () && index < list .size ()) {
955
957
oldValue = list .get (index );
956
958
}
959
+ MethodParameter methodParameter = new MethodParameter (pd .getReadMethod (), -1 );
960
+ methodParameter .increaseNestingLevel ();
957
961
Object convertedValue = convertIfNecessary (propertyName , oldValue , pv .getValue (), requiredType ,
958
- new PropertyTypeDescriptor (requiredType , new MethodParameter ( pd . getReadMethod (), - 1 ) , pd ));
962
+ new PropertyTypeDescriptor (requiredType , methodParameter , pd ));
959
963
if (index < list .size ()) {
960
964
list .set (index , convertedValue );
961
965
}
@@ -983,17 +987,19 @@ else if (propValue instanceof Map) {
983
987
Map map = (Map ) propValue ;
984
988
// IMPORTANT: Do not pass full property name in here - property editors
985
989
// must not kick in for map keys but rather only for map values.
986
- Object convertedMapKey = convertIfNecessary ( null , null , key , mapKeyType ,
987
- new PropertyTypeDescriptor ( mapKeyType , new MethodParameter ( pd . getReadMethod (), - 1 ), pd ) );
990
+ TypeDescriptor typeDescriptor = mapKeyType != null ? TypeDescriptor . valueOf ( mapKeyType ) : TypeDescriptor . valueOf ( Object . class );
991
+ Object convertedMapKey = convertIfNecessary ( null , null , key , mapKeyType , typeDescriptor );
988
992
Object oldValue = null ;
989
993
if (isExtractOldValueForEditor ()) {
990
994
oldValue = map .get (convertedMapKey );
991
995
}
992
996
// Pass full property name and old value in here, since we want full
993
997
// conversion ability for map values.
998
+ MethodParameter methodParameter = new MethodParameter (pd .getReadMethod (), -1 );
999
+ methodParameter .increaseNestingLevel ();
994
1000
Object convertedMapValue = convertIfNecessary (
995
1001
propertyName , oldValue , pv .getValue (), mapValueType ,
996
- new TypeDescriptor ( new MethodParameter ( pd . getReadMethod (), - 1 , tokens . keys . length + 1 ) ));
1002
+ new PropertyTypeDescriptor ( mapValueType , methodParameter , pd ));
997
1003
map .put (convertedMapKey , convertedMapValue );
998
1004
}
999
1005
else {
0 commit comments