Search in sources :

Example 26 with QueryManager

use of javax.jcr.query.QueryManager in project jackrabbit-oak by apache.

the class QueryTest method xpathEscapeTest.

@SuppressWarnings("deprecation")
@Test
public void xpathEscapeTest() throws RepositoryException {
    Session writer = createAdminSession();
    Session reader = createAdminSession();
    UserManager uMgr = ((JackrabbitSession) writer).getUserManager();
    String uid = "testUser";
    try {
        User user = uMgr.createUser("testUser", "pw");
        writer.getNode(user.getPath()).addNode(".tokens", "rep:Unstructured");
        writer.save();
        QueryManager qm = reader.getWorkspace().getQueryManager();
        Query q = qm.createQuery("/jcr:root//*[_x002e_tokens/@jcr:primaryType]", Query.XPATH);
        NodeIterator res = q.execute().getNodes();
        assertEquals(1, res.getSize());
    } finally {
        Authorizable a = uMgr.getAuthorizable(uid);
        if (a != null) {
            a.remove();
            writer.save();
        }
        if (reader != null) {
            reader.logout();
        }
        if (writer != null) {
            writer.logout();
        }
    }
}
Also used : NodeIterator(javax.jcr.NodeIterator) User(org.apache.jackrabbit.api.security.user.User) Query(javax.jcr.query.Query) UserManager(org.apache.jackrabbit.api.security.user.UserManager) QueryManager(javax.jcr.query.QueryManager) Authorizable(org.apache.jackrabbit.api.security.user.Authorizable) JackrabbitSession(org.apache.jackrabbit.api.JackrabbitSession) Session(javax.jcr.Session) JackrabbitSession(org.apache.jackrabbit.api.JackrabbitSession) Test(org.junit.Test) AbstractRepositoryTest(org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest)

Example 27 with QueryManager

use of javax.jcr.query.QueryManager in project jackrabbit-oak by apache.

the class RemappingTest method testQuery3.

public void testQuery3() throws Exception {
    String statement = createStatement("my:nameProperty", "my:nameValue");
    QueryManager qm = session.getWorkspace().getQueryManager();
    QueryResult qr = qm.createQuery(statement, "xpath").execute();
    NodeIterator ni = qr.getNodes();
    assertTrue(ni.hasNext());
    assertEquals(resultPath, ni.nextNode().getPath());
}
Also used : NodeIterator(javax.jcr.NodeIterator) QueryResult(javax.jcr.query.QueryResult) QueryManager(javax.jcr.query.QueryManager)

Example 28 with QueryManager

use of javax.jcr.query.QueryManager in project jackrabbit-oak by apache.

the class RemappingTest method testQuery2.

public void testQuery2() throws Exception {
    String statement = createStatement("my:booleanProperty", "true");
    QueryManager qm = session.getWorkspace().getQueryManager();
    QueryResult qr = qm.createQuery(statement, "xpath").execute();
    NodeIterator ni = qr.getNodes();
    assertTrue(ni.hasNext());
    assertEquals(resultPath, ni.nextNode().getPath());
}
Also used : NodeIterator(javax.jcr.NodeIterator) QueryResult(javax.jcr.query.QueryResult) QueryManager(javax.jcr.query.QueryManager)

Example 29 with QueryManager

use of javax.jcr.query.QueryManager in project jackrabbit-oak by apache.

the class QueryTest method or.

