NPE in ItemManager when calling Session.save() with nothing to save
-------------------------------------------------------------------

                 Key: JCR-3131
                 URL: https://issues.apache.org/jira/browse/JCR-3131
             Project: Jackrabbit Content Repository
          Issue Type: Bug
          Components: jackrabbit-core
    Affects Versions: 2.3.2
            Reporter: Bertrand Delacretaz
            Priority: Minor


I'm getting an NPE on the id.denoteNodes() call below, in ItemManager:

    private ItemData retrieveItem(ItemId id) {
        synchronized (itemCache) {
            ItemData data = itemCache.get(id);
            if (data == null && id.denotesNode()) {
...

because the id is null after taking the second branch of this if in 
SessionSaveOperation.perform:

        if (context.getSessionImpl().hasPermission("/", Session.ACTION_READ)) {
            id = context.getRootNodeId();
        } else {
            id = context.getItemStateManager().getIdOfRootTransientNodeState();
        }

context.toString() says:

session-author-3623:
ItemManager (org.apache.jackrabbit.core.ItemManager@1e911ccc)
Items in cache:

SessionItemStateManager 
(org.apache.jackrabbit.core.state.SessionItemStateManager@15472b43)
[transient]
{}[attic]
{}

which I assume means there's nothing to save.

The correct behavior is probably to do nothing in perform to avoid the NPE.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to