private static CommitHook createHook(@Nonnull IndexEditorProvider indexEditor) { return new CompositeHook( ResetCommitAttributeHook.INSTANCE, new EditorHook(new IndexUpdateProvider(indexEditor))); }
@Before public void setUp() throws IOException { IndexEditorProvider editorProvider = new LuceneIndexEditorProvider( null, null, null, defaultMountInfoProvider() ); syncHook = new EditorHook(new IndexUpdateProvider(editorProvider)); asyncHook = new EditorHook(new IndexUpdateProvider(editorProvider, "async", false)); }
static void mergeWithConcurrentCheck(NodeStore nodeStore, NodeBuilder builder, IndexEditorProvider indexEditorProvider) throws CommitFailedException { CompositeHook hooks = new CompositeHook( ResetCommitAttributeHook.INSTANCE, new EditorHook(new IndexUpdateProvider(indexEditorProvider, null, true)), new ConflictHook(new AnnotatingConflictHandler()), new EditorHook(CompositeEditorProvider.compose(singletonList(new ConflictValidatorProvider()))) ); nodeStore.merge(builder, hooks, createCommitInfo()); }
static void mergeWithConcurrentCheck(NodeStore nodeStore, NodeBuilder builder, IndexEditorProvider indexEditorProvider) throws CommitFailedException { CompositeHook hooks = new CompositeHook( ResetCommitAttributeHook.INSTANCE, new EditorHook(new IndexUpdateProvider(indexEditorProvider, null, true)), new ConflictHook(new AnnotatingConflictHandler()), new EditorHook(CompositeEditorProvider.compose(singletonList(new ConflictValidatorProvider()))) ); nodeStore.merge(builder, hooks, createCommitInfo()); }
static void mergeWithConcurrentCheck(NodeStore nodeStore, NodeBuilder builder, IndexEditorProvider indexEditorProvider) throws CommitFailedException { CompositeHook hooks = new CompositeHook( ResetCommitAttributeHook.INSTANCE, new EditorHook(new IndexUpdateProvider(indexEditorProvider, null, true)), new ConflictHook(new AnnotatingConflictHandler()), new EditorHook(CompositeEditorProvider.compose(singletonList(new ConflictValidatorProvider()))) ); nodeStore.merge(builder, hooks, createCommitInfo()); }
@Before public void setUp() throws IOException { tracker = new IndexTracker(); DocumentQueue queue = new DocumentQueue(100, tracker, sameThreadExecutor()); editorProvider = new LuceneIndexEditorProvider( null, null, null, Mounts.defaultMountInfoProvider() ); editorProvider.setIndexingQueue(queue); syncHook = new EditorHook(new IndexUpdateProvider(editorProvider)); asyncHook = new EditorHook(new IndexUpdateProvider(editorProvider, "async", false)); }
private EditorHook createHook(LuceneIndexEditorContext context) { IndexEditorProvider provider = new IndexEditorProvider() { @Nullable @Override public Editor getIndexEditor(@NotNull String type, @NotNull NodeBuilder definition, @NotNull NodeState root, @NotNull IndexUpdateCallback callback) throws CommitFailedException { if (TYPE_LUCENE.equals(type)) { return new LuceneIndexEditor(context); } return null; } }; String async = context.isAsyncIndexing() ? "async" : null; IndexUpdateProvider updateProvider = new IndexUpdateProvider(provider, async, false); return new EditorHook(updateProvider); }
@Before public void setup() throws Exception { if (useBlobStore) { LuceneIndexEditorProvider provider = new LuceneIndexEditorProvider(); CachingFileDataStore ds = DataStoreUtils .createCachingFDS(temporaryFolder.newFolder().getAbsolutePath(), temporaryFolder.newFolder().getAbsolutePath()); provider.setBlobStore(new DataStoreBlobStore(ds)); HOOK = new EditorHook(new IndexUpdateProvider(provider)); } else { HOOK = new EditorHook(new IndexUpdateProvider(new LuceneIndexEditorProvider())); } }
private void populateStore(NodeStore ns, Consumer<NodeBuilder> action) throws CommitFailedException { NodeBuilder builder = ns.getRoot().builder(); NodeBuilder index = createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "foo", true, true, ImmutableSet.of("foo"), null); index.setProperty("entryCount", -1); action.accept(builder); ns.merge(builder,new EditorHook(new IndexUpdateProvider( new PropertyIndexEditorProvider().with(mip))), CommitInfo.EMPTY); } }
@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()); }
@Before public void setUp(){ IndexUpdateProvider updateProvider = new IndexUpdateProvider( new LuceneIndexEditorProvider(), "async", false); updateProvider.setCorruptIndexHandler(corruptIndexHandler); hook = new EditorHook(updateProvider); }
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 providerShouldBeAvailable() throws Exception { CommitHook hook = new EditorHook(new IndexUpdateProvider( new OrderedPropertyIndexEditorProvider(), null, true)); NodeBuilder root = EMPTY_NODE.builder(); createIndexDef(root).setProperty("reindex", false); NodeState before = root.getNodeState(); root.child("foo"); NodeState after = root.getNodeState(); hook.processCommit(before, after, CommitInfo.EMPTY); } }
@Test public void simplePropertyIndex() throws Exception{ defnb.noAsync(); defnb.indexRule("nt:base").property("foo").propertyIndex(); assertEquals(0,Iterables.size(query.getIndexedPaths("foo", "bar"))); NodeState before = builder.getNodeState(); builder.child("a").setProperty("foo", "bar"); builder.child("b").setProperty("foo", "bar"); NodeState after = builder.getNodeState(); EditorHook hook = new EditorHook(new IndexUpdateProvider(new LuceneIndexEditorProvider())); NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY); tracker.update(indexed); assertThat(query.getIndexedPaths("foo", "bar"), containsInAnyOrder("/a", "/b")); } }
@Test public void shouldNotReindexAsyncIndexInSyncMode() throws Exception{ String indexPath = "/oak:index/rootIndex"; CallbackCapturingProvider provider = new CallbackCapturingProvider(); IndexUpdateProvider indexUpdate = new IndexUpdateProvider(provider); EditorHook hook = new EditorHook(indexUpdate); NodeState before = builder.getNodeState(); NodeBuilder idx = createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "rootIndex", true, false, ImmutableSet.of("foo"), null); idx.setProperty("async", asList("async", "sync"), Type.STRINGS); builder.child("a").setProperty("foo", "abc"); NodeState after = builder.getNodeState(); NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY); assertFalse(provider.getContext(indexPath).isReindexing()); }
@Before public void initializeHook() { MountInfoProvider mip = Mounts.newBuilder() .mount("foo", "/a") .build(); hook = new EditorHook(new CompositeEditorProvider( new IndexUpdateProvider(new CompositeIndexEditorProvider( new PropertyIndexEditorProvider().with(mip), new ReferenceEditorProvider().with(mip))), new CrossMountReferenceValidatorProvider().with(mip).withFailOnDetection(true))); }
@Test public void propertyIndex() throws Exception{ NodeBuilder globalBuilder = globalStore.getRoot().builder(); createIndexDefinition(globalBuilder.child(INDEX_DEFINITIONS_NAME), "foo", true, false, ImmutableSet.of("foo"), null); EditorHook hook = new EditorHook( new IndexUpdateProvider(new PropertyIndexEditorProvider().with(mip))); globalStore.merge(globalBuilder, hook, CommitInfo.EMPTY); NodeBuilder builder = store.getRoot().builder(); builder.child("content").setProperty("foo", "bar"); store.merge(builder, hook, CommitInfo.EMPTY); builder = store.getRoot().builder(); builder.child("content").removeProperty("foo"); store.merge(builder, hook, CommitInfo.EMPTY); }
@Test public void removeWeaklyReferencedNode() throws Exception{ NodeState root = INITIAL_CONTENT; 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.WEAKREFERENCE)); NodeState after = builder.getNodeState(); EditorHook hook = new EditorHook( new IndexUpdateProvider(new ReferenceEditorProvider())); NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY); builder = indexed.builder(); builder.getChildNode("a").remove(); hook.processCommit(indexed, builder.getNodeState(), CommitInfo.EMPTY); }
@Test public void removeReferencedNode() throws Exception{ NodeState root = INITIAL_CONTENT; 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(); EditorHook hook = new EditorHook( new IndexUpdateProvider(new ReferenceEditorProvider())); NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY); builder = indexed.builder(); builder.getChildNode("a").remove(); thrown.expect(CommitFailedException.class); thrown.expectMessage("OakIntegrity0001: Unable to delete referenced node"); hook.processCommit(indexed, builder.getNodeState(), CommitInfo.EMPTY); }
@Before public void setUp() throws Exception { store = SegmentNodeStoreBuilders.builder(new MemoryStore()).build(); provider = new TestUtils(); server = provider.getSolrServer(); configuration = provider.getConfiguration(); hook = new EditorHook(new IndexUpdateProvider( new SolrIndexEditorProvider(provider, provider))); Oak oak = new Oak().with(new InitialContent()) .with(new OpenSecurityProvider()) .with(new SolrIndexInitializer(false)) // synchronous .with(new SolrQueryIndexProvider(provider, provider)) .with(new NodeStateSolrServersObserver()) .with(new SolrIndexEditorProvider(provider, provider)); repository = oak .createContentRepository(); }