You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Marcel Reutegger (JIRA)" <ji...@apache.org> on 2007/09/17 10:23:32 UTC

[jira] Updated: (JCR-1131) JCR2SPI NodeEntryImpl throws NPE during reorderNodes

     [ https://issues.apache.org/jira/browse/JCR-1131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Marcel Reutegger updated JCR-1131:
----------------------------------

    Affects Version/s:     (was: 1.4)

> JCR2SPI NodeEntryImpl throws NPE during reorderNodes
> ----------------------------------------------------
>
>                 Key: JCR-1131
>                 URL: https://issues.apache.org/jira/browse/JCR-1131
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: SPI
>            Reporter: David Rauschenbach
>
> Two folder nodes are created below root. From the root node, the 2nd folder is ordered before the first node. The request is batched up correctly, but upon save, NodeEntryImpl throws a NullPointerException in the first line of the completeTransientChanges method, because revertInfo.oldParent is null.
> Test code:
> 		final String FOLDER1 = "folder1", FOLDER2 = "folder2";
> 		
> 		// Create folder 1 on server in root
> 		Session serverSession = login(repository, creds);
> 		Node serverRootNode = serverSession.getRootNode();
> 		Node serverFolder1 = serverRootNode.addNode(FOLDER1, "nt:folder");
> 		
> 		// Create folder 2 on server in root
> 		Node serverFolder2 = serverRootNode.addNode(FOLDER2, "nt:folder");
> 		serverSession.save();
> 		
> 		// Validate order (TODO)
> 		
> 		// Perform reorder via client
> 		Session clientSession = login(clientRepository, creds);
> 		Node clientRootNode = clientSession.getRootNode();
> 		clientRootNode.orderBefore(FOLDER2, FOLDER1);
> 		clientSession.save(); <== Throws NPE
> Call Stack:
>     [junit] java.lang.NullPointerException
>     [junit]     at org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.completeTransientChanges(NodeEntryImpl.java:1354)
>     [junit]     at org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.access$1100(NodeEntryImpl.java:60)
>     [junit]     at org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl$RevertInfo.statusChanged(NodeEntryImpl.java:1465)
>     [junit]     at org.apache.jackrabbit.jcr2spi.state.ItemState.setStatus(ItemState.java:257)
>     [junit]     at org.apache.jackrabbit.jcr2spi.state.NodeState.adjustNodeState(NodeState.java:554)
>     [junit]     at org.apache.jackrabbit.jcr2spi.state.NodeState.persisted(NodeState.java:276)
>     [junit]     at org.apache.jackrabbit.jcr2spi.state.ChangeLog.persisted(ChangeLog.java:135)
>     [junit]     at org.apache.jackrabbit.jcr2spi.WorkspaceManager.execute(WorkspaceManager.java:479)
>     [junit]     at org.apache.jackrabbit.jcr2spi.state.SessionItemStateManager.save(SessionItemStateManager.java:149)
>     [junit]     at org.apache.jackrabbit.jcr2spi.ItemImpl.save(ItemImpl.java:239)
>     [junit]     at org.apache.jackrabbit.jcr2spi.SessionImpl.save(SessionImpl.java:317)
>     [junit]     at TestWsNodeReorder.testReorderNodes(TestWsNodeReorder.java:72)
> I'm using an SPI I implemented, in conjunction with the jcr2spi and spi2jcr bridges, coupled with a back-end Jackrabbit in-memory filesystem. So there's always the possibility that node or property SPI calls inject errors and cause this downstream problem.

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