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);


Reply via email to