use of org.apache.jackrabbit.oak.spi.state.NodeState in project jackrabbit-oak by apache.
the class PropertyIndexTest method testUnique.
@Test(expected = CommitFailedException.class)
public void testUnique() throws Exception {
NodeState root = EMPTY_NODE;
// Add index definition
NodeBuilder builder = root.builder();
createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "fooIndex", true, true, ImmutableSet.of("foo"), null);
NodeState before = builder.getNodeState();
builder.child("a").setProperty("foo", "abc");
builder.child("b").setProperty("foo", Arrays.asList("abc", "def"), Type.STRINGS);
NodeState after = builder.getNodeState();
// should throw
HOOK.processCommit(before, after, CommitInfo.EMPTY);
}
use of org.apache.jackrabbit.oak.spi.state.NodeState in project jackrabbit-oak by apache.
the class PropertyIndexTest method testUniqueByTypeOK.
@Test
public void testUniqueByTypeOK() throws Exception {
NodeState root = EMPTY_NODE;
// Add index definition
NodeBuilder builder = root.builder();
createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "fooIndex", true, true, ImmutableSet.of("foo"), ImmutableSet.of("typeFoo"));
NodeState before = builder.getNodeState();
builder.child("a").setProperty(JCR_PRIMARYTYPE, "typeFoo", Type.NAME).setProperty("foo", "abc");
builder.child("b").setProperty(JCR_PRIMARYTYPE, "typeBar", Type.NAME).setProperty("foo", "abc");
NodeState after = builder.getNodeState();
// should not throw
HOOK.processCommit(before, after, CommitInfo.EMPTY);
}
use of org.apache.jackrabbit.oak.spi.state.NodeState in project jackrabbit-oak by apache.
the class PropertyIndexTest method testPathMismatch.
@Test
public void testPathMismatch() throws Exception {
NodeState root = INITIAL_CONTENT;
// Add index definition
NodeBuilder builder = root.builder();
NodeBuilder index = createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "foo", true, false, ImmutableSet.of("foo"), null);
index.setProperty(createProperty(PROP_INCLUDED_PATHS, of("/test/a"), Type.STRINGS));
index.setProperty(createProperty(PROP_EXCLUDED_PATHS, of("/test/a/b"), Type.STRINGS));
NodeState before = builder.getNodeState();
// Add some content and process it through the property index hook
builder.child("test").child("a").setProperty("foo", "abc");
builder.child("test").child("a").child("b").setProperty("foo", "abc");
NodeState after = builder.getNodeState();
NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY);
FilterImpl f = createFilter(indexed, NT_BASE);
f.restrictPath("/test2", Filter.PathRestriction.ALL_CHILDREN);
PropertyIndexPlan plan = new PropertyIndexPlan("plan", root, index.getNodeState(), f);
assertTrue(Double.POSITIVE_INFINITY == plan.getCost());
}
use of org.apache.jackrabbit.oak.spi.state.NodeState in project jackrabbit-oak by apache.
the class S3DataStoreStats method findLeafNode.
private NodeState findLeafNode(final String nodePathName) {
final Iterable<String> pathNodes = PathUtils.elements(PathUtils.getParentPath(nodePathName));
final String leafNodeName = PathUtils.getName(nodePathName);
NodeState currentNode = nodeStore.getRoot();
for (String pathNodeName : pathNodes) {
if (pathNodeName.length() > 0) {
NodeState childNode = currentNode.getChildNode(pathNodeName);
if (!childNode.exists()) {
break;
}
currentNode = childNode;
}
}
return currentNode.getChildNode(leafNodeName);
}
use of org.apache.jackrabbit.oak.spi.state.NodeState in project jackrabbit-oak by apache.
the class TypePredicate method isOrderable.
@Nonnull
public static TypePredicate isOrderable(@Nonnull NodeState root) {
Set<String> orderable = newHashSet();
NodeState types = checkNotNull(root).getChildNode(JCR_SYSTEM).getChildNode(JCR_NODE_TYPES);
for (ChildNodeEntry entry : types.getChildNodeEntries()) {
NodeState type = entry.getNodeState();
if (type.getBoolean(JCR_HASORDERABLECHILDNODES)) {
orderable.add(entry.getName());
}
}
return new TypePredicate(root, orderable);
}
Aggregations