test_class.declarator: EMPTY = newHashSet()
test_class.modifier: private static final
test_class.original_string: private static final Set<String> EMPTY = newHashSet();
test_class.type: Set<String>
test_class.var_name: EMPTY
test_class.declarator: indexName
test_class.modifier: private
test_class.original_string: private String indexName;
test_class.type: String
test_class.var_name: indexName
test_class.declarator: indexMeta
test_class.modifier: private
test_class.original_string: private NodeBuilder indexMeta;
test_class.type: NodeBuilder
test_class.var_name: indexMeta
test_class.declarator: store
test_class.modifier: private
test_class.original_string: private UniqueEntryStoreStrategy store;
test_class.type: UniqueEntryStoreStrategy
test_class.var_name: store
test_class.file: oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/UniqueEntryStoreStrategyTest.java
test_class.identifier: UniqueEntryStoreStrategyTest
test_case.body: @Test
      public void callbackInvoked() throws Exception{
          AtomicBoolean callbackInvoked = new AtomicBoolean();
          store = new UniqueEntryStoreStrategy(INDEX_CONTENT_NODE_NAME, (nb) -> callbackInvoked.set(true));
  
          indexName = "foo";
  
          NodeState root = EMPTY_NODE;
          indexMeta = root.builder();
          Supplier<NodeBuilder> index = memoize(() -> indexMeta.child(INDEX_CONTENT_NODE_NAME));
          store.update(index, "/some/node1", null, null, EMPTY, newHashSet("key1"));
  
          assertTrue(callbackInvoked.get());
      }
test_case.class_method_signature: UniqueEntryStoreStrategyTest.callbackInvoked()
test_case.full_signature: @Test public void callbackInvoked()
test_case.identifier: callbackInvoked
test_case.invocations: set builder memoize child update newHashSet assertTrue get
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void callbackInvoked()
focal_class.declarator: LOG = LoggerFactory.getLogger(UniqueEntryStoreStrategy.class)
focal_class.modifier: static final
focal_class.original_string: static final Logger LOG = LoggerFactory.getLogger(UniqueEntryStoreStrategy.class);
focal_class.type: Logger
focal_class.var_name: LOG
focal_class.declarator: NOOP = (nb) -> {}
focal_class.modifier: private static final
focal_class.original_string: private static final Consumer<NodeBuilder> NOOP = (nb) -> {};
focal_class.type: Consumer<NodeBuilder>
focal_class.var_name: NOOP
focal_class.declarator: indexName
focal_class.modifier: private final
focal_class.original_string: private final String indexName;
focal_class.type: String
focal_class.var_name: indexName
focal_class.declarator: insertCallback
focal_class.modifier: private final
focal_class.original_string: private final Consumer<NodeBuilder> insertCallback;
focal_class.type: Consumer<NodeBuilder>
focal_class.var_name: insertCallback
focal_class.file: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/UniqueEntryStoreStrategy.java
focal_class.identifier: UniqueEntryStoreStrategy
focal_class.interfaces: implements IndexStoreStrategy
focal_class.class_method_signature: UniqueEntryStoreStrategy.UniqueEntryStoreStrategy()
focal_class.full_signature: public  UniqueEntryStoreStrategy()
focal_class.identifier: UniqueEntryStoreStrategy
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  UniqueEntryStoreStrategy()
focal_class.class_method_signature: UniqueEntryStoreStrategy.UniqueEntryStoreStrategy(String indexName)
focal_class.full_signature: public  UniqueEntryStoreStrategy(String indexName)
focal_class.identifier: UniqueEntryStoreStrategy
focal_class.modifiers: public
focal_class.parameters: (String indexName)
focal_class.signature:  UniqueEntryStoreStrategy(String indexName)
focal_class.class_method_signature: UniqueEntryStoreStrategy.UniqueEntryStoreStrategy(String indexName, @NotNull Consumer<NodeBuilder> insertCallback)
focal_class.full_signature: public  UniqueEntryStoreStrategy(String indexName, @NotNull Consumer<NodeBuilder> insertCallback)
focal_class.identifier: UniqueEntryStoreStrategy
focal_class.modifiers: public
focal_class.parameters: (String indexName, @NotNull Consumer<NodeBuilder> insertCallback)
focal_class.signature:  UniqueEntryStoreStrategy(String indexName, @NotNull Consumer<NodeBuilder> insertCallback)
focal_class.class_method_signature: UniqueEntryStoreStrategy.update(
              Supplier<NodeBuilder> index, String path,
              @Nullable final String indexName,
              @Nullable final NodeBuilder indexMeta,
              Set<String> beforeKeys, Set<String> afterKeys)
