Coverage Report - org.naftulin.configmgr.ConfigurationManagerFactory
 
Classes in this File Line Coverage Branch Coverage Complexity
ConfigurationManagerFactory
90%
18/20
88%
7/8
1.667
 
 1  
 package org.naftulin.configmgr;
 2  
 
 3  
 /**
 4  
  * A factory that creates and maintains configuration management engine and configuration manager.
 5  
  * 
 6  
  * @author Henry Naftulin
 7  
  * @since 1.0
 8  
  */
 9  5
 public class ConfigurationManagerFactory {
 10  5
         private static String configurationFile = "config.xml";
 11  
         private static ConfigurationManagement management;
 12  
         private static ConfigurationManager manager;
 13  
         
 14  
         /**
 15  
          * Package private constructor, needed to access clear method. Only used
 16  
          * for unit testing.
 17  
          */
 18  0
         ConfigurationManagerFactory() {}
 19  
         
 20  
         public static synchronized boolean isIniialized() {
 21  15
                 return management != null;
 22  
         }
 23  
         /**
 24  
          * Sets a file from which master configuration would be read. 
 25  
          * By default, the file is 'config.xml', but it could be owervritten by using this API.
 26  
          * Only valid before configuration management is initialized, otherwise throws an exception.
 27  
          * @param configFile the configuration file for master record.
 28  
          * @throws ConfigurationManagerException if a configuration management engine is already initiazed.
 29  
          */
 30  
         public static synchronized void setConfigurationFile(final String configFile) throws ConfigurationManagerException {
 31  80
                 if (management != null) {
 32  0
                         throw new ConfigurationManagerException("Configuration Manager already initialize");
 33  
                 }
 34  80
                 configurationFile = configFile;
 35  80
         }
 36  
         
 37  
         /**
 38  
          * Returns configuration management engine object. If the object was not created yet,
 39  
          * this call will create it.
 40  
          * @return configuration management engine object.
 41  
          * @throws ConfigurationManagerException if an error occured while creating a configuration
 42  
          * managment object.
 43  
          */
 44  
         public static synchronized ConfigurationManagement getConfigurationManagement() throws ConfigurationManagerException {
 45  135
                 if (management == null) {
 46  80
                         management = new ConfigurationManagementImpl(configurationFile);
 47  80
                         management.reload();
 48  
                 }
 49  135
                 return management;
 50  
         }
 51  
         
 52  
         /**
 53  
          * Returns configuration manager. If the manager was not created yet, this call
 54  
          * will create it.
 55  
          * @return configuration manager.
 56  
          * @throws ConfigurationManagerException if an error occurs while creating a configuration
 57  
          * manager.
 58  
          */
 59  
         public static synchronized ConfigurationManager getConfigurationManager() throws ConfigurationManagerException {
 60  135
                 if (manager == null) {
 61  70
                         manager = getConfigurationManagement().getConfigurationManager();
 62  
                 }
 63  135
                 return manager;
 64  
         }        
 65  
         
 66  
         /**
 67  
          * Clears the factory: resets configuration management, configuration manager and configuration file. 
 68  
          * Needed for unit test settings only.
 69  
          */
 70  
         static void clear() {
 71  190
                 synchronized(ConfigurationManagerFactory.class) {
 72  95
                         ConfigurationManagerFactory.management = null;
 73  95
                         ConfigurationManagerFactory.manager = null;
 74  95
                         ConfigurationManagerFactory.configurationFile = "config.xml";
 75  
                 }
 76  95
         }
 77  
 }