Detect invalid configuration for autoGrowCollectionLimit on DataBinder
Issue: SPR-14888
This commit is contained in:
@@ -36,8 +36,10 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.junit.rules.ExpectedException;
|
||||
import org.springframework.beans.InvalidPropertyException;
|
||||
import org.springframework.beans.MutablePropertyValues;
|
||||
import org.springframework.beans.NotWritablePropertyException;
|
||||
@@ -69,9 +71,13 @@ import static org.junit.Assert.*;
|
||||
* @author Rod Johnson
|
||||
* @author Juergen Hoeller
|
||||
* @author Rob Harrop
|
||||
* @author Kazuki Shimizu
|
||||
*/
|
||||
public class DataBinderTests {
|
||||
|
||||
@Rule
|
||||
public ExpectedException expectedException = ExpectedException.none();
|
||||
|
||||
@Test
|
||||
public void testBindingNoErrors() throws Exception {
|
||||
TestBean rod = new TestBean();
|
||||
@@ -1982,6 +1988,30 @@ public class DataBinderTests {
|
||||
assertEquals("age", binder.getBindingResult().getFieldError("age").getField());
|
||||
}
|
||||
|
||||
@Test // SPR-14888
|
||||
public void testSetAutoGrowCollectionLimit() {
|
||||
BeanWithIntegerList tb = new BeanWithIntegerList();
|
||||
DataBinder binder = new DataBinder(tb);
|
||||
binder.setAutoGrowCollectionLimit(257);
|
||||
MutablePropertyValues pvs = new MutablePropertyValues();
|
||||
pvs.add("integerList[256]", "1");
|
||||
|
||||
binder.bind(pvs);
|
||||
assertEquals(257, tb.getIntegerList().size());
|
||||
assertEquals(Integer.valueOf(1), tb.getIntegerList().get(256));
|
||||
assertEquals(Integer.valueOf(1), binder.getBindingResult().getFieldValue("integerList[256]"));
|
||||
}
|
||||
|
||||
@Test // SPR-14888
|
||||
public void testSetAutoGrowCollectionLimitAfterInitialization() {
|
||||
|
||||
expectedException.expect(IllegalStateException.class);
|
||||
expectedException.expectMessage("DataBinder is already initialized - call setAutoGrowCollectionLimit before other configuration methods");
|
||||
|
||||
DataBinder binder = new DataBinder(new BeanWithIntegerList());
|
||||
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
|
||||
binder.setAutoGrowCollectionLimit(257);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static class BeanWithIntegerList {
|
||||
|
||||
Reference in New Issue
Block a user