1 package com.atlassian.vcache.internal.core.service;
2
3 import com.atlassian.vcache.internal.core.ExternalCacheKeyGenerator;
4
5 import java.util.Optional;
6 import java.util.function.Supplier;
7
8
9
10
11
12
13
14
15 public class VersionedExternalCacheRequestContext<V> extends AbstractExternalCacheRequestContext<V> {
16 protected final String externalCacheVersionKey;
17 private Optional<Long> cacheVersion = Optional.empty();
18
19 public VersionedExternalCacheRequestContext(ExternalCacheKeyGenerator keyGenerator,
20 String name,
21 Supplier<String> partitionSupplier) {
22 super(keyGenerator, name, partitionSupplier);
23 this.externalCacheVersionKey =
24 keyGenerator.cacheVersionKey(partitionSupplier.get(), name);
25 }
26
27 @Override
28 protected long cacheVersion() {
29 return cacheVersion.get();
30 }
31
32 public void updateCacheVersion(long value) {
33 cacheVersion = Optional.of(value);
34 clearKeyMaps();
35 }
36
37 public String externalCacheVersionKey() {
38 return externalCacheVersionKey;
39 }
40 }