test_class.declarator: HOOK = new EditorHook(
              new IndexUpdateProvider(new PropertyIndexEditorProvider()))
test_class.modifier: private static final
test_class.original_string: private static final EditorHook HOOK = new EditorHook(
              new IndexUpdateProvider(new PropertyIndexEditorProvider()));
test_class.type: EditorHook
test_class.var_name: HOOK
test_class.declarator: root = INITIAL_CONTENT
test_class.modifier: private
test_class.original_string: private NodeState root = INITIAL_CONTENT;
test_class.type: NodeState
test_class.var_name: root
test_class.declarator: builder = root.builder()
test_class.modifier: private
test_class.original_string: private NodeBuilder builder = root.builder();
test_class.type: NodeBuilder
test_class.var_name: builder
test_class.file: oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java
test_class.identifier: IndexUpdateTest
test_case.body: @Test
      public void testMissingProviderWithAsyncDef() throws Exception {
          final MissingIndexProviderStrategy mips = new MissingIndexProviderStrategy();
          mips.setFailOnMissingIndexProvider(true);
  
          // prepare different hooks for different types indexing cycles
          EditorHook syncHook = new EditorHook((before, after, builder, info) ->
                  new IndexUpdate(emptyProvider(), null, after, builder, NOOP)
                          .withMissingProviderStrategy(mips));
          EditorHook asyncHook = new EditorHook((before, after, builder, info) ->
                  new IndexUpdate(emptyProvider(), "async-run", after, builder, NOOP)
                          .withMissingProviderStrategy(mips));
          EditorHook otherAsyncHook = new EditorHook((before, after, builder, info) ->
                  new IndexUpdate(emptyProvider(), "other-async-run", after, builder, NOOP)
                          .withMissingProviderStrategy(mips));
  
          builder = EmptyNodeState.EMPTY_NODE.builder();
  
          // create async defs with nrt and sync mixed in
          createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
                  "asyncIndex", true, false, ImmutableSet.of("foo"), null)
                  .setProperty(ASYNC_PROPERTY_NAME, ImmutableList.of("async-run"), Type.STRINGS)
                  .setProperty(REINDEX_PROPERTY_NAME, false);
          createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
                  "nrtIndex", true, false, ImmutableSet.of("foo"), null)
                  .setProperty(ASYNC_PROPERTY_NAME, ImmutableList.of("async-run", "nrt"), Type.STRINGS)
                  .setProperty(REINDEX_PROPERTY_NAME, false);
          createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
                  "asyncSyncIndex", true, false, ImmutableSet.of("foo"), null)
                  .setProperty(ASYNC_PROPERTY_NAME, ImmutableList.of("async-run", "sync"), Type.STRINGS)
                  .setProperty(REINDEX_PROPERTY_NAME, false);
  
          // node states to run hook on
          NodeState before = builder.getNodeState();
          builder.child("testRoot").setProperty("foo", "abc");
          NodeState after = builder.getNodeState();
  
          // sync run should be ok with missing provider for an async def
          syncHook.processCommit(before, after, CommitInfo.EMPTY);
  
          // unrelated async run should be ok with missing provider
          otherAsyncHook.processCommit(before, after, CommitInfo.EMPTY);
  
          // async run matching the def async lane still should fail
          try {
              asyncHook.processCommit(before, after, CommitInfo.EMPTY);
              fail("commit should fail on missing index provider");
          } catch (CommitFailedException ex) {
              // expected
          }
      }
