Skip to content

Commit 8c68906

Browse files
author
Keith Donald
committed
null type descriptor handling
1 parent 5f8faa3 commit 8c68906

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public <T> T convertIfNecessary(String propertyName, Object oldValue, Object new
132132

133133
// No custom editor but custom ConversionService specified?
134134
ConversionService conversionService = this.propertyEditorRegistry.getConversionService();
135-
if (editor == null && conversionService != null && convertedValue != null) {
135+
if (editor == null && conversionService != null && convertedValue != null && typeDescriptor != null) {
136136
TypeDescriptor sourceTypeDesc = TypeDescriptor.forObject(newValue);
137137
TypeDescriptor targetTypeDesc = typeDescriptor;
138138
if (conversionService.canConvert(sourceTypeDesc, targetTypeDesc)) {

org.springframework.beans/src/test/java/org/springframework/beans/BeanWrapperTests.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,20 +70,41 @@
7070
public final class BeanWrapperTests {
7171

7272
@Test
73-
@Ignore
7473
public void testNullNestedTypeDescriptor() {
7574
Foo foo = new Foo();
7675
BeanWrapperImpl wrapper = new BeanWrapperImpl(foo);
7776
wrapper.setConversionService(new DefaultConversionService());
7877
wrapper.setAutoGrowNestedPaths(true);
7978
wrapper.setPropertyValue("listOfMaps[0]['luckyNumber']", "9");
80-
assertEquals(9, foo.listOfMaps.get(0).get("luckyNumber"));
79+
assertEquals("9", foo.listOfMaps.get(0).get("luckyNumber"));
80+
}
81+
82+
@Test
83+
public void testNullNestedTypeDescriptor2() {
84+
Foo foo = new Foo();
85+
BeanWrapperImpl wrapper = new BeanWrapperImpl(foo);
86+
wrapper.setConversionService(new DefaultConversionService());
87+
wrapper.setAutoGrowNestedPaths(true);
88+
Map<String, String> map = new HashMap<String, String>();
89+
map.put("favoriteNumber", "9");
90+
wrapper.setPropertyValue("list[0]", map);
91+
assertEquals(map, foo.list.get(0));
8192
}
8293

8394
static class Foo {
8495

96+
private List list;
97+
8598
private List<Map> listOfMaps;
8699

100+
public List getList() {
101+
return list;
102+
}
103+
104+
public void setList(List list) {
105+
this.list = list;
106+
}
107+
87108
public List<Map> getListOfMaps() {
88109
return listOfMaps;
89110
}

0 commit comments

Comments
 (0)