private GroupPrincipalIterator(@Nullable String queryString, @NotNull Result queryResult) { this.queryString = queryString; rows = queryResult.getRows().iterator(); }
private MemberIterator(@NotNull Result queryResult) { rows = queryResult.getRows().iterator(); }
private Iterable<RemoteResult> getResults() { List<RemoteResult> results = newArrayList(); for (ResultRow row : this.results.getRows()) { results.add(new ContentRemoteResult(binaries, row)); } return results; }
@Override public Iterator<String> iterator() { return Iterators.concat(transform(result.getRows().iterator(), new RowToPaths())); }
@Override public Iterator<String> iterator() { return Iterators.concat(transform(result.getRows().iterator(), new RowToPaths())); }
@Override public Iterator<String> iterator() { return Iterators.concat(transform(result.getRows().iterator(), new RowToPaths())); }
@Override public Principal getPrincipal(@NotNull String principalName) { Result result = findPrincipals(principalName, true); if (result != null && result.getRows().iterator().hasNext()) { return new ExternalGroupPrincipal(principalName); } else { return null; } }
@Override public long getSize(SizePrecision precision, long max) { // Note: for "unionAll == false", overlapping entries are counted twice // (this can result in a larger reported size, but it is not a security problem) // ensure the queries are both executed, otherwise the cursor is not set, // and so the size would be -1 left.executeQuery().getRows().iterator().hasNext(); right.executeQuery().getRows().iterator().hasNext(); long a = left.getSize(precision, max); long b = right.getSize(precision, max); if (a < 0 || b < 0) { return -1; } long total = QueryImpl.saturatedAdd(a, b); return Math.min(limit, total); }
@NotNull private Iterator<Authorizable> findAuthorizables(@NotNull String statement, long limit, long offset, @Nullable AuthorizableType type) throws RepositoryException { try { Result query = root.getQueryEngine().executeQuery( statement, javax.jcr.query.Query.XPATH, limit, offset, NO_BINDINGS, namePathMapper.getSessionLocalMappings()); Iterable<? extends ResultRow> resultRows = query.getRows(); Iterator<Authorizable> authorizables = Iterators.transform(resultRows.iterator(), new ResultRowToAuthorizable(userManager, root, type)); return Iterators.filter(authorizables, new UniqueResultPredicate()); } catch (ParseException e) { log.warn("Invalid user query: " + statement, e); throw new RepositoryException(e); } }
@NotNull private Iterator<Authorizable> findAuthorizables(@NotNull String statement, long limit, long offset, @Nullable AuthorizableType type) throws RepositoryException { try { Result query = root.getQueryEngine().executeQuery( statement, javax.jcr.query.Query.XPATH, limit, offset, NO_BINDINGS, namePathMapper.getSessionLocalMappings()); Iterable<? extends ResultRow> resultRows = query.getRows(); Iterator<Authorizable> authorizables = Iterators.transform(resultRows.iterator(), new ResultRowToAuthorizable(userManager, root, type)); return Iterators.filter(authorizables, new UniqueResultPredicate()); } catch (ParseException e) { log.warn("Invalid user query: " + statement, e); throw new RepositoryException(e); } }
@Nonnull private Iterator<Authorizable> findAuthorizables(@Nonnull String statement, long limit, long offset, @Nullable AuthorizableType type) throws RepositoryException { try { Result query = root.getQueryEngine().executeQuery( statement, javax.jcr.query.Query.XPATH, limit, offset, NO_BINDINGS, namePathMapper.getSessionLocalMappings()); Iterable<? extends ResultRow> resultRows = query.getRows(); Iterator<Authorizable> authorizables = Iterators.transform(resultRows.iterator(), new ResultRowToAuthorizable(userManager, root, type)); return Iterators.filter(authorizables, new UniqueResultPredicate()); } catch (ParseException e) { log.warn("Invalid user query: " + statement, e); throw new RepositoryException(e); } }
private String measureWithLimit(String query, String lang, int limit) throws ParseException { List<? extends ResultRow> result = Lists.newArrayList( qe.executeQuery(query, lang, limit, 0, Maps.<String, PropertyValue>newHashMap(), NO_MAPPINGS).getRows()); String measure = ""; if (result.size() > 0) { measure = result.get(0).toString(); } return measure; }
private String measureWithLimit(String query, String lang, int limit) throws ParseException { List<? extends ResultRow> result = Lists.newArrayList( qe.executeQuery(query, lang, limit, 0, Maps.<String, PropertyValue>newHashMap(), NO_MAPPINGS).getRows()); String measure = ""; if (result.size() > 0) { measure = result.get(0).toString(); } return measure; } }
protected String executeXPathQuery(String statement) throws ParseException { Result result = qe.executeQuery(statement, "xpath", null, NO_MAPPINGS); StringBuilder buff = new StringBuilder(); for (ResultRow row : result.getRows()) { for(PropertyValue v : row.getValues()) { buff.append(v); } } return buff.toString(); }
private static List<String> queryUuid(ContentSession session, String uuid) throws ParseException { Map<String, PropertyValue> bindings = Collections.singletonMap("id", PropertyValues.newString(uuid)); Result result = session.getLatestRoot().getQueryEngine().executeQuery( "SELECT * FROM [nt:base] WHERE [jcr:uuid] = $id" + QueryEngine.INTERNAL_SQL2_QUERY, Query.JCR_SQL2, bindings, NO_MAPPINGS); return StreamSupport.stream(result.getRows().spliterator(), false) .map(r -> r.getPath()) .collect(Collectors.toList()); }
Set<String> getSuggestions(String nodeType, String suggestFor) throws Exception { Set<String> ret = Sets.newHashSet(); String suggQuery = createSuggestQuery(nodeType, suggestFor); QueryEngine qe = root.getQueryEngine(); Result result = qe.executeQuery(suggQuery, Query.JCR_SQL2, null, null); for (ResultRow row : result.getRows()) { ret.add(row.getValue("suggestion").toString()); } return ret; }
private String explainXpath(String query) throws ParseException { String explain = "explain " + query; Result result = executeQuery(explain, "xpath", NO_BINDINGS); ResultRow row = Iterables.getOnlyElement(result.getRows()); return row.getValue("plan").getValue(Type.STRING); }
protected String explainXpath(String query) throws ParseException { String explain = "explain " + query; Result result = executeQuery(explain, "xpath", NO_BINDINGS); ResultRow row = Iterables.getOnlyElement(result.getRows()); String plan = row.getValue("plan").getValue(Type.STRING); return plan; }
protected void assertResultSize(String query, String language, long expected) { long time = System.currentTimeMillis(); try { Result result = executeQuery(query, language, NO_BINDINGS); // currently needed to iterate to really execute the query result.getRows().iterator().hasNext(); long got = result.getSize(SizePrecision.APPROXIMATION, 0); assertEquals(expected, got); } catch (ParseException e) { throw new RuntimeException(e); } time = System.currentTimeMillis() - time; if (time > 10000 && !isDebugModeEnabled()) { fail("Query took too long: " + query + " took " + time + " ms"); } }
@Test public void nonIndexedRequestedPropExcerpt() throws Exception { Tree contentRoot = root.getTree("/").addChild("testRoot"); contentRoot.setProperty("foo", "fox"); contentRoot.setProperty("baz", "is fox ifoxing"); root.commit(); String query = "SELECT [rep:excerpt(baz)] FROM [nt:base] WHERE CONTAINS(*, 'fox')"; Result result = executeQuery(query, SQL2, NO_BINDINGS); Iterator<? extends ResultRow> resultIter = result.getRows().iterator(); assertTrue(resultIter.hasNext()); ResultRow firstRow = resultIter.next(); PropertyValue nodeExcerpt = firstRow.getValue("rep:excerpt(baz)"); assertNull("rep:excerpt(baz) if requested explicitly must be indexed to be evaluated", nodeExcerpt); }