test_case.class_method_signature: IndexUpdateTest.testMissingProviderWithAsyncDef()
test_case.full_signature: @Test public void testMissingProviderWithAsyncDef()
test_case.identifier: testMissingProviderWithAsyncDef
test_case.invocations: setFailOnMissingIndexProvider withMissingProviderStrategy emptyProvider withMissingProviderStrategy emptyProvider withMissingProviderStrategy emptyProvider builder setProperty setProperty createIndexDefinition child of of setProperty setProperty createIndexDefinition child of of setProperty setProperty createIndexDefinition child of of getNodeState setProperty child getNodeState processCommit processCommit processCommit fail
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testMissingProviderWithAsyncDef()
focal_class.declarator: log = LoggerFactory.getLogger(IndexUpdate.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger log = LoggerFactory.getLogger(IndexUpdate.class);
focal_class.type: Logger
focal_class.var_name: log
focal_class.declarator: TYPE_ELASTICSEARCH = "elasticsearch"
focal_class.modifier: private static final
focal_class.original_string: private static final String TYPE_ELASTICSEARCH = "elasticsearch";
focal_class.type: String
focal_class.var_name: TYPE_ELASTICSEARCH
focal_class.declarator: IGNORE_REINDEX_FLAGS = Boolean
              .getBoolean("oak.indexUpdate.ignoreReindexFlags")
focal_class.modifier: static final
focal_class.original_string: static final boolean IGNORE_REINDEX_FLAGS = Boolean
              .getBoolean("oak.indexUpdate.ignoreReindexFlags");
focal_class.type: boolean
focal_class.var_name: IGNORE_REINDEX_FLAGS
focal_class.declarator: rootState
focal_class.modifier: private final
focal_class.original_string: private final IndexUpdateRootState rootState;
focal_class.type: IndexUpdateRootState
focal_class.var_name: rootState
focal_class.declarator: builder
focal_class.modifier: private final
focal_class.original_string: private final NodeBuilder builder;
focal_class.type: NodeBuilder
focal_class.var_name: builder
focal_class.declarator: parent
focal_class.modifier: private final
focal_class.original_string: private final IndexUpdate parent;
focal_class.type: IndexUpdate
focal_class.var_name: parent
focal_class.declarator: name
focal_class.modifier: private final
focal_class.original_string: private final String name;
focal_class.type: String
focal_class.var_name: name
focal_class.declarator: path
focal_class.modifier: private
focal_class.original_string: private String path;
focal_class.type: String
focal_class.var_name: path
focal_class.declarator: editors = newArrayList()
focal_class.modifier: private final
focal_class.original_string: private final List<Editor> editors = newArrayList();
focal_class.type: List<Editor>
focal_class.var_name: editors
focal_class.declarator: reindex = new HashMap<String, Editor>()
focal_class.modifier: private final
focal_class.original_string: private final Map<String, Editor> reindex = new HashMap<String, Editor>();
focal_class.type: Map<String, Editor>
focal_class.var_name: reindex
focal_class.file: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
focal_class.identifier: IndexUpdate
focal_class.interfaces: implements Editor, PathSource
focal_class.class_method_signature: IndexUpdate.IndexUpdate(
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback)
focal_class.full_signature: public  IndexUpdate(
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback)
focal_class.identifier: IndexUpdate
focal_class.modifiers: public
focal_class.parameters: (
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback)
focal_class.signature:  IndexUpdate(
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback)
focal_class.class_method_signature: IndexUpdate.IndexUpdate(
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback, CommitInfo commitInfo)
focal_class.full_signature: public  IndexUpdate(
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback, CommitInfo commitInfo)
focal_class.identifier: IndexUpdate
focal_class.modifiers: public
focal_class.parameters: (
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback, CommitInfo commitInfo)
focal_class.signature:  IndexUpdate(
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback, CommitInfo commitInfo)
focal_class.class_method_signature: IndexUpdate.IndexUpdate(
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback, NodeTraversalCallback traversalCallback,
              CommitInfo commitInfo, CorruptIndexHandler corruptIndexHandler)
focal_class.full_signature: public  IndexUpdate(
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback, NodeTraversalCallback traversalCallback,
              CommitInfo commitInfo, CorruptIndexHandler corruptIndexHandler)
focal_class.identifier: IndexUpdate
focal_class.modifiers: public
focal_class.parameters: (
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback, NodeTraversalCallback traversalCallback,
              CommitInfo commitInfo, CorruptIndexHandler corruptIndexHandler)
focal_class.signature:  IndexUpdate(
              IndexEditorProvider provider, String async,
              NodeState root, NodeBuilder builder,
              IndexUpdateCallback updateCallback, NodeTraversalCallback traversalCallback,
              CommitInfo commitInfo, CorruptIndexHandler corruptIndexHandler)
focal_class.class_method_signature: IndexUpdate.IndexUpdate(IndexUpdate parent, String name)
focal_class.full_signature: private  IndexUpdate(IndexUpdate parent, String name)
focal_class.identifier: IndexUpdate
focal_class.modifiers: private
focal_class.parameters: (IndexUpdate parent, String name)
focal_class.signature:  IndexUpdate(IndexUpdate parent, String name)
focal_class.class_method_signature: IndexUpdate.enter(NodeState before, NodeState after)
focal_class.full_signature: @Override public void enter(NodeState before, NodeState after)
focal_class.identifier: enter
focal_class.modifiers: @Override public
focal_class.parameters: (NodeState before, NodeState after)
focal_class.return: void
focal_class.signature: void enter(NodeState before, NodeState after)
focal_class.class_method_signature: IndexUpdate.isReindexingPerformed()
focal_class.full_signature: public boolean isReindexingPerformed()
focal_class.identifier: isReindexingPerformed
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isReindexingPerformed()
focal_class.class_method_signature: IndexUpdate.getReindexStats()
focal_class.full_signature: public List<String> getReindexStats()
focal_class.identifier: getReindexStats
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: List<String>
focal_class.signature: List<String> getReindexStats()
focal_class.class_method_signature: IndexUpdate.getUpdatedIndexPaths()
focal_class.full_signature: public Set<String> getUpdatedIndexPaths()
focal_class.identifier: getUpdatedIndexPaths
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Set<String>
focal_class.signature: Set<String> getUpdatedIndexPaths()
focal_class.class_method_signature: IndexUpdate.setTraversalRateEstimator(TraversalRateEstimator estimator)
focal_class.full_signature: public void setTraversalRateEstimator(TraversalRateEstimator estimator)
focal_class.identifier: setTraversalRateEstimator
focal_class.modifiers: public
focal_class.parameters: (TraversalRateEstimator estimator)
focal_class.return: void
focal_class.signature: void setTraversalRateEstimator(TraversalRateEstimator estimator)
focal_class.class_method_signature: IndexUpdate.setNodeCountEstimator(NodeCountEstimator nodeCountEstimator)
focal_class.full_signature: public void setNodeCountEstimator(NodeCountEstimator nodeCountEstimator)
focal_class.identifier: setNodeCountEstimator
focal_class.modifiers: public
focal_class.parameters: (NodeCountEstimator nodeCountEstimator)
focal_class.return: void
focal_class.signature: void setNodeCountEstimator(NodeCountEstimator nodeCountEstimator)
focal_class.class_method_signature: IndexUpdate.getIndexingStats()
focal_class.full_signature: public String getIndexingStats()
focal_class.identifier: getIndexingStats
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getIndexingStats()
focal_class.class_method_signature: IndexUpdate.setIgnoreReindexFlags(boolean ignoreReindexFlag)
focal_class.full_signature: public void setIgnoreReindexFlags(boolean ignoreReindexFlag)
focal_class.identifier: setIgnoreReindexFlags
focal_class.modifiers: public
focal_class.parameters: (boolean ignoreReindexFlag)
focal_class.return: void
focal_class.signature: void setIgnoreReindexFlags(boolean ignoreReindexFlag)
focal_class.class_method_signature: IndexUpdate.shouldReindex(NodeBuilder definition, NodeState before,
              String name)
focal_class.full_signature: private boolean shouldReindex(NodeBuilder definition, NodeState before,
              String name)
focal_class.identifier: shouldReindex
focal_class.modifiers: private
focal_class.parameters: (NodeBuilder definition, NodeState before,
              String name)
focal_class.return: boolean
focal_class.signature: boolean shouldReindex(NodeBuilder definition, NodeState before,
              String name)
focal_class.class_method_signature: IndexUpdate.hasAnyHiddenNodes(NodeBuilder builder)
focal_class.full_signature: private static boolean hasAnyHiddenNodes(NodeBuilder builder)
focal_class.identifier: hasAnyHiddenNodes
focal_class.modifiers: private static
focal_class.parameters: (NodeBuilder builder)
focal_class.return: boolean
focal_class.signature: boolean hasAnyHiddenNodes(NodeBuilder builder)
focal_class.class_method_signature: IndexUpdate.collectIndexEditors(NodeBuilder definitions,
              NodeState before)
focal_class.full_signature: private void collectIndexEditors(NodeBuilder definitions,
              NodeState before)
focal_class.identifier: collectIndexEditors
focal_class.modifiers: private
focal_class.parameters: (NodeBuilder definitions,
              NodeState before)
focal_class.return: void
focal_class.signature: void collectIndexEditors(NodeBuilder definitions,
              NodeState before)
focal_class.class_method_signature: IndexUpdate.removeIndexState(NodeBuilder definition)
focal_class.full_signature: private void removeIndexState(NodeBuilder definition)
focal_class.identifier: removeIndexState
focal_class.modifiers: private
focal_class.parameters: (NodeBuilder definition)
focal_class.return: void
focal_class.signature: void removeIndexState(NodeBuilder definition)
focal_class.class_method_signature: IndexUpdate.getEstimatedCount(NodeBuilder indexDefinition)
focal_class.full_signature: private long getEstimatedCount(NodeBuilder indexDefinition)
focal_class.identifier: getEstimatedCount
focal_class.modifiers: private
focal_class.parameters: (NodeBuilder indexDefinition)
focal_class.return: long
focal_class.signature: long getEstimatedCount(NodeBuilder indexDefinition)
focal_class.class_method_signature: IndexUpdate.isIncluded(String asyncRef, NodeBuilder definition)
focal_class.full_signature: static boolean isIncluded(String asyncRef, NodeBuilder definition)
focal_class.identifier: isIncluded
focal_class.modifiers: static
focal_class.parameters: (String asyncRef, NodeBuilder definition)
focal_class.return: boolean
focal_class.signature: boolean isIncluded(String asyncRef, NodeBuilder definition)
focal_class.class_method_signature: IndexUpdate.isMatchingIndexMode(NodeBuilder definition)
focal_class.full_signature: private boolean isMatchingIndexMode(NodeBuilder definition)
focal_class.identifier: isMatchingIndexMode
focal_class.modifiers: private
focal_class.parameters: (NodeBuilder definition)
focal_class.return: boolean
focal_class.signature: boolean isMatchingIndexMode(NodeBuilder definition)
focal_class.class_method_signature: IndexUpdate.incrementReIndexCount(NodeBuilder definition)
focal_class.full_signature: private void incrementReIndexCount(NodeBuilder definition)
focal_class.identifier: incrementReIndexCount
focal_class.modifiers: private
focal_class.parameters: (NodeBuilder definition)
focal_class.return: void
focal_class.signature: void incrementReIndexCount(NodeBuilder definition)
focal_class.class_method_signature: IndexUpdate.getPath()
focal_class.full_signature: @Override public String getPath()
focal_class.identifier: getPath
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getPath()
focal_class.class_method_signature: IndexUpdate.leave(NodeState before, NodeState after)
focal_class.full_signature: @Override public void leave(NodeState before, NodeState after)
focal_class.identifier: leave
focal_class.modifiers: @Override public
focal_class.parameters: (NodeState before, NodeState after)
focal_class.return: void
focal_class.signature: void leave(NodeState before, NodeState after)
focal_class.class_method_signature: IndexUpdate.propertyAdded(PropertyState after)
focal_class.full_signature: @Override public void propertyAdded(PropertyState after)
focal_class.identifier: propertyAdded
focal_class.modifiers: @Override public
focal_class.parameters: (PropertyState after)
focal_class.return: void
focal_class.signature: void propertyAdded(PropertyState after)
focal_class.class_method_signature: IndexUpdate.propertyChanged(PropertyState before, PropertyState after)
focal_class.full_signature: @Override public void propertyChanged(PropertyState before, PropertyState after)
focal_class.identifier: propertyChanged
focal_class.modifiers: @Override public
focal_class.parameters: (PropertyState before, PropertyState after)
focal_class.return: void
focal_class.signature: void propertyChanged(PropertyState before, PropertyState after)
focal_class.class_method_signature: IndexUpdate.propertyDeleted(PropertyState before)
focal_class.full_signature: @Override public void propertyDeleted(PropertyState before)
focal_class.identifier: propertyDeleted
focal_class.modifiers: @Override public
focal_class.parameters: (PropertyState before)
focal_class.return: void
focal_class.signature: void propertyDeleted(PropertyState before)
focal_class.class_method_signature: IndexUpdate.childNodeAdded(String name, NodeState after)
focal_class.full_signature: @Override @NotNull public Editor childNodeAdded(String name, NodeState after)
focal_class.identifier: childNodeAdded
focal_class.modifiers: @Override @NotNull public
focal_class.parameters: (String name, NodeState after)
focal_class.return: Editor
focal_class.signature: Editor childNodeAdded(String name, NodeState after)
focal_class.class_method_signature: IndexUpdate.childNodeChanged(
              String name, NodeState before, NodeState after)
focal_class.full_signature: @Override @NotNull public Editor childNodeChanged(
              String name, NodeState before, NodeState after)
focal_class.identifier: childNodeChanged
focal_class.modifiers: @Override @NotNull public
focal_class.parameters: (
              String name, NodeState before, NodeState after)
focal_class.return: Editor
focal_class.signature: Editor childNodeChanged(
              String name, NodeState before, NodeState after)
focal_class.class_method_signature: IndexUpdate.childNodeDeleted(String name, NodeState before)
focal_class.full_signature: @Override @Nullable public Editor childNodeDeleted(String name, NodeState before)
focal_class.identifier: childNodeDeleted
focal_class.modifiers: @Override @Nullable public
focal_class.parameters: (String name, NodeState before)
focal_class.return: Editor
focal_class.signature: Editor childNodeDeleted(String name, NodeState before)
focal_class.class_method_signature: IndexUpdate.commitProgress(IndexProgress indexProgress)
focal_class.full_signature: public void commitProgress(IndexProgress indexProgress)
focal_class.identifier: commitProgress
focal_class.modifiers: public
focal_class.parameters: (IndexProgress indexProgress)
focal_class.return: void
focal_class.signature: void commitProgress(IndexProgress indexProgress)
focal_class.class_method_signature: IndexUpdate.getReindexedDefinitions()
focal_class.full_signature: protected Set<String> getReindexedDefinitions()
focal_class.identifier: getReindexedDefinitions
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.return: Set<String>
focal_class.signature: Set<String> getReindexedDefinitions()
focal_class.class_method_signature: IndexUpdate.clearCorruptFlag(NodeBuilder definition, String indexPath)
focal_class.full_signature: private void clearCorruptFlag(NodeBuilder definition, String indexPath)
focal_class.identifier: clearCorruptFlag
focal_class.modifiers: private
focal_class.parameters: (NodeBuilder definition, String indexPath)
focal_class.return: void
focal_class.signature: void clearCorruptFlag(NodeBuilder definition, String indexPath)
focal_class.class_method_signature: IndexUpdate.getIndexPath(String path, String indexName)
focal_class.full_signature: private static String getIndexPath(String path, String indexName)
focal_class.identifier: getIndexPath
focal_class.modifiers: private static
focal_class.parameters: (String path, String indexName)
focal_class.return: String
focal_class.signature: String getIndexPath(String path, String indexName)
focal_class.class_method_signature: IndexUpdate.wrapProgress(Editor editor)
focal_class.full_signature: private Editor wrapProgress(Editor editor)
focal_class.identifier: wrapProgress
focal_class.modifiers: private
focal_class.parameters: (Editor editor)
focal_class.return: Editor
focal_class.signature: Editor wrapProgress(Editor editor)
focal_class.class_method_signature: IndexUpdate.withMissingProviderStrategy(
              MissingIndexProviderStrategy missingProvider)
focal_class.full_signature: public IndexUpdate withMissingProviderStrategy(
              MissingIndexProviderStrategy missingProvider)
focal_class.identifier: withMissingProviderStrategy
focal_class.modifiers: public
focal_class.parameters: (
              MissingIndexProviderStrategy missingProvider)
focal_class.return: IndexUpdate
focal_class.signature: IndexUpdate withMissingProviderStrategy(
              MissingIndexProviderStrategy missingProvider)
focal_method.body: public IndexUpdate withMissingProviderStrategy(
              MissingIndexProviderStrategy missingProvider) {
          rootState.setMissingProvider(missingProvider);
          return this;
      }
focal_method.class_method_signature: IndexUpdate.withMissingProviderStrategy(
              MissingIndexProviderStrategy missingProvider)
focal_method.full_signature: public IndexUpdate withMissingProviderStrategy(
              MissingIndexProviderStrategy missingProvider)
focal_method.identifier: withMissingProviderStrategy
focal_method.invocations: setMissingProvider
focal_method.modifiers: public
focal_method.parameters: (
              MissingIndexProviderStrategy missingProvider)
focal_method.return: IndexUpdate
focal_method.signature: IndexUpdate withMissingProviderStrategy(
              MissingIndexProviderStrategy missingProvider)