VersionException when merging workspaces
satyakishor.m Mar 29, 2013 3:51 PMI am running into the following exception when I try to merge two workspaces.
15:43:40,522 ERROR [stderr] (http--127.0.0.1-8080-1) javax.jcr.version.VersionException: Cannot add the child node named 'child2' under '/parent1' because it is checked in and the child's node definition '*' has an on-parent-version attribute of 'VERSION' (must be 'ignore' to add child to checked-in parent)
15:43:40,522 ERROR [stderr] (http--127.0.0.1-8080-1) at org.modeshape.jcr.AbstractJcrNode.addChildNode(AbstractJcrNode.java:1050)
15:43:40,538 ERROR [stderr] (http--127.0.0.1-8080-1) at org.modeshape.jcr.JcrWorkspace.copy(JcrWorkspace.java:193)
15:43:40,538 ERROR [stderr] (http--127.0.0.1-8080-1) at org.modeshape.jcr.JcrVersionManager$MergeCommand.doUpdate(JcrVersionManager.java:1746)
15:43:40,553 ERROR [stderr] (http--127.0.0.1-8080-1) at org.modeshape.jcr.JcrVersionManager$MergeCommand.doMerge(JcrVersionManager.java:1696)
15:43:40,553 ERROR [stderr] (http--127.0.0.1-8080-1) at org.modeshape.jcr.JcrVersionManager$MergeCommand.doUpdate(JcrVersionManager.java:1762)
15:43:40,553 ERROR [stderr] (http--127.0.0.1-8080-1) at org.modeshape.jcr.JcrVersionManager$MergeCommand.doMerge(JcrVersionManager.java:1685)
15:43:40,569 ERROR [stderr] (http--127.0.0.1-8080-1) at org.modeshape.jcr.JcrVersionManager$MergeCommand.execute(JcrVersionManager.java:1656)
15:43:40,569 ERROR [stderr] (http--127.0.0.1-8080-1) at org.modeshape.jcr.JcrVersionManager.merge(JcrVersionManager.java:939)
15:43:40,585 ERROR [stderr] (http--127.0.0.1-8080-1) at org.modeshape.jcr.JcrVersionManager.merge(JcrVersionManager.java:783)
15:43:40,585 ERROR [stderr] (http--127.0.0.1-8080-1) at org.modeshape.jcr.JcrVersionManager.merge(JcrVersionManager.java:768)
Following are CND and code details
CND
[Parent] > mix:versionable
- name (string) copy
+ * (Child) version
[Child] > mix:versionable
- name (string) copy
Code
session = repository.login("default"); // Logging into default workspace
Node root = session.getRootNode();
VersionManager vm = session.getWorkspace().getVersionManager();
Node parent1 = root.addNode("parent1", "Parent");
session.save();
vm.checkin(parent1.getPath());
vm.checkout(parent1.getPath());
Node child1 = parent1.addNode("child1", "Child"); // adding a child node under parent1
session.save();
vm.checkin(child1.getPath());
vm.checkin(parent1.getPath());
session.getWorkspace().createWorkspace("clone", "default"); // creating clone workspace
session = repository.login("clone"); // logging into clone workspace
vm = session.getWorkspace().getVersionManager();
vm.checkout("/parent1");
Node child2 = session.getNode("/parent1").addNode("child2", "Child"); // adding a new child node under parent1 in cloned workspace
session.save();
vm.checkin("/parent1/child2");
vm.checkin("/parent1");
session = repository.login("default");
vm = session.getWorkspace().getVersionManager();
vm.merge("/", "clone", false); // merging into default workspace is throwing exception
Am I doing some thing wrong here??