[ https://issues.apache.org/jira/browse/JCR-1131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marcel Reutegger resolved JCR-1131. ----------------------------------- Resolution: Fixed Fixed in revision: 576296 Thanks for reporting this issue. > 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.