@SuppressWarnings("deprecation")
@Test
public void or() throws RepositoryException {
    Session session = getAdminSession();
    Node hello = session.getRootNode().addNode("hello");
    hello.setProperty("x", 1);
    Node world = hello.addNode("world");
    world.setProperty("x", 2);
    session.save();
    QueryManager qm = session.getWorkspace().getQueryManager();
    Query q;
    q = qm.createQuery("select a.[jcr:path] from [nt:base] as a " + "inner join [nt:base] as b " + "on ischildnode(a, b) " + "where a.x = 1 or a.x = 2 or b.x = 3 or b.x = 4", Query.JCR_SQL2);
    assertEquals("/hello", getPaths(q));
    q = qm.createQuery("//hello[@x=1]/*[@x=2]", Query.XPATH);
    assertEquals("/hello/world", getPaths(q));
}
Also used : Query(javax.jcr.query.Query) Node(javax.jcr.Node) QueryManager(javax.jcr.query.QueryManager) Session(javax.jcr.Session) JackrabbitSession(org.apache.jackrabbit.api.JackrabbitSession) Test(org.junit.Test) AbstractRepositoryTest(org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest)

Example 30 with QueryManager

use of javax.jcr.query.QueryManager in project jackrabbit-oak by apache.

the class QueryPlanTest method uuidIndex.

@Test
public void uuidIndex() throws Exception {
    Session session = getAdminSession();
    QueryManager qm = session.getWorkspace().getQueryManager();
    Node testRootNode = session.getRootNode().addNode("testroot");
    Node n = testRootNode.addNode("node");
    n.addMixin("mix:referenceable");
    session.save();
    // this matches just one node (exact path),
    // so it should use the TraversintIndex
    String xpath = "/jcr:root/testroot/node[@jcr:uuid]";
    Query q;
    QueryResult result;
    RowIterator it;
    q = qm.createQuery("explain " + xpath, "xpath");
    result = q.execute();
    it = result.getRows();
    assertTrue(it.hasNext());
    String plan = it.nextRow().getValue("plan").getString();
    assertEquals("[nt:base] as [a] /* traverse \"/testroot/node\" where " + "([a].[jcr:uuid] is not null) " + "and (issamenode([a], [/testroot/node])) */", plan);
    // verify the result
    q = qm.createQuery(xpath, "xpath");
    result = q.execute();
    it = result.getRows();
    assertTrue(it.hasNext());
    String path = it.nextRow().getPath();
    assertEquals("/testroot/node", path);
    assertFalse(it.hasNext());
    // this potentially matches many nodes,
    // so it should use the index on the UUID property
    xpath = "/jcr:root/testroot/*[@jcr:uuid]";
    q = qm.createQuery("explain " + xpath, "xpath");
    result = q.execute();
    it = result.getRows();
    assertTrue(it.hasNext());
    plan = it.nextRow().getValue("plan").getString();
    assertEquals("[nt:base] as [a] /* property uuid IS NOT NULL " + "where ([a].[jcr:uuid] is not null) " + "and (ischildnode([a], [/testroot])) */", plan);
}
Also used : QueryResult(javax.jcr.query.QueryResult) Query(javax.jcr.query.Query) Node(javax.jcr.Node) RowIterator(javax.jcr.query.RowIterator) QueryManager(javax.jcr.query.QueryManager) Session(javax.jcr.Session) Test(org.junit.Test) AbstractRepositoryTest(org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest)

Aggregations

QueryManager (javax.jcr.query.QueryManager)102 Query (javax.jcr.query.Query)68 Node (javax.jcr.Node)60 QueryResult (javax.jcr.query.QueryResult)54 Session (javax.jcr.Session)53 NodeIterator (javax.jcr.NodeIterator)34 RowIterator (javax.jcr.query.RowIterator)27 Test (org.junit.Test)27 AbstractRepositoryTest (org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest)22 RepositoryException (javax.jcr.RepositoryException)17 Row (javax.jcr.query.Row)14 JackrabbitSession (org.apache.jackrabbit.api.JackrabbitSession)14 FacetResult (org.apache.jackrabbit.oak.query.facet.FacetResult)9 ValueFactory (javax.jcr.ValueFactory)7 NoSuchElementException (java.util.NoSuchElementException)6 InvalidItemStateException (javax.jcr.InvalidItemStateException)3 Value (javax.jcr.Value)3 Authorizable (org.apache.jackrabbit.api.security.user.Authorizable)3 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2