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 Cache cache = null;
73 ContentCachingConfiguration cfg = this.getContentCaching(name);
74 try {
75 cache = getCacheFactory().getCache(name);
76 } catch (IllegalStateException e) {
77 log.warn("Cache {} is not running anymore. Check your configuration and log files to find out if there were any errors forcing cache shutdown.", name);
78 }
79 if (cfg.getFlushPolicy() != null) {
80 cfg.getFlushPolicy().stop(cache);
81 } else {
82 log.warn("Flush Policy is not configured properly for {} cache configuration.", name);
83 }
84 }
85
86 protected CacheMonitor getCacheMonitor() {
87 return cacheMonitor;
88 }
89
90 }