Browse Source

RelaxedDataBinder handling for untyped map

Fixes gh-709
pull/687/merge
Patrick Radtke 12 years ago committed by Dave Syer
parent
commit
80652007b5
  1. 3
      spring-boot/src/main/java/org/springframework/boot/bind/RelaxedDataBinder.java
  2. 23
      spring-boot/src/test/java/org/springframework/boot/bind/RelaxedDataBinderTests.java

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

@ -229,6 +229,9 @@ public class RelaxedDataBinder extends DataBinder { @@ -229,6 +229,9 @@ public class RelaxedDataBinder extends DataBinder {
return;
}
TypeDescriptor descriptor = parent.getMapValueTypeDescriptor();
if (descriptor == null) {
descriptor = TypeDescriptor.valueOf(Object.class);
}
if (!descriptor.isMap() && !descriptor.isCollection()
&& !descriptor.getType().equals(Object.class)) {
return;

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

@ -258,6 +258,13 @@ public class RelaxedDataBinderTests { @@ -258,6 +258,13 @@ public class RelaxedDataBinderTests {
assertEquals("123", target.getNested().get("value"));
}
@Test
public void testBindNestedUntypedMap() throws Exception {
TargetWithNestedUntypedMap target = new TargetWithNestedUntypedMap();
bind(target, "nested.foo: bar\n" + "nested.value: 123");
assertEquals("123", target.getNested().get("value"));
}
@Test
public void testBindNestedMapOfString() throws Exception {
TargetWithNestedMapOfString target = new TargetWithNestedMapOfString();
@ -503,6 +510,22 @@ public class RelaxedDataBinderTests { @@ -503,6 +510,22 @@ public class RelaxedDataBinderTests {
}
}
@SuppressWarnings("rawtypes")
public static class TargetWithNestedUntypedMap {
private Map nested;
public Map getNested() {
return this.nested;
}
public void setNested(Map nested) {
this.nested = nested;
}
}
public static class TargetWithNestedMapOfString {

Loading…
Cancel
Save