View Javadoc

1   package org.naftulin.configmgr;
2   
3   import java.util.HashMap;
4   import java.util.Map;
5   
6   import org.apache.commons.lang.builder.EqualsBuilder;
7   import org.apache.commons.lang.builder.HashCodeBuilder;
8   import org.apache.log4j.Logger;
9   
10  public class ConfigurationUtilityHelper {
11  	private static final String JUNIT_WARNING = ">>Configuration Managment System in JUNit Mode<<";
12  
13  	private static final Logger log = Logger.getLogger(ConfigurationUtilityHelper.class);
14  
15  	private static boolean unitTest = false;
16  	private static final Map<String, Object> configObjects = new HashMap<String, Object>();
17  	private static final Map<ConfigPropertyKey, Object> configPropertyObjects = new HashMap<ConfigPropertyKey, Object>();
18  	
19  	public static void setUnitTest(final boolean unitTestDesired) { unitTest =unitTestDesired; }
20  	public static boolean getUnitTest() { return unitTest; }
21  	public static void setConfigEntryObject(final String configurationKey, final Object object) {
22  		if (!unitTest) {
23  			throw new IllegalStateException("Cannot set configuration entry, the state is not unit test. Please set the state to unittest first.");
24  		}
25  		
26  		printJUnitModeWarning();
27  		
28  		configObjects.put(configurationKey, object);
29  	}
30  	private static void printJUnitModeWarning() {
31  		System.out.println(JUNIT_WARNING);
32  		log.warn(JUNIT_WARNING);
33  	}
34  	
35  	public static void setConfigPropertyObject(final String configurationKey, final String propertyKey, final String value) {
36  		if (!unitTest) {
37  			throw new IllegalStateException("Cannot set configuration property, the state is not unit test. Please set the state to unittest first.");
38  		}
39  		printJUnitModeWarning();
40  		configPropertyObjects.put(new ConfigurationUtilityHelper.ConfigPropertyKey(configurationKey, propertyKey), value);
41  	}
42  	
43  	
44  	static Object getObject(final String configurationKey) {
45  		Object configurationEntryObject= null;
46  		if (unitTest) {
47  			printJUnitModeWarning();
48  			configurationEntryObject = configObjects.get(configurationKey);
49  		} else {
50  			ConfigurationManager cm = null;
51  			cm = getConfigurationManager();
52  		
53  			configurationEntryObject = getConfigurationEntry(configurationKey, cm);
54  		}
55  		
56  		return configurationEntryObject;
57  	
58  	}
59  
60  	public static Object getObject(final String configurationKey, final String propertyKey) {
61  		Object configurationEntryObject= null;
62  		if (unitTest) {
63  			printJUnitModeWarning();
64  			Object value = configPropertyObjects.get(new ConfigurationUtilityHelper.ConfigPropertyKey(configurationKey, propertyKey));
65  			Map<String, Object> m = new HashMap<String, Object>();
66  			m.put(propertyKey, value);
67  			configurationEntryObject = m;
68  		} else {			
69  			configurationEntryObject = getObject(configurationKey);
70  		}
71  		return configurationEntryObject;
72  	}
73  
74  	static Object getConfigurationEntry(final String configurationKey,
75  			final ConfigurationManager cm) {
76  		final Object configurationEntry = cm.getConfigurationSilent(configurationKey);
77  		if (configurationEntry == null) {
78  			throw new IllegalArgumentException("Configuration with by key " + configurationKey + " not found. ");			
79  		}
80  		return configurationEntry;
81  	}
82  
83  	static ConfigurationManager getConfigurationManager() {
84  		ConfigurationManager cm;
85  		try {
86  			cm = ConfigurationManagerFactory.getConfigurationManager();
87  		} catch(ConfigurationManagerException e) {
88  			throw new ConfigurationManagerRuntimeException(e.getMessage(), e);
89  		}
90  		return cm;
91  	}
92  
93  	static ConfigurationManagement getConfigurationManagement() {
94  		ConfigurationManagement cm;
95  		try {
96  			cm = ConfigurationManagerFactory.getConfigurationManagement();
97  		} catch(ConfigurationManagerException e) {
98  			throw new ConfigurationManagerRuntimeException(e.getMessage(), e);
99  		}
100 		return cm;
101 	}
102 
103 	public static void reload() {
104 		if (unitTest) {
105 			printJUnitModeWarning();
106 			//do nothing
107 		} else {			
108 			try {
109 				ConfigurationManagement management = ConfigurationManagerFactory.getConfigurationManagement();
110 				management.reload();
111 			} catch(ConfigurationManagerException e) {
112 				throw new ConfigurationManagerRuntimeException(e.getMessage(), e);
113 			}
114 		}		
115 	}
116 	
117 	private static class ConfigPropertyKey {
118 		final String configKey;
119 		final String propertyKey;
120 		
121 		ConfigPropertyKey(String configKey, String propertyKey) {
122 			this.configKey = configKey;
123 			this.propertyKey = propertyKey;
124 		}
125 		
126 		public int hashCode() {
127 			return HashCodeBuilder.reflectionHashCode(this);
128 		}
129 		
130 		public boolean equals(Object that) {
131 			return EqualsBuilder.reflectionEquals(this, that);
132 		}
133 		
134 	}
135 
136 
137 }