1 package org.nemesis.forum.config; 2 import java.io.InputStream ; 3 4 import org.apache.commons.digester.Digester; 5 import org.apache.commons.logging.Log; 6 import org.apache.commons.logging.LogFactory; 7 8 16 public class ConfigLoader { 17 private static Log log=LogFactory.getLog(ConfigLoader.class); 18 19 private static Object lockObject = new Object (); 20 21 private Config config; 22 23 private static ConfigLoader singleton; 24 25 private ConfigLoader() { 26 } 27 28 public static ConfigLoader getInstance() { 29 if (singleton == null) { 30 singleton = new ConfigLoader(); 31 } 32 return singleton; 33 } 34 35 public Config getConfig() { 36 if (config != null) { 37 return config; 38 } 39 synchronized (lockObject) { 40 41 InputStream is; 42 is = getClass().getClassLoader().getResourceAsStream("nemesis-forum-config.xml"); 43 if (is == null) { 44 is = getClass().getClassLoader().getResourceAsStream("/nemesis-forum-config.xml"); 45 } 46 config = new Config(); 47 48 try { 49 50 Digester digester = new Digester(); 51 digester.push(config); 52 digester.setValidating(false); 53 digester.addCallMethod("nemesis-config/db-config/provider-class", "setJDBCConnectionProviderClass", 0); 55 digester.addCallMethod("nemesis-config/db-config/init-param", "addJDBCProviderProperties", 2); 56 digester.addCallParam("nemesis-config/db-config/init-param/param-name", 0); 57 digester.addCallParam("nemesis-config/db-config/init-param/param-value", 1); 58 59 digester.addCallMethod("nemesis-config/extended-properties/user", "addUserExtendedProperties", 0); 60 digester.addCallMethod("nemesis-config/extended-properties/forum", "addForumExtendedProperties", 0); 61 digester.addCallMethod("nemesis-config/extended-properties/message", "addMessageExtendedProperties", 0); 62 63 digester.addCallMethod("nemesis-config/auto-index", "setAutoIndex", 0, new String []{"java.lang.Boolean"}); 64 65 digester.parse(is); 67 is.close(); 68 69 log.info("load config :"+config.toString()); 71 return config; 72 } catch (Exception e) { 73 log.fatal("load config",e); 74 throw new RuntimeException (e.getMessage()); 75 } 76 77 } 78 } 79 80 } 81 | Popular Tags |