You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Brian Whipple (JIRA)" <ji...@apache.org> on 2009/01/07 20:40:46 UTC
[jira] Commented: (JCR-1807) Removing peer nodes throws
RepositoryException
[ https://issues.apache.org/jira/browse/JCR-1807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12661677#action_12661677 ]
Brian Whipple commented on JCR-1807:
------------------------------------
I believe this problem is related to JCR-1880.
> Removing peer nodes throws RepositoryException
> ----------------------------------------------
>
> Key: JCR-1807
> URL: https://issues.apache.org/jira/browse/JCR-1807
> Project: Jackrabbit
> Issue Type: Bug
> Components: jackrabbit-core
> Affects Versions: core 1.4.6
> Reporter: Brian Whipple
> Attachments: RemoveNodeTest.java, TestAll.java
>
>
> The following UnitTest will reproduce the error. Note that 3 peer nodes must be removed to produce the exception. Additional testing shows that the paths are corrupted after the second remove.
> Also note that Node.getPath (per the comment in the test) must be invoked to produce the path corruption.
> This unit test is based on the jackrabbit-jcr-tests test framework. I will attach the java file too. Here is the test:
> package org.apache.jackrabbit.test.api;
> import javax.jcr.Node;
> import javax.jcr.NodeIterator;
> import javax.jcr.RepositoryException;
> import org.apache.jackrabbit.test.AbstractJCRTest;
> /**
> * <code>RemoveNodeTest</code> contains the test cases for the method
> * <code>Node.remove()</code>.
> *
> * @test
> * @sources RemoveNodeTest.java
> * @executeClass org.apache.jackrabbit.test.api.RemoveNodeTest
> * @keywords level2
> */
> public class RemoveNodeTest extends AbstractJCRTest
> {
> private static final String CHILD_NAME = "child";
> public void testAddThenRemovePeerNodes() throws Exception
> {
> // Must remove at least three peers so need to add three peer nodes
> long NUM_SIB_NODES = 3;
> for (long i = 0; i < NUM_SIB_NODES; i++)
> {
> testRootNode.addNode(CHILD_NAME);
> }
> // If this method is not invoked the test will pass
> // Getting the child node paths contributes to the error
> getPaths();
> // Remove all nodes
> removeNodes();
> testRootNode.save();
> // Validate that all nodes have been removed.
> long numChildren = testRootNode.getNodes(CHILD_NAME).getSize();
> assertEquals("Invalid number of child nodes", 0, numChildren);
> }
> private void getPaths() throws RepositoryException
> {
> NodeIterator childNodes = testRootNode.getNodes(CHILD_NAME);
> while (childNodes.hasNext())
> {
> Node child = childNodes.nextNode();
> child.getPath();
> }
> }
> private void removeNodes() throws RepositoryException
> {
> NodeIterator childNodes = testRootNode.getNodes(CHILD_NAME);
> while (childNodes.hasNext())
> {
> Node child = childNodes.nextNode();
> child.remove();
> }
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.