Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jackrabbit.test.api.version;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.RepositoryException;
import javax.jcr.version.VersionManager;
/**
* MergeShallowTest contains tests dealing with general shallow
* merge calls.
*
*/
public class MergeShallowTest extends AbstractMergeTest {
/**
* node to merge
*/
Node nodeToMerge;
String newValue;
protected void setUp() throws Exception {
super.setUp();
nodeToMerge = testRootNodeW2.getNode(nodeName1);
}
protected void tearDown() throws Exception {
nodeToMerge = null;
super.tearDown();
}
public void testMergeRecursive() throws RepositoryException {
VersionManager vm2 = testRootNodeW2.getSession().getWorkspace().getVersionManager();
NodeIterator iter = vm2.merge(nodeToMerge.getPath(),
superuser.getWorkspace().getName(), true, false);
if (iter.hasNext()) {
StringBuffer failed = new StringBuffer();
while (iter.hasNext()) {
failed.append(iter.nextNode().getPath());
failed.append(", ");
}
fail("Merge must not fail. failed nodes: " + failed);
return;
}
String p1 = nodeToMerge.getProperty(propertyName1).getString();
String p2 = nodeToMerge.getProperty(nodeName2 + "/" + propertyName1).getString();
assertEquals("Recursive merge did not restore property on level 1.", newValue, p1);
assertEquals("Recursive merge did not restore property on level 2.", newValue, p2);
}
public void testMergeShallow() throws RepositoryException {
String oldP2 = nodeToMerge.getProperty(nodeName2 + "/" + propertyName1).getString();
VersionManager vm2 = testRootNodeW2.getSession().getWorkspace().getVersionManager();
NodeIterator iter = vm2.merge(nodeToMerge.getPath(),
superuser.getWorkspace().getName(), true, true);
if (iter.hasNext()) {
StringBuffer failed = new StringBuffer();
while (iter.hasNext()) {
failed.append(iter.nextNode().getPath());
failed.append(", ");
}
fail("Merge must not fail. failed nodes: " + failed);
return;
}
String p1 = nodeToMerge.getProperty(propertyName1).getString();
String p2 = nodeToMerge.getProperty(nodeName2 + "/" + propertyName1).getString();
assertEquals("Shallow merge did not restore property on level 1.", newValue, p1);
assertEquals("Shallow merge did restore property on level 2.", oldP2, p2);
}
/**
* initialize a versionable node on default and second workspace
*/
protected void initNodes() throws RepositoryException {
VersionManager versionManager = testRootNode.getSession().getWorkspace().getVersionManager();
// create a versionable node
// nodeName1
Node topVNode = testRootNode.addNode(nodeName1, versionableNodeType);
topVNode.setProperty(propertyName1, topVNode.getName());
String path = topVNode.getPath();
// create a versionable sub node
// nodeName1/nodeName2
Node subNvNode = topVNode.addNode(nodeName2, versionableNodeType);
subNvNode.setProperty(propertyName1, subNvNode.getName());
String path2 = subNvNode.getPath();
// save default workspace
testRootNode.getSession().save();
versionManager.checkin(path);
versionManager.checkin(path2);
log.println("test nodes created successfully on " + workspace.getName());
// clone the newly created node from src workspace into second workspace
// todo clone on testRootNode does not seem to work.
// workspaceW2.clone(workspace.getName(), testRootNode.getPath(), testRootNode.getPath(), true);
workspaceW2.clone(workspace.getName(), topVNode.getPath(), topVNode.getPath(), true);
log.println(topVNode.getPath() + " cloned on " + superuserW2.getWorkspace().getName() + " at " + topVNode.getPath());
testRootNodeW2 = (Node) superuserW2.getItem(testRoot);
versionManager.checkout(path);
versionManager.checkout(path2);
// update properties on source nodes
newValue = String.valueOf(System.currentTimeMillis());
Node n1 = testRootNode.getNode(nodeName1);
n1.setProperty(propertyName1, newValue);
Node n2 = n1.getNode(nodeName2);
n2.setProperty(propertyName1, newValue);
testRootNode.getSession().save();
VersionManager vm1 = testRootNode.getSession().getWorkspace().getVersionManager();
vm1.checkpoint(n2.getPath());
vm1.checkpoint(n1.getPath());
}
}