focal_class.full_signature: @Override public void update(
              Supplier<NodeBuilder> index, String path,
              @Nullable final String indexName,
              @Nullable final NodeBuilder indexMeta,
              Set<String> beforeKeys, Set<String> afterKeys)
focal_class.identifier: update
focal_class.modifiers: @Override public
focal_class.parameters: (
              Supplier<NodeBuilder> index, String path,
              @Nullable final String indexName,
              @Nullable final NodeBuilder indexMeta,
              Set<String> beforeKeys, Set<String> afterKeys)
focal_class.return: void
focal_class.signature: void update(
              Supplier<NodeBuilder> index, String path,
              @Nullable final String indexName,
              @Nullable final NodeBuilder indexMeta,
              Set<String> beforeKeys, Set<String> afterKeys)
focal_class.class_method_signature: UniqueEntryStoreStrategy.remove(NodeBuilder index, String key, String value)
focal_class.full_signature: private static void remove(NodeBuilder index, String key, String value)
focal_class.identifier: remove
focal_class.modifiers: private static
focal_class.parameters: (NodeBuilder index, String key, String value)
focal_class.return: void
focal_class.signature: void remove(NodeBuilder index, String key, String value)
focal_class.class_method_signature: UniqueEntryStoreStrategy.insert(NodeBuilder index, String key, String value)
focal_class.full_signature: private void insert(NodeBuilder index, String key, String value)
focal_class.identifier: insert
focal_class.modifiers: private
focal_class.parameters: (NodeBuilder index, String key, String value)
focal_class.return: void
focal_class.signature: void insert(NodeBuilder index, String key, String value)
focal_class.class_method_signature: UniqueEntryStoreStrategy.query(final Filter filter, final String indexName, 
              final NodeState indexMeta, final Iterable<String> values)
focal_class.full_signature: @Override public Iterable<String> query(final Filter filter, final String indexName, 
              final NodeState indexMeta, final Iterable<String> values)
focal_class.identifier: query
focal_class.modifiers: @Override public
focal_class.parameters: (final Filter filter, final String indexName, 
              final NodeState indexMeta, final Iterable<String> values)
focal_class.return: Iterable<String>
focal_class.signature: Iterable<String> query(final Filter filter, final String indexName, 
              final NodeState indexMeta, final Iterable<String> values)
focal_class.class_method_signature: UniqueEntryStoreStrategy.queryEntries(Filter filter, String indexName, NodeState indexMeta,
              Iterable<String> values)
focal_class.full_signature: public Iterable<IndexEntry> queryEntries(Filter filter, String indexName, NodeState indexMeta,
              Iterable<String> values)
focal_class.identifier: queryEntries
focal_class.modifiers: public
focal_class.parameters: (Filter filter, String indexName, NodeState indexMeta,
              Iterable<String> values)
focal_class.return: Iterable<IndexEntry>
focal_class.signature: Iterable<IndexEntry> queryEntries(Filter filter, String indexName, NodeState indexMeta,
              Iterable<String> values)
focal_class.class_method_signature: UniqueEntryStoreStrategy.query0(Filter filter, String indexName, NodeState indexMeta,
              Iterable<String> values, HitProducer<T> prod)
