Author: britter Date: Sun Oct 19 18:02:20 2014 New Revision: 1632962 URL: http://svn.apache.org/r1632962 Log: Use NullObject pattern when indexed properties return null
Modified: commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/DefaultIndexedPropertyGetterAccessor.java commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/GetIndexedPropertyTestCase.java Modified: commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/DefaultIndexedPropertyGetterAccessor.java URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/DefaultIndexedPropertyGetterAccessor.java?rev=1632962&r1=1632961&r2=1632962&view=diff ============================================================================== --- commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/DefaultIndexedPropertyGetterAccessor.java (original) +++ commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/DefaultIndexedPropertyGetterAccessor.java Sun Oct 19 18:02:20 2014 @@ -46,6 +46,9 @@ final class DefaultIndexedPropertyGetter checkArgument(index >= 0, "Indexed property '%s' in bean of type %s cannot be get from a negative index %s", propertyName, bean.getClass().getName(), index); Object indexedValue = invokeGetter(index); + if (indexedValue == null) { + return new NullBeanAccessor<Object>(bean.getClass().getName(), indexedReadMethod.getName()); + } return BeanAccessorFactory.createBeanAccessor(indexedValue); } Modified: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/GetIndexedPropertyTestCase.java URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/GetIndexedPropertyTestCase.java?rev=1632962&r1=1632961&r2=1632962&view=diff ============================================================================== --- commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/GetIndexedPropertyTestCase.java (original) +++ commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/GetIndexedPropertyTestCase.java Sun Oct 19 18:02:20 2014 @@ -20,6 +20,7 @@ package org.apache.commons.beanutils2; import static org.apache.commons.beanutils2.BeanUtils.on; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import org.apache.commons.beanutils2.testbeans.TestBean; import org.apache.commons.beanutils2.testbeans.ThrowingExceptionBean; @@ -68,6 +69,13 @@ public class GetIndexedPropertyTestCase assertEquals(expected, accessor.get()); } + @Test + public void getIndexedForNullIndex() throws Exception { + testBean.setStringIndexed(0, null); + BeanAccessor<?> accessor = on(testBean).getIndexed("stringIndexed").at(0); + assertNull(accessor.get()); + } + @Test(expected = PropertyGetterInvocationException.class) public void getExceptionIndexed() { on(exceptionBean).getIndexed("exceptionIndexed").at(0);