Package org.apache.jackrabbit.oak.spi.state

Examples of org.apache.jackrabbit.oak.spi.state.NodeBuilder


        do {
            String name = tokenizer.readString();
            tokenizer.read(':');
            switch (tokenizer.read()) {
            case '{':
                NodeBuilder child = builder.setChildNode(name);
                addNode(child, tokenizer);
                break;
            case '[':
                // FIXME: proper array parsing with support for more types
                List<Long> array = newArrayList();
View Full Code Here


    public synchronized String commit(
            String path, String jsonDiff, String revisionId, String message)
            throws MicroKernelException {
        Revision revision = getRevision(revisionId);

        NodeBuilder builder = revision.branch;
        if (builder == null) {
            builder = revision.root.builder();
        }

        applyJsop(builder, path, jsonDiff);

        if (revision.branch != null) {
            revision = new Revision(revision, builder.getNodeState(), message);
        } else {
            try {
                NodeState newRoot = store.merge(builder, CONFLICT_HOOK, null);
                if (!newRoot.equals(head.root)) {
                    revision = new Revision(head, newRoot, message);
View Full Code Here

    private final ConcurrentMap<UUID, Segment> segments =
            Maps.newConcurrentMap();

    public MemoryStore(NodeState root) {
        super(0);
        NodeBuilder builder = EMPTY_NODE.builder();
        builder.setChildNode("root", root);
        journals.put("root", new MemoryJournal(this, builder.getNodeState()));
    }
View Full Code Here

            NodeState before = new SegmentNodeState(segment, base);
            NodeState after = new SegmentNodeState(segment, head);

            while (!parent.setHead(base, head)) {
                RecordId newBase = parent.getHead();
                NodeBuilder builder =
                        new SegmentNodeState(segment, newBase).builder();
                after.compareAgainstBaseState(before, new MergeDiff(builder));
                NodeState state = builder.getNodeState();

                RecordId newHead = writer.writeNode(state).getRecordId();

                base = newBase;
                head = newHead;
View Full Code Here

            String name, NodeState before, NodeState after)
            throws CommitFailedException {
        String primary = after.getName(JCR_PRIMARYTYPE);
        Iterable<String> mixins = after.getNames(JCR_MIXINTYPES);

        NodeBuilder childBuilder = builder.getChildNode(name);
        if (primary == null) {
            // no primary type defined, find and apply a default type
            primary = effective.getDefaultType(name);
            if (primary != null) {
                builder.setProperty(JCR_PRIMARYTYPE, primary, NAME);
View Full Code Here

                    SegmentNodeState state = head.get();
                    RecordId ri = state.getRecordId();

                    SegmentNodeBuilder builder = state.builder();
                    NodeBuilder cp = builder.child(name);
                    cp.setProperty("timestamp", System.currentTimeMillis()
                            + lifetime);
                    cp.setChildNode(ROOT, state.getChildNode(ROOT));

                    if (journal.setHead(ri, builder.getNodeState()
                            .getRecordId())) {
                        refreshHead();
                        return name;
View Full Code Here

        }
    }

    private static void update(NodeBuilder child, String name, String key,
            Set<String> add, Set<String> rm) {
        NodeBuilder index = child.child(name);
        Set<String> empty = of();
        for (String p : rm) {
            STORE.update(index, p, of(key), empty);
        }
        for (String p : add) {
View Full Code Here

            NodeState after = new SegmentNodeState(segment, head);

            Journal parent = store.getJournal(state.get("parent").toString());
            while (!parent.setHead(base, head)) {
                RecordId newBase = parent.getHead();
                NodeBuilder builder =
                        new SegmentNodeState(segment, newBase).builder();
                after.compareAgainstBaseState(before, new MergeDiff(builder));
                RecordId newHead =
                        writer.writeNode(builder.getNodeState()).getRecordId();

                base = newBase;
                head = newHead;
            }

            base = head;

            BasicDBObjectBuilder builder = BasicDBObjectBuilder.start();
            builder.add("_id", name);
            builder.add("parent", state.get("parent"));
            builder.add("base", base.toString());
            builder.add("head", head.toString());
            // TODO: concurrent updates?
            journals.update(state, builder.get(), false, false, concern);
        }
    }
View Full Code Here

    public MongoStore(DB db, int cacheSizeMB) {
        super(cacheSizeMB);
        this.db = checkNotNull(db);
        this.segments = db.getCollection("segments");
        NodeBuilder builder = EMPTY_NODE.builder();
        builder.child("root");
        journals.put("root", new MongoJournal(
                this, db.getCollection("journals"),
                concern, builder.getNodeState()));
    }
View Full Code Here

    }

    @Nonnull
    @Override
    public NodeState processCommit(final NodeState before, NodeState after) throws CommitFailedException {
        NodeBuilder rootAfter = after.builder();

        permissionRoot = getPermissionRoot(rootAfter);
        bitsProvider = new PrivilegeBitsProvider(new ImmutableRoot(before));

        isACL = new TypePredicate(after, NT_REP_ACL);
        isACE = new TypePredicate(after, NT_REP_ACE);
        isGrantACE = new TypePredicate(after, NT_REP_GRANT_ACE);

        Diff diff = new Diff("");
        after.compareAgainstBaseState(before, diff);
        apply();
        return rootAfter.getNodeState();
    }
View Full Code Here

TOP

Related Classes of org.apache.jackrabbit.oak.spi.state.NodeBuilder

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.