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