@Override public <T> void build(QueryBuilder<T> builder) { builder.setCondition(builder.like('@' +UserConstants.REP_PRINCIPAL_NAME, buildSearchPattern(nameHint))); builder.setSelector(AuthorizableType.getType(searchType).getAuthorizableClass()); } };
@Override public boolean apply(Authorizable authorizable) { return authorizableType.isType(authorizable); } }
@Override public Iterator<Authorizable> findAuthorizables(String relPath, String value, int searchType) throws RepositoryException { return getQueryManager().findAuthorizables(relPath, value, AuthorizableType.getType(searchType)); }
@Test public void testGetAuthorizableClass() { assertEquals(User.class, AuthorizableType.USER.getAuthorizableClass()); assertEquals(Group.class, AuthorizableType.GROUP.getAuthorizableClass()); assertEquals(Authorizable.class, AuthorizableType.AUTHORIZABLE.getAuthorizableClass()); } }
@Test public void testGetSearchRootSingleConfiguredPath() { String path = "/configured/user_and_group/path"; for (AuthorizableType type : AuthorizableType.values()) { assertEquals(QueryConstants.SEARCH_ROOT_PATH + path, QueryUtil.getSearchRoot(type, ConfigurationParameters.of(UserConstants.PARAM_USER_PATH, path, UserConstants.PARAM_GROUP_PATH, path))); } }
@Override public Iterator<Authorizable> findAuthorizables(String relPath, String value, int searchType) throws RepositoryException { return getQueryManager().findAuthorizables(relPath, value, AuthorizableType.getType(searchType)); }
@Override public <T> void build(QueryBuilder<T> builder) { builder.setCondition(builder.like('@' +UserConstants.REP_PRINCIPAL_NAME, buildSearchPattern(nameHint))); builder.setSelector(AuthorizableType.getType(searchType).getAuthorizableClass()); } };
@Override public Iterator<Authorizable> findAuthorizables(String relPath, String value, int searchType) throws RepositoryException { return getQueryManager().findAuthorizables(relPath, value, AuthorizableType.getType(searchType)); }
@Override public boolean apply(Authorizable authorizable) { return authorizableType.isType(authorizable); } }
@Override public <T> void build(QueryBuilder<T> builder) { builder.setCondition(builder.like('@' +UserConstants.REP_PRINCIPAL_NAME, buildSearchPattern(nameHint))); builder.setSelector(AuthorizableType.getType(searchType).getAuthorizableClass()); } };
@Test(expected = IllegalArgumentException.class) public void testGetTypeIllegalSearchType() { AuthorizableType.getType(0); }
@Override public boolean apply(Authorizable authorizable) { return authorizableType.isType(authorizable); } }
@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(); } }
@Test public void testGetType() { assertSame(AuthorizableType.USER, AuthorizableType.getType(UserManager.SEARCH_TYPE_USER)); assertSame(AuthorizableType.GROUP, AuthorizableType.getType(UserManager.SEARCH_TYPE_GROUP)); assertSame(AuthorizableType.AUTHORIZABLE, AuthorizableType.getType(UserManager.SEARCH_TYPE_AUTHORIZABLE)); }