View Javadoc

1   package com.atlassian.vcache.internal.core.metrics;
2   
3   import com.atlassian.vcache.RequestCache;
4   
5   import static java.util.Objects.requireNonNull;
6   
7   /**
8    * Wrapper for a {@link RequestCache} that records metrics.
9    *
10   * @param <K> the key type
11   * @param <V> the value type
12   * @since 1.0.0
13   */
14  class TimedRequestCache<K, V>
15          extends TimedLocalCacheOperations<K, V>
16          implements RequestCache<K, V> {
17      private final RequestCache<K, V> delegate;
18  
19      TimedRequestCache(RequestCache<K, V> delegate, MetricsRecorder metricsRecorder) {
20          super(delegate.getName(), CacheType.REQUEST, metricsRecorder);
21          this.delegate = requireNonNull(delegate);
22      }
23  
24      @Override
25      protected RequestCache<K, V> getDelegate() {
26          return delegate;
27      }
28  
29      @Override
30      public String getName() {
31          return delegate.getName();
32      }
33  }