commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marcus Zander (Created) (JIRA)" <>
Subject [jira] [Created] (BEANUTILS-411) BeanUtilsBean.setProperty throws IllegalArgumentException if getter of nested property returns null
Date Tue, 20 Mar 2012 13:31:37 GMT
BeanUtilsBean.setProperty throws IllegalArgumentException if getter of nested property returns

                 Key: BEANUTILS-411
             Project: Commons BeanUtils
          Issue Type: Bug
          Components: Bean / Property Utils
    Affects Versions: 1.8.3, 1.8.2, 1.8.1, 1.8.0
         Environment: Apache Struts 1.3.10 (latest) uses commons-beanutils 1.8.0
            Reporter: Marcus Zander

The issue is like #BEANUTILS-331, BEANUTILS-339 where BeanUtils.populate() -> BeanUtilsBean.setProperty
throws an IllegalArgumentException when it should not.

error situation (see attached JUnitTest): 
BeanUtilsBean.setProperty(bean,"", value) with a nested property "" where bean.getFoo()
returns null.
Line 903 (in 1.8.0 -1.8.3) getPropertyUtils().getProperty(target,;
returns null (because bean.getFoo() returns null) which is not handled correctly.
The Exception is thrown in line 963 because target == null.

SetProperty should silently return like in the case the property does not exist.

BeanUtils.populate(), BeanUtilsBean.setProperty are used by Struts to populate HTTP-Request-Parameters
to form beans (form backing objects). The request sent by a browser when clicking a <input
type="image" name="imgLink"...> contains parameters "imgLink.x" and "imgLink.y". These
request parameters should not let to an error when populating to a bean which has the property
The application should be able to process these parameters after bean populating, which is
not possible now because populate fails.

Test case to reproduce:
public class BeanUtilsBeanTest extends TestCase
      public void testSetProperty()
      throws Exception
          DummyBean testBean = new DummyBean(); // nested==null
          BeanUtilsBean instance = new BeanUtilsBean();
          /* fails with java.lang.IllegalArgumentException: No bean specified
          * Reason: getPropertyUtils().getProperty(target,; returnes
          *   because DummyBean.getImgLink() returns null
          instance.setProperty(testBean, "imgLink.x", "1");

    public class DummyBean
        private String imgLink = null; // stays null
        public String getImgLink ()
            return imgLink;
        public void setImgLink(String imgLink)
            this.imgLink = imgLink;

suggestion for a fix:
Return after line 903 if getProperty returns null and therefor target becomes null.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message