Author: eric
Date: Tue Dec 28 12:58:54 2010
New Revision: 1053341

URL: http://svn.apache.org/viewvc?rev=1053341&view=rev
Log:
JavaDoc and code format on ConfigurationProvider.

Modified:
    
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/configuration/ConfigurationProvider.java
    
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/configuration/ConfigurationProviderImpl.java

Modified: 
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/configuration/ConfigurationProvider.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/configuration/ConfigurationProvider.java?rev=1053341&r1=1053340&r2=1053341&view=diff
==============================================================================
--- 
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/configuration/ConfigurationProvider.java
 (original)
+++ 
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/configuration/ConfigurationProvider.java
 Tue Dec 28 12:58:54 2010
@@ -23,25 +23,30 @@ import org.apache.commons.configuration.
 
 /**
  * Load {...@link HierarchicalConfiguration} for beans
- * 
- *
  */
 public interface ConfigurationProvider {
 
     /**
-     * Load the configuration for the bean with the given name
+     * Register a {...@link HierarchicalConfiguration} for a bean name.
+     * It is not mandatory to use the registerConfiguration to have the
+     * configuration available as the {...@link getConfiguration} method may 
+     * load it based on conventions (naming,...).
      * 
-     * @param beanName
-     * @return config
-     * @throws ConfigurationException
+     * @param beanName The bean name for which the configuration has to be 
registered.
+     * @param conf The hierarchical configuration to register for the bean 
name. 
      */
-    public HierarchicalConfiguration getConfiguration(String beanName) throws 
ConfigurationException;
-    
+    public void registerConfiguration(String beanName, 
HierarchicalConfiguration conf);
+
     /**
-     * Register a {...@link HierarchicalConfiguration} for a bean name
+     * Load and return the configuration for the bean with the given name.
+     * The configuration may already be loaded from a previous method 
invocation 
+     * or from a previous configuration registration via the {...@link 
registerConfiguation}.
+     * This method may implement convention based configuration loading based 
on naming,...
      * 
      * @param beanName
-     * @param conf
+     * @return config
+     * @throws ConfigurationException
      */
-    public void registerConfiguration(String beanName, 
HierarchicalConfiguration conf);
+    public HierarchicalConfiguration getConfiguration(String beanName) throws 
ConfigurationException;
+
 }

Modified: 
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/configuration/ConfigurationProviderImpl.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/configuration/ConfigurationProviderImpl.java?rev=1053341&r1=1053340&r2=1053341&view=diff
==============================================================================
--- 
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/configuration/ConfigurationProviderImpl.java
 (original)
+++ 
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/configuration/ConfigurationProviderImpl.java
 Tue Dec 28 12:58:54 2010
@@ -32,92 +32,94 @@ import org.springframework.core.io.Resou
 import org.springframework.core.io.ResourceLoader;
 
 /**
- * Load Configuration and act as provider
- * 
+ * Register Configuration and act as Configuration Provider.
  *
  */
 public class ConfigurationProviderImpl implements ConfigurationProvider, 
ResourceLoaderAware, InitializingBean {
 
-    private ResourceLoader loader;
-    private Map<String, HierarchicalConfiguration> confMap = new 
HashMap<String, HierarchicalConfiguration>();
-    private Map<String, String> resources;
-
     /**
-     * Return the configuration prefix to load the config. In this case its
-     * file://conf/
-     * 
-     * @return prefix
+     * A map of loaded configuration per bean.
      */
-    protected String getConfigPrefix() {
-        return "file://conf/";
-    }
+    private Map<String, HierarchicalConfiguration> configurations = new 
HashMap<String, HierarchicalConfiguration>();
+    
+    /**
+     * Mappings for bean names associated with their related 
"resourceName.configPart" pattern.
+     * The resourceName is the XML configuration file name, the configPart is 
the tag within 
+     * the XML to look for.
+     */
+    private Map<String, String> configurationMappings;
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * org.springframework.context.ResourceLoaderAware#setResourceLoader(org
-     * .springframework.core.io.ResourceLoader)
+    /**
+     * The Spring Resource Loader. Injected via setResourceLoader 
+     * because this class implements ResourceLoaderAware.
      */
-    public void setResourceLoader(ResourceLoader loader) {
-        this.loader = loader;
-    }
+    private ResourceLoader loader;
     
