1 package com.atlassian.cache.ehcache;
2
3 import java.util.concurrent.TimeUnit;
4
5 import javax.annotation.Nonnull;
6
7 import com.atlassian.cache.CacheSettings;
8 import com.atlassian.cache.ManagedCache;
9
10 import net.sf.ehcache.Ehcache;
11
12 import static java.util.concurrent.TimeUnit.MILLISECONDS;
13 import static java.util.concurrent.TimeUnit.SECONDS;
14
15 abstract class ManagedCacheSupport implements ManagedCache
16 {
17 private final Ehcache delegate;
18 private final CacheSettings settings;
19
20 public ManagedCacheSupport(Ehcache delegate, CacheSettings settings)
21 {
22 this.delegate = delegate;
23 this.settings = settings;
24 }
25
26 @Nonnull
27 @Override
28 public final String getName()
29 {
30 return delegate.getName();
31 }
32
33 @Override
34 public final boolean isFlushable()
35 {
36 return settings.getFlushable(true);
37 }
38
39 @Override
40 public final boolean isLocal()
41 {
42 return settings.getLocal(false);
43 }
44
45 @Override
46 public final boolean isReplicateAsynchronously()
47 {
48 return settings.getReplicateAsynchronously(false);
49 }
50
51 @Override
52 public final boolean isReplicateViaCopy()
53 {
54 return settings.getReplicateViaCopy(false);
55 }
56
57 @Override
58 public final Integer currentMaxEntries()
59 {
60 return (int) delegate.getCacheConfiguration().getMaxEntriesLocalHeap();
61 }
62
63 @Override
64 public final boolean updateMaxEntries(int newValue)
65 {
66 delegate.getCacheConfiguration().setMaxEntriesLocalHeap(newValue);
67 return true;
68 }
69
70 @Override
71 public final Long currentExpireAfterAccessMillis()
72 {
73 return MILLISECONDS.convert(
74 delegate.getCacheConfiguration().getTimeToIdleSeconds(), SECONDS);
75 }
76
77 @Override
78 public final boolean updateExpireAfterAccess(long expireAfter, @Nonnull TimeUnit timeUnit)
79 {
80 delegate.getCacheConfiguration().setTimeToIdleSeconds(timeUnit.toSeconds(expireAfter));
81 return true;
82 }
83
84 @Override
85 public final Long currentExpireAfterWriteMillis()
86 {
87 return MILLISECONDS.convert(
88 delegate.getCacheConfiguration().getTimeToLiveSeconds(), SECONDS);
89 }
90
91 @Override
92 public final boolean updateExpireAfterWrite(long expireAfter, @Nonnull TimeUnit timeUnit)
93 {
94 delegate.getCacheConfiguration().setTimeToLiveSeconds(timeUnit.toSeconds(expireAfter));
95 return true;
96 }
97
98 }