RelaxedDataBinder handling for untyped map

Fixes gh-709
This commit is contained in:
Patrick Radtke 2014-04-21 14:29:29 -07:00 committed by Dave Syer
parent a77fee9f18
commit 80652007b5
2 changed files with 26 additions and 0 deletions

View File

@ -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;

View File

@ -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 {
}
}
@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 {