if (maxLevel == -1 || currentLevel < maxLevel) { currentLevel++; PropertyIterator propIter = node.getProperties(); while (propIter.hasNext()) { propIter.nextProperty().accept(this); NodeIterator nodeIter = node.getNodes(); while (nodeIter.hasNext()) { nodeIter.nextNode().accept(this); NodeIterator nodeIter = node.getNodes(); while (nodeIter.hasNext()) { nextQueue.addLast(nodeIter.nextNode());
@Override public Object next() { return iterator.next(); }
/** * @param i The number of assets to skip. */ public void skip(long i) { it.skip(i); }
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; }
public void testIteratorNext() throws RepositoryException { QueryManager qm = superuser.getWorkspace().getQueryManager(); for (int i = 0; i < 10; i++) { String stmt = testPath + "/*[@" + propertyName1 + " < 1000]"; QueryResult result = qm.createQuery(stmt, Query.XPATH).execute(); int size = 0; for (NodeIterator it = result.getNodes(); it.hasNext(); ) { it.nextNode(); size++; } assertEquals("Wrong size of NodeIterator in result", INITIAL_NODE_NUM - i, size); // remove node for the next iteration testRootNode.getNode("node" + i).remove(); testRootNode.save(); } }
@Override public void runTest() throws Exception { QueryManager manager = session.getWorkspace().getQueryManager(); for (int i = 0; i < NODE_COUNT; i++) { Query query = createQuery(manager, i); NodeIterator iterator = query.execute().getNodes(); while (iterator.hasNext()) { Node node = iterator.nextNode(); if (node.getProperty("testcount").getLong() != i) { throw new Exception("Invalid test result: " + node.getPath()); } } } }
private boolean permissionExists(Node aclNode, String path) throws RepositoryException { NodeIterator children = aclNode.getNodes(); while (children.hasNext()) { Node child = children.nextNode(); if (child.hasProperty("path") && child.getProperty("path").getString().equals(path)) { return true; } } return false; } }
public void testSkip() throws RepositoryException { QueryManager qm = superuser.getWorkspace().getQueryManager(); for (int i = 0; i < 10; i++) { String stmt = testPath + "/*[@" + propertyName1 + " < 1000]"; QueryResult result = qm.createQuery(stmt, Query.XPATH).execute(); for (int j = 0; j < INITIAL_NODE_NUM - i; j++) { // skip to each node in the result NodeIterator it = result.getNodes(); it.skip(j); long propValue = it.nextNode().getProperty(propertyName1).getLong(); // expected = number of skipped nodes + number of deleted nodes long expected = j + i; assertEquals("Wrong node after skip()", expected, propValue); } try { NodeIterator it = result.getNodes(); it.skip(it.getSize() + 1); fail("must throw NoSuchElementException"); } catch (NoSuchElementException e) { // correct } // remove node for the next iteration testRootNode.getNode("node" + i).remove(); testRootNode.save(); } }
@Test public void testOak1171() throws RepositoryException { Session session = createAdminSession(); Node p = session.getRootNode().addNode("etc"); p.addNode("p1").setProperty("title", "test"); p.addNode("p2").setProperty("title", 1); session.save(); Query q = session.getWorkspace().getQueryManager() .createQuery("//*[@title = 'test']", "xpath"); QueryResult qr = q.execute(); NodeIterator ni = qr.getNodes(); assertTrue(ni.hasNext()); Node n = ni.nextNode(); assertEquals("/etc/p1", n.getPath()); assertFalse(ni.hasNext()); session.logout(); }
/** * Checks if jcr:deref works when dereferencing into the version storage. */ public void testDerefToVersionNode() throws RepositoryException { Node referenced = testRootNode.addNode(nodeName1); referenced.addMixin(mixVersionable); testRootNode.save(); Version version = referenced.checkin(); Node referencedVersionNode = version.getNode(jcrFrozenNode); Node referencer = testRootNode.addNode(nodeName2); referencer.setProperty(propertyName1, referencedVersionNode); testRootNode.save(); String query = "/" + testRoot + "/*[@" + propertyName1 + "]/jcr:deref(@" + propertyName1 + ",'*')"; QueryManager qm = superuser.getWorkspace().getQueryManager(); Query q = qm.createQuery(query, Query.XPATH); QueryResult qr = q.execute(); NodeIterator ni = qr.getNodes(); assertEquals("Must find one result in query", 1, ni.getSize()); while (ni.hasNext()) { Node node = (Node) ni.next(); assertTrue(node.getProperty("jcr:frozenUuid").getString().equals(referenced.getUUID())); } }
public Node getTranslation(String language) throws RepositoryException { final String id = node.getProperty(HippoTranslationNodeType.ID).getString(); final 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(); final NodeIterator nodes = result.getNodes(); if (!nodes.hasNext()) { throw new ItemNotFoundException("Node " + node.getPath() + " was not translated to " + language); } if (nodes.getSize() > 3) { // check 3 for the stable draft/unpublished/published versions log.warn("Not a maximum of 3 but {} translated variants found for node {} with translation id {} and language {}.", nodes.getSize(), node.getPath(), id, language); } return nodes.nextNode(); }
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()); }
public StoreIterator(final Class assignClass) throws Exception { super(); this.assignClass = assignClass; javax.jcr.query.QueryManager qm = LifeTimeJCRSessionUtil.getHierarchyManager(WorkflowConstants.WORKSPACE_EXPRESSION).getWorkspace().getQueryManager(); final javax.jcr.query.Query query = qm.createQuery(WorkflowConstants.STORE_ITERATOR_QUERY, Query.SQL); final javax.jcr.query.QueryResult qr = query.execute(); if (log.isDebugEnabled()) { log.debug("() query found " + qr.getNodes().getSize() + " elements"); } this.rootIterator = qr.getNodes(); this.next = fetchNext(); }
public void testGetSize() throws RepositoryException { QueryManager qm = superuser.getWorkspace().getQueryManager(); for (int i = 0; i < 10; i++) { String stmt = testPath + "/*[@" + propertyName1 + " < 1000]"; QueryResult result = qm.createQuery(stmt, Query.XPATH).execute(); assertEquals("Wrong size of NodeIterator in result", INITIAL_NODE_NUM - i, result.getNodes().getSize()); // remove node for the next iteration testRootNode.getNode("node" + i).remove(); testRootNode.save(); } }
@Test public void date() throws Exception { Session session = getAdminSession(); Node t1 = session.getRootNode().addNode("t1"); t1.setProperty("x", "22.06.07"); Node t2 = session.getRootNode().addNode("t2"); t2.setProperty("x", "2007-06-22T01:02:03.000Z", PropertyType.DATE); session.save(); String query = "//*[x='a' or x='b']"; QueryResult r = session.getWorkspace(). getQueryManager().createQuery( query, "xpath").execute(); NodeIterator it = r.getNodes(); assertFalse(it.hasNext()); }
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())); } }
private Node selectRandomDocumentFolderNode(Node node) throws RepositoryException { String stmt = "/jcr:root" + context.getDocumentBasePath() + "//element(*,hippostd:folder) order by @jcr:score descending"; Query query = node.getSession().getWorkspace().getQueryManager().createQuery(stmt, Query.XPATH); NodeIterator folders = query.execute().getNodes(); Node result = null; try { if (folders.getSize() > 1) { int index = random.nextInt((int)folders.getSize()); if (index > 0) { folders.skip(index); } result = folders.nextNode(); if (result.isSame(node.getParent().getParent())) { if (folders.hasNext()) { result = folders.nextNode(); } else { result = null; } } } } catch (NoSuchElementException e) { // guard against and ignore possibly no longer existing folders result = null; } return result; }
private static void collectBundleDigests(final Node bundleNode, final Map<String, String> sortedMap) throws RepositoryException, IOException { for (NodeIterator pni = bundleNode.getNodes(); pni.hasNext(); ) { Node nextNode = pni.nextNode(); if (nextNode.getPrimaryNodeType().isNodeType(JcrConstants.NT_FOLDER)) { collectBundleDigests(nextNode, sortedMap); } else if (nextNode.getPrimaryNodeType().isNodeType(JcrConstants.NT_FILE)) { try (final InputStream stream = nextNode.getNode(JCR_CONTENT).getProperty(JCR_DATA).getValue().getBinary().getStream()) { final String digest = DigestUtils.digestFromStream(stream); sortedMap.put(nextNode.getPath(), digest); } } } } }
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(); }
@Test public void shouldFindLatestCommitInMasterBranch() throws Exception { Node git = gitRemoteNode(); Node commits = git.getNode("commits"); Node master = commits.getNode("master"); Node commit = master.getNodes().nextNode(); // the first commit in the history of the 'master' branch ... // print = true; printDetails(commit); assertNodeHasObjectIdProperty(commit, commit.getName()); assertNodeHasCommittedProperties(commit); assertThat(commit.getProperty("git:title").getString(), is(notNullValue())); assertThat(commit.getProperty("git:tree").getNode().getPath(), is(git.getPath() + "/tree/" + commit.getName())); assertThat(commit.getProperty("git:detail").getNode().getPath(), is(git.getPath() + "/commit/" + commit.getName())); }