As I'm looking to current code, this exception is thrown with
SessionItemStateManager, because associated instances of
TransientItemStateManager and TransientItemStateManager haven'n this
item.

I don't understand what createItemInstance method in item manager does -
first called method is for getting state of newly creating item:

        try {
            state = itemStateProvider.getItemState(id);
        } catch (NoSuchItemStateException nsise) {
            throw new ItemNotFoundException(id.toString());
        }
But how can  item has such state when we are in method for creating this
item, so the item doesn't exist yet?

Thanks,

Martin

Martin Koci píše v Po 19. 06. 2006 v 12:00 +0200:
> Hello, 
> 
> I'm adding recursively nodes, but this leads to exception occasionally:
> javax.jcr.ItemNotFoundException: d1a479a0-b822-43a3-8181-9380635fb02a
>       at
> org.apache.jackrabbit.core.ItemManager.createItemInstance(ItemManager.java:464)
>       at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:320)
>       at
> org.apache.jackrabbit.core.NodeImpl.internalAddChildNode(NodeImpl.java:794)
>       at
> org.apache.jackrabbit.core.NodeImpl.internalAddNode(NodeImpl.java:738)
>       at
> org.apache.jackrabbit.core.NodeImpl.internalAddNode(NodeImpl.java:685)
>       at org.apache.jackrabbit.core.NodeImpl.addNode(NodeImpl.java:1772)
>       at
> cz.aura.cms.preferences.impl.PreferencesServiceImpl.addRecursively(PreferencesServiceImpl.java:195)
> 
> 
> My code is:
> for (int i = 0; i < nodeNames.length; i++) {
>           relPath = nodeNames[i];
>                 if (workNode.hasNode(relPath) == false) {
>                     Node node = workNode.addNode(relPath);
>                     workNode = node;
>                 } else {
>                     workNode = workNode.getNode(relPath);
>                 }
> }
> 
> Unfortunately this behaviour is not reproducible with test and come on
> accidentally.
> 
> Thanks,
> 
> Martin
> 
> 
> 

Reply via email to