jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephane Landelle (JIRA)" <j...@apache.org>
Subject [jira] Created: (JCR-1470) NPE in BeanReferenceCollectionConverterImpl on update on empty collection
Date Wed, 12 Mar 2008 14:14:46 GMT
NPE in BeanReferenceCollectionConverterImpl on update on empty collection

                 Key: JCR-1470
                 URL: https://issues.apache.org/jira/browse/JCR-1470
             Project: Jackrabbit
          Issue Type: Bug
          Components: observation
    Affects Versions: 1.5
         Environment: mac os leopard, java5
            Reporter: Stephane Landelle

use case :
in the same transaction :
*) retrieve an object that has a collection of references, yet empty
*) add an element in the collection
*) update the object

consequence :
org.apache.jackrabbit.ocm.exception.ObjectContentManagerException: Cannot insert collection
field : authors of class com.weka.content.api.model.Folder; nested exception is java.lang.NullPointerException:
	at org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ManageableArrayList$$EnhancerByCGLIB$$8f15dde4.getSize(<generated>)
	at org.apache.jackrabbit.ocm.manager.collectionconverter.impl.BeanReferenceCollectionConverterImpl.addUuidProperties(BeanReferenceCollectionConverterImpl.java:154)
	at org.apache.jackrabbit.ocm.manager.collectionconverter.impl.BeanReferenceCollectionConverterImpl.doUpdateCollection(BeanReferenceCollectionConverterImpl.java:101)

The failing line is in addUuidProperties :
Value[] values = new Value[collection.getSize()];

It seems the CGlib enhanced collection fails and needs to be initialized before.

For example, in doUpdateCollection, if I code :
		// Delete existing values
		if (parentNode.hasProperty(jcrName)) {
			parentNode.setProperty(jcrName, (Value[]) null);
		if (collection != null) {
			collection.getSize();         <<<<<<
I get a NPE on collection.getSize();

but if I code :
		if (collection != null) {

		// Delete existing values
		if (parentNode.hasProperty(jcrName)) {
			parentNode.setProperty(jcrName, (Value[]) null);
everything runs fine?!

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message