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