Hmmm, that would mean starting to change one of the appfuse core test
classes.
I think I will set the test values hardcoded for now. 
But your workaround will definitely be very usefull for me in the future in
case this problem remains in future appfuse releases.
Thanks for the tip!!


Philip Barlow wrote:
> 
> I had this problem before and i got around it by using commons beanutils
> instead of springs implementation, you also have to switch "source" and
> "destination" parameters in the copyproperties method as commons takes
> them in the opposite way.
> 
> Don't know if there are any advantages to using springs version maybe
> Matt can give a quick answer?
> 
> Also as a general question to all, thread safety was discussed
> previously. What do most people define as thread safe objects/methods?
> Is it as simple as using the synchronized modifier?
> 
> Chun-Yian Liew wrote:
>> Correction, the sentence
>>
>> "The keys of those two entries are "null" and "class" both having a
>> PropertyDescriptor as value."
>>
>> should have been
>>
>> "The keys of those two entries are "empty" and "class" both having a
>> PropertyDescriptor as value."
>>
>> in my previous post.
>>
>>
>>
>> Chun-Yian Liew wrote:
>>   
>>> celeraman+, have you managed to get the properties based population
>>> working?
>>>
>>> I am currently running into a similar kind of a problem with the appfuse
>>> tutorial PersonDaoTest example.
>>> I am also trying to populate the Person object with the populate method
>>> of
>>> the BaseDaoTestCase class.
>>> At first I received a NullPointerException when I put the
>>> PersonDaoTest.properties file in the same directory as the
>>> PersonDaoTest.java file as explained on
>>> http://www.appfuse.org/display/APF/Using+Hibernate. After putting the
>>> properties file in the test resources directory as mentioned above the
>>> NullPointerException didn't occur anymore.
>>> But the person object in the example method "testAddAndRemovePerson" is
>>> now getting filled with null values.
>>>
>>> Because I just succeeded in getting my personDaoTest running as a junit
>>> test within eclipse I was able to start debugging this issue:
>>>
>>> 1. In the BaseDaoTestCase populate method BeanUtils.copyProperties(map,
>>> obj); is called, where map is a HashMap containing the key/values out of
>>> the PersonDaoTest.properties file and obj is the person object to be
>>> filled.
>>>
>>> 2. copyProperties(map, obj) ends up in another method of BeanUtils: 
>>>
>>> private static void copyProperties(Object source, Object target, Class
>>> editable, String[] ignoreProperties)
>>>
>>> were the following line is being executed
>>>
>>> 3. PropertyDescriptor sourcePd =
>>> getPropertyDescriptor(source.getClass(),
>>> targetPd.getName());
>>>
>>> Below you can see the code of the method called.
>>>
>>>     public static PropertyDescriptor getPropertyDescriptor(Class clazz,
>>> String propertyName)
>>>                     throws BeansException {
>>>
>>>             CachedIntrospectionResults cr =
>>> CachedIntrospectionResults.forClass(clazz);
>>>             return cr.getPropertyDescriptor(propertyName);
>>>     }
>>>
>>> and here is were it goes wrong. 
>>>
>>> The cr.getPropertyDescriptor is trying to retrieve a PropertyDescriptor
>>> for a given propertyName, i.e. firstName.
>>> It tries to look it up in the private Map propertyDescriptorCache of the
>>> org.springframework.beans.CachedIntrospectionResults class. At that
>>> moment
>>> that map only contains two entries.
>>> The keys of those two entries are "null" and "class" both having a
>>> PropertyDescriptor as value.
>>> So the getPropertyDescriptor is returning a null value for the requested
>>> propertyNames (id, firstName and lastName).
>>>
>>> Does anybody have an idea what the reason could be why that map doesn't
>>> contain the values for the values defined in the
>>> PersonDaoTest.properties
>>> file?
>>>
>>> Chun
>>>
>>>
>>>
>>> celeraman+ wrote:
>>>     
>>>> FIY, I got some progress...
>>>>
>>>>
>>>> 1. The bean definition in src/main/webapp/WEB-INF/aplicationContext.xml
>>>> file for DepartmentDao
>>>> was wrong as following: 
>>>>     <bean id="DepartmentDao"
>>>> class="org.appfuse.tutorial.dao.hibernate.DepartamentDaoHibernate">
>>>>         <property name="sessionFactory" ref="sessionFactory"/>
>>>>     </bean>
>>>>
>>>> Note *DepartmentDao* where must be *departmentDao*.
>>>>
>>>> 2. my test case properties files was including the id property. The
>>>> Hibernate Tutorial don't include a id property, so I think this could
>>>> be
>>>> a future problem and I removed it.
>>>>
>>>> 3. I replaced the populate method call by calling the setters for
>>>> myself
>>>> and bingo... the test case was BUILD SUCCESSFUL.
>>>>
>>>> But the question continues:
>>>> Why the populate method call do not load my Department bean from the
>>>> .properties file?
>>>>
>>>> Any help are welcome!
>>>>
>>>> --
>>>> celeraman+
>>>>
>>>>
>>>>       
>>>     
>>
>>   
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/NullPointerException-when-trying-to-populate-in-test-case-tf3604674s2369.html#a10228275
Sent from the AppFuse - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to