Search in sources :

Example 86 with Node

use of javax.jcr.Node in project jackrabbit by apache.

the class RemoveVersionTest method testReferentialIntegrityException.

/**
     * Checks if {@link javax.jcr.version.VersionHistory#removeVersion(String)}
     * throws a {@link javax.jcr.ReferentialIntegrityException} if the named
     * version is still referenced by another node.
     * <ul>
     * <li>{@code nodetype} name of a node type that supports a reference
     *  property.
     * <li>{@code nodename4} name of the node created with <code>nodetype</code>.
     * <li>{@code propertyname1} a single value reference property available
     *  in <code>nodetype</code>.
     *  </ul>
     */
public void testReferentialIntegrityException() throws RepositoryException, NotExecutableException {
    // create reference: n1.p1 -> version
    Node n1 = testRootNode.addNode(nodeName4, testNodeType);
    Value refValue = superuser.getValueFactory().createValue(version);
    ensureCanSetProperty(n1, propertyName1, refValue);
    n1.setProperty(propertyName1, refValue);
    testRootNode.getSession().save();
    try {
        vHistory.removeVersion(version.getName());
        fail("Method removeVersion() must throw a ReferentialIntegrityException " + "if the version is the target of a REFERENCE property and the current " + "Session has read access to that REFERENCE property");
    } catch (ReferentialIntegrityException e) {
    // success
    }
}
Also used : ReferentialIntegrityException(javax.jcr.ReferentialIntegrityException) Node(javax.jcr.Node) Value(javax.jcr.Value)

Example 87 with Node

use of javax.jcr.Node in project jackrabbit by apache.

the class VersionLabelTest method testGetVersionLabelsForInvalidVersion.

/**
     * Test if versionHistory.getVersionLabels(Version) throws a VersionException if the
     * specified version is not in this version history.
     */
public void testGetVersionLabelsForInvalidVersion() throws Exception {
    // build a second versionable node below the testroot to get it's version.
    Node versionableNode2 = createVersionableNode(testRootNode, nodeName2, versionableNodeType);
    Version invalidV = versionableNode2.checkin();
    try {
        vHistory.getVersionLabels(invalidV);
        fail("VersionHistory.getVersionLabels(Version) must throw a VersionException if the specified version is not in this version history");
    } catch (VersionException ve) {
    // success
    }
}
Also used : Version(javax.jcr.version.Version) Node(javax.jcr.Node) VersionException(javax.jcr.version.VersionException)

Example 88 with Node

use of javax.jcr.Node in project jackrabbit by apache.

the class MergeNonVersionableSubNodeTest method initNodes.

/**
     * initialize a three-step-hierarchy on default and second workspace
     */
protected void initNodes() throws RepositoryException {
    // create a versionable parent node
    // nodeName1
    Node topVNode = testRootNode.addNode(nodeName1, versionableNodeType);
    topVNode.setProperty(propertyName1, topVNode.getName());
    // create a non'versionable sub node
    // nodeName1/nodeName2
    Node subNvNode = topVNode.addNode(nodeName2, testNodeType);
    subNvNode.setProperty(propertyName1, subNvNode.getName());
    // create a non'versionable sub node below nonversionable node
    // nodeName1/nodeName2/nodeName3
    Node subSubNvNode = subNvNode.addNode(nodeName3, testNodeType);
    subSubNvNode.setProperty(propertyName1, subSubNvNode.getName());
    // save default workspace
    testRootNode.getSession().save();
    log.println("test nodes created successfully on " + workspace.getName());
    // clone the newly created node from src workspace into second workspace
    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);
}
Also used : Node(javax.jcr.Node)

Example 89 with Node

use of javax.jcr.Node in project jackrabbit by apache.

the class MergeNonVersionableSubNodeTest method testMergeNodeNonVersionableSubNodeUpdateJcr2.

/**
     * VersionManager.merge(): nonversionable subNode N: if the merge result of its
     * nearest versionable ancestor is update,<br> then it is updated to reflect
     * the state of its corresponding node.<br>
     */
