@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); } }
@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); } }
/** * Runs an Oak query searching for {@link #REP_EXTERNAL_PRINCIPAL_NAMES} properties * that match the given name or name hint. * * NOTE: ignore any principals listed in the {@link DefaultSyncConfig.User#autoMembership} * because they are expected to exist in the system and thus will be found * by another principal provider instance. * * @param nameHint The principal name or name hint to be searched for. * @param exactMatch boolean flag indicating if the query should search for * exact matching. * @return The query result. */ @Nullable private Result findPrincipals(@NotNull String nameHint, boolean exactMatch) { try { Map<String, ? extends PropertyValue> bindings = buildBinding(nameHint, exactMatch); String op = (exactMatch) ? " = " : " LIKE "; String statement = "SELECT '" + REP_EXTERNAL_PRINCIPAL_NAMES + "' FROM [rep:User] WHERE PROPERTY([" + REP_EXTERNAL_PRINCIPAL_NAMES + "], '" + PropertyType.TYPENAME_STRING + "')" + op + "$" + BINDING_PRINCIPAL_NAMES + QueryEngine.INTERNAL_SQL2_QUERY; return root.getQueryEngine().executeQuery(statement, Query.JCR_SQL2, bindings, namePathMapper.getSessionLocalMappings()); } catch (ParseException e) { return null; } }
@NotNull @Override public Iterator<? extends Principal> findPrincipals(final String nameHint, final int searchType) { try { AuthorizableType type = AuthorizableType.getType(searchType); StringBuilder statement = new StringBuilder() .append(QueryUtil.getSearchRoot(type, config.getParameters())) .append("//element(*,").append(QueryUtil.getNodeTypeName(type)).append(')') .append("[jcr:like(@rep:principalName,'") .append(buildSearchPattern(nameHint)) .append("')]"); Result result = root.getQueryEngine().executeQuery( statement.toString(), javax.jcr.query.Query.XPATH, NO_BINDINGS, namePathMapper.getSessionLocalMappings()); Iterator<Principal> principals = Iterators.filter( Iterators.transform(result.getRows().iterator(), new ResultRowToPrincipal()), Predicates.notNull()); if (matchesEveryone(nameHint, searchType)) { principals = Iterators.concat(principals, Iterators.singletonIterator(EveryonePrincipal.getInstance())); return Iterators.filter(principals, new EveryonePredicate()); } else { return principals; } } catch (ParseException e) { log.debug(e.getMessage()); return Collections.emptyIterator(); } }
@NotNull @Override public Iterator<? extends Principal> findPrincipals(final String nameHint, final int searchType) { try { AuthorizableType type = AuthorizableType.getType(searchType); StringBuilder statement = new StringBuilder() .append(QueryUtil.getSearchRoot(type, config.getParameters())) .append("//element(*,").append(QueryUtil.getNodeTypeName(type)).append(')') .append("[jcr:like(@rep:principalName,'") .append(buildSearchPattern(nameHint)) .append("')]"); Result result = root.getQueryEngine().executeQuery( statement.toString(), javax.jcr.query.Query.XPATH, NO_BINDINGS, namePathMapper.getSessionLocalMappings()); Iterator<Principal> principals = Iterators.filter( Iterators.transform(result.getRows().iterator(), new ResultRowToPrincipal()), Predicates.notNull()); if (matchesEveryone(nameHint, searchType)) { principals = Iterators.concat(principals, Iterators.singletonIterator(EveryonePrincipal.getInstance())); return Iterators.filter(principals, new EveryonePredicate()); } else { return principals; } } catch (ParseException e) { log.debug(e.getMessage()); return Collections.emptyIterator(); } }
@Nonnull @Override public Iterator<? extends Principal> findPrincipals(final String nameHint, final int searchType) { try { AuthorizableType type = AuthorizableType.getType(searchType); StringBuilder statement = new StringBuilder() .append(QueryUtil.getSearchRoot(type, config.getParameters())) .append("//element(*,").append(QueryUtil.getNodeTypeName(type)).append(')') .append("[jcr:like(@rep:principalName,'") .append(buildSearchPattern(nameHint)) .append("')]"); Result result = root.getQueryEngine().executeQuery( statement.toString(), javax.jcr.query.Query.XPATH, NO_BINDINGS, namePathMapper.getSessionLocalMappings()); Iterator<Principal> principals = Iterators.filter( Iterators.transform(result.getRows().iterator(), new ResultRowToPrincipal()), Predicates.notNull()); if (matchesEveryone(nameHint, searchType)) { principals = Iterators.concat(principals, Iterators.singletonIterator(EveryonePrincipal.getInstance())); return Iterators.filter(principals, new EveryonePredicate()); } else { return principals; } } catch (ParseException e) { log.debug(e.getMessage()); return Collections.emptyIterator(); } }