You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by er...@apache.org on 2010/12/20 08:42:57 UTC

svn commit: r1051009 - in /james/server/trunk: container-spring/src/main/java/org/apache/james/container/spring/bean/ container-spring/src/main/java/org/apache/james/container/spring/bean/factory/ container-spring/src/main/java/org/apache/james/contain...

Author: eric
Date: Mon Dec 20 07:42:56 2010
New Revision: 1051009

URL: http://svn.apache.org/viewvc?rev=1051009&view=rev
Log:
Attempt to repackage container-spring project

Added:
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/filesystem/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/filesystem/FileSystemBeanFactory.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/resolver/spring/SpringFileSystem.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/MailetLoaderBeanFactory.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/mailetcontainer/spring/BeanFactoryMailetLoader.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/MatcherLoaderBeanFactory.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/mailetcontainer/spring/BeanFactoryMatcherLoader.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java   (with props)
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/ProtocolHandlerChainBeanFactory.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/protocols/spring/BeanFactoryProtocolHandlerChain.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/configuration/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/configuration/ConfigurationBeanFactoryPostProcessor.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/config/JamesLoaderBeanFactoryPostProcessor.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/filesystem/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/filesystem/FileSystemBeanFactoryPostProcessor.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/config/FileSystemResolver.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/AbstractLifeCycleBeanPostProcessor.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/AbstractLifeCycleBeanPostProcessor.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/ConfigurableBeanPostProcessor.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/CommonsConfigurableBeanPostProcessor.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/ConfigurationProvider.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/ConfigurationProviderImpl.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/LogEnabledBeanPostProcessor.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/LogEnabledBeanPostProcessor.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/LogProvider.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/LogProviderImpl.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/AbstractJamesResourceLoader.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/AbstractJamesResourceLoader.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/JamesResourceLoader.java
      - copied, changed from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/JamesResourceLoader.java
Removed:
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/config/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/AbstractJamesResourceLoader.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/JamesResourceLoader.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/api/
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/provider/impl/
    james/server/trunk/container-spring/src/main/java/org/apache/james/mailetcontainer/spring/
    james/server/trunk/container-spring/src/main/java/org/apache/james/mailrepository/spring/
    james/server/trunk/container-spring/src/main/java/org/apache/james/protocols/spring/
    james/server/trunk/container-spring/src/main/java/org/apache/james/resolver/spring/
Modified:
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
    james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/web/JamesServerWebApplicationContext.java
    james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/JamesOsgiBeanFactoryPostProcessor.java
    james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/OsgiConfigurationProvider.java
    james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/OsgiLogProvider.java

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/filesystem/FileSystemBeanFactory.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/resolver/spring/SpringFileSystem.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/filesystem/FileSystemBeanFactory.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/filesystem/FileSystemBeanFactory.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/resolver/spring/SpringFileSystem.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/resolver/spring/SpringFileSystem.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/filesystem/FileSystemBeanFactory.java Mon Dec 20 07:42:56 2010
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.resolver.spring;
+package org.apache.james.container.spring.bean.factory.filesystem;
 
-import org.apache.james.container.spring.context.JamesResourceLoader;
+import org.apache.james.container.spring.resource.JamesResourceLoader;
 import org.apache.james.resolver.api.FileSystem;
 import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
@@ -34,7 +34,7 @@ import java.io.InputStream;
  * resources
  *
  */
