1 package com.atlassian.cache.hazelcast;
2
3 import java.util.SortedMap;
4 import java.util.concurrent.TimeUnit;
5
6 import javax.annotation.Nonnull;
7
8 import com.atlassian.cache.CacheSettings;
9 import com.atlassian.cache.CacheStatisticsKey;
10 import com.atlassian.cache.ManagedCache;
11 import com.atlassian.util.concurrent.Supplier;
12
13 import com.google.common.collect.ImmutableSortedMap;
14
15
16
17
18
19
20 public abstract class ManagedHybridCacheSupport implements ManagedCache
21 {
22 protected final boolean flushable;
23 protected final String name;
24
25 public ManagedHybridCacheSupport(String name, CacheSettings settings)
26 {
27 this.flushable = settings.getFlushable(true);
28 this.name = name;
29 }
30
31 @Override
32 public Long currentExpireAfterAccessMillis()
33 {
34 return getManagedCache().currentExpireAfterAccessMillis();
35 }
36
37 @Override
38 public Long currentExpireAfterWriteMillis()
39 {
40 return getManagedCache().currentExpireAfterWriteMillis();
41 }
42
43 @Override
44 public Integer currentMaxEntries()
45 {
46 return getManagedCache().currentMaxEntries();
47 }
48
49 @Nonnull
50 @Override
51 public String getName()
52 {
53 return name;
54 }
55
56 @Override
57 public boolean isFlushable()
58 {
59 return flushable;
60 }
61
62 @Override
63 public boolean isLocal()
64 {
65 return false;
66 }
67
68 @Override
69 public boolean isReplicateAsynchronously()
70 {
71 return false;
72 }
73
74 @Override
75 public boolean isReplicateViaCopy()
76 {
77 return false;
78 }
79
80 @Override
81 public boolean updateExpireAfterAccess(long expireAfter, @Nonnull TimeUnit timeUnit)
82 {
83 return getManagedCache().updateExpireAfterAccess(expireAfter, timeUnit);
84 }
85
86 @Override
87 public boolean updateExpireAfterWrite(long expireAfter, @Nonnull TimeUnit timeUnit)
88 {
89 return getManagedCache().updateExpireAfterAccess(expireAfter, timeUnit);
90 }
91
92 @Override
93 public boolean updateMaxEntries(int newValue)
94 {
95 return getManagedCache().updateMaxEntries(newValue);
96 }
97
98 protected abstract ManagedCache getManagedCache();
99
100 @Nonnull
101 @Override
102 public SortedMap<CacheStatisticsKey, Supplier<Long>> getStatistics()
103 {
104 return ImmutableSortedMap.of();
105 }
106 }