public void testMergeNodeNonVersionableSubNodeUpdateJcr2() throws RepositoryException {
    // modify non versionable subnode so we can check if it's updated after merge
    String changedString = CHANGED_STRING + System.currentTimeMillis();
    String nvSubNodePath = nodeName2 + "/" + nodeName3;
    // versionable ancestor to merge in first workspace (N)
    Node n = testRootNodeW2.getNode(nodeName1);
    // versionable ancestor to merge in second workspace (N')
    Node np = testRootNodeW2.getNode(nodeName1);
    // checkout N and make change
    n.getSession().getWorkspace().getVersionManager().checkout(n.getPath());
    Node nvSubNode = n.getNode(nvSubNodePath);
    nvSubNode.setProperty(propertyName1, changedString);
    n.getSession().save();
    n.getSession().getWorkspace().getVersionManager().checkin(n.getPath());
    // merge change into N'
    np.getSession().getWorkspace().getVersionManager().merge(np.getPath(), workspaceW2.getName(), true);
    // corresponding node to nvSubNode in 2nd workspace
    Node nvSubNodeP = np.getNode(nvSubNodePath);
    // test if modification on N was merged into N' subnode
    assertTrue(nvSubNodeP.getProperty(propertyName1).getString().equals(changedString));
}
Also used : Node(javax.jcr.Node)

Example 90 with Node

use of javax.jcr.Node in project jackrabbit by apache.

the class MergeNonVersionableSubNodeTest method testMergeNodeNonVersionableSubNodeLeaveJcr2.

/**
     * VersionManager.merge(): nonversionable subNode N: is left unchanged if the nearest
     * versionable ancestor has state leave.<br>
     */
public void testMergeNodeNonVersionableSubNodeLeaveJcr2() throws RepositoryException {
    // modify non versionable subnode so we can check if it's updated after merge
    String changedString = CHANGED_STRING + System.currentTimeMillis();
    String nvSubNodePath = nodeName2 + "/" + nodeName3;
    // versionable ancestor to merge in first workspace (N)
    Node n = testRootNodeW2.getNode(nodeName1);
    // versionable ancestor to merge in second workspace (N')
    Node np = testRootNodeW2.getNode(nodeName1);
    // checkout N' and make change
    np.getSession().getWorkspace().getVersionManager().checkout(np.getPath());
    Node nvSubNodeP = np.getNode(nvSubNodePath);
    nvSubNodeP.setProperty(propertyName1, changedString);
    np.getSession().save();
    np.getSession().getWorkspace().getVersionManager().checkin(np.getPath());
    // merge into N'
    np.getSession().getWorkspace().getVersionManager().merge(np.getPath(), workspaceW2.getName(), true);
    // corresponding node to nvSubNode in 2nd workspace
    Node nvSubNode = np.getNode(nvSubNodePath);
    // test if modification on N' was not modified
    assertTrue(nvSubNode.getProperty(propertyName1).getString().equals(changedString));
}
Also used : Node(javax.jcr.Node)

Aggregations

Node (javax.jcr.Node)2620 Session (javax.jcr.Session)645 Test (org.junit.Test)643 RepositoryException (javax.jcr.RepositoryException)317 Property (javax.jcr.Property)251 NodeIterator (javax.jcr.NodeIterator)214 JackrabbitNode (org.apache.jackrabbit.api.JackrabbitNode)182 Value (javax.jcr.Value)158 Version (javax.jcr.version.Version)155 NotExecutableException (org.apache.jackrabbit.test.NotExecutableException)151 Query (javax.jcr.query.Query)122 QueryResult (javax.jcr.query.QueryResult)108 Event (javax.jcr.observation.Event)103 VersionManager (javax.jcr.version.VersionManager)97 Resource (org.apache.sling.api.resource.Resource)96 ArrayList (java.util.ArrayList)93 AccessDeniedException (javax.jcr.AccessDeniedException)89 InvalidItemStateException (javax.jcr.InvalidItemStateException)82 ConstraintViolationException (javax.jcr.nodetype.ConstraintViolationException)82 AbstractRepositoryTest (org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest)81