Stefan Guggisberg wrote:
hi aleks,

On 9/8/05, Aleksandar Pecanov <[EMAIL PROTECTED]> wrote:
I was just being curious:

When the persistance manager tries to remove a node, it tries to load
it's references.

not quite correct. it first checks the existence of node references:

ItemImpl.checkReferences(), line 831

                    if (stateMgr.hasNodeReferences(id)) {
                        refs = stateMgr.getNodeReferences(id);
                    }

SharedItemStateManager.hasNodeReferences(), line 222

                if (persistMgr.exists(id)) {
                    return true;
                }


If there are no references the persistance manager
fails throwing NoSuchItemStateException.

that shouldn't happen before the persistence manager is asked first to check the existence. (see above).
btw, what persistence manager are you using?

Isn't it possible that no node
references were made. I was monitoring the calls to the persistance
manager, and discovered that no store operation was performed on any
node references (none that were needed, but I am not sure how jackrabbit
works so I ignored that fact).
Can anyone, please give me any explanation?

references to a target node (i.e. properties of type REFERENCE that point to a specific target node) are represented by a NodeReferences
object. a NodeReferences object is basically a collection of property ids
(i.e. ids of those properties that refer to a given target node).

NodeReferences are created on demand. if there are no REFERENCE properties refering to a given target node, there won't be any corresponding
NodeReferences object for that target node.

cheers
stefan

Thanx



Sorry, I figured that out. I'm using a custom made persistence manager, and I found out that there was a bug in it.

Reply via email to