[ https://issues.apache.org/jira/browse/JCR-2740?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thomas Mueller resolved JCR-2740. --------------------------------- Resolution: Fixed > On missing child node, automatically remove the entry (when a session > attribute is set) > --------------------------------------------------------------------------------------- > > Key: JCR-2740 > URL: https://issues.apache.org/jira/browse/JCR-2740 > Project: Jackrabbit Content Repository > Issue Type: New Feature > Components: jackrabbit-core > Reporter: Thomas Mueller > Assignee: Thomas Mueller > Fix For: 2.2.0 > > Attachments: jcr-2740-b.patch, jcr-2740-c.patch, JCR-2740-d.patch, > jcr-2740.patch > > > If a node points to a non-existing child node (which is a repository > inconsistency), currently this child node is silently ignored for read > operations (as far as I can tell). However, when trying to add another child > node with the same name, an exception is thrown with a message saying a child > node with this name already exists. Also, the parent node can't be removed. > One solution is to remove the bad child node entry, but only if the session > attribute "org.apache.jackrabbit.autoFixCorruptions" is set (so by default > the repository is not changed 'secretly'): > SimpleCredentials cred = new SimpleCredentials(...); > cred.setAttribute("org.apache.jackrabbit.autoFixCorruptions", "true"); > rep.login(cred); > It's not a perfect solution, but it might be better than throwing an > exception and basically preventing changes. > Another solution (not implemented) would be to rename the missing child node > entry when trying to add a child node with the same name (for example add the > current date/time, or a random digit until there is no conflict), and then > continue with adding the new child node. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.