1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.cache;
35
36 import info.magnolia.module.ModuleLifecycle;
37 import info.magnolia.module.cache.mbean.CacheMonitor;
38
39 import javax.inject.Inject;
40
41
42
43
44 public abstract class AbstractCacheModule implements ModuleLifecycle {
45
46 public static final String DEFAULT_CACHE_CONFIG = "defaultPageCache";
47 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(AbstractCacheModule.class);
48
49 private final CacheMonitor cacheMonitor;
50
51 @Inject
52 public AbstractCacheModule(CacheMonitor cacheMonitor) {
53 this.cacheMonitor = cacheMonitor;
54 }
55
56 public abstract ContentCachingConfiguration getContentCaching(String name);
57
58 protected abstract CacheFactory getCacheFactory();
59
60 protected void startCache(String name) {
61 final Cache cache = getCacheFactory().getCache(name);
62 cacheMonitor.addCache(name);
63 ContentCachingConfiguration cfg = this.getContentCaching(name);
64 if (cfg.getFlushPolicy() != null) {
65 cfg.getFlushPolicy().start(cache);
66 } else {
67 log.warn("Flush Policy is not configured properly for {} cache configuration.", name);
68 }
69 }
70
71 protected void stopCache(String name) {
72 ContentCachingConfiguration cfg = this.getContentCaching(name);
73 if (cfg.getFlushPolicy() != null) {
74 cfg.getFlushPolicy().stop(getCacheFactory().getCache(name));
75 } else {
76 log.warn("Flush Policy is not configured properly for {} cache configuration.", name);
77 }
78 }
79
80 protected CacheMonitor getCacheMonitor() {
81 return cacheMonitor;
82 }
83
84 }