test_class.declarator: tempFolder = new TemporaryFolder(new File("target"))
test_class.modifier: @Rule
      public final
test_class.original_string: @Rule
      public final TemporaryFolder tempFolder = new TemporaryFolder(new File("target"));
test_class.type: TemporaryFolder
test_class.var_name: tempFolder
test_class.declarator: builderProvider = new DocumentMKBuilderProvider()
test_class.modifier: @Rule
      public
test_class.original_string: @Rule
      public DocumentMKBuilderProvider builderProvider = new DocumentMKBuilderProvider();
test_class.type: DocumentMKBuilderProvider
test_class.var_name: builderProvider
test_class.declarator: store
test_class.modifier: private
test_class.original_string: private DocumentStore store;
test_class.type: DocumentStore
test_class.var_name: store
test_class.declarator: ns
test_class.modifier: private
test_class.original_string: private DocumentNodeStore ns;
test_class.type: DocumentNodeStore
test_class.var_name: ns
test_class.declarator: nodeCache
test_class.modifier: private
test_class.original_string: private NodeCache<PathRev, DocumentNodeState> nodeCache;
test_class.type: NodeCache<PathRev, DocumentNodeState>
test_class.var_name: nodeCache
test_class.declarator: nodeChildren
test_class.modifier: private
test_class.original_string: private NodeCache<NamePathRev, DocumentNodeState.Children> nodeChildren;
test_class.type: NodeCache<NamePathRev, DocumentNodeState.Children>
test_class.var_name: nodeChildren
test_class.declarator: executor = Executors.newSingleThreadScheduledExecutor()
test_class.modifier: private
test_class.original_string: private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
test_class.type: ScheduledExecutorService
test_class.var_name: executor
test_class.declarator: statsProvider = new DefaultStatisticsProvider(executor)
test_class.modifier: private
test_class.original_string: private StatisticsProvider statsProvider = new DefaultStatisticsProvider(executor);
test_class.type: StatisticsProvider
test_class.var_name: statsProvider
test_class.file: oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/NodeCacheTest.java
test_class.identifier: NodeCacheTest
test_case.body: @Test
      public void persistentCacheAccessForIncludedPathOnly() throws Exception {
          Path a = Path.fromString("/a");
          initializeNodeStore(false, b -> b.setNodeCachePathPredicate(
                  path -> path != null && (a.equals(path) || a.isAncestorOf(path))
          ));
  
          NodeBuilder builder = ns.getRoot().builder();
          builder.child("x");
          ns.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
          // clean caches
          ns.getNodeCache().invalidateAll();
          ns.getNodeChildrenCache().invalidateAll();
  
          MeterStats stats = statsProvider.getMeter("PersistentCache.NodeCache.node.REQUESTS", StatsOptions.DEFAULT);
          // hasChildNode() is not cached and will cause a request
          // to the persistent cache
          long requests = stats.getCount() + 1;
          ns.getRoot().hasChildNode("a");
          assertEquals(requests, stats.getCount());
  
          // next call must not cause request to persistent cache
          // because path is not included
          ns.getRoot().hasChildNode("b");
          assertEquals(requests, stats.getCount());
      }
