1 package com.atlassian.cache.vcache;
2
3 import java.util.Collections;
4 import java.util.SortedMap;
5 import java.util.concurrent.TimeUnit;
6 import javax.annotation.Nonnull;
7 import javax.annotation.Nullable;
8
9 import com.atlassian.cache.CacheSettings;
10 import com.atlassian.cache.CacheStatisticsKey;
11 import com.atlassian.cache.ManagedCache;
12 import com.atlassian.instrumentation.caches.CacheCollector;
13 import com.atlassian.util.concurrent.Supplier;
14
15 import static java.util.Objects.requireNonNull;
16
17 abstract class ManagedCacheSupport implements ManagedCache
18 {
19 private final String name;
20 private final CacheSettings settings;
21
22 ManagedCacheSupport(String name, CacheSettings settings)
23 {
24 this.name = requireNonNull(name);
25 this.settings = requireNonNull(settings);
26 }
27
28 @Nonnull
29 @Override
30 public final String getName()
31 {
32 return name;
33 }
34
35 @Override
36 public final boolean isFlushable()
37 {
38 return settings.getFlushable(true);
39 }
40
41 @Override
42 public final boolean isReplicateAsynchronously()
43 {
44 return false;
45 }
46
47 @Override
48 public final boolean isReplicateViaCopy()
49 {
50 return true;
51 }
52
53 @Override
54 public final Integer currentMaxEntries()
55 {
56 return settings.getMaxEntries();
57 }
58
59 @Override
60 public final boolean updateMaxEntries(int newValue)
61 {
62 return false;
63 }
64
65 @Override
66 public final Long currentExpireAfterAccessMillis()
67 {
68 return settings.getExpireAfterAccess();
69 }
70
71 @Override
72 public final boolean updateExpireAfterAccess(long expireAfter, @Nonnull TimeUnit timeUnit)
73 {
74 return false;
75 }
76
77 @Override
78 public final Long currentExpireAfterWriteMillis()
79 {
80 return settings.getExpireAfterWrite();
81 }
82
83 @Override
84 public final boolean updateExpireAfterWrite(long expireAfter, @Nonnull TimeUnit timeUnit)
85 {
86 return false;
87 }
88
89 @Override
90 public final boolean isStatisticsEnabled()
91 {
92 return false;
93 }
94
95 @Override
96 public final void setStatistics(boolean enabled)
97 {
98 throw new UnsupportedOperationException("setStatistics not implemented");
99 }
100
101 @Nonnull
102 @Override
103 public final SortedMap<CacheStatisticsKey, Supplier<Long>> getStatistics()
104 {
105 return Collections.emptySortedMap();
106 }
107
108 @Nullable
109 @Override
110 public final CacheCollector getCacheCollector()
111 {
112 return null;
113 }
114 }