comparison artifacts/src/main/java/org/dive4elements/river/artifacts/cache/CacheFactory.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-artifacts/src/main/java/org/dive4elements/river/artifacts/cache/CacheFactory.java@bd047b71ab37
children 4897a58c8746
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.artifacts.cache;
2
3 import org.dive4elements.artifacts.common.utils.Config;
4
5 import net.sf.ehcache.Cache;
6 import net.sf.ehcache.CacheException;
7 import net.sf.ehcache.CacheManager;
8
9 import org.apache.log4j.Logger;
10
11 public final class CacheFactory
12 {
13 private static Logger log = Logger.getLogger(CacheFactory.class);
14
15 public static final String CACHE_CONFIG_FILE_PROPERTY =
16 "flys.artifacts.cache.config.file";
17
18 public static final String XPATH_CACHE_CONFIG_FILE =
19 "/artifact-database/cache/config-file/text()";
20
21 private CacheFactory() {
22 }
23
24 private static boolean initialized;
25
26 private static CacheManager cacheManager;
27
28 public static final Cache getCache() {
29 return getCache(Cache.DEFAULT_CACHE_NAME);
30 }
31
32 public static final String getConfigFile() {
33 String configFile = System.getProperty(CACHE_CONFIG_FILE_PROPERTY);
34
35 if (configFile != null) {
36 return configFile;
37 }
38
39 configFile = Config.getStringXPath(XPATH_CACHE_CONFIG_FILE);
40
41 if (configFile != null) {
42 configFile = Config.replaceConfigDir(configFile);
43 }
44
45 return configFile;
46 }
47
48 public static final synchronized Cache getCache(String cacheName) {
49 if (!initialized) {
50 initialized = true; // try only once
51 String configFile = getConfigFile();
52 if (configFile != null) {
53 try {
54 cacheManager = CacheManager.create(configFile);
55 //System.setProperty(
56 // "net.sf.ehcache.enableShutdownHook", "true");
57 Runtime.getRuntime().addShutdownHook(new Thread() {
58 public void run() {
59 log.info("shutting down caches");
60 for (String name: cacheManager.getCacheNames()) {
61 log.info("\tflushing '" + name + "'");
62 cacheManager.getCache(name).flush();
63 }
64 cacheManager.shutdown();
65 }
66 });
67 }
68 catch (CacheException ce) {
69 log.error("cannot configure cache", ce);
70 }
71 }
72 }
73
74 return cacheManager != null
75 ? cacheManager.getCache(cacheName)
76 : null;
77 }
78 }
79 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org