properly wrap IndexOutOfBoundsException even for List

This commit is contained in:
Juergen Hoeller 2011-07-03 20:24:12 +00:00
parent b8f7d324af
commit 22939b6d05
2 changed files with 13 additions and 7 deletions

View File

@ -1005,7 +1005,13 @@ public class BeanWrapperImpl extends AbstractPropertyAccessor implements BeanWra
list.add(convertedValue);
}
else {
list.set(index, convertedValue);
try {
list.set(index, convertedValue);
}
catch (IndexOutOfBoundsException ex) {
throw new InvalidPropertyException(getRootClass(), this.nestedPath + propertyName,
"Invalid list index in property path '" + propertyName + "'", ex);
}
}
}
else if (propValue instanceof Map) {

View File

@ -1501,10 +1501,10 @@ public class DataBinderTests extends TestCase {
DataBinder binder = new DataBinder(testBean, "testBean");
MutablePropertyValues mpvs = new MutablePropertyValues();
mpvs.add("stringArray[4]", "");
mpvs.add("friends[4]", "");
binder.bind(mpvs);
assertEquals(5, testBean.getStringArray().length);
assertEquals(5, testBean.getFriends().size());
}
public void testAutoGrowBeyondDefaultLimit() throws Exception {
@ -1512,7 +1512,7 @@ public class DataBinderTests extends TestCase {
DataBinder binder = new DataBinder(testBean, "testBean");
MutablePropertyValues mpvs = new MutablePropertyValues();
mpvs.add("stringArray[256]", "");
mpvs.add("friends[256]", "");
try {
binder.bind(mpvs);
fail("Should have thrown InvalidPropertyException");
@ -1529,10 +1529,10 @@ public class DataBinderTests extends TestCase {
binder.setAutoGrowCollectionLimit(10);
MutablePropertyValues mpvs = new MutablePropertyValues();
mpvs.add("stringArray[4]", "");
mpvs.add("friends[4]", "");
binder.bind(mpvs);
assertEquals(5, testBean.getStringArray().length);
assertEquals(5, testBean.getFriends().size());
}
public void testAutoGrowBeyondCustomLimit() throws Exception {
@ -1541,7 +1541,7 @@ public class DataBinderTests extends TestCase {
binder.setAutoGrowCollectionLimit(10);
MutablePropertyValues mpvs = new MutablePropertyValues();
mpvs.add("stringArray[16]", "");
mpvs.add("friends[16]", "");
try {
binder.bind(mpvs);
fail("Should have thrown InvalidPropertyException");