|
|
|
@ -148,6 +148,33 @@ public class RelaxedDataBinderTests { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void testAllowedFields() throws Exception { |
|
|
|
|
|
|
|
VanillaTarget target = new VanillaTarget(); |
|
|
|
|
|
|
|
RelaxedDataBinder binder = getBinder(target, null); |
|
|
|
|
|
|
|
binder.setAllowedFields("foo"); |
|
|
|
|
|
|
|
binder.setIgnoreUnknownFields(false); |
|
|
|
|
|
|
|
BindingResult result = bind(binder, target, "foo: bar\n" + "value: 123\n" |
|
|
|
|
|
|
|
+ "bar: spam"); |
|
|
|
|
|
|
|
assertEquals(0, target.getValue()); |
|
|
|
|
|
|
|
assertEquals("bar", target.getFoo()); |
|
|
|
|
|
|
|
assertEquals(0, result.getErrorCount()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void testDisallowedFields() throws Exception { |
|
|
|
|
|
|
|
VanillaTarget target = new VanillaTarget(); |
|
|
|
|
|
|
|
RelaxedDataBinder binder = getBinder(target, null); |
|
|
|
|
|
|
|
// Disallowed fields are not unknown...
|
|
|
|
|
|
|
|
binder.setDisallowedFields("foo", "bar"); |
|
|
|
|
|
|
|
binder.setIgnoreUnknownFields(false); |
|
|
|
|
|
|
|
BindingResult result = bind(binder, target, "foo: bar\n" + "value: 123\n" |
|
|
|
|
|
|
|
+ "bar: spam"); |
|
|
|
|
|
|
|
assertEquals(123, target.getValue()); |
|
|
|
|
|
|
|
assertEquals(null, target.getFoo()); |
|
|
|
|
|
|
|
assertEquals(0, result.getErrorCount()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void testBindNested() throws Exception { |
|
|
|
public void testBindNested() throws Exception { |
|
|
|
TargetWithNestedObject target = new TargetWithNestedObject(); |
|
|
|
TargetWithNestedObject target = new TargetWithNestedObject(); |
|
|
|
@ -309,20 +336,29 @@ public class RelaxedDataBinderTests { |
|
|
|
return bind(target, values, null); |
|
|
|
return bind(target, values, null); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private BindingResult bind(Object target, String values, String namePrefix) |
|
|
|
private BindingResult bind(DataBinder binder, Object target, String values) |
|
|
|
throws Exception { |
|
|
|
throws Exception { |
|
|
|
Properties properties = PropertiesLoaderUtils |
|
|
|
Properties properties = PropertiesLoaderUtils |
|
|
|
.loadProperties(new ByteArrayResource(values.getBytes())); |
|
|
|
.loadProperties(new ByteArrayResource(values.getBytes())); |
|
|
|
DataBinder binder = new RelaxedDataBinder(target, namePrefix); |
|
|
|
binder.bind(new MutablePropertyValues(properties)); |
|
|
|
|
|
|
|
binder.validate(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return binder.getBindingResult(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private BindingResult bind(Object target, String values, String namePrefix) |
|
|
|
|
|
|
|
throws Exception { |
|
|
|
|
|
|
|
return bind(getBinder(target, namePrefix), target, values); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private RelaxedDataBinder getBinder(Object target, String namePrefix) { |
|
|
|
|
|
|
|
RelaxedDataBinder binder = new RelaxedDataBinder(target, namePrefix); |
|
|
|
binder.setIgnoreUnknownFields(false); |
|
|
|
binder.setIgnoreUnknownFields(false); |
|
|
|
LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean(); |
|
|
|
LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean(); |
|
|
|
validatorFactoryBean.afterPropertiesSet(); |
|
|
|
validatorFactoryBean.afterPropertiesSet(); |
|
|
|
binder.setValidator(validatorFactoryBean); |
|
|
|
binder.setValidator(validatorFactoryBean); |
|
|
|
binder.setConversionService(this.conversionService); |
|
|
|
binder.setConversionService(this.conversionService); |
|
|
|
binder.bind(new MutablePropertyValues(properties)); |
|
|
|
return binder; |
|
|
|
binder.validate(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return binder.getBindingResult(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Documented |
|
|
|
@Documented |
|
|
|
|