View Javadoc

1   package com.atlassian.vcache.internal.legacy;
2   
3   import com.atlassian.cache.Cache;
4   import com.atlassian.cache.CacheFactory;
5   import com.atlassian.cache.CacheSettings;
6   import com.atlassian.cache.CacheSettingsBuilder;
7   import com.atlassian.cache.memory.MemoryCacheManager;
8   import com.atlassian.marshalling.api.MarshallingPair;
9   import com.atlassian.marshalling.jdk.StringMarshalling;
10  import com.atlassian.vcache.DirectExternalCache;
11  import com.atlassian.vcache.ExternalCacheSettings;
12  import com.atlassian.vcache.StableReadExternalCache;
13  import com.atlassian.vcache.internal.RequestContext;
14  import com.atlassian.vcache.internal.core.DefaultRequestContext;
15  import com.atlassian.vcache.internal.core.Sha1ExternalCacheKeyGenerator;
16  import com.atlassian.vcache.internal.core.cas.IdentifiedData;
17  import com.atlassian.vcache.internal.core.metrics.DefaultMetricsCollector;
18  import com.atlassian.vcache.internal.core.metrics.MetricsCollector;
19  import com.atlassian.vcache.internal.test.AbstractStableReadExternalCacheIT;
20  
21  import java.util.Optional;
22  import java.util.concurrent.TimeUnit;
23  
24  public class LegacyStableReadExternalCacheIT extends AbstractStableReadExternalCacheIT {
25      private RequestContext requestContext = new DefaultRequestContext("tenant-id");
26      private CacheFactory cacheFactory = new MemoryCacheManager();
27      private Sha1ExternalCacheKeyGenerator keyGenerator = new Sha1ExternalCacheKeyGenerator("it-test");
28      private Optional<MarshallingPair<String>> marshalling = Optional.of(StringMarshalling.pair());
29      private final MetricsCollector metricsCollector = new DefaultMetricsCollector(() -> requestContext);
30  
31      @Override
32      protected StableReadExternalCache<String> createCache(String name, ExternalCacheSettings settings) {
33          final CacheSettings legacySettings = new CacheSettingsBuilder()
34                  .remote()
35                  .maxEntries(settings.getEntryCountHint().get())
36                  .expireAfterWrite(settings.getDefaultTtl().get().toNanos(), TimeUnit.NANOSECONDS)
37                  .build();
38  
39          final Cache<String, IdentifiedData> delegate = cacheFactory.getCache(name, null, legacySettings);
40          return new LegacyStableReadExternalCache<>(
41                  delegate,
42                  () -> requestContext,
43                  keyGenerator,
44                  marshalling,
45                  new LegacyServiceSettingsBuilder().build(),
46                  metricsCollector);
47      }
48  
49      @Override
50      protected DirectExternalCache<String> obtainDirectCache(String name, ExternalCacheSettings settings) {
51          final Cache<String, IdentifiedData> delegate = cacheFactory.getCache(name);
52          return new LegacyDirectExternalCache<>(
53                  delegate,
54                  () -> requestContext,
55                  keyGenerator,
56                  marshalling,
57                  new LegacyServiceSettingsBuilder().build());
58      }
59  }