package com.dianping.pigeon.config; import java.io.FileInputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Properties; import com.dianping.pigeon.util.FileUtils; public class LocalConfigLoader { private static final String DEV_PROPERTIES_PATH = "config/applicationContext.properties"; private static final String PROPERTIES_PATH = "config/pigeon.properties"; private static final String GLOBAL_PROPERTIES_PATH = "/data/webapps/config/pigeon.properties"; public static void loadProperties(Map<String, Object> results, Properties properties) { for (Iterator ir = properties.keySet().iterator(); ir.hasNext();) { String key = ir.next().toString(); if (key.startsWith("#")) { continue; } String value = properties.getProperty(key); value = value.trim(); results.put(key, value.trim()); } } public static Map<String, Object> load(ConfigManager configManager) { Map<String, Object> results = new HashMap<String, Object>(); try { loadProperties(results, FileUtils.readFile(new FileInputStream(GLOBAL_PROPERTIES_PATH))); } catch (Exception e) { } try { loadProperties( results, FileUtils.readFile(Thread.currentThread().getContextClassLoader() .getResourceAsStream(PROPERTIES_PATH))); } catch (Throwable e) { } if (configManager != null) { String env = configManager.getEnv(); if (ConfigConstants.ENV_DEV.equalsIgnoreCase(env) || ConfigConstants.ENV_ALPHA.equalsIgnoreCase(env)) { try { loadProperties( results, FileUtils.readFile(Thread.currentThread().getContextClassLoader() .getResourceAsStream(DEV_PROPERTIES_PATH))); } catch (Throwable e) { } } try { loadProperties( results, FileUtils.readFile(Thread.currentThread().getContextClassLoader() .getResourceAsStream("config/pigeon_" + env + ".properties"))); } catch (Throwable e) { } } return results; } }