test_case.class_method_signature: NodeCacheTest.persistentCacheAccessForIncludedPathOnly()
test_case.full_signature: @Test public void persistentCacheAccessForIncludedPathOnly()
test_case.identifier: persistentCacheAccessForIncludedPathOnly
test_case.invocations: fromString initializeNodeStore setNodeCachePathPredicate equals isAncestorOf builder getRoot child merge invalidateAll getNodeCache invalidateAll getNodeChildrenCache getMeter getCount hasChildNode getRoot assertEquals getCount hasChildNode getRoot assertEquals getCount
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void persistentCacheAccessForIncludedPathOnly()
focal_class.declarator: LOG = LoggerFactory.getLogger(NodeCache.class)
focal_class.modifier: static final
focal_class.original_string: static final Logger LOG = LoggerFactory.getLogger(NodeCache.class);
focal_class.type: Logger
focal_class.var_name: LOG
focal_class.declarator: EVICTION_CAUSES = ImmutableSet.of(COLLECTED, EXPIRED, SIZE)
focal_class.modifier: private static final
focal_class.original_string: private static final Set<RemovalCause> EVICTION_CAUSES = ImmutableSet.of(COLLECTED, EXPIRED, SIZE);
focal_class.type: Set<RemovalCause>
focal_class.var_name: EVICTION_CAUSES
focal_class.declarator: cache
focal_class.modifier: private final
focal_class.original_string: private final PersistentCache cache;
focal_class.type: PersistentCache
focal_class.var_name: cache
focal_class.declarator: stats
focal_class.modifier: private final
focal_class.original_string: private final PersistentCacheStats stats;
focal_class.type: PersistentCacheStats
focal_class.var_name: stats
focal_class.declarator: memCache
focal_class.modifier: private final
focal_class.original_string: private final Cache<K, V> memCache;
focal_class.type: Cache<K, V>
focal_class.var_name: memCache
focal_class.declarator: map
focal_class.modifier: private final
focal_class.original_string: private final MultiGenerationMap<K, V> map;
focal_class.type: MultiGenerationMap<K, V>
focal_class.var_name: map
focal_class.declarator: type
focal_class.modifier: private final
focal_class.original_string: private final CacheType type;
focal_class.type: CacheType
focal_class.var_name: type
focal_class.declarator: keyType
focal_class.modifier: private final
focal_class.original_string: private final DataType keyType;
focal_class.type: DataType
focal_class.var_name: keyType
focal_class.declarator: valueType
focal_class.modifier: private final
focal_class.original_string: private final DataType valueType;
focal_class.type: DataType
focal_class.var_name: valueType
focal_class.declarator: memCacheMetadata
focal_class.modifier: private final
focal_class.original_string: private final CacheMetadata<K> memCacheMetadata;
focal_class.type: CacheMetadata<K>
focal_class.var_name: memCacheMetadata
focal_class.declarator: nodeStore
focal_class.modifier: private final
focal_class.original_string: private final DocumentNodeStore nodeStore;
focal_class.type: DocumentNodeStore
focal_class.var_name: nodeStore
focal_class.declarator: async
focal_class.modifier: private final
focal_class.original_string: private final boolean async;
focal_class.type: boolean
focal_class.var_name: async
focal_class.declarator: writeQueue
focal_class.original_string: CacheWriteQueue<K, V> writeQueue;
focal_class.type: CacheWriteQueue<K, V>
focal_class.var_name: writeQueue
focal_class.file: oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/NodeCache.java
focal_class.identifier: NodeCache
focal_class.interfaces: implements Cache<K, V>, GenerationCache, EvictionListener<K, V>
focal_class.class_method_signature: NodeCache.NodeCache(
              PersistentCache cache,
              Cache<K, V> memCache,
              DocumentNodeStore docNodeStore, 
              DocumentStore docStore,
              CacheType type,
              CacheActionDispatcher dispatcher,
              StatisticsProvider statisticsProvider,
              boolean async)
focal_class.full_signature:   NodeCache(
              PersistentCache cache,
              Cache<K, V> memCache,
              DocumentNodeStore docNodeStore, 
              DocumentStore docStore,
              CacheType type,
              CacheActionDispatcher dispatcher,
              StatisticsProvider statisticsProvider,
              boolean async)
focal_class.identifier: NodeCache
focal_class.parameters: (
              PersistentCache cache,
              Cache<K, V> memCache,
              DocumentNodeStore docNodeStore, 
              DocumentStore docStore,
              CacheType type,
              CacheActionDispatcher dispatcher,
              StatisticsProvider statisticsProvider,
              boolean async)
focal_class.signature:  NodeCache(
              PersistentCache cache,
              Cache<K, V> memCache,
              DocumentNodeStore docNodeStore, 
              DocumentStore docStore,
              CacheType type,
              CacheActionDispatcher dispatcher,
              StatisticsProvider statisticsProvider,
              boolean async)
