View Javadoc

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   * Common implementation of {@link com.atlassian.cache.ManagedCache} methods for hybrid caches and cached references.
17   *
18   * @since 2.4.0
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 }