static NodeIterator executeQuery(final Session session, final Node templateQueryNode) throws RepositoryException { final String statement = templateQueryNode.getProperty("jcr:statement").getString(); final String language = templateQueryNode.getProperty("jcr:language").getString(); final QueryManager queryManager = session.getWorkspace().getQueryManager(); final Query query = queryManager.createQuery(statement, language); final QueryResult queryResult = query.execute(); return queryResult.getNodes(); }
private void checkDeprecatedTypeNotInUse(final String nodeType) throws RepositoryException { final Query query = qm.createQuery("//element(*, " + nodeType + ")", Query.XPATH); final QueryResult queryResult = query.execute(); if (queryResult.getNodes().hasNext()) { final Node node = queryResult.getNodes().nextNode(); throw new RepositoryException(String.format( "Deprecated node type %s still in use at '%s'. Remove all usage of this node type before upgrading to v12", nodeType, node.getPath())); } }
public void testOuterJoinExtraNodeWithCondition() throws Exception { Node n3 = testRootNode.addNode("node3", "test:SamplePage"); n3.setProperty("n1prop1", "page1"); testRootNode.getSession().save(); StringBuilder join = new StringBuilder(); join.append(" Select * from [test:SamplePage] as page left outer join [test:SampleContent] as content on ISDESCENDANTNODE(content,page) where page.n1prop1 = 'page1' and content.n2prop1 = 'XXX' "); checkResult(qm.createQuery(join.toString(), JCR_SQL2).execute(), 0); }
@SuppressWarnings("deprecation") @Test public void fnNameEncoding() throws Exception { Session session = getAdminSession(); session.getRootNode().addNode("123456_test_name"); session.save(); QueryManager qm = session.getWorkspace().getQueryManager(); Query q; q = qm.createQuery("//*[jcr:like(fn:name(), '%123456%')]", Query.XPATH); assertEquals("/123456_test_name", getPaths(q)); q = qm.createQuery("//*[fn:name() = '123456_test_name']", Query.XPATH); assertEquals("", getPaths(q)); }
private List<Node> getItemNodesToBeExecuted(final Session session) throws RepositoryException { final List<Node> initializeItems = new ArrayList<>(); final QueryManager queryManager = session.getWorkspace().getQueryManager(); final Query getInitializeItems = queryManager.createQuery(PENDING_INITIALIZE_ITEMS_QUERY, Query.SQL); final NodeIterator nodes = getInitializeItems.execute().getNodes(); while(nodes.hasNext()) { initializeItems.add(nodes.nextNode()); } return initializeItems; }
/** * https://issues.apache.org/jira/browse/JCR-3089 */ public void testSQL2Simple() throws Exception { Query q = qm.createQuery("SELECT * FROM [nt:unstructured]", Query.JCR_SQL2); QueryResult r = q.execute(); assertTrue(r.getNodes().hasNext()); }
public void testOuterJoinDoubleJoinSplit() throws Exception { Node n3 = testRootNode.addNode("node3", "test:SamplePage"); n3.setProperty("n1prop1", "page2"); Node n4 = n3.addNode("node2", "test:SampleContent"); n4.setProperty("n2prop1", "content1"); testRootNode.getSession().save(); StringBuilder join = new StringBuilder(); join.append("Select * from [test:SamplePage] as page left outer join [test:SampleContent] as content on ISDESCENDANTNODE(content,page) where (page.n1prop1 = 'page1' and content.n2prop1 = 'content1') or (page.n1prop1 = 'page2' and content.n2prop1 = 'content1') "); checkResult(qm.createQuery(join.toString(), JCR_SQL2).execute(), 2); } }
public boolean hasTranslation(String language) throws RepositoryException { String id = node.getProperty(HippoTranslationNodeType.ID).getString(); Query query = node.getSession().getWorkspace().getQueryManager().createQuery( "SELECT * FROM " + HippoTranslationNodeType.NT_TRANSLATED + " WHERE " + HippoTranslationNodeType.ID + "='" + id + "'" + " AND " + HippoTranslationNodeType.LOCALE + "='" + language + "'", Query.SQL); final QueryResult result = query.execute(); NodeIterator nodes = result.getNodes(); return nodes.hasNext(); }
private List<Node> queryAndExpectResults( String queryString, int howMany ) throws RepositoryException { QueryManager queryManager = session.getWorkspace().getQueryManager(); Query query = queryManager.createQuery(queryString, Query.JCR_SQL2); NodeIterator nodes = query.execute().getNodes(); List<Node> result = new ArrayList<Node>(); while (nodes.hasNext()) { result.add(nodes.nextNode()); } assertEquals("Invalid nodes retrieved from query: " + result, howMany, result.size()); return result; }
private void check(Session session) throws RepositoryException { check(session.getRootNode()); Query query = session.getWorkspace().getQueryManager().createQuery("//element(*,nt:base)", Query.XPATH); QueryResult result = query.execute(); for (NodeIterator iter = result.getNodes(); iter.hasNext();) { Node node = iter.nextNode(); if (node != null && log.isTraceEnabled()) { log.trace("query: {}", node.getPath()); } } }
public void testParentWithAnd() throws RepositoryException { String stmt = testPath + "//child[../@foo1 = 'bar1 and @foo2']"; QueryResult result = qm.createQuery(stmt, Query.XPATH).execute(); assertEquals("Wrong size of NodeIterator in result", 0, result.getNodes().getSize()); } }
/** * Find nodes located in the provided node or in sub-folders within it that have the provided nodeType. * As this method uses jcr queries to find nodes, it might not see nodes that have been created but not saved yet (i.e. during installation of a module). */ protected NodeIterator findPrincipalNodes(final Node node, final String nodeType) throws RepositoryException { final StringBuilder builder = new StringBuilder("select * from [").append(nodeType).append("]"); if (!"/".equals(node.getPath())) { builder.append(" where isdescendantnode(['").append(node.getPath()).append("'])"); } final String queryString = builder.toString(); log.debug("Executing query \"{}\".", queryString); final Query query = node.getSession().getWorkspace().getQueryManager().createQuery(queryString, Query.JCR_SQL2); return query.execute().getNodes(); }
public void testParentInAttribute1() throws RepositoryException { String stmt = testPath + "//child[../@foo1]"; QueryResult result = qm.createQuery(stmt, Query.XPATH).execute(); assertTrue("Wrong size of NodeIterator in result", result.getNodes().getSize() > 0); assertEquals("child", result.getNodes().nextNode().getName()); }
private HippoNodeIterator findAllHandleNodes(Session session) throws RepositoryException { // order by clause forces result.getSize() != -1 (we need the size) String stmt = "/jcr:root" + context.getDocumentBasePath() + "//element(*,hippo:handle) order by @jcr:score descending"; Query query = session.getWorkspace().getQueryManager().createQuery(stmt, Query.XPATH); return (HippoNodeIterator) query.execute().getNodes(); }
public void testParentInAttribute4() throws RepositoryException { String stmt = testPath + "//child[../@foo1 = 'bar1']"; QueryResult result = qm.createQuery(stmt, Query.XPATH).execute(); assertTrue("Wrong size of NodeIterator in result", result.getNodes().getSize() > 0); assertEquals("child", result.getNodes().nextNode().getName()); }
private void check(Session session) throws RepositoryException { check(session.getRootNode()); Query query = session.getWorkspace().getQueryManager().createQuery("//element(*,nt:base)", Query.XPATH); QueryResult result = query.execute(); for (NodeIterator iter = result.getNodes(); iter.hasNext();) { Node node = iter.nextNode(); if (node != null && log.isTraceEnabled()) { log.trace("query: {}", node.getPath()); } } }
public void testParentInAttribute2() throws RepositoryException { String stmt = testPath + "//child[../child/@foo2]"; QueryResult result = qm.createQuery(stmt, Query.XPATH).execute(); assertTrue("Wrong size of NodeIterator in result", result.getNodes().getSize() > 0); assertEquals("child", result.getNodes().nextNode().getName()); }
@Override protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException { final String statement = "select * from [nt:base] where [mgnl:template] = '" + oldTemplateId + "'"; QueryManager qm = installContext.getJCRSession(workspace).getWorkspace().getQueryManager(); Query query = qm.createQuery(statement, Query.JCR_SQL2); NodeIterator iter = query.execute().getNodes(); while (iter.hasNext()) { operateOnNode(installContext, iter.nextNode()); } }
public void testParentInPath() throws RepositoryException { String stmt = testPath + "//child/..[@foo1]"; QueryResult result = qm.createQuery(stmt, Query.XPATH).execute(); assertEquals("Wrong size of NodeIterator in result", 1, result.getNodes().getSize()); assertEquals("base", result.getNodes().nextNode().getName()); }
@Override protected void runTest() throws Exception { QueryManager qm = session.getWorkspace().getQueryManager(); Query q = qm.createQuery(getQuery(), Query.JCR_SQL2); QueryResult r = q.execute(); NodeIterator nodes = r.getNodes(); int counter = 0; while(nodes.hasNext() && counter++<FETCH_NODES) { nodes.next(); } }