private NodeState commitAndDump(NodeState before, NodeState after) throws CommitFailedException, IOException { NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); tracker.update(indexed); dumpIndexDir(); return indexed; }
private void commit() throws Exception { root = HOOK.processCommit(rootBuilder.getBaseState(), rootBuilder.getNodeState(), EMPTY); rootBuilder = root.builder(); }
private void commit() throws Exception { root = HOOK.processCommit(rootBuilder.getBaseState(), rootBuilder.getNodeState(), EMPTY); rootBuilder = root.builder(); }
private void commit() throws Exception { root = HOOK.processCommit(rootBuilder.getBaseState(), rootBuilder.getNodeState(), EMPTY); rootBuilder = root.builder(); }
private void commit() throws Exception { root = HOOK.processCommit(rootBuilder.getBaseState(), rootBuilder.getNodeState(), EMPTY); rootBuilder = root.builder(); }
private void commit() throws Exception { root = HOOK.processCommit(rootBuilder.getBaseState(), rootBuilder.getNodeState(), EMPTY); rootBuilder = root.builder(); }
private NodeState doAsyncIndex(NodeState current, String childName, String fooValue) throws CommitFailedException { //Have some stuff to be indexed NodeBuilder builder = current.builder(); builder.child(childName).setProperty("foo", fooValue); NodeState after = builder.getNodeState(); return asyncHook.processCommit(current, after, newCommitInfo()); }
private NodeState createAndPopulateAsyncIndex(FulltextIndexConstants.IndexingMode indexingMode) throws CommitFailedException { createIndexDefinition("fooIndex", indexingMode); //Have some stuff to be indexed builder.child("a").setProperty("foo", "bar"); NodeState after = builder.getNodeState(); return asyncHook.processCommit(EMPTY_NODE, after, newCommitInfo()); }
private NodeState createAndPopulateAsyncIndex(FulltextIndexConstants.IndexingMode indexingMode) throws CommitFailedException { createIndexDefinition("fooIndex", indexingMode); //Have some stuff to be indexed builder.child("a").setProperty("foo", "bar"); NodeState after = builder.getNodeState(); return asyncHook.processCommit(EMPTY_NODE, after, newCommitInfo()); }
@Test public void requiredTypeIsUndefined() throws CommitFailedException { EditorHook hook = new EditorHook(new TypeEditorProvider()); NodeState root = INITIAL_CONTENT; NodeBuilder builder = root.builder(); NodeState before = builder.getNodeState(); builder.setProperty("any", "title"); NodeState after = builder.getNodeState(); hook.processCommit(before, after, CommitInfo.EMPTY); builder.setProperty("any", 134.34, Type.DOUBLE); hook.processCommit(after, builder.getNodeState(), CommitInfo.EMPTY); }
@Test public void autoFormatUpdate() throws Exception{ NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME); NodeBuilder nb = newLuceneIndexDefinitionV2(index, "lucene", of(TYPENAME_STRING)); //1. Trigger a index so that next index step does not see it as a fresh index NodeState indexed = HOOK.processCommit(EMPTY_NODE, builder.getNodeState(), CommitInfo.EMPTY); IndexDefinition defn = new IndexDefinition(root, indexed.getChildNode(INDEX_DEFINITIONS_NAME).getChildNode("lucene"), "/foo"); assertFalse(defn.isOfOldFormat()); }
@Test public void contextAwareCallback_async() throws Exception{ NodeState before = builder.getNodeState(); NodeBuilder idx = createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "rootIndex", true, false, ImmutableSet.of("foo"), null); idx.setProperty("async", asList("sync", "async"), Type.STRINGS); NodeState after = builder.getNodeState(); CallbackCapturingProvider provider = new CallbackCapturingProvider(); EditorHook hook = new EditorHook(new IndexUpdateProvider(provider, "async", false)); hook.processCommit(before, after, CommitInfo.EMPTY); assertTrue(((ContextAwareCallback)provider.callback).getIndexingContext().isAsync()); }
@Test public void basics() throws Exception{ IndexDefinitionBuilder defnb = new IndexDefinitionBuilder(); defnb.indexRule("nt:base").property("foo").propertyIndex(); NodeState defnState = defnb.build(); IndexDefinition defn = new IndexDefinition(root, defnState, indexPath); LuceneIndexEditorContext ctx = newContext(defnState.builder(), defn, true); EditorHook hook = createHook(ctx); updateBefore(defnb); NodeBuilder builder = before.builder(); builder.child("a").setProperty("foo", "bar"); hook.processCommit(root, builder.getNodeState(), CommitInfo.EMPTY); assertThat(writer.docs.keySet(), containsInAnyOrder("/a")); }
private NodeState createAndPopulateTwoAsyncIndex(FulltextIndexConstants.IndexingMode indexingMode) throws CommitFailedException { createIndexDefinition("fooIndex", indexingMode); createIndexDefinition("barIndex", indexingMode); //Have some stuff to be indexed builder.child("a").setProperty("foo", "bar"); builder.child("a").setProperty("bar", "foo"); NodeState after = builder.getNodeState(); return asyncHook.processCommit(EMPTY_NODE, after, newCommitInfo()); }
@Test public void indexNameIsIndexPath() throws Exception { NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME); newLucenePropertyIndexDefinition(index, "lucene", ImmutableSet.of("foo"), null); NodeState before = builder.getNodeState(); builder.setProperty("foo", "bar"); NodeState after = builder.getNodeState(); NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); String indexPath = "/oak:index/lucene"; IndexDefinition defn = new IndexDefinition(root, indexed.getChildNode("oak:index").getChildNode("lucene"), indexPath); assertEquals(indexPath, defn.getIndexName()); assertEquals(indexPath, defn.getIndexPath()); }
@Test public void syncIndexing() throws Exception{ NodeState indexed = createAndPopulateAsyncIndex(FulltextIndexConstants.IndexingMode.SYNC); builder = indexed.builder(); builder.child("b").setProperty("foo", "bar"); builder.child("c").setProperty("foo", "bar"); NodeState after = builder.getNodeState(); syncHook.processCommit(indexed, after, newCommitInfo()); LuceneDocumentHolder holder = getHolder(); assertNotNull(holder); //2 add none for delete assertEquals(2, getIndexedDocList(holder,"/oak:index/fooIndex").size()); }
@Test public void ignoreReindexCase() throws Exception{ createIndexDefinition("fooIndex", FulltextIndexConstants.IndexingMode.NRT); builder.child("a").setProperty("foo", "bar"); NodeState after = builder.getNodeState(); syncHook.processCommit(EMPTY_NODE, after, newCommitInfo()); //This is reindex case so nothing would be indexed //So now holder should be present in context assertNotNull(getHolder()); assertNotNull(getCommitAttribute(LuceneDocumentHolder.NAME)); }
private NodeState getFooIndexNodeState() throws CommitFailedException { NodeState root = INITIAL_CONTENT; // Add index definition NodeBuilder builder = root.builder(); NodeBuilder index = createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "fooIndex", true, false, ImmutableSet.of("foo"), null); builder.child("a").setProperty("foo", "abc"); NodeState after = builder.getNodeState(); EditorHook hook = new EditorHook( new IndexUpdateProvider(new PropertyIndexEditorProvider())); NodeState indexed = hook.processCommit(EMPTY_NODE, after, CommitInfo.EMPTY); return indexed.getChildNode("oak:index").getChildNode("fooIndex"); }
@Test public void globalToPrivateReference() throws Exception{ NodeState root = EMPTY_NODE; NodeBuilder builder = root.builder(); NodeState before = builder.getNodeState(); builder.child("a").setProperty(createProperty(JCR_UUID, "u1", Type.STRING)); builder.child("b").setProperty(createProperty("foo", "u1", Type.REFERENCE)); NodeState after = builder.getNodeState(); thrown.expect(CommitFailedException.class); thrown.expectMessage("OakIntegrity0001: Unable to reference the node [/a] from node [/b]. Referencing across the mounts is not allowed."); hook.processCommit(before, after, CommitInfo.EMPTY); }
@Test public void privateToGlobalReference() throws Exception{ NodeState root = EMPTY_NODE; NodeBuilder builder = root.builder(); NodeState before = builder.getNodeState(); builder.child("a").setProperty(createProperty("foo", "u1", Type.REFERENCE)); builder.child("b").setProperty(createProperty(JCR_UUID, "u1", Type.STRING)); NodeState after = builder.getNodeState(); thrown.expect(CommitFailedException.class); thrown.expectMessage("OakIntegrity0001: Unable to reference the node [/b] from node [/a]. Referencing across the mounts is not allowed."); hook.processCommit(before, after, CommitInfo.EMPTY); } }