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.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.nodetype.NodeType;
import javax.jcr.version.Version;
import javax.jcr.version.VersionManager;
/**
* ConfigurationsTest covers methods related to the Configurations
* feature in Versioning.
* @since JCR 2.0
*/
public class ConfigurationsTest extends AbstractVersionTest {
private VersionManager vm;
private static String PREFIX = "/jcr:system/jcr:configurations/";
private String ntConfiguration;
private Node versionableNode2;
protected void setUp() throws Exception {
super.setUp();
checkSupportedOption(Repository.OPTION_BASELINES_SUPPORTED);
vm = superuser.getWorkspace().getVersionManager();
versionableNode2 = createVersionableNode(testRootNode, nodeName4, versionableNodeType);
ntConfiguration = superuser.getNamespacePrefix(NS_NT_URI) + ":configuration";
}
protected void tearDown() throws Exception {
// remove configuration, otherwise
// subsequent tests will fail when cleaning the test root
if (versionableNode != null) {
removeConfiguration(versionableNode);
}
removeConfiguration(versionableNode2);
versionableNode2.remove();
// save is called in super.tearDown()
super.tearDown();
}
private void removeConfiguration(Node node) throws RepositoryException {
if (node.hasProperty("jcr:configuration")) {
node.getProperty("jcr:configuration").getNode().remove();
}
}
public void testCreateConfiguration() throws Exception {
Node config = vm.createConfiguration(versionableNode.getPath());
assertNotNull(config);
NodeType nt = config.getPrimaryNodeType();
assertTrue("created node must be subtype of nt:configuration", nt.isNodeType(ntConfiguration));
// check if the configuration points to the versionable
assertTrue("jcr:root property of the configuration must reference the versionable node",
config.getProperty("jcr:root").getNode().isSame(versionableNode));
// check if the versionable points to the configuration
assertTrue("jcr:configuration property of the versionable node must reference the configuration",
versionableNode.getProperty("jcr:configuration").getNode().isSame(config));
}
public void testCreateConfigurationNotVersionableFails() throws Exception {
try {
vm.createConfiguration(nonVersionableNode.getPath());
fail("Create configuration must fail for non-versionable node");
} catch (UnsupportedRepositoryOperationException e) {
// ignore
}
}
public void testCreateConfigurationTwiceFails() throws Exception {
vm.createConfiguration(versionableNode.getPath());
try {
vm.createConfiguration(versionableNode.getPath());
fail("Create configuration must fail if versionable is already a configuration");
} catch (UnsupportedRepositoryOperationException e) {
// ignore
}
}
public void testConfigurationsPath() throws Exception {
Node config = vm.createConfiguration(versionableNode.getPath());
assertNotNull(config);
NodeType nt = config.getPrimaryNodeType();
assertTrue("created node must be subtype of nt:configuration", nt.isNodeType(ntConfiguration));
assertTrue("path for configuration must be below " + PREFIX + ", but was " +
config.getPath(), config.getPath().startsWith(PREFIX));
}
public void testCheckinConfigFailsWithUnversionedChild() throws Exception {
Node config = vm.createConfiguration(versionableNode.getPath());
try {
vm.checkin(config.getPath());
fail("Checkin configuration must fail one of the recorded versions is not versioned.");
} catch (UnsupportedRepositoryOperationException e) {
// ignore
}
}
public void testCheckinConfig() throws Exception {
vm.checkin(versionableNode.getPath());
Node config = vm.createConfiguration(versionableNode.getPath());
vm.checkin(config.getPath());
}
public void testCreateConfigWithBaseline() throws Exception {
// create configuration
String path = versionableNode.getPath();
Version baseVersion = vm.checkin(path);
Node config = vm.createConfiguration(path);
// record baseline
Version baseline = vm.checkin(config.getPath());
// remove workspace nodes
removeConfiguration(versionableNode);
versionableNode.remove();
versionableNode = null;
testRootNode.getSession().save();
// and try to restore it
vm.restore(path, baseline, true);
versionableNode = testRootNode.getSession().getNode(path);
Version baseVersion2 = vm.getBaseVersion(versionableNode.getPath());
assertTrue("restored node must have former base version.", baseVersion.isSame(baseVersion2));
config = versionableNode.getProperty("jcr:configuration").getNode();
// base version of config must be baseline
assertTrue("Baseversion of restored config must be given baseline.",
vm.getBaseVersion(config.getPath()).isSame(baseline));
}
public void testCreateConfigWithNonExistentParentFails() throws Exception {
// create configuration
String path = versionableNode.getPath();
vm.checkin(path);
Node config = vm.createConfiguration(path);
// record baseline
Version baseline = vm.checkin(config.getPath());
// remove workspace nodes
removeConfiguration(versionableNode);
versionableNode.remove();
versionableNode = null;
testRootNode.getSession().save();
try {
vm.restore("/non/existent/parent", baseline, true);
fail("Create configuration must fail if parent does not exist.");
} catch (RepositoryException e) {
// ignore
}
}
public void testCreateConfigWithExistentConfigFromBaselineFails() throws Exception {
// create configuration
String path = versionableNode.getPath();
vm.checkin(path);
Node config = vm.createConfiguration(path);
// record baseline
Version baseline = vm.checkin(config.getPath());
try {
vm.restore(testRoot + "/nonExisting", baseline, true);
fail("Create configuration must fail if config recorded in baseline already exists.");
} catch (RepositoryException e) {
// ignore
}
}
public void testRestoreBaseline() throws Exception {
// create configuration
String path = versionableNode.getPath();
Version bv1 = vm.checkpoint(path);
Node config = vm.createConfiguration(path);
// record baseline 1 (should contain bv1)
Version bl1 = vm.checkpoint(config.getPath());
// create bv2
Version bv2 = vm.checkpoint(path);
// record baseline 2 (should contain bv2)
Version bl2 = vm.checkpoint(config.getPath());
// restore bl1
vm.restore(bl1, true);
Version bv = vm.getBaseVersion(path);
assertTrue("restored node must have former base version V1.0.", bv.isSame(bv1));
// restore bl2
vm.restore(bl2, true);
bv = vm.getBaseVersion(path);
assertTrue("restored node must have former base version V1.1.", bv.isSame(bv2));
}
public void testRestoreConfig() throws Exception {
// create configuration
String path = versionableNode.getPath();
Version bv1 = vm.checkpoint(path);
Node config = vm.createConfiguration(path);
String configPath = config.getPath();
// record baseline 1 (should contain bv1)
Version bl1 = vm.checkpoint(config.getPath());
// create bv2
Version bv2 = vm.checkpoint(path);
// record baseline 2 (should contain bv2)
Version bl2 = vm.checkpoint(config.getPath());
// restore bl1
vm.restore(configPath, bl1.getName(), true);
Version bv = vm.getBaseVersion(path);
assertTrue("restored node must have former base version V1.0.", bv.isSame(bv1));
// restore bl2
vm.restore(configPath, bl2.getName(), true);
bv = vm.getBaseVersion(path);
assertTrue("restored node must have former base version V1.1.", bv.isSame(bv2));
}
}