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(NativeMethodAccessorImpl.java:39
> )
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
> .java:25)
>         at java.lang.reflect.Method.invoke(Method.java:324)
>         at
> org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.j
> ava:1612)
>         at
> org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.j
> ava:1506)
>         at
> org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.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]>

Reply via email to