@Override public boolean includeReorder(String destName, String name, NodeState reordered) { // TODO: check access to the dest name, it might not be accessible return getTreePermission().getChildPermission(name, reordered).canRead(); }
@Override public boolean includeDelete(String name, NodeState before) { return getTreePermission().getChildPermission(name, before).canRead(); }
@Override public boolean includeReorder(String destName, String name, NodeState reordered) { // TODO: check access to the dest name, it might not be accessible return getTreePermission().getChildPermission(name, reordered).canRead(); }
@Override public boolean includeMove(String sourcePath, String name, NodeState moved) { // TODO: check access to the source path, it might not be accessible return getTreePermission().getChildPermission(name, moved).canRead(); }
@Override public boolean includeMove(String sourcePath, String name, NodeState moved) { // TODO: check access to the source path, it might not be accessible return getTreePermission().getChildPermission(name, moved).canRead(); }
VersionTreePermission createChildPermission(@Nonnull Tree versionTree) { TreePermission delegatee; if (JCR_FROZENNODE.equals(versionTree.getName()) || NT_NAMES.contains(TreeUtil.getPrimaryTypeName(versionTree))) { delegatee = versionablePermission; } else { delegatee = versionablePermission.getChildPermission(versionTree.getName(), ((ImmutableTree) versionTree).getNodeState()); } return new VersionTreePermission(versionTree, delegatee); }
VersionTreePermission createChildPermission(@NotNull Tree versionTree) { TreePermission delegatee; if (JCR_FROZENNODE.equals(versionTree.getName()) || NT_NAMES.contains(TreeUtil.getPrimaryTypeName(versionTree))) { delegatee = versionablePermission; } else { delegatee = versionablePermission.getChildPermission(versionTree.getName(), treeProvider.asNodeState(versionTree)); } return new VersionTreePermission(versionTree, delegatee, treeProvider); }
VersionTreePermission createChildPermission(@NotNull Tree versionTree) { TreePermission delegatee; if (JCR_FROZENNODE.equals(versionTree.getName()) || NT_NAMES.contains(TreeUtil.getPrimaryTypeName(versionTree))) { delegatee = versionablePermission; } else { delegatee = versionablePermission.getChildPermission(versionTree.getName(), treeProvider.asNodeState(versionTree)); } return new VersionTreePermission(versionTree, delegatee, treeProvider); }
@Override public boolean hasChildNode(@NotNull String name) { if (!state.hasChildNode(name)) { return false; } else if (treePermission.canReadAll()) { return true; } else { NodeState child = state.getChildNode(name); return treePermission.getChildPermission(name, child).canRead(); } }
@Override public Validator childNodeChanged(String name, NodeState before, NodeState after) { Tree childBefore = parentBefore.getChild(name); Tree childAfter = parentAfter.getChild(name); return nextValidator(childBefore, childAfter, parentPermission.getChildPermission(name, before)); }
@Override public Validator childNodeChanged(String name, NodeState before, NodeState after) { Tree childBefore = parentBefore.getChild(name); Tree childAfter = parentAfter.getChild(name); return nextValidator(childBefore, childAfter, parentPermission.getChildPermission(name, before)); }
@NotNull @Override public TreePermission getTreePermission(@NotNull Tree tree, @NotNull TreePermission parentPermission) { Tree readOnlyTree = PermissionUtil.getReadOnlyTree(tree, immutableRoot); if (tree.isRoot()) { return CompositeTreePermission.create(readOnlyTree, treeProvider, typeProvider, pps, compositionType); } else if (parentPermission instanceof CompositeTreePermission) { return CompositeTreePermission.create(readOnlyTree, treeProvider, ((CompositeTreePermission) parentPermission)); } else { return parentPermission.getChildPermission(readOnlyTree.getName(), treeProvider.asNodeState(readOnlyTree)); } }
@Override public boolean hasChildNode(@NotNull String name) { if (!state.hasChildNode(name)) { return false; } else if (treePermission.canReadAll()) { return true; } else { NodeState child = state.getChildNode(name); return treePermission.getChildPermission(name, child).canRead(); } }
private Validator visibleValidator(@NotNull Tree source, @NotNull Tree dest) { // TODO improve: avoid calculating the 'before' permissions in case the current parent permissions already point to the correct tree. Tree immutableTree = moveCtx.rootBefore.getTree("/"); TreePermission tp = getPermissionProvider().getTreePermission(immutableTree, TreePermission.EMPTY); for (String n : PathUtils.elements(source.getPath())) { immutableTree = immutableTree.getChild(n); tp = tp.getChildPermission(n, getTreeProvider().asNodeState(immutableTree)); } Validator validator = createValidator(source, dest, tp, this); return new VisibleValidator(validator, true, false); }
@Test public void testGetChildPermission() throws Exception { TreePermission tp = getTreePermission(accessSession, REPO_POLICY_PATH); assertSame(tp, tp.getChildPermission("childName", EmptyNodeState.EMPTY_NODE)); }
@Test public void testMultipleToSingle() { TreePermission rootTp = createRootTreePermission(fullScopeProvider, new NoScopeProvider(root), new NoScopeProvider(root)); assertCompositeTreePermission(true, rootTp); NodeState childState = getTreeProvider().asNodeState(rootTree.getChild("test")); TreePermission testTp = rootTp.getChildPermission("test", childState); TreePermission expected = fullScopeProvider.getTreePermission(rootTree, TreePermission.EMPTY).getChildPermission("test", childState); assertEquals(expected.getClass(), testTp.getClass()); }
@Test public void testTreePermissionGetChildOR() throws Exception { List<String> childNames = ImmutableList.of("test", "a", "b", "c", "nonexisting"); Tree rootTree = readOnlyRoot.getTree(ROOT_PATH); NodeState ns = getTreeProvider().asNodeState(rootTree); TreePermission tp = createPermissionProviderOR().getTreePermission(rootTree, TreePermission.EMPTY); for (String cName : childNames) { ns = ns.getChildNode(cName); tp = tp.getChildPermission(cName, ns); assertCompositeTreePermission(tp); } }
@Override @Test public void testTreePermissionGetChild() throws Exception { List<String> childNames = ImmutableList.of("test", "a", "b", "c", "nonexisting"); Tree rootTree = readOnlyRoot.getTree(ROOT_PATH); NodeState ns = getTreeProvider().asNodeState(rootTree); TreePermission tp = createPermissionProvider().getTreePermission(rootTree, TreePermission.EMPTY); assertCompositeTreePermission(tp); for (String cName : childNames) { ns = ns.getChildNode(cName); tp = tp.getChildPermission(cName, ns); assertCompositeTreePermission(false, tp); } }
@Test public void testMultiple() { TreePermission rootTp = createRootTreePermission(fullScopeProvider, fullScopeProvider); assertCompositeTreePermission(true, rootTp); TreePermission testTp = rootTp.getChildPermission("test", getTreeProvider().asNodeState(rootTree.getChild("test"))); assertCompositeTreePermission(true, testTp); }
@Test public void testMultipleNoRecurse() { TreePermission rootTp = createRootTreePermission(new NoScopeProvider(root), new NoScopeProvider(root)); assertCompositeTreePermission(true, rootTp); assertSame(TreePermission.EMPTY, rootTp.getChildPermission("test", getTreeProvider().asNodeState(rootTree.getChild("test")))); }