focal_class.full_signature: private Iterable<T> query0(Filter filter, String indexName, NodeState indexMeta,
              Iterable<String> values, HitProducer<T> prod)
focal_class.identifier: query0
focal_class.modifiers: private
focal_class.parameters: (Filter filter, String indexName, NodeState indexMeta,
              Iterable<String> values, HitProducer<T> prod)
focal_class.return: Iterable<T>
focal_class.signature: Iterable<T> query0(Filter filter, String indexName, NodeState indexMeta,
              Iterable<String> values, HitProducer<T> prod)
focal_class.class_method_signature: UniqueEntryStoreStrategy.exists(Supplier<NodeBuilder> index, String key)
focal_class.full_signature: @Override public boolean exists(Supplier<NodeBuilder> index, String key)
focal_class.identifier: exists
focal_class.modifiers: @Override public
focal_class.parameters: (Supplier<NodeBuilder> index, String key)
focal_class.return: boolean
focal_class.signature: boolean exists(Supplier<NodeBuilder> index, String key)
focal_class.class_method_signature: UniqueEntryStoreStrategy.count(NodeState root, NodeState indexMeta, Set<String> values, int max)
focal_class.full_signature: @Override public long count(NodeState root, NodeState indexMeta, Set<String> values, int max)
focal_class.identifier: count
focal_class.modifiers: @Override public
focal_class.parameters: (NodeState root, NodeState indexMeta, Set<String> values, int max)
focal_class.return: long
focal_class.signature: long count(NodeState root, NodeState indexMeta, Set<String> values, int max)
focal_class.class_method_signature: UniqueEntryStoreStrategy.count(final Filter filter, NodeState root, NodeState indexMeta, Set<String> values, int max)
focal_class.full_signature: @Override public long count(final Filter filter, NodeState root, NodeState indexMeta, Set<String> values, int max)
focal_class.identifier: count
focal_class.modifiers: @Override public
focal_class.parameters: (final Filter filter, NodeState root, NodeState indexMeta, Set<String> values, int max)
focal_class.return: long
focal_class.signature: long count(final Filter filter, NodeState root, NodeState indexMeta, Set<String> values, int max)
focal_class.class_method_signature: UniqueEntryStoreStrategy.getIndexNodeName()
focal_class.full_signature: @Override public String getIndexNodeName()
focal_class.identifier: getIndexNodeName
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getIndexNodeName()
focal_method.body: @Override
      public void update(
              Supplier<NodeBuilder> index, String path,
              @Nullable final String indexName,
              @Nullable final NodeBuilder indexMeta,
              Set<String> beforeKeys, Set<String> afterKeys) {
          for (String key : beforeKeys) {
              remove(index.get(), key, path);
          }
          for (String key : afterKeys) {
              insert(index.get(), key, path);
          }
      }
focal_method.class_method_signature: UniqueEntryStoreStrategy.update(
              Supplier<NodeBuilder> index, String path,
              @Nullable final String indexName,
              @Nullable final NodeBuilder indexMeta,
              Set<String> beforeKeys, Set<String> afterKeys)
focal_method.full_signature: @Override public void update(
              Supplier<NodeBuilder> index, String path,
              @Nullable final String indexName,
              @Nullable final NodeBuilder indexMeta,
              Set<String> beforeKeys, Set<String> afterKeys)
focal_method.identifier: update
focal_method.invocations: remove get insert get
focal_method.modifiers: @Override public
focal_method.parameters: (
              Supplier<NodeBuilder> index, String path,
              @Nullable final String indexName,
              @Nullable final NodeBuilder indexMeta,
              Set<String> beforeKeys, Set<String> afterKeys)
focal_method.return: void
focal_method.signature: void update(
              Supplier<NodeBuilder> index, String path,
              @Nullable final String indexName,
              @Nullable final NodeBuilder indexMeta,
              Set<String> beforeKeys, Set<String> afterKeys)