@NotNull public static IndexEditorProvider compose( @NotNull Collection<IndexEditorProvider> providers) { if (providers.isEmpty()) { return new IndexEditorProvider() { @Override public Editor getIndexEditor( @NotNull String type, @NotNull NodeBuilder builder, @NotNull NodeState root, @NotNull IndexUpdateCallback callback) { return null; } }; } else if (providers.size() == 1) { return providers.iterator().next(); } else { return new CompositeIndexEditorProvider( ImmutableList.copyOf(providers)); } }
@Override public Editor getIndexEditor(@NotNull String type, @NotNull NodeBuilder builder, @NotNull NodeState root, @NotNull IndexUpdateCallback callback) throws CommitFailedException { IndexEditorProvider composite = CompositeIndexEditorProvider .compose(getServices()); if (composite == null) { return null; } return composite.getIndexEditor(type, builder, root, callback); }
@NotNull public static IndexEditorProvider compose( @NotNull Collection<IndexEditorProvider> providers) { if (providers.isEmpty()) { return new IndexEditorProvider() { @Override public Editor getIndexEditor( @NotNull String type, @NotNull NodeBuilder builder, @NotNull NodeState root, @NotNull IndexUpdateCallback callback) { return null; } }; } else if (providers.size() == 1) { return providers.iterator().next(); } else { return new CompositeIndexEditorProvider( ImmutableList.copyOf(providers)); } }
@Override public Editor getIndexEditor(@NotNull String type, @NotNull NodeBuilder builder, @NotNull NodeState root, @NotNull IndexUpdateCallback callback) throws CommitFailedException { IndexEditorProvider composite = CompositeIndexEditorProvider .compose(getServices()); if (composite == null) { return null; } return composite.getIndexEditor(type, builder, root, callback); }
@Nonnull public static IndexEditorProvider compose( @Nonnull Collection<IndexEditorProvider> providers) { if (providers.isEmpty()) { return new IndexEditorProvider() { @Override public Editor getIndexEditor( @Nonnull String type, @Nonnull NodeBuilder builder, @Nonnull NodeState root, @Nonnull IndexUpdateCallback callback) { return null; } }; } else if (providers.size() == 1) { return providers.iterator().next(); } else { return new CompositeIndexEditorProvider( ImmutableList.copyOf(providers)); } }
@Override public Editor getIndexEditor(@Nonnull String type, @Nonnull NodeBuilder builder, @Nonnull NodeState root, @Nonnull IndexUpdateCallback callback) throws CommitFailedException { IndexEditorProvider composite = CompositeIndexEditorProvider .compose(getServices()); if (composite == null) { return null; } return composite.getIndexEditor(type, builder, root, callback); }
@Override public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder, CommitInfo info) { IndexEditorProvider editorProviders = new CompositeIndexEditorProvider( new ReferenceEditorProvider(), new PropertyIndexEditorProvider()); return new IndexUpdate(editorProviders, null, after, builder, new IndexUpdateCallback() { String progress = "Updating indexes "; long t0; @Override public void indexUpdate() { long t = System.currentTimeMillis(); if (t - t0 > 2000) { logger.info("{} {}", progress, ticker.tick()); t0 = t ; } } }); }
regs.add(whiteboard.register(Executor.class, getExecutor(), Collections.emptyMap())); IndexEditorProvider indexEditors = CompositeIndexEditorProvider.compose(indexEditorProviders); QueryIndexProvider indexProvider = CompositeQueryIndexProvider.compose(queryIndexProviders);
@Override public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder, CommitInfo info) { IndexEditorProvider editorProviders = new CompositeIndexEditorProvider( new ReferenceEditorProvider(), new PropertyIndexEditorProvider()); return new IndexUpdate(editorProviders, null, after, builder, new IndexUpdateCallback() { String progress = "Updating indexes "; long t0; @Override public void indexUpdate() { long t = System.currentTimeMillis(); if (t - t0 > 2000) { logger.info("{} {}", progress, ticker.tick()); t0 = t ; } } }); }
regs.add(whiteboard.register(Executor.class, getExecutor(), Collections.emptyMap())); IndexEditorProvider indexEditors = CompositeIndexEditorProvider.compose(indexEditorProviders); OakInitializer.initialize(store, new CompositeInitializer(initializers), indexEditors);
new MemoryNodeStore(), new CompositeIndexEditorProvider()); IndexMBeanRegistration reg = new IndexMBeanRegistration(wb); reg.registerAsyncIndexer(update, schedulingDelayInSecs);
regs.add(whiteboard.register(Executor.class, getExecutor(), Collections.emptyMap())); IndexEditorProvider indexEditors = CompositeIndexEditorProvider.compose(indexEditorProviders); QueryIndexProvider indexProvider = CompositeQueryIndexProvider.compose(queryIndexProviders);
@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))); }
.compose(new ArrayList<IndexEditorProvider>()); async = new AsyncIndexUpdate(missingAsync, store, provider); async.run();
EditorHook hook = new EditorHook( new IndexUpdateProvider( new CompositeIndexEditorProvider( failingProvider, new LuceneIndexEditorProvider(copier))));
provider = CompositeIndexEditorProvider.compose(new ArrayList<IndexEditorProvider>()); async = new AsyncIndexUpdate(missingAsyncName, store, provider); async.run();
@Test public void reindexForDisabledIndexes() throws Exception{ EditorHook hook = new EditorHook( new IndexUpdateProvider(new CompositeIndexEditorProvider( new PropertyIndexEditorProvider(), new ReferenceEditorProvider() ))); NodeState before = builder.getNodeState(); createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME), "fooIndex", true, false, ImmutableSet.of("foo"), null); builder.child("testRoot").setProperty("foo", "abc"); NodeState after = builder.getNodeState(); NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY); before = indexed; builder = before.builder(); builder.getChildNode("oak:index").getChildNode("fooIndex").setProperty(TYPE_PROPERTY_NAME, TYPE_DISABLED); builder.getChildNode("oak:index").getChildNode("fooIndex").setProperty(REINDEX_PROPERTY_NAME, true); after = builder.getNodeState(); LogCustomizer customLogs = LogCustomizer.forLogger(IndexUpdate.class.getName()).filter(Level.INFO).create(); customLogs.starting(); before = after; builder = before.builder(); builder.child("testRoot2").setProperty("foo", "abc"); after = builder.getNodeState(); indexed = hook.processCommit(before, after, CommitInfo.EMPTY); assertTrue(customLogs.getLogs().isEmpty()); customLogs.finished(); }