Dohhh! Revision 1.2 Thanks Tomas. I'll get the latest.
robert > -----Original Message----- > From: Tomas Viberg [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, July 09, 2002 3:58 PM > To: Jakarta Commons Users List > Subject: Re: BeanUtils.setProperty() throws NPE if value is null > > > It was fixed in revision 1.23 of BeanUtils.java, so I assume > you're not using the daily build? > > Regards, > Tomas Viberg <[EMAIL PROTECTED]> > > ----- Original Message ----- > From: "Robert Taylor" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Tuesday, July 09, 2002 9:02 PM > Subject: BeanUtils.setProperty() throws NPE if value is null > > > > I have a JavaBean called UserDTO: > > > > UserDTO > > int id; > > int roleId; > > int addressId; > > String name; > > > > I have another JavaBean called UserView > > > > UserView > > String id; > > String roleId; > > String addressId; > > String name; > > > > > > I get a description of UserView using BeanUtils.describe() > which I then use > > to populate UserDTO using BeanUtils.populate().... > > > > UserView view = new UserView(); > > view.setId("1"); > > Map description = BeanUtils.describe(view); > > UserDTO user = new UserDTO(); > > BeanUtils.populate(user, view); > > > > I get the following stack trace when it attempts to set the > "roleId" field > > with a null value. > > > > java.lang.NullPointerException > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorIm > pl.java:39 > > ) > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAc > cessorImpl > > .java:25) > > at java.lang.reflect.Method.invoke(Method.java:324) > > at > > > org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(Prope > rtyUtils.j > > ava:1612) > > at > > > org.apache.commons.beanutils.PropertyUtils.setNestedProperty(Prope > rtyUtils.j > > ava:1506) > > at > > > org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUti > ls.java:15 > > 36) > > at > > org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:681) > > at com.newatlanta.poc.UserViewForm.main(UserViewForm.java:275) > > > > The reason for this is due to the fact that the value is not > converted to > > the appropriate type > > and the null value is passed through to the PropertyUtils where the > > exception is thrown. > > > > > > My expectation would be that any primitives that were assigned > a value of > > null, would be assigned the default value for the respective > primitive type. > > (which in my case should be zero ). > > > > I fixed this problem by adding a condition to the scalar > conversion block. > > > > // value into scalar > > if (value instanceof String > > || (value == null && type.isPrimitive())) { <==== new > condition here > > > > .... > > > > } > > > > This fixed my problem, but I'm unsure why this wasn't added in the first > > place. Am I missing something here? > > > > robert > > > > > > -- > > To unsubscribe, e-mail: > <mailto:[EMAIL PROTECTED]> > > For additional commands, e-mail: > <mailto:[EMAIL PROTECTED]> > > > > > -- > To unsubscribe, e-mail: > <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: > <mailto:[EMAIL PROTECTED]> > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
