View Javadoc

1   package com.atlassian.vcache.internal.guava;
2   
3   import com.atlassian.marshalling.api.MarshallingPair;
4   import com.atlassian.marshalling.jdk.StringMarshalling;
5   import com.atlassian.vcache.DirectExternalCache;
6   import com.atlassian.vcache.ExternalCacheSettings;
7   import com.atlassian.vcache.StableReadExternalCache;
8   import com.atlassian.vcache.internal.RequestContext;
9   import com.atlassian.vcache.internal.core.DefaultRequestContext;
10  import com.atlassian.vcache.internal.core.Sha1ExternalCacheKeyGenerator;
11  import com.atlassian.vcache.internal.core.cas.IdentifiedData;
12  import com.atlassian.vcache.internal.core.metrics.DefaultMetricsCollector;
13  import com.atlassian.vcache.internal.core.metrics.MetricsCollector;
14  import com.atlassian.vcache.internal.test.AbstractStableReadExternalCacheIT;
15  import com.google.common.cache.Cache;
16  
17  import java.util.HashMap;
18  import java.util.Map;
19  import java.util.Optional;
20  
21  public class GuavaStableReadExternalCacheIT extends AbstractStableReadExternalCacheIT {
22      private RequestContext requestContext = new DefaultRequestContext("tenant-id");
23      private Sha1ExternalCacheKeyGenerator keyGenerator = new Sha1ExternalCacheKeyGenerator("it-test");
24      private Optional<MarshallingPair<String>> marshalling = Optional.of(StringMarshalling.pair());
25      private final MetricsCollector metricsCollector = new DefaultMetricsCollector(() -> requestContext);
26  
27      private Map<String, Cache<String, IdentifiedData>> delegates = new HashMap<>();
28  
29      @Override
30      protected StableReadExternalCache<String> createCache(String name, ExternalCacheSettings settings) {
31  
32          delegates.putIfAbsent(name, GuavaUtils.buildDelegate(settings));
33  
34          return new GuavaStableReadExternalCache<>(
35                  name,
36                  delegates.get(name),
37                  () -> requestContext,
38                  keyGenerator,
39                  marshalling,
40                  metricsCollector);
41      }
42  
43      @Override
44      protected DirectExternalCache<String> obtainDirectCache(String name, ExternalCacheSettings settings) {
45          return new GuavaDirectExternalCache<>(
46                  name,
47                  delegates.get(name),
48                  () -> requestContext,
49                  keyGenerator,
50                  marshalling);
51      }
52  }