Coverage Report - org.naftulin.configmgr.content.ExternalRecordImpl
 
Classes in this File Line Coverage Branch Coverage Complexity
ExternalRecordImpl
70%
7/10
N/A
0
 
 1  
 package org.naftulin.configmgr.content;
 2  
 
 3  
 import java.util.Collections;
 4  
 import java.util.LinkedList;
 5  
 import java.util.List;
 6  
 
 7  
 import org.naftulin.configmgr.ConfigurationManagerException;
 8  
 import org.naftulin.configmgr.parsers.ConfigEntryParser;
 9  
 import org.naftulin.configmgr.parsers.ExternalConfigurationParserImpl;
 10  
 
 11  
 /**
 12  
  * Represents an external entry, with it's key, name-value pairs and parser class.
 13  
  * Intended to mirror master configuration rules for external configuration.
 14  
  * The external configuraton xml is:
 15  
  * <pre>
 16  
  *         &lt;external key="the key" configEntryAdatorClass="the fully qualified parser class"&gt;
 17  
                 &lt;param name="key1" value="value1" /&gt;
 18  
                 .....
 19  
                 &lt;param name="keyn" value="valuen" /&gt;
 20  
         &lt;/external&gt;
 21  
  * </pre>
 22  
  * where <code>configEntryParserClass</code> is a class implementing {@link org.naftulin.configmgr.parsers.ExternalRecordAdapter 
 23  
  * ExternalRecordAdapter} interface.
 24  
  * @author Henry Henry
 25  
  * @since 1.0
 26  
  */
 27  20
 public class ExternalRecordImpl extends AbstractRecordImpl {
 28  10
         private final List<NameValuePairImpl> nameValuePairs = new LinkedList<NameValuePairImpl>();
 29  
         private String configEntryAdaptorClass;
 30  10
         private final ExternalConfigurationParserImpl parser = new ExternalConfigurationParserImpl();
 31  
         
 32  
         /**
 33  
          * Adds a name-value pair as it is read from the master configuration.
 34  
          * @param nameValuePair the name value pair.
 35  
          */
 36  
         public void addNameValuePair(final NameValuePairImpl nameValuePair) {
 37  20
                 nameValuePairs.add(nameValuePair);
 38  20
         }
 39  
         
 40  
         /**
 41  
          * Sets the configuration entry adapter class. This class will handle 
 42  
          * adapting the loading and  reloading of the configurations by calling 
 43  
          * load and reload methods on the original, exteral interface. 
 44  
          * @param adaptor the fully qualified name of the adaptor implementation class.
 45  
          */
 46  
         public void setConfigEntryAdaptorClass(final String adaptor) {
 47  10
                 configEntryAdaptorClass = adaptor;
 48  10
         }
 49  
         
 50  
         /**
 51  
          * Returns an instance of {@link ExternalConfigurationParserImpl parser} that can parse the file to extract the configuration.
 52  
          * @return the parser that can parse the file to extract the configuration.
 53  
          * @throws ConfigurationManagerException if an error occured while instantiating the parser.
 54  
          */
 55  
         public ConfigEntryParser getParser() throws ConfigurationManagerException {
 56  0
                 parser.setNameValuePairs(Collections.unmodifiableList(nameValuePairs));
 57  0
                 parser.setExternalRecordAdapterClass(configEntryAdaptorClass);
 58  0
                 return parser;
 59  
         }
 60  
 }