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.