jcr2spi NodeEntryImpl.getPath() blows stack due to getIndex() calling itself
----------------------------------------------------------------------------

                 Key: JCR-1099
                 URL: https://issues.apache.org/jira/browse/JCR-1099
             Project: Jackrabbit
          Issue Type: Bug
          Components: SPI
    Affects Versions: 2.0
            Reporter: David Rauschenbach


The jcr2spi NodeEntryImpl class contains logic that causes getIndex() to call 
itself.

Calling code:

    Session sess = repo.login(creds);
    Node inboxNode = sess.getRootNode().getNode("Inbox");
    inboxNode.getPath(); <== blows stack

Tracing reveals:

    1. NodeEntryImpl.getPath() ultimately calls getIndex()
    2. getIndex() calls NodeState.getDefinition()
    3. which calls ItemDefinitionProviderImpl.getQNodeDefinition(...)
    4. which catches a RepositoryException then calls 
NodeEntryImpl.getWorkspaceId()
    5. which calls NodeEntryImpl.getWorkspaceIndex()
    6. which calls getIndex() (back to step 2, ad infinitum)

Configuration:
    1. A configuration is loaded specifying in-memory persist manager
    2. Config is wrapped in TransientRepository
    3. that's wrapped in spi2jcr's RepositoryService using default 
BatchReadConfig
    4. a jcr2spi provider is instantiated that directly couples to spi2jcr
    5. Node in question is created as follows:

    Session sess = repo.login(creds);
    sess.getRootNode().addNode("Inbox", "nt:folder");
    sess.save();

I guess that's about it.
David

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

Reply via email to