View Javadoc

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 }