private static CommitHook createHook(@Nonnull IndexEditorProvider indexEditor) { return new CompositeHook( ResetCommitAttributeHook.INSTANCE, new EditorHook(new IndexUpdateProvider(indexEditor))); }
@Before public void setUp(){ IndexUpdateProvider updateProvider = new IndexUpdateProvider( new LuceneIndexEditorProvider(), "async", false); updateProvider.setCorruptIndexHandler(corruptIndexHandler); hook = new EditorHook(updateProvider); }
@Test public void ignoreReindexingFlag() 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(); createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "rootIndex", true, false, ImmutableSet.of("foo"), null); builder.child("a").setProperty("foo", "abc"); NodeState after = builder.getNodeState(); NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY); assertTrue(provider.getContext(indexPath).isReindexing()); before = indexed; builder = before.builder(); builder.child("b").setProperty("foo", "xyz"); child(builder, indexPath).setProperty(IndexConstants.REINDEX_PROPERTY_NAME, true); after = builder.getNodeState(); provider.reset(); indexed = hook.processCommit(before, after, CommitInfo.EMPTY); assertTrue(provider.getContext(indexPath).isReindexing()); //Now set IndexUpdate to ignore the reindex flag indexUpdate.setIgnoreReindexFlags(true); indexed = hook.processCommit(before, after, CommitInfo.EMPTY); assertFalse(provider.getContext(indexPath).isReindexing()); //Despite reindex flag set to true and reindexing not done new //content should still get picked up PropertyIndexLookup lookup = new PropertyIndexLookup(indexed); assertFalse(find(lookup, "foo", "xyz").isEmpty()); }
private void initialContent(IndexEditorProvider indexEditors, QueryIndexProvider indexProvider) { List<CommitHook> initHooks = new ArrayList<CommitHook>(commitHooks); initHooks.add(0, ResetCommitAttributeHook.INSTANCE); initHooks.add(new EditorHook(new IndexUpdateProvider(indexEditors))); CommitHook initHook = CompositeHook.compose(initHooks); OakInitializer.initialize(store, new CompositeInitializer(initializers), initHook); // FIXME: OAK-810 move to proper workspace initialization // initialize default workspace Iterable<WorkspaceInitializer> workspaceInitializers = Iterables.transform(securityProvider.getConfigurations(), new Function<SecurityConfiguration, WorkspaceInitializer>() { @Override public WorkspaceInitializer apply(SecurityConfiguration sc) { WorkspaceInitializer wi = sc.getWorkspaceInitializer(); if (wi instanceof QueryIndexProviderAware) { ((QueryIndexProviderAware) wi).setQueryIndexProvider(indexProvider); } return wi; } }); OakInitializer.initialize(workspaceInitializers, store, defaultWorkspaceName, initHook); }
private void initialContent(IndexEditorProvider indexEditors, QueryIndexProvider indexProvider) { List<CommitHook> initHooks = new ArrayList<CommitHook>(commitHooks); initHooks.add(0, ResetCommitAttributeHook.INSTANCE); initHooks.add(new EditorHook(new IndexUpdateProvider(indexEditors))); CommitHook initHook = CompositeHook.compose(initHooks); OakInitializer.initialize(store, new CompositeInitializer(initializers), initHook); // FIXME: OAK-810 move to proper workspace initialization // initialize default workspace Iterable<WorkspaceInitializer> workspaceInitializers = Iterables.transform(securityProvider.getConfigurations(), new Function<SecurityConfiguration, WorkspaceInitializer>() { @Override public WorkspaceInitializer apply(SecurityConfiguration sc) { WorkspaceInitializer wi = sc.getWorkspaceInitializer(); if (wi instanceof QueryIndexProviderAware) { ((QueryIndexProviderAware) wi).setQueryIndexProvider(indexProvider); } return wi; } }); OakInitializer.initialize(workspaceInitializers, store, defaultWorkspaceName, initHook); }
@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())); } }
commitHooks.add(new EditorHook(new IndexUpdateProvider(indexEditors, failOnMissingIndexProvider)));
commitHooks.add(new EditorHook(new IndexUpdateProvider(indexEditors, failOnMissingIndexProvider)));
with(new IndexUpdateProvider(indexEditors, failOnMissingIndexProvider)); withEditorHook();
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()); }
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")); } }