/** * Created by The eXo Platform SASL. * @author <a href="volodymyr.krasnikov@exoplatform.com.ua">Volodymyr Krasnikov</a> * @version $Id: TestNodeMove.java 15:45:44 */ package org.exoplatform.services.jcr.usecases.query; import org.exoplatform.services.jcr.impl.core.SessionImpl; import org.exoplatform.services.jcr.usecases.BaseUsecasesTest; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.query.Query; import javax.jcr.query.QueryManager; import javax.jcr.query.QueryResult; public class TestNodeMove extends BaseUsecasesTest { public void testSingleSession() throws Exception { // create nodes and seek them in single session // - /testRootNode Node fakeroot = root.addNode("fakeroot", "nt:folder"); Node subNode_1 = fakeroot.addNode("subnode1", "nt:folder"); Node subNode_2 = fakeroot.addNode("subnode2", "nt:folder"); Node srcNode = subNode_1.addNode("target", "nt:folder"); String src_path = "/fakeroot/subnode1/target"; String dest_path = "/fakeroot/subnode2/target"; session.save(); String sqlQuery = "SELECT * FROM nt:folder WHERE jcr:path LIKE '/fakeroot/subnode1/%' "; QueryManager manager = session.getWorkspace().getQueryManager(); Query query = manager.createQuery(sqlQuery, Query.SQL); QueryResult queryResult = query.execute(); NodeIterator iterator = queryResult.getNodes(); assertTrue(iterator.getSize() == 1); // checks we have a node we need. assertEquals(src_path, iterator.nextNode().getPath()); // move procedure session.getWorkspace().move(srcNode.getPath(), dest_path); Node test_node = (Node)session.getItem("/fakeroot/subnode2/target"); sqlQuery = "SELECT * FROM nt:folder WHERE jcr:path LIKE '/fakeroot/subnode2/%' "; QueryManager manager2 = session.getWorkspace().getQueryManager(); Query query2 = manager2.createQuery(sqlQuery, Query.SQL); QueryResult queryResult2 = query2.execute(); NodeIterator n_iterator = queryResult2.getNodes(); assertTrue(n_iterator.getSize() == 1); assertEquals(dest_path, n_iterator.nextNode().getPath()); } public void testDiffSession() throws Exception { // target node was created in one sessions // attempt to seek & move node in other. // - /testRootNode Node fakeroot = root.addNode("fakeroot", "nt:folder"); Node subNode_1 = fakeroot.addNode("subnode1", "nt:folder"); Node subNode_2 = fakeroot.addNode("subnode2", "nt:folder"); Node srcNode = subNode_1.addNode("target", "nt:folder"); session.save(); session.logout(); session = (SessionImpl)repository.login(credentials, "ws"); String src_path = "/fakeroot/subnode1/target"; String dest_path = "/fakeroot/subnode2/target"; String sqlQuery = "SELECT * FROM nt:folder WHERE jcr:path LIKE '/fakeroot/subnode1/%' "; QueryManager manager = session.getWorkspace().getQueryManager(); Query query = manager.createQuery(sqlQuery, Query.SQL); QueryResult queryResult = query.execute(); NodeIterator iterator = queryResult.getNodes(); assertTrue(iterator.getSize() == 1); // checks we have a node we need. assertEquals(src_path, iterator.nextNode().getPath()); // move procedure session.getWorkspace().move(srcNode.getPath(), dest_path); Node test_node = (Node)session.getItem("/fakeroot/subnode2/target"); sqlQuery = "SELECT * FROM nt:folder WHERE jcr:path LIKE '/fakeroot/subnode2/%' "; QueryManager manager2 = session.getWorkspace().getQueryManager(); Query query2 = manager2.createQuery(sqlQuery, Query.SQL); QueryResult queryResult2 = query2.execute(); NodeIterator n_iterator = queryResult2.getNodes(); assertTrue(n_iterator.getSize() == 1); assertEquals(dest_path, n_iterator.nextNode().getPath()); } }