Package org.apache.jackrabbit.oak.plugins.tree

Examples of org.apache.jackrabbit.oak.plugins.tree.ImmutableTree


    }

    private Validator visibleValidator(@Nonnull ImmutableTree source,
                                       @Nonnull ImmutableTree dest) {
        // TODO improve: avoid calculating the 'before' permissions in case the current parent permissions already point to the correct tree.
        ImmutableTree parent = moveCtx.rootBefore.getTree("/");
        TreePermission tp = getPermissionProvider().getTreePermission(parent, TreePermission.EMPTY);
        for (String n : PathUtils.elements(source.getPath())) {
            tp = tp.getChildPermission(n, parent.getChild(n).getNodeState());
        }
        Validator validator = createValidator(source, dest, tp, this);
        return new VisibleValidator(validator, true, false);
    }
View Full Code Here


                String msg = "Failed to register custom privilege: Definition uses reserved namespace: " + name;
                throw new CommitFailedException("Privilege", 1, msg);
            }

            // validate the definition
            Tree tree = new ImmutableTree(ImmutableTree.ParentProvider.UNSUPPORTED, name, after);
            validateDefinition(tree);
        }

        // privilege definitions may not have child nodes (or another type of nodes
        // that is not handled by this validator anyway).
View Full Code Here

        }

        private boolean processAdd(ImmutableTree child, MoveAwarePermissionValidator validator) throws CommitFailedException {
            String sourcePath = moveTracker.getSourcePath(child.getPath());
            if (sourcePath != null) {
                ImmutableTree source = rootBefore.getTree(sourcePath);
                if (source.exists()) {
                    // check permissions for adding the moved node at the target location.
                    validator.checkPermissions(child, false, Permissions.ADD_NODE | Permissions.NODE_TYPE_MANAGEMENT);
                    checkPermissions(source, Permissions.REMOVE_NODE);
                    return diff(source, child, validator);
                }
View Full Code Here

        }

        private boolean processDelete(ImmutableTree child, MoveAwarePermissionValidator validator) throws CommitFailedException {
            String destPath = moveTracker.getDestPath(child.getPath());
            if (destPath != null) {
                ImmutableTree dest = rootAfter.getTree(destPath);
                if (dest.exists()) {
                    // check permissions for removing that node.
                    validator.checkPermissions(child, true, Permissions.REMOVE_NODE);
                    checkPermissions(dest, Permissions.ADD_NODE|Permissions.NODE_TYPE_MANAGEMENT);
                    return diff(child, dest, validator);
                }
View Full Code Here

        }
    }

    @Override
    public Validator childNodeAdded(String name, NodeState after) throws CommitFailedException {
        ImmutableTree child = checkNotNull(parentAfter.getChild(name));
        if (isVersionstorageTree(child)) {
            child = getVersionHistoryTree(child);
            if (child == null) {
                throw new CommitFailedException(
                        ACCESS, 21, "New version storage node without version history: cannot verify permissions.");
View Full Code Here

    }


    @Override
    public Validator childNodeChanged(String name, NodeState before, NodeState after) throws CommitFailedException {
        ImmutableTree childBefore = parentBefore.getChild(name);
        ImmutableTree childAfter = parentAfter.getChild(name);
        return nextValidator(childBefore, childAfter, parentPermission.getChildPermission(name, before));
    }
View Full Code Here

        return nextValidator(childBefore, childAfter, parentPermission.getChildPermission(name, before));
    }

    @Override
    public Validator childNodeDeleted(String name, NodeState before) throws CommitFailedException {
        ImmutableTree child = parentBefore.getChild(name);
        if (isVersionstorageTree(child)) {
            throw new CommitFailedException(
                    ACCESS, 22, "Attempt to remove versionstorage node: Fail to verify delete permission.");
        }
        return checkPermissions(child, true, Permissions.REMOVE_NODE);
View Full Code Here

        NodeBuilder root = EMPTY_NODE.builder();
        createPath(root, "a/b/c/d");
        createPath(root, "q");
        createPath(root, "x/y/x/y/z");
        createPath(root, "r/s/t/u/v/r/s/t/u/v/r/s/t/u/v/w");
        tree = new ImmutableTree(root.getNodeState());
    }
View Full Code Here

     * ** should match every path
     */
    @Test
    public void all() {
        EventFilter filter = new GlobbingPathFilter(STAR_STAR);
        ImmutableTree t = tree;

        for(String name : elements("a/b/c/d")) {
            t = t.getChild(name);
            assertTrue(filter.includeAdd(name, t.getNodeState()));
            filter = filter.create(name, t.getNodeState(), t.getNodeState());
            assertNotNull(filter);
        }
    }
View Full Code Here

     * **&#47r/s/t/u/v should match r/s/t/u/v and r/s/t/u/v/r/s/t/u/v and r/s/t/u/v/r/s/t/u/v/r/s/t/u/v
     */
    @Test
    public void multipleMatches() {
        EventFilter filter = new GlobbingPathFilter("**/r/s/t/u/v");
        ImmutableTree t = tree;

        for(int c = 0; c < 2; c++) {
            for(String name : elements("r/s/t/u")) {
                t = t.getChild(name);
                assertFalse(filter.includeAdd(name, t.getNodeState()));
                filter = filter.create(name, t.getNodeState(), t.getNodeState());
                assertNotNull(filter);
            }

            t = t.getChild("v");
            assertTrue(filter.includeAdd("v", t.getNodeState()));
            filter = filter.create("v", t.getNodeState(), t.getNodeState());
            assertNotNull(filter);
        }
    }
View Full Code Here

TOP

Related Classes of org.apache.jackrabbit.oak.plugins.tree.ImmutableTree

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.