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

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


        assertFalse(cursor.hasNext());
    }

    @Test
    public void testPropertyAddition() throws Exception {
        NodeState root = EMPTY_NODE;

        NodeBuilder builder = root.builder();
        builder.child("oak:index").child("solr")
                .setProperty(JCR_PRIMARYTYPE, "oak:QueryIndexDefinition")
                .setProperty("type", "solr");

        NodeState before = builder.getNodeState();
        builder.setProperty("foo", "bar");
        NodeState after = builder.getNodeState();

        NodeState indexed = hook.processCommit(before, after);

        QueryIndex queryIndex = new SolrQueryIndex("solr", server, configuration);
        FilterImpl filter = new FilterImpl(null, null);
        filter.restrictProperty("foo", Operator.EQUAL,
                PropertyValues.newString("bar"));
View Full Code Here


        assertFalse(cursor.hasNext());
    }

    @Test
    public void testSomeNodesCreationWithFullText() throws Exception {
        NodeState root = EMPTY_NODE;

        NodeBuilder builder = root.builder();
        builder.child("oak:index").child("solr")
                .setProperty(JCR_PRIMARYTYPE, "oak:QueryIndexDefinition")
                .setProperty("type", "solr");

        NodeState before = builder.getNodeState();
        builder.setProperty("foo", "bar");
        builder.child("a").setProperty("foo", "bar");
        builder.child("a").child("b").setProperty("foo", "bar");
        builder.child("a").child("b").child("c").setProperty("foo", "bar");

        NodeState after = builder.getNodeState();

        NodeState indexed = hook.processCommit(before, after);

        QueryIndex queryIndex = new SolrQueryIndex("solr", server, configuration);
        FilterImpl filter = new FilterImpl(null, null);
        filter.restrictProperty("foo", Operator.EQUAL,
                PropertyValues.newString("bar"));
View Full Code Here

     * An empty path pattern should match no path
     */
    @Test
    public void emptyMatchesNothing() {
        EventFilter rootFilter = new GlobbingPathFilter("");
        NodeState a = tree.getChild("a").getNodeState();
        assertFalse(rootFilter.includeAdd("a", a));
        assertNull(rootFilter.create("a", a, a));
    }
View Full Code Here

     * a/b/c should match a/b/c
     */
    @Test
    public void literal() {
        EventFilter rootFilter = new GlobbingPathFilter("a/b/c");
        NodeState a = tree.getChild("a").getNodeState();
        assertFalse(rootFilter.includeAdd("a", a));

        EventFilter aFilter = rootFilter.create("a", a, a);
        assertNotNull(aFilter);
        NodeState b = a.getChildNode("b");
        assertFalse(aFilter.includeAdd("b", b));

        EventFilter bFilter = aFilter.create("b", b, b);
        assertNotNull(bFilter);
        NodeState c = b.getChildNode("c");
        assertTrue(bFilter.includeAdd("c", b));
        assertFalse(bFilter.includeAdd("x", b));

        assertNull(bFilter.create("c", c, c));
    }
View Full Code Here

     * a/*&#47c should match a/b/c
     */
    @Test
    public void starGlob() {
        EventFilter rootFilter = new GlobbingPathFilter("a/*/c");
        NodeState a = tree.getChild("a").getNodeState();
        assertFalse(rootFilter.includeAdd("a", a));

        EventFilter aFilter = rootFilter.create("a", a, a);
        assertNotNull(aFilter);
        NodeState b = a.getChildNode("b");
        assertFalse(aFilter.includeAdd("b", b));

        EventFilter bFilter = aFilter.create("b", b, b);
        assertNotNull(bFilter);
        NodeState c = b.getChildNode("c");
        assertTrue(bFilter.includeAdd("c", b));
        assertFalse(bFilter.includeAdd("x", b));

        assertNull(bFilter.create("c", c, c));
    }
View Full Code Here

     * **&#47/y/z should match x/y/x/y/z
     */
    @Test
    public void starStarGlob() {
        EventFilter rootFilter = new GlobbingPathFilter("**/y/z");
        NodeState x1 = tree.getChild("x").getNodeState();
        assertFalse(rootFilter.includeAdd("x", x1));

        EventFilter x1Filter = rootFilter.create("x", x1, x1);
        assertNotNull(x1Filter);
        NodeState y1 = x1.getChildNode("y");
        assertFalse(x1Filter.includeAdd("y", y1));

        EventFilter y1Filter = x1Filter.create("y", y1, y1);
        assertNotNull(y1Filter);
        NodeState x2 = y1.getChildNode("x");
        assertFalse(y1Filter.includeAdd("x", x2));

        EventFilter x2Filter = y1Filter.create("x", x2, x2);
        assertNotNull(x2Filter);
        NodeState y2 = x2.getChildNode("y");
        assertFalse(x2Filter.includeAdd("y", y2));

        EventFilter y2Filter = x2Filter.create("y", y2, y2);
        assertNotNull(y2Filter);
        NodeState z = y2.getChildNode("z");
        assertTrue(y2Filter.includeAdd("z", z));

        EventFilter zFilter = (y2Filter.create("z", z, z));
        assertFalse(zFilter.includeAdd("x", EMPTY_NODE));
    }
View Full Code Here

     * **&#47a/b/c should match a/b/c
     */
    @Test
    public void matchAtStart() {
        EventFilter rootFilter = new GlobbingPathFilter("**/a/b/c");
        NodeState a = tree.getChild("a").getNodeState();
        assertFalse(rootFilter.includeAdd("a", a));

        EventFilter aFilter = rootFilter.create("a", a, a);
        assertNotNull(aFilter);
        NodeState b = a.getChildNode("b");
        assertFalse(aFilter.includeAdd("b", b));

        EventFilter bFilter = aFilter.create("b", b, b);
        assertNotNull(bFilter);
        NodeState c = b.getChildNode("c");
        assertTrue(bFilter.includeAdd("c", b));
        assertFalse(bFilter.includeAdd("x", b));
    }
View Full Code Here

     * @param root root node state
     * @return read-only node type manager
     */
    @Nonnull
    public static ReadOnlyNodeTypeManager getInstance(NodeState root) {
        NodeState typesNode = root;
        for (String name : PathUtils.elements(NODE_TYPES_PATH)) {
            typesNode = typesNode.getChildNode(name);
        }

        final Tree typesTree = new ImmutableTree(typesNode);
        return new ReadOnlyNodeTypeManager() {
            @Override
View Full Code Here

    @Override
    public synchronized void run() {
        log.debug("Running background index task {}", name);
        String checkpoint = store.checkpoint(lifetime);
        NodeState after = store.retrieve(checkpoint);
        if (after == null) {
            log.debug("Unable to retrieve checkpoint {}", checkpoint);
            return;
        }

        preAsyncRun(store);

        NodeBuilder builder = store.getRoot().builder();
        NodeBuilder async = builder.child(ASYNC);

        NodeState before = null;
        final PropertyState state = async.getProperty(name);
        if (state != null && state.getType() == STRING) {
            before = store.retrieve(state.getValue(STRING));
        }
        if (before == null) {
            before = MISSING_NODE;
        }

        CommitFailedException exception = EditorDiff.process(new IndexUpdate(
                provider, name, after, builder), before, after);
        if (exception == null) {
            try {
                async.setProperty(name, checkpoint);
                postAsyncRunStatus(builder);
                store.merge(builder, new CommitHook() {
                    @Override
                    @Nonnull
                    public NodeState processCommit(NodeState before,
                            NodeState after) throws CommitFailedException {
                        // check for concurrent updates by this async task
                        PropertyState stateAfterRebase = before.getChildNode(
                                ASYNC).getProperty(name);
                        if (Objects.equal(state, stateAfterRebase)) {
                            return after;
                        } else {
                            throw CONCURRENT_UPDATE;
View Full Code Here

            undefinedType = UNDEFINED.toString();
        }

        // Find matching named property definition
        for (NodeState type : types) {
            NodeState definitions = type
                    .getChildNode(OAK_NAMED_PROPERTY_DEFINITIONS)
                    .getChildNode(escapedName);

            NodeState definition = definitions.getChildNode(definedType);
            if (definition.exists()) {
                return definition;
            }

            definition = definitions.getChildNode(undefinedType);
            if (definition.exists()) {
                return definition;
            }

            // OAK-822: a mandatory definition always overrides residual ones
            // TODO: unnecessary if the OAK-713 fallback wasn't needed below
            for (ChildNodeEntry entry : definitions.getChildNodeEntries()) {
                definition = entry.getNodeState();
                if (definition.getBoolean(JCR_MANDATORY)) {
                    return definition;
                }
            }

// TODO: Fall back to residual definitions until we have consensus on OAK-713
//          throw new ConstraintViolationException(
//                "No matching definition found for property " + propertyName);
        }

        // Find matching residual property definition
        for (NodeState type : types) {
            NodeState residual =
                    type.getChildNode(OAK_RESIDUAL_PROPERTY_DEFINITIONS);
            NodeState definition = residual.getChildNode(definedType);
            if (!definition.exists()) {
                definition = residual.getChildNode(undefinedType);
            }
            if (definition.exists()) {
                return definition;
            }
        }

        return null;
View Full Code Here

TOP

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

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.