Skip to content

Commit 8065200

Browse files
Patrick RadtkeDave Syer
authored andcommitted
RelaxedDataBinder handling for untyped map
Fixes gh-709
1 parent a77fee9 commit 8065200

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

spring-boot/src/main/java/org/springframework/boot/bind/RelaxedDataBinder.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,9 @@ private void extendMapIfNecessary(BeanWrapper wrapper, BeanPath path, int index)
229229
return;
230230
}
231231
TypeDescriptor descriptor = parent.getMapValueTypeDescriptor();
232+
if (descriptor == null) {
233+
descriptor = TypeDescriptor.valueOf(Object.class);
234+
}
232235
if (!descriptor.isMap() && !descriptor.isCollection()
233236
&& !descriptor.getType().equals(Object.class)) {
234237
return;

spring-boot/src/test/java/org/springframework/boot/bind/RelaxedDataBinderTests.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,13 @@ public void testBindNestedMap() throws Exception {
258258
assertEquals("123", target.getNested().get("value"));
259259
}
260260

261+
@Test
262+
public void testBindNestedUntypedMap() throws Exception {
263+
TargetWithNestedUntypedMap target = new TargetWithNestedUntypedMap();
264+
bind(target, "nested.foo: bar\n" + "nested.value: 123");
265+
assertEquals("123", target.getNested().get("value"));
266+
}
267+
261268
@Test
262269
public void testBindNestedMapOfString() throws Exception {
263270
TargetWithNestedMapOfString target = new TargetWithNestedMapOfString();
@@ -503,6 +510,22 @@ public void setNested(Map<String, Object> nested) {
503510
}
504511

505512
}
513+
514+
@SuppressWarnings("rawtypes")
515+
public static class TargetWithNestedUntypedMap {
516+
517+
private Map nested;
518+
519+
public Map getNested() {
520+
return this.nested;
521+
}
522+
523+
public void setNested(Map nested) {
524+
this.nested = nested;
525+
}
526+
527+
}
528+
506529

507530
public static class TargetWithNestedMapOfString {
508531

0 commit comments

Comments
 (0)