Backported DataBinder configuration tests
Issue: SPR-15009
This commit is contained in:
parent
9cb4de8b5e
commit
8d55c7d60a
|
|
@ -40,6 +40,7 @@ import org.junit.Rule;
|
|||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
|
||||
import org.springframework.beans.BeanWrapper;
|
||||
import org.springframework.beans.InvalidPropertyException;
|
||||
import org.springframework.beans.MutablePropertyValues;
|
||||
import org.springframework.beans.NotWritablePropertyException;
|
||||
|
|
@ -2013,6 +2014,77 @@ public class DataBinderTests {
|
|||
binder.setAutoGrowCollectionLimit(257);
|
||||
}
|
||||
|
||||
@Test // SPR-15009
|
||||
public void testSetCustomMessageCodesResolverBeforeInitializeBindingResultForBeanPropertyAccess() {
|
||||
TestBean testBean = new TestBean();
|
||||
DataBinder binder = new DataBinder(testBean, "testBean");
|
||||
DefaultMessageCodesResolver messageCodesResolver = new DefaultMessageCodesResolver();
|
||||
messageCodesResolver.setPrefix("errors.");
|
||||
binder.setMessageCodesResolver(messageCodesResolver);
|
||||
binder.setAutoGrowCollectionLimit(512); // allow configuration after set a MessageCodesResolver
|
||||
binder.initBeanPropertyAccess();
|
||||
|
||||
MutablePropertyValues mpv = new MutablePropertyValues();
|
||||
mpv.add("age", "invalid");
|
||||
binder.bind(mpv);
|
||||
assertEquals("errors.typeMismatch", binder.getBindingResult().getFieldError("age").getCode());
|
||||
assertEquals(512, BeanWrapper.class.cast(binder.getInternalBindingResult().getPropertyAccessor()).getAutoGrowCollectionLimit());
|
||||
}
|
||||
|
||||
@Test // SPR-15009
|
||||
public void testSetCustomMessageCodesResolverBeforeInitializeBindingResultForDirectFieldAccess() {
|
||||
TestBean testBean = new TestBean();
|
||||
DataBinder binder = new DataBinder(testBean, "testBean");
|
||||
DefaultMessageCodesResolver messageCodesResolver = new DefaultMessageCodesResolver();
|
||||
messageCodesResolver.setPrefix("errors.");
|
||||
binder.setMessageCodesResolver(messageCodesResolver);
|
||||
binder.initDirectFieldAccess();
|
||||
|
||||
MutablePropertyValues mpv = new MutablePropertyValues();
|
||||
mpv.add("age", "invalid");
|
||||
binder.bind(mpv);
|
||||
assertEquals("errors.typeMismatch", binder.getBindingResult().getFieldError("age").getCode());
|
||||
}
|
||||
|
||||
@Test // SPR-15009
|
||||
public void testSetCustomMessageCodesResolverAfterInitializeBindingResult() {
|
||||
TestBean testBean = new TestBean();
|
||||
DataBinder binder = new DataBinder(testBean, "testBean");
|
||||
binder.initBeanPropertyAccess();
|
||||
DefaultMessageCodesResolver messageCodesResolver = new DefaultMessageCodesResolver();
|
||||
messageCodesResolver.setPrefix("errors.");
|
||||
binder.setMessageCodesResolver(messageCodesResolver);
|
||||
|
||||
MutablePropertyValues mpv = new MutablePropertyValues();
|
||||
mpv.add("age", "invalid");
|
||||
binder.bind(mpv);
|
||||
assertEquals("errors.typeMismatch", binder.getBindingResult().getFieldError("age").getCode());
|
||||
}
|
||||
|
||||
@Test // SPR-15009
|
||||
public void testSetMessageCodesResolverIsNullAfterInitializeBindingResult() {
|
||||
TestBean testBean = new TestBean();
|
||||
DataBinder binder = new DataBinder(testBean, "testBean");
|
||||
binder.initBeanPropertyAccess();
|
||||
binder.setMessageCodesResolver(null);
|
||||
|
||||
MutablePropertyValues mpv = new MutablePropertyValues();
|
||||
mpv.add("age", "invalid");
|
||||
binder.bind(mpv);
|
||||
assertEquals("typeMismatch", binder.getBindingResult().getFieldError("age").getCode()); // Keep a default MessageCodesResolver
|
||||
}
|
||||
|
||||
@Test // SPR-15009
|
||||
public void testCallSetMessageCodesResolverTwice() {
|
||||
expectedException.expect(IllegalStateException.class);
|
||||
expectedException.expectMessage("DataBinder is already initialized with MessageCodesResolver");
|
||||
|
||||
TestBean testBean = new TestBean();
|
||||
DataBinder binder = new DataBinder(testBean, "testBean");
|
||||
binder.setMessageCodesResolver(new DefaultMessageCodesResolver());
|
||||
binder.setMessageCodesResolver(new DefaultMessageCodesResolver());
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static class BeanWithIntegerList {
|
||||
|
|
|
|||
Loading…
Reference in New Issue