-public class SpringFileSystem implements FileSystem, ApplicationContextAware {
+public class FileSystemBeanFactory implements FileSystem, ApplicationContextAware {
    
     private JamesResourceLoader resourceLoader = null;
 

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/MailetLoaderBeanFactory.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/mailetcontainer/spring/BeanFactoryMailetLoader.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/MailetLoaderBeanFactory.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/MailetLoaderBeanFactory.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/mailetcontainer/spring/BeanFactoryMailetLoader.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/mailetcontainer/spring/BeanFactoryMailetLoader.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/MailetLoaderBeanFactory.java Mon Dec 20 07:42:56 2010
@@ -18,7 +18,7 @@
  ****************************************************************/
 
 
-package org.apache.james.mailetcontainer.spring;
+package org.apache.james.container.spring.bean.factory.mailetcontainer;
 import javax.mail.MessagingException;
 
 import org.apache.james.mailetcontainer.api.MailetLoader;
@@ -35,7 +35,7 @@ import org.springframework.beans.factory
  * The Mailets are not registered in the factory after loading them!
  *
  */
-public class BeanFactoryMailetLoader implements MailetLoader, BeanFactoryAware {
+public class MailetLoaderBeanFactory implements MailetLoader, BeanFactoryAware {
     
     private ConfigurableListableBeanFactory beanFactory;
     

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/MatcherLoaderBeanFactory.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/mailetcontainer/spring/BeanFactoryMatcherLoader.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/MatcherLoaderBeanFactory.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/MatcherLoaderBeanFactory.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/mailetcontainer/spring/BeanFactoryMatcherLoader.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/mailetcontainer/spring/BeanFactoryMatcherLoader.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailetcontainer/MatcherLoaderBeanFactory.java Mon Dec 20 07:42:56 2010
@@ -19,7 +19,7 @@
 
 
 
-package org.apache.james.mailetcontainer.spring;
+package org.apache.james.container.spring.bean.factory.mailetcontainer;
 import javax.mail.MessagingException;
 
 import org.apache.james.mailetcontainer.api.MatcherLoader;
@@ -37,7 +37,7 @@ import org.springframework.beans.factory
  * The Matchers are not registered in the factory after loading them!
  *
  */
-public class BeanFactoryMatcherLoader implements MatcherLoader, BeanFactoryAware {
+public class MatcherLoaderBeanFactory implements MatcherLoader, BeanFactoryAware {
 
     
     private ConfigurableListableBeanFactory beanFactory;

Added: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java?rev=1051009&view=auto
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java (added)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java Mon Dec 20 07:42:56 2010
@@ -0,0 +1,278 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+
+
+package org.apache.james.container.spring.bean.factory.mailrepositorystore;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+
+import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.commons.configuration.CombinedConfiguration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.logging.Log;
+import org.apache.james.lifecycle.api.Configurable;
+import org.apache.james.lifecycle.api.LogEnabled;
+import org.apache.james.mailrepository.api.MailRepository;
+import org.apache.james.mailrepository.api.MailRepositoryStore;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.BeanFactoryAware;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+
+/**
+ * Provides a registry of mail repositories. A mail repository is uniquely
+ * identified by its destinationURL, type and model.
+ *
+ */
+public class MailRepositoryStoreBeanFactory implements MailRepositoryStore, LogEnabled, Configurable, BeanFactoryAware {
+
+
+    // map of [destinationURL + type]->Repository
+    private Map<String, MailRepository> repositories;
+
+    // map of [protocol(destinationURL) + type ]->classname of repository;
+    private Map<String,String> classes;
+
+    // map of [protocol(destinationURL) + type ]->default config for repository.
+    private Map<String,HierarchicalConfiguration> defaultConfigs;
+
+    /**
+     * The Avalon configuration used by the instance
+     */
+    private HierarchicalConfiguration          configuration;
+
+    private Log logger;
+
+    private ConfigurableListableBeanFactory beanFactory;
+
+    public void setLog(Log logger) {
+        this.logger = logger;
+    }
+    
+    protected Log getLogger() {
+        return logger;
+    }
+      
+    public void configure(HierarchicalConfiguration configuration) throws ConfigurationException{
+        this.configuration = configuration;
+    }
+
+    
+    @PostConstruct
+    @SuppressWarnings("unchecked")
+    public void init()
+        throws Exception {
+
+        getLogger().info("JamesMailStore init...");
+        
+        repositories = new ReferenceMap();
+        classes = new HashMap<String,String>();
+        defaultConfigs = new HashMap<String, HierarchicalConfiguration>();
+        List<HierarchicalConfiguration> registeredClasses
+            = configuration.configurationsAt("mailrepositories.mailrepository");
+        for ( int i = 0; i < registeredClasses.size(); i++ )
+        {
+            registerRepository(registeredClasses.get(i));
+        }
+
+    }
+
+    /**
+     * <p>Registers a new mail repository type in the mail store's
+     * registry based upon a passed in <code>Configuration</code> object.</p>
+     *
+     * <p>This is presumably synchronized to prevent corruption of the
+     * internal registry.</p>
+     *
+     * @param repConf the Configuration object used to register the
+     *                repository
+     *
+     * @throws ConfigurationException if an error occurs accessing the
+     *                                Configuration object
+     */
+    @SuppressWarnings("unchecked")
+    public synchronized void registerRepository(HierarchicalConfiguration repConf)
+        throws ConfigurationException {
+        String className = repConf.getString("[@class]");
+        boolean infoEnabled = getLogger().isInfoEnabled();
+        List<String> protocols = repConf.getList("protocols.protocol");
+        
+        for ( int i = 0; i < protocols.size(); i++ )
+        {
+            String protocol = protocols.get(i);
+
+            HierarchicalConfiguration defConf = null;
+            
+            if (repConf.getKeys("config").hasNext()) {
+                // Get the default configuration for these protocol/type combinations.
+                defConf = repConf.configurationAt("config");
+            }
+            
+            String key = protocol ;
+            if (infoEnabled) {
+                StringBuffer infoBuffer =
+                    new StringBuffer(128)
+                        .append("Registering Repository instance of class ")
+                        .append(className)
+                        .append(" to handle ")
+                        .append(protocol)
+                        .append(" protocol requests for repositories with key ")
+                        .append(key);
+                getLogger().info(infoBuffer.toString());
+            }
+            if (classes.get(key) != null) {
+                throw new ConfigurationException("The combination of protocol and type comprise a unique key for repositories.  This constraint has been violated.  Please check your repository configuration.");
+            }
+            classes.put(key, className);
+            if (defConf != null) {
+                defaultConfigs.put(key, defConf);
+            }
+        }
+
+    }
+
+    /**
+     * This method accept a Configuration object as hint and return the
+     * corresponding MailRepository.
+     * The Configuration must be in the form of:
+     * <repository destinationURL="[URL of this mail repository]"
+     *             type="[repository type ex. OBJECT or STREAM or MAIL etc.]"
+     *             model="[repository model ex. PERSISTENT or CACHE etc.]">
+     *   [addition configuration]
+     * </repository>
+     *
+     * @param hint the Configuration object used to look up the repository
+     *
+     * @return the selected repository
+     *
+     * @throws ServiceException if any error occurs while parsing the 
+     *                            Configuration or retrieving the 
+     *                            MailRepository
+     */
+    public synchronized MailRepository select(String destination) throws MailRepostoryStoreException {
+ 
+        String protocol = null;
+
+        int idx = destination.indexOf(':');
+        if ( idx == -1 )
+            throw new MailRepostoryStoreException("Destination is malformed. Must be a valid URL: "
+                + destination);
+        protocol = destination.substring(0,idx);
+        
+
+        String repID = destination;
+        MailRepository reply = repositories.get(repID);
+        StringBuffer logBuffer = null;
+        if (reply != null) {
+            if (getLogger().isDebugEnabled()) {
+                logBuffer =
+                    new StringBuffer(128)
+                            .append("obtained repository: ")
+                            .append(repID)
+                            .append(",")
+                            .append(reply.getClass());
+                getLogger().debug(logBuffer.toString());
+            }
+            return reply;
+        } else {
+            String key = protocol;
+            String repClass = (String) classes.get( key );
+             if (getLogger().isDebugEnabled()) {
+                logBuffer =
+                    new StringBuffer(128)
+                            .append("obtained repository: ")
+                            .append(repClass)
+                            .append(" to handle: ")
+                            .append(protocol)
+                            .append(" with key ")
+                            .append(key);
+                getLogger().debug( logBuffer.toString() );
+            }
+
+            // If default values have been set, create a new repository
+            // configuration element using the default values
+            // and the values in the selector.
+            // If no default values, just use the selector.
+            final CombinedConfiguration config =  new CombinedConfiguration();
+            HierarchicalConfiguration defConf = defaultConfigs.get(key);
+            if ( defConf != null) {
+                config.addConfiguration(defConf);
+            }
+            DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
+            builder.addProperty("[@destinationURL]", destination);
+            config.addConfiguration(builder);
+            
+            try {               
+                // Use the classloader which is used for bean instance stuff
+                Class<MailRepository> clazz = (Class<MailRepository>) beanFactory.getBeanClassLoader().loadClass(repClass);
+                reply = (MailRepository) beanFactory.autowire(clazz, ConfigurableListableBeanFactory.AUTOWIRE_NO, false);
+
+                if (reply instanceof LogEnabled) {
+                    ((LogEnabled) reply).setLog(logger);
+                }
+                
+                if (reply instanceof Configurable) {
+                    ((Configurable) reply).configure(config);
+                } 
+                
+                reply = (MailRepository) beanFactory.initializeBean(reply, key);
+                
+
+                repositories.put(repID, reply);
+                if (getLogger().isInfoEnabled()) {
+                    logBuffer =
+                        new StringBuffer(128)
+                            .append("added repository: ")
+                            .append(repID)
+                            .append("->")
+                            .append(repClass);
+                    getLogger().info(logBuffer.toString());
+                }
+                return reply;
+            } catch (Exception e) {
+                if (getLogger().isWarnEnabled()) {
+                    getLogger().warn( "Exception while creating repository:" +
+                                      e.getMessage(), e );
+                }
+                throw new MailRepostoryStoreException("Cannot find or init repository", e);
+            }
+        }
+        
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.mailstore.api.MailStore#getUrls()
+     */
+    public synchronized List<String> getUrls() {
+        return new ArrayList<String>(repositories.keySet());
+    }
+
+    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
+        this.beanFactory = (ConfigurableListableBeanFactory) beanFactory;        
+    }
+}

Propchange: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.17.4.4

Propchange: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/ProtocolHandlerChainBeanFactory.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/protocols/spring/BeanFactoryProtocolHandlerChain.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/ProtocolHandlerChainBeanFactory.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/ProtocolHandlerChainBeanFactory.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/protocols/spring/BeanFactoryProtocolHandlerChain.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/protocols/spring/BeanFactoryProtocolHandlerChain.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocolhandlerchain/ProtocolHandlerChainBeanFactory.java Mon Dec 20 07:42:56 2010
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.protocols.spring;
+package org.apache.james.container.spring.bean.factory.protocolhandlerchain;
 
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -28,8 +28,8 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.logging.Log;
-import org.apache.james.container.spring.provider.api.ConfigurationProvider;
-import org.apache.james.container.spring.provider.api.LogProvider;
+import org.apache.james.container.spring.bean.postprocessor.configurable.provider.ConfigurationProvider;
+import org.apache.james.container.spring.bean.postprocessor.logenabled.provider.LogProvider;
 import org.apache.james.protocols.api.ExtensibleHandler;
 import org.apache.james.protocols.api.HandlersPackage;
 import org.apache.james.protocols.api.ProtocolHandlerChain;
@@ -54,7 +54,7 @@ import org.springframework.beans.factory
  * 
  */
 @SuppressWarnings("unchecked")
-public class BeanFactoryProtocolHandlerChain implements ProtocolHandlerChain, BeanFactoryPostProcessor, BeanPostProcessor {
+public class ProtocolHandlerChainBeanFactory implements ProtocolHandlerChain, BeanFactoryPostProcessor, BeanPostProcessor {
 
     private String coreHandlersPackage;
     private List<String> handlers = new LinkedList<String>();

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/configuration/ConfigurationBeanFactoryPostProcessor.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/config/JamesLoaderBeanFactoryPostProcessor.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/configuration/ConfigurationBeanFactoryPostProcessor.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/configuration/ConfigurationBeanFactoryPostProcessor.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/config/JamesLoaderBeanFactoryPostProcessor.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/config/JamesLoaderBeanFactoryPostProcessor.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/configuration/ConfigurationBeanFactoryPostProcessor.java Mon Dec 20 07:42:56 2010
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.container.spring.config;
+package org.apache.james.container.spring.bean.factorypostprocessor.configuration;
 
 import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.container.spring.provider.api.ConfigurationProvider;
+import org.apache.james.container.spring.bean.postprocessor.configurable.provider.ConfigurationProvider;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.FatalBeanException;
 import org.springframework.beans.factory.config.BeanDefinition;
@@ -42,7 +42,7 @@ import org.springframework.beans.factory
  * If you don't need to register an alias just us an empty value.
  *
  */
-public class JamesLoaderBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
+public class ConfigurationBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
 
     private Map<String, String> beans;
 

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/filesystem/FileSystemBeanFactoryPostProcessor.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/config/FileSystemResolver.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/filesystem/FileSystemBeanFactoryPostProcessor.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/filesystem/FileSystemBeanFactoryPostProcessor.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/config/FileSystemResolver.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/config/FileSystemResolver.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/filesystem/FileSystemBeanFactoryPostProcessor.java Mon Dec 20 07:42:56 2010
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.container.spring.config;
+package org.apache.james.container.spring.bean.factorypostprocessor.filesystem;
 
 import java.io.FileNotFoundException;
 
@@ -34,7 +34,7 @@ import org.springframework.beans.factory
  *  prefixed with {@link #FS_PREFIX}. If such a property is found it will try to resolve the given path via the {@link FileSystem} service
  *  and replace it.
  */
-public class FileSystemResolver implements BeanFactoryPostProcessor{
+public class FileSystemBeanFactoryPostProcessor implements BeanFactoryPostProcessor{
 
     private static final String FS_PREFIX ="filesystem=";
 

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/AbstractLifeCycleBeanPostProcessor.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/AbstractLifeCycleBeanPostProcessor.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/AbstractLifeCycleBeanPostProcessor.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/AbstractLifeCycleBeanPostProcessor.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/AbstractLifeCycleBeanPostProcessor.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/AbstractLifeCycleBeanPostProcessor.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/AbstractLifeCycleBeanPostProcessor.java Mon Dec 20 07:42:56 2010
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.container.spring.lifecycle;
+package org.apache.james.container.spring.bean.postprocessor;
 
 import org.springframework.beans.BeansException;
 import org.springframework.beans.FatalBeanException;

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/ConfigurableBeanPostProcessor.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/CommonsConfigurableBeanPostProcessor.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/ConfigurableBeanPostProcessor.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/ConfigurableBeanPostProcessor.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/CommonsConfigurableBeanPostProcessor.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/CommonsConfigurableBeanPostProcessor.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/ConfigurableBeanPostProcessor.java Mon Dec 20 07:42:56 2010
@@ -16,10 +16,11 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.container.spring.lifecycle;
+package org.apache.james.container.spring.bean.postprocessor.configurable;
 
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.container.spring.provider.api.ConfigurationProvider;
+import org.apache.james.container.spring.bean.postprocessor.AbstractLifeCycleBeanPostProcessor;
+import org.apache.james.container.spring.bean.postprocessor.configurable.provider.ConfigurationProvider;
 import org.apache.james.lifecycle.api.Configurable;
 
 /**
@@ -27,7 +28,7 @@ import org.apache.james.lifecycle.api.Co
  * 
  *
  */
-public class CommonsConfigurableBeanPostProcessor extends AbstractLifeCycleBeanPostProcessor<Configurable> {
+public class ConfigurableBeanPostProcessor extends AbstractLifeCycleBeanPostProcessor<Configurable> {
 
     private ConfigurationProvider provider;
 

Added: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/ConfigurationProvider.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/ConfigurationProvider.java?rev=1051009&view=auto
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/ConfigurationProvider.java (added)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/ConfigurationProvider.java Mon Dec 20 07:42:56 2010
@@ -0,0 +1,47 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.container.spring.bean.postprocessor.configurable.provider;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+
+/**
+ * Load {@link HierarchicalConfiguration} for beans
+ * 
+ *
+ */
+public interface ConfigurationProvider {
+
+    /**
+     * Load the configuration for the bean with the given name
+     * 
+     * @param beanName
+     * @return config
+     * @throws ConfigurationException
+     */
+    public HierarchicalConfiguration getConfiguration(String beanName) throws ConfigurationException;
+    
+    /**
+     * Register a {@link HierarchicalConfiguration} for a bean name
+     * 
+     * @param beanName
+     * @param conf
+     */
+    public void registerConfiguration(String beanName, HierarchicalConfiguration conf);
+}

Added: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/ConfigurationProviderImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/ConfigurationProviderImpl.java?rev=1051009&view=auto
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/ConfigurationProviderImpl.java (added)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/configurable/provider/ConfigurationProviderImpl.java Mon Dec 20 07:42:56 2010
@@ -0,0 +1,134 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.container.spring.bean.postprocessor.configurable.provider;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.configuration.XMLConfiguration;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.context.ResourceLoaderAware;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
+
+/**
+ * Load Configuration and act as 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
+     */
+    protected String getConfigPrefix() {
+        return "file://conf/";
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.springframework.context.ResourceLoaderAware#setResourceLoader(org
+     * .springframework.core.io.ResourceLoader)
+     */
+    public void setResourceLoader(ResourceLoader loader) {
+        this.loader = 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;
+    }
+
+    public void setConfigurationMappings(Map<String,String> resources) {
+        this.resources = resources;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.container.spring.Registry#registerForComponent(java.lang.String, java.lang.Object)
+     */
+    public void registerForComponent(String name, HierarchicalConfiguration conf) {
+        confMap.put(name, conf);        
+    }
+
+
+
+    /*
+     * (non-Javadoc)
+     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
+     */
+    public void afterPropertiesSet() throws Exception {
+        if (resources != null) {
+            Iterator<String> it = resources.keySet().iterator();
+
+            while (it.hasNext()) {
+                String key = it.next();
+                String value = resources.get(key);
+                registerConfiguration(key,getConfiguration(value));
+            }
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.container.spring.lifecycle.ConfigurationProvider#getConfiguration(java.lang.String)
+     */
+    public HierarchicalConfiguration getConfiguration(String name) throws ConfigurationException {
+        HierarchicalConfiguration conf = confMap.get(name);
+        if (conf != null) {
+            return conf;
+        } else {
+            Resource r = loader.getResource(getConfigPrefix()+ name + ".xml");
+            if (r.exists()) {
+                try {
+                    return getConfig(r);
+                } catch (Exception e) {
+                    throw new ConfigurationException("Unable to load configuration for component " + name, e);                    
+                }
+            }
+        }
+        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)
+     */
+    public void registerConfiguration(String beanName, HierarchicalConfiguration conf) {
+        confMap.put(beanName,conf);
+    }
+
+}

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/LogEnabledBeanPostProcessor.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/LogEnabledBeanPostProcessor.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/LogEnabledBeanPostProcessor.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/LogEnabledBeanPostProcessor.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/LogEnabledBeanPostProcessor.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/lifecycle/LogEnabledBeanPostProcessor.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/LogEnabledBeanPostProcessor.java Mon Dec 20 07:42:56 2010
@@ -16,9 +16,10 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.container.spring.lifecycle;
+package org.apache.james.container.spring.bean.postprocessor.logenabled;
 
-import org.apache.james.container.spring.provider.api.LogProvider;
+import org.apache.james.container.spring.bean.postprocessor.AbstractLifeCycleBeanPostProcessor;
+import org.apache.james.container.spring.bean.postprocessor.logenabled.provider.LogProvider;
 import org.apache.james.lifecycle.api.LogEnabled;
 
 /**

Added: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/LogProvider.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/LogProvider.java?rev=1051009&view=auto
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/LogProvider.java (added)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/LogProvider.java Mon Dec 20 07:42:56 2010
@@ -0,0 +1,45 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.container.spring.bean.postprocessor.logenabled.provider;
+
+import org.apache.commons.logging.Log;
+
+/**
+ * Provide {@link Log} instances for Beans
+ * 
+ *
+ */
+public interface LogProvider {
+
+    /**
+     * Return the Log for the bean with the given name
+     * 
+     * @param name
+     * @return log
+     */
+    public Log getLog(String beanName);
+    
+    /**
+     * Register a {@link Log} for a beanName. The registered Log will get returned by {@link #getLog(String)}
+     * 
+     * @param beanName
+     * @param log
+     */
+    public void registerLog(String beanName, Log log);
+}

Added: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/LogProviderImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/LogProviderImpl.java?rev=1051009&view=auto
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/LogProviderImpl.java (added)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/postprocessor/logenabled/provider/LogProviderImpl.java Mon Dec 20 07:42:56 2010
@@ -0,0 +1,100 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.container.spring.bean.postprocessor.logenabled.provider;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.impl.Log4JLogger;
+import org.springframework.beans.factory.InitializingBean;
+
+/**
+ * Provide a Log object for components
+ * 
+ *
+ */
+public class LogProviderImpl implements LogProvider, InitializingBean {
+
+    private final Map<String, Log> logMap = new HashMap<String, Log>();
+    private Map<String, String> logs;
+    private final static String PREFIX = "james.";
+
+    /**
+     * Use {@link Log4JLogger} to create the Log
+     * 
+     * @param loggerName
+     * @return log
+     */
+    protected Log createLog(String loggerName) {
+        return new Log4JLogger(loggerName);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.james.container.spring.Registry#registerForComponent(java.
+     * lang.String, java.lang.Object)
+     */
+    public void registerForComponent(String name, Log log) {
+        logMap.put(name, log);
+    }
+
+    public void setLogMappings(Map<String,String> logs) {
+        this.logs = logs;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
+     */
+    public void afterPropertiesSet() throws Exception {
+        if (logs != null) {
+            Iterator<String> it = logs.keySet().iterator();
+            while(it.hasNext()) {
+                String key = it.next();
+                String value = logs.get(key);
+                registerLog(key, new Log4JLogger(PREFIX + value));
+            }
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.container.spring.lifecycle.LogProvider#getLog(java.lang.String)
+     */
+    public Log getLog(String name) {
+        Log log = logMap.get(name);
+        if (log != null) {
+            return log;
+        } else {
+            return createLog(PREFIX + name);
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.container.spring.lifecycle.LogProvider#registerLog(java.lang.String, org.apache.commons.logging.Log)
+     */
+    public void registerLog(String beanName, Log log) {
+        logMap.put(beanName, log);
+    }
+}

Modified: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java?rev=1051009&r1=1051008&r2=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java Mon Dec 20 07:42:56 2010
@@ -18,6 +18,8 @@
  ****************************************************************/
 package org.apache.james.container.spring.context;
 
+import org.apache.james.container.spring.resource.AbstractJamesResourceLoader;
+import org.apache.james.container.spring.resource.JamesResourceLoader;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 import org.springframework.core.io.Resource;

Modified: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/web/JamesServerWebApplicationContext.java
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/web/JamesServerWebApplicationContext.java?rev=1051009&r1=1051008&r2=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/web/JamesServerWebApplicationContext.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/web/JamesServerWebApplicationContext.java Mon Dec 20 07:42:56 2010
@@ -18,8 +18,8 @@
  ****************************************************************/
 package org.apache.james.container.spring.context.web;
 
-import org.apache.james.container.spring.context.AbstractJamesResourceLoader;
-import org.apache.james.container.spring.context.JamesResourceLoader;
+import org.apache.james.container.spring.resource.AbstractJamesResourceLoader;
+import org.apache.james.container.spring.resource.JamesResourceLoader;
 import org.springframework.core.io.Resource;
 import org.springframework.web.context.support.XmlWebApplicationContext;
 

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/AbstractJamesResourceLoader.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/AbstractJamesResourceLoader.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/AbstractJamesResourceLoader.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/AbstractJamesResourceLoader.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/AbstractJamesResourceLoader.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/AbstractJamesResourceLoader.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/AbstractJamesResourceLoader.java Mon Dec 20 07:42:56 2010
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.container.spring.context;
+package org.apache.james.container.spring.resource;
 
 import java.io.File;
 

Copied: james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/JamesResourceLoader.java (from r1051006, james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/JamesResourceLoader.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/JamesResourceLoader.java?p2=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/JamesResourceLoader.java&p1=james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/JamesResourceLoader.java&r1=1051006&r2=1051009&rev=1051009&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/context/JamesResourceLoader.java (original)
+++ james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/resource/JamesResourceLoader.java Mon Dec 20 07:42:56 2010
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.container.spring.context;
+package org.apache.james.container.spring.resource;
 
 import org.springframework.core.io.ResourceLoader;
 

Modified: james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/JamesOsgiBeanFactoryPostProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/JamesOsgiBeanFactoryPostProcessor.java?rev=1051009&r1=1051008&r2=1051009&view=diff
==============================================================================
--- james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/JamesOsgiBeanFactoryPostProcessor.java (original)
+++ james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/JamesOsgiBeanFactoryPostProcessor.java Mon Dec 20 07:42:56 2010
@@ -21,8 +21,8 @@ package org.apache.james.container.osgi;
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 
-import org.apache.james.container.spring.lifecycle.CommonsConfigurableBeanPostProcessor;
-import org.apache.james.container.spring.lifecycle.LogEnabledBeanPostProcessor;
+import org.apache.james.container.spring.bean.postprocessor.configurable.ConfigurableBeanPostProcessor;
+import org.apache.james.container.spring.bean.postprocessor.logenabled.LogEnabledBeanPostProcessor;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleException;
 import org.osgi.framework.InvalidSyntaxException;
@@ -62,7 +62,7 @@ public class JamesOsgiBeanFactoryPostPro
         
         // Life-cycle for Configurable
         OsgiConfigurationProvider confProvider = new OsgiConfigurationProvider(confDir);
-        CommonsConfigurableBeanPostProcessor confProcessor = new CommonsConfigurableBeanPostProcessor();
+        ConfigurableBeanPostProcessor confProcessor = new ConfigurableBeanPostProcessor();
         confProcessor.setConfigurationProvider(confProvider);
         confProcessor.setBeanFactory(factory);
         factory.addBeanPostProcessor(confProcessor);

Modified: james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/OsgiConfigurationProvider.java
URL: http://svn.apache.org/viewvc/james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/OsgiConfigurationProvider.java?rev=1051009&r1=1051008&r2=1051009&view=diff
==============================================================================
--- james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/OsgiConfigurationProvider.java (original)
+++ james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/OsgiConfigurationProvider.java Mon Dec 20 07:42:56 2010
@@ -23,7 +23,7 @@ import java.io.File;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
-import org.apache.james.container.spring.provider.api.ConfigurationProvider;
+import org.apache.james.container.spring.bean.postprocessor.configurable.provider.ConfigurationProvider;
 
 /**
  * Load configuration files from the specified configuration directory

Modified: james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/OsgiLogProvider.java
URL: http://svn.apache.org/viewvc/james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/OsgiLogProvider.java?rev=1051009&r1=1051008&r2=1051009&view=diff
==============================================================================
--- james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/OsgiLogProvider.java (original)
+++ james/server/trunk/osgi/src/main/java/org/apache/james/container/osgi/OsgiLogProvider.java Mon Dec 20 07:42:56 2010
@@ -20,7 +20,7 @@ package org.apache.james.container.osgi;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.james.container.spring.provider.api.LogProvider;
+import org.apache.james.container.spring.bean.postprocessor.logenabled.provider.LogProvider;
 
 
 /**



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org