UserValidator(Tree parentBefore, Tree parentAfter, UserValidatorProvider provider) { this.parentBefore = parentBefore; this.parentAfter = parentAfter; this.provider = provider; authorizableType = (parentAfter == null) ? null : UserUtil.getType(parentAfter); }
UserValidator(Tree parentBefore, Tree parentAfter, UserValidatorProvider provider) { this.parentBefore = parentBefore; this.parentAfter = parentAfter; this.provider = provider; authorizableType = (parentAfter == null) ? null : UserUtil.getType(parentAfter); }
UserValidator(Tree parentBefore, Tree parentAfter, UserValidatorProvider provider) { this.parentBefore = parentBefore; this.parentAfter = parentAfter; this.provider = provider; authorizableType = (parentAfter == null) ? null : UserUtil.getType(parentAfter); }
@Nullable public static AuthorizableType getType(@NotNull Tree authorizableNode) { String ntName = TreeUtil.getPrimaryTypeName(authorizableNode); return getType(ntName); }
@CheckForNull public static AuthorizableType getType(@Nonnull Tree authorizableNode) { String ntName = TreeUtil.getPrimaryTypeName(authorizableNode); return getType(ntName); }
@Nullable private Principal createPrincipal(@Nullable Tree authorizableTree) { if (authorizableTree != null) { AuthorizableType type = UserUtil.getType(authorizableTree); if (AuthorizableType.GROUP == type) { return createGroupPrincipal(authorizableTree); } else if (AuthorizableType.USER == type) { return createUserPrincipal(UserUtil.getAuthorizableId(authorizableTree, type), authorizableTree); } } return null; }
@Nullable private Principal createPrincipal(@Nullable Tree authorizableTree) { if (authorizableTree != null) { AuthorizableType type = UserUtil.getType(authorizableTree); if (AuthorizableType.GROUP == type) { return createGroupPrincipal(authorizableTree); } else if (AuthorizableType.USER == type) { return createUserPrincipal(UserUtil.getAuthorizableId(authorizableTree, type), authorizableTree); } } return null; }
@CheckForNull private Principal createPrincipal(@CheckForNull Tree authorizableTree) { Principal principal = null; if (authorizableTree != null) { AuthorizableType type = UserUtil.getType(authorizableTree); if (AuthorizableType.GROUP == type) { principal = createGroupPrincipal(authorizableTree); } else if (AuthorizableType.USER == type) { principal = createUserPrincipal(UserUtil.getAuthorizableId(authorizableTree, type), authorizableTree); } } return principal; }
@Override public Validator childNodeAdded(String name, NodeState after) throws CommitFailedException { Tree tree = checkNotNull(parentAfter.getChild(name)); validateAuthorizable(tree, UserUtil.getType(tree)); return newValidator(null, tree, provider); }
@Override public Validator childNodeAdded(String name, NodeState after) throws CommitFailedException { Tree tree = checkNotNull(parentAfter.getChild(name)); validateAuthorizable(tree, UserUtil.getType(tree)); return newValidator(null, tree, provider); }
@Override public Validator childNodeAdded(String name, NodeState after) throws CommitFailedException { Tree tree = checkNotNull(parentAfter.getChild(name)); validateAuthorizable(tree, UserUtil.getType(tree)); return newValidator(null, tree, provider); }
@Test public void testGetTypeFromNtReturnsNull() { // abstract primary type 'rep:Authorizable' assertNull(UserUtil.getType(UserConstants.NT_REP_AUTHORIZABLE)); // another node type name assertNull(UserUtil.getType(JcrConstants.NT_FILE)); // null or empty name assertNull(UserUtil.getType((String) null)); assertNull(UserUtil.getType("")); }
@Nullable private Authorizable getAuthorizable(@Nullable ResultRow row) { Authorizable authorizable = null; if (row != null) { String resultPath = row.getValue(QueryConstants.JCR_PATH).getValue(Type.STRING); try { Tree tree = root.getTree(resultPath); AuthorizableType type = UserUtil.getType(tree); while (tree.exists() && !tree.isRoot() && type == null) { tree = tree.getParent(); type = UserUtil.getType(tree); } if (tree.exists() && (targetType == null || targetType == type)) { authorizable = userManager.getAuthorizable(tree); } } catch (RepositoryException e) { log.debug("Failed to access authorizable " + resultPath); } } return authorizable; } }
@CheckForNull private Authorizable getAuthorizable(@CheckForNull ResultRow row) { Authorizable authorizable = null; if (row != null) { String resultPath = row.getValue(QueryConstants.JCR_PATH).getValue(Type.STRING); try { Tree tree = root.getTree(resultPath); AuthorizableType type = UserUtil.getType(tree); while (tree.exists() && !tree.isRoot() && type == null) { tree = tree.getParent(); type = UserUtil.getType(tree); } if (tree.exists() && (targetType == null || targetType == type)) { authorizable = userManager.getAuthorizable(tree); } } catch (RepositoryException e) { log.debug("Failed to access authorizable " + resultPath); } } return authorizable; } }
@Override public Validator childNodeDeleted(String name, NodeState before) throws CommitFailedException { Tree tree = parentBefore.getChild(name); AuthorizableType type = UserUtil.getType(tree); if (type == AuthorizableType.USER || type == AuthorizableType.GROUP) { if (isAdminUser(tree)) { String msg = "The admin user cannot be removed."; throw constraintViolation(27, msg); } return null; } else { return newValidator(tree, null, provider); } }
@Override public Validator childNodeDeleted(String name, NodeState before) throws CommitFailedException { Tree tree = parentBefore.getChild(name); AuthorizableType type = UserUtil.getType(tree); if (type == AuthorizableType.USER || type == AuthorizableType.GROUP) { if (isAdminUser(tree)) { String msg = "The admin user cannot be removed."; throw constraintViolation(27, msg); } return null; } else { return newValidator(tree, null, provider); } }
@Override public Validator childNodeDeleted(String name, NodeState before) throws CommitFailedException { Tree tree = parentBefore.getChild(name); AuthorizableType type = UserUtil.getType(tree); if (type == AuthorizableType.USER || type == AuthorizableType.GROUP) { if (isAdminUser(tree)) { String msg = "The admin user cannot be removed."; throw constraintViolation(27, msg); } return null; } else { return newValidator(tree, null, provider); } }
@Test public void testGetTypeFromTree() { Map<String, AuthorizableType> test = ImmutableMap.of( UserConstants.NT_REP_GROUP, AuthorizableType.GROUP, UserConstants.NT_REP_USER, AuthorizableType.USER, UserConstants.NT_REP_SYSTEM_USER, AuthorizableType.USER ); for (String ntName : test.keySet()) { AuthorizableType expected = test.get(ntName); assertEquals(ntName, expected, UserUtil.getType(createTree(ntName))); } }
@Test public void testGetTypeFromTree2() { List<String> test = ImmutableList.of( UserConstants.NT_REP_AUTHORIZABLE, JcrConstants.NT_FILE ); for (String ntName : test) { assertNull(UserUtil.getType(createTree(ntName))); } }