-    private XMLConfiguration getConfig(Resource r) throws 
ConfigurationException, IOException {
-        XMLConfiguration config = new XMLConfiguration();
-        config.setDelimiterParsingDisabled(true);
-        
-        // Use InputStream so we are not bound to File implementations of the 
config
-        config.load(r.getInputStream());
-        return config;
+    /**
+     * Inject the needed configuration mappings.
+     * 
+     * @param configurationMappings
+     */
+    public void setConfigurationMappings(Map<String,String> 
configurationMappings) {
+        this.configurationMappings = configurationMappings;
     }
 
-    public void setConfigurationMappings(Map<String,String> resources) {
-        this.resources = resources;
+    /* (non-Javadoc)
+     * @see 
org.apache.james.container.spring.provider.configuration.ConfigurationProvider#registerConfiguration(java.lang.String,
 org.apache.commons.configuration.HierarchicalConfiguration)
+     */
+    public void registerConfiguration(String beanName, 
HierarchicalConfiguration conf) {
+        configurations.put(beanName, conf);
     }
 
-
-    /*
-     * (non-Javadoc)
+    /**
+     * Responsible to register additional configurations 
+     * for the injected configurationMappings.
+     * 
      * @see 
org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
      */
     public void afterPropertiesSet() throws Exception {
-        if (resources != null) {
-            Iterator<String> it = resources.keySet().iterator();
-
+        if (configurationMappings != null) {
+            Iterator<String> it = configurationMappings.keySet().iterator();
             while (it.hasNext()) {
                 String key = it.next();
-                String value = resources.get(key);
-                registerConfiguration(key,getConfiguration(value));
+                String value = configurationMappings.get(key);
+                registerConfiguration(key, getConfiguration(value));
             }
         }
     }
 
-    /*
-     * (non-Javadoc)
-     * @see 
org.apache.james.container.spring.lifecycle.ConfigurationProvider#getConfiguration(java.lang.String)
+    /* (non-Javadoc)
+     * @see 
org.apache.james.container.spring.provider.configuration.ConfigurationProvider#getConfiguration(java.lang.String)
      */
     public HierarchicalConfiguration getConfiguration(String name) throws 
ConfigurationException {
-        HierarchicalConfiguration conf = confMap.get(name);
+
+        HierarchicalConfiguration conf = configurations.get(name);
+        
+        // Simply return the configuration if it is already loaded.
         if (conf != null) {
             return conf;
-        } else {
+        } 
+        
+        // Load the configuration.
+        else {
             
+            // Compute resourceName and configPart (if any, configPart can 
remain null).
             int i = name.indexOf(".");
-            String configName;
+            String resourceName;
             String configPart = null;
             
             if (i > -1) {
+                resourceName = name.substring(0, i);
                 configPart = name.substring(i+1);
-                configName = name.substring(0, i);
             } else {
-                configName = name;
+                resourceName = name;
             }
 
-            Resource r = loader.getResource(getConfigPrefix()+ configName + 
".xml");
-            if (r.exists()) {
+            Resource resource = loader.getResource(getConfigPrefix()+ 
resourceName + ".xml");
+            
+            if (resource.exists()) {
                 try {
-                    HierarchicalConfiguration config = getConfig(r);
+                    HierarchicalConfiguration config = getConfig(resource);
                     if (configPart != null) {
                         return config.configurationAt(configPart);
                     } else {
@@ -129,15 +131,44 @@ public class ConfigurationProviderImpl i
                 }
             }
         }
+
+        // Configuration was not loaded, throw exception.
         throw new ConfigurationException("Unable to load configuration for 
component " + name);
+    
     }
 
     /*
      * (non-Javadoc)
-     * @see 
org.apache.james.container.spring.lifecycle.ConfigurationProvider#registerConfiguration(java.lang.String,
 org.apache.commons.configuration.HierarchicalConfiguration)
+     * @see 
org.springframework.context.ResourceLoaderAware#setResourceLoader(org.springframework.core.io.ResourceLoader)
      */
-    public void registerConfiguration(String beanName, 
HierarchicalConfiguration conf) {
-        confMap.put(beanName,conf);
+    public void setResourceLoader(ResourceLoader loader) {
+        this.loader = loader;
+    }
+    
+    /**
+     * Load the xmlConfiguration from the given resource.
+     * 
+     * @param r
+     * @return
+     * @throws ConfigurationException
+     * @throws IOException
+     */
+    private XMLConfiguration getConfig(Resource r) throws 
ConfigurationException, IOException {
+        XMLConfiguration config = new XMLConfiguration();
+        config.setDelimiterParsingDisabled(true);
+        // Use InputStream so we are not bound to File implementations of the 
config
+        config.load(r.getInputStream());
+        return config;
+    }
+
+    /**
+     * Return the configuration prefix to load the configuration.
+     * In this case its file://conf/
+     * 
+     * @return prefix
+     */
+    private String getConfigPrefix() {
+        return "file://conf/";
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to