focal_class.class_method_signature: NodeCache.getType()
focal_class.full_signature: @Override public CacheType getType()
focal_class.identifier: getType
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: CacheType
focal_class.signature: CacheType getType()
focal_class.class_method_signature: NodeCache.addGeneration(int generation, boolean readOnly)
focal_class.full_signature: @Override public void addGeneration(int generation, boolean readOnly)
focal_class.identifier: addGeneration
focal_class.modifiers: @Override public
focal_class.parameters: (int generation, boolean readOnly)
focal_class.return: void
focal_class.signature: void addGeneration(int generation, boolean readOnly)
focal_class.class_method_signature: NodeCache.removeGeneration(int generation)
focal_class.full_signature: @Override public void removeGeneration(int generation)
focal_class.identifier: removeGeneration
focal_class.modifiers: @Override public
focal_class.parameters: (int generation)
focal_class.return: void
focal_class.signature: void removeGeneration(int generation)
focal_class.class_method_signature: NodeCache.readIfPresent(K key)
focal_class.full_signature: private V readIfPresent(K key)
focal_class.identifier: readIfPresent
focal_class.modifiers: private
focal_class.parameters: (K key)
focal_class.return: V
focal_class.signature: V readIfPresent(K key)
focal_class.class_method_signature: NodeCache.syncReadIfPresent(K key)
focal_class.full_signature: private V syncReadIfPresent(K key)
focal_class.identifier: syncReadIfPresent
focal_class.modifiers: private
focal_class.parameters: (K key)
focal_class.return: V
focal_class.signature: V syncReadIfPresent(K key)
focal_class.class_method_signature: NodeCache.asyncReadIfPresent(K key)
focal_class.full_signature: private V asyncReadIfPresent(K key)
focal_class.identifier: asyncReadIfPresent
focal_class.modifiers: private
focal_class.parameters: (K key)
focal_class.return: V
focal_class.signature: V asyncReadIfPresent(K key)
focal_class.class_method_signature: NodeCache.broadcast(final K key, final V value)
focal_class.full_signature: private void broadcast(final K key, final V value)
focal_class.identifier: broadcast
focal_class.modifiers: private
focal_class.parameters: (final K key, final V value)
focal_class.return: void
focal_class.signature: void broadcast(final K key, final V value)
focal_class.class_method_signature: NodeCache.write(final K key, final V value)
focal_class.full_signature: private void write(final K key, final V value)
focal_class.identifier: write
focal_class.modifiers: private
focal_class.parameters: (final K key, final V value)
focal_class.return: void
focal_class.signature: void write(final K key, final V value)
focal_class.class_method_signature: NodeCache.getIfPresent(Object key)
focal_class.full_signature: @SuppressWarnings("unchecked") @Override @Nullable public V getIfPresent(Object key)
focal_class.identifier: getIfPresent
focal_class.modifiers: @SuppressWarnings("unchecked") @Override @Nullable public
focal_class.parameters: (Object key)
focal_class.return: V
focal_class.signature: V getIfPresent(Object key)
focal_class.class_method_signature: NodeCache.get(K key,
              Callable<? extends V> valueLoader)
focal_class.full_signature: @Override public V get(K key,
              Callable<? extends V> valueLoader)
focal_class.identifier: get
focal_class.modifiers: @Override public
focal_class.parameters: (K key,
              Callable<? extends V> valueLoader)
focal_class.return: V
focal_class.signature: V get(K key,
              Callable<? extends V> valueLoader)
focal_class.class_method_signature: NodeCache.getAllPresent(
              Iterable<?> keys)
focal_class.full_signature: @Override public ImmutableMap<K, V> getAllPresent(
              Iterable<?> keys)
focal_class.identifier: getAllPresent
focal_class.modifiers: @Override public
focal_class.parameters: (
              Iterable<?> keys)
focal_class.return: ImmutableMap<K, V>
focal_class.signature: ImmutableMap<K, V> getAllPresent(
              Iterable<?> keys)
focal_class.class_method_signature: NodeCache.put(K key, V value)
focal_class.full_signature: @Override public void put(K key, V value)
focal_class.identifier: put
focal_class.modifiers: @Override public
focal_class.parameters: (K key, V value)
focal_class.return: void
focal_class.signature: void put(K key, V value)
focal_class.class_method_signature: NodeCache.invalidate(Object key)
focal_class.full_signature: @SuppressWarnings("unchecked") @Override public void invalidate(Object key)
focal_class.identifier: invalidate
focal_class.modifiers: @SuppressWarnings("unchecked") @Override public
focal_class.parameters: (Object key)
focal_class.return: void
focal_class.signature: void invalidate(Object key)
focal_class.class_method_signature: NodeCache.putAll(Map<? extends K, ? extends V> m)
focal_class.full_signature: @Override public void putAll(Map<? extends K, ? extends V> m)
focal_class.identifier: putAll
focal_class.modifiers: @Override public
focal_class.parameters: (Map<? extends K, ? extends V> m)
focal_class.return: void
focal_class.signature: void putAll(Map<? extends K, ? extends V> m)
focal_class.class_method_signature: NodeCache.invalidateAll(Iterable<?> keys)
focal_class.full_signature: @Override public void invalidateAll(Iterable<?> keys)
focal_class.identifier: invalidateAll
focal_class.modifiers: @Override public
focal_class.parameters: (Iterable<?> keys)
focal_class.return: void
focal_class.signature: void invalidateAll(Iterable<?> keys)
focal_class.class_method_signature: NodeCache.invalidateAll()
focal_class.full_signature: @Override public void invalidateAll()
focal_class.identifier: invalidateAll
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void invalidateAll()
focal_class.class_method_signature: NodeCache.size()
focal_class.full_signature: @Override public long size()
focal_class.identifier: size
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: long
focal_class.signature: long size()
focal_class.class_method_signature: NodeCache.stats()
focal_class.full_signature: @Override public CacheStats stats()
focal_class.identifier: stats
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: CacheStats
focal_class.signature: CacheStats stats()
focal_class.class_method_signature: NodeCache.asMap()
focal_class.full_signature: @Override public ConcurrentMap<K, V> asMap()
focal_class.identifier: asMap
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: ConcurrentMap<K, V>
focal_class.signature: ConcurrentMap<K, V> asMap()
focal_class.class_method_signature: NodeCache.cleanUp()
focal_class.full_signature: @Override public void cleanUp()
focal_class.identifier: cleanUp
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void cleanUp()
focal_class.class_method_signature: NodeCache.receive(ByteBuffer buff)
focal_class.full_signature: @Override @SuppressWarnings("unchecked") public void receive(ByteBuffer buff)
focal_class.identifier: receive
focal_class.modifiers: @Override @SuppressWarnings("unchecked") public
focal_class.parameters: (ByteBuffer buff)
focal_class.return: void
focal_class.signature: void receive(ByteBuffer buff)
focal_class.class_method_signature: NodeCache.evicted(K key, V value, RemovalCause cause)
focal_class.full_signature: @Override public void evicted(K key, V value, RemovalCause cause)
focal_class.identifier: evicted
focal_class.modifiers: @Override public
focal_class.parameters: (K key, V value, RemovalCause cause)
focal_class.return: void
focal_class.signature: void evicted(K key, V value, RemovalCause cause)
focal_class.class_method_signature: NodeCache.getPersistentCacheStats()
focal_class.full_signature: public PersistentCacheStats getPersistentCacheStats()
focal_class.identifier: getPersistentCacheStats
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: PersistentCacheStats
focal_class.signature: PersistentCacheStats getPersistentCacheStats()
focal_class.class_method_signature: NodeCache.getGenerationalMap()
focal_class.full_signature:  Map<K, V> getGenerationalMap()
focal_class.identifier: getGenerationalMap
focal_class.parameters: ()
focal_class.return: Map<K, V>
focal_class.signature: Map<K, V> getGenerationalMap()
focal_method.body: @Override
      public void invalidateAll(Iterable<?> keys) {
          memCache.invalidateAll(keys);
          memCacheMetadata.removeAll(keys);
      }
focal_method.class_method_signature: NodeCache.invalidateAll(Iterable<?> keys)
focal_method.full_signature: @Override public void invalidateAll(Iterable<?> keys)
focal_method.identifier: invalidateAll
focal_method.invocations: invalidateAll removeAll
focal_method.modifiers: @Override public
focal_method.parameters: (Iterable<?> keys)
focal_method.return: void
focal_method.signature: void invalidateAll(Iterable<?> keys)