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 no...@apache.org on 2009/11/26 20:57:25 UTC

svn commit: r884682 - in /james/server/trunk: avalon-socket-library/src/main/java/org/apache/james/socket/ avalon-socket-library/src/main/resources/org/apache/james/socket/ common-util/src/main/java/org/apache/james/util/ fetchmail-function/src/main/ja...

Author: norman
Date: Thu Nov 26 19:57:23 2009
New Revision: 884682

URL: http://svn.apache.org/viewvc?rev=884682&view=rev
Log:
Fix config handling for MailetConfigImpl
Fix NPE in FetchMailScheduler
Fix dependencies in MailetLoader and MatcherLoader
More Avalon removal (JAMES-893)

Added:
    james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/AvalonSimpleConnectionManager.java
    james/server/trunk/avalon-socket-library/src/main/resources/org/apache/james/socket/AvalonSimpleConnectionManager.xinfo
      - copied unchanged from r829946, james/server/trunk/avalon-socket-library/src/main/resources/org/apache/james/socket/SimpleConnectionManager.xinfo
Removed:
    james/server/trunk/avalon-socket-library/src/main/resources/org/apache/james/socket/SimpleConnectionManager.xinfo
Modified:
    james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/JamesConnectionBridge.java
    james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/ServerConnection.java
    james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SimpleConnectionManager.java
    james/server/trunk/common-util/src/main/java/org/apache/james/util/ConfigurationAdapter.java
    james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
    james/server/trunk/nntpserver-function/src/test/java/org/apache/james/nntpserver/NNTPServerTest.java
    james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml
    james/server/trunk/phoenix-deployment/src/test/org/apache/james/smtpserver/SMTPServerRemoteDeliveryIntegrationTest.java
    james/server/trunk/pop3server-function/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
    james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java
    james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
    james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/AbstractAvalonJamesLoader.java
    james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/LinearProcessor.java
    james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/MailetConfigImpl.java
    james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java
    james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMailetLoader.xinfo
    james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMatcherLoader.xinfo

Added: james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/AvalonSimpleConnectionManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/AvalonSimpleConnectionManager.java?rev=884682&view=auto
==============================================================================
--- james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/AvalonSimpleConnectionManager.java (added)
+++ james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/AvalonSimpleConnectionManager.java Thu Nov 26 19:57:23 2009
@@ -0,0 +1,135 @@
+/****************************************************************
+ * 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.socket;
+
+import java.net.ServerSocket;
+
+import org.apache.avalon.cornerstone.services.connection.ConnectionHandlerFactory;
+import org.apache.avalon.cornerstone.services.threads.ThreadManager;
+import org.apache.avalon.framework.activity.Initializable;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.impl.AvalonLogger;
+import org.apache.excalibur.thread.ThreadPool;
+import org.apache.james.bridge.GuiceInjected;
+import org.apache.james.util.ConfigurationAdapter;
+import org.guiceyfruit.jsr250.Jsr250Module;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.name.Names;
+
+public class AvalonSimpleConnectionManager  implements LogEnabled, Initializable, GuiceInjected, Serviceable, Configurable, JamesConnectionManager {
+
+    private AvalonLogger logger;
+    private ConfigurationAdapter config;
+    private ThreadManager threadManager;
+    private JamesConnectionManager manager;
+    
+    /**
+     * @see org.apache.avalon.framework.logger.LogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
+     */
+    public void enableLogging(Logger logger) {
+        this.logger = new AvalonLogger(logger);
+    }
+
+
+    /**
+     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+     */
+    public void configure(Configuration config) throws ConfigurationException {
+        try {
+            this.config = new ConfigurationAdapter(config);
+        } catch (org.apache.commons.configuration.ConfigurationException e) {
+            throw new ConfigurationException("Unable to convert configuration", e);
+        }
+    }
+
+
+    public void service(ServiceManager manager) throws ServiceException {
+        threadManager = (ThreadManager) manager.lookup(ThreadManager.ROLE);
+    }
+
+    public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory, ThreadPool threadPool, int maxOpenConnections) throws Exception {
+        manager.connect(name, socket, handlerFactory, threadPool, maxOpenConnections);
+        
+    }
+
+    public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory, int maxOpenConnections) throws Exception {
+        manager.connect(name, socket, handlerFactory, maxOpenConnections);
+        
+    }
+
+    public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory, ThreadPool threadPool) throws Exception {
+        manager.connect(name, socket, handlerFactory, threadPool);
+        
+    }
+
+    public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory) throws Exception {
+        manager.connect(name, socket, handlerFactory);
+        
+    }
+
+    public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory, ThreadPool threadPool, int maxOpenConnections, int maxOpenConnectionsPerIP) throws Exception {
+        manager.connect(name, socket, handlerFactory, threadPool, maxOpenConnections, maxOpenConnectionsPerIP);
+        
+    }
+
+    public void connect(String name, ServerSocket socket, ConnectionHandlerFactory handlerFactory, int maxOpenConnections, int maxOpenConnectionsPerIP) throws Exception {
+        manager.connect(name, socket, handlerFactory, maxOpenConnections, maxOpenConnectionsPerIP);
+    }
+
+    public int getMaximumNumberOfOpenConnections() {
+        return manager.getMaximumNumberOfOpenConnections();
+    }
+
+    public int getMaximumNumberOfOpenConnectionsPerIP() {
+        return manager.getMaximumNumberOfOpenConnectionsPerIP();
+    }
+
+    public void disconnect(String arg0) throws Exception {
+        manager.disconnect(arg0);
+    }
+
+    public void disconnect(String arg0, boolean arg1) throws Exception {
+        manager.disconnect(arg0, arg1);
+    }
+
+
+    public void initialize() throws Exception {
+        manager = Guice.createInjector(new Jsr250Module() , new AbstractModule() {
+
+            @Override
+            protected void configure() {
+                bind(ThreadManager.class).annotatedWith(Names.named("org.apache.avalon.cornerstone.services.threads.ThreadManager")).toInstance(threadManager);
+                bind(org.apache.commons.configuration.HierarchicalConfiguration.class).annotatedWith(Names.named("org.apache.commons.configuration.Configuration")).toInstance(config);
+                bind(Log.class).annotatedWith(Names.named("org.apache.commons.logging.Log")).toInstance(logger);
+            }
+            
+        }).getInstance(SimpleConnectionManager.class);
+    }
+
+}

Modified: james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/JamesConnectionBridge.java
URL: http://svn.apache.org/viewvc/james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/JamesConnectionBridge.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/JamesConnectionBridge.java (original)
+++ james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/JamesConnectionBridge.java Thu Nov 26 19:57:23 2009
@@ -37,7 +37,6 @@
 import org.apache.avalon.cornerstone.services.connection.ConnectionHandler;
 import org.apache.avalon.excalibur.pool.Poolable;
 import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.Logger;
 import org.apache.commons.logging.Log;
 import org.apache.james.api.dnsservice.DNSService;
 import org.apache.james.socket.api.CRLFTerminatedReader;

Modified: james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/ServerConnection.java
URL: http://svn.apache.org/viewvc/james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/ServerConnection.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/ServerConnection.java (original)
+++ james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/ServerConnection.java Thu Nov 26 19:57:23 2009
@@ -29,6 +29,8 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 
+import javax.annotation.PostConstruct;
+
 import org.apache.avalon.cornerstone.services.connection.ConnectionHandler;
 import org.apache.avalon.cornerstone.services.connection.ConnectionHandlerFactory;
 import org.apache.avalon.excalibur.pool.HardResourceLimitingPool;
@@ -36,9 +38,9 @@
 import org.apache.avalon.excalibur.pool.Pool;
 import org.apache.avalon.excalibur.pool.Poolable;
 import org.apache.excalibur.thread.ThreadPool ;
-import org.apache.avalon.framework.activity.Initializable;
 import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.CommonsLogger;
+import org.apache.commons.logging.Log;
 
 
 /**
@@ -47,8 +49,8 @@
  * server socket that the connection manager is managing.
  *
  */
-public class ServerConnection extends AbstractLogEnabled
-    implements Initializable, Runnable {
+public class ServerConnection
+    implements Runnable {
 
     /**
      * This is a hack to deal with the fact that there appears to be
@@ -120,6 +122,8 @@
      */
     private Thread serverConnectionThread;
 
+    private Log logger;
+
     /**
      * The sole constructor for a ServerConnection.
      *
@@ -135,7 +139,7 @@
      */
     public ServerConnection(ServerSocket serverSocket,
                             ConnectionHandlerFactory handlerFactory,
-                            ThreadPool threadPool,
+                            ThreadPool threadPool, Log logger,
                             int timeout,
                             int maxOpenConn, int maxOpenConnPerIP) {
         this.serverSocket = serverSocket;
@@ -144,15 +148,14 @@
         socketTimeout = timeout;
         this.maxOpenConn = maxOpenConn;
         this.maxOpenConnPerIP = maxOpenConnPerIP;
+        this.logger = logger;
     }
 
-    /**
-     * @see org.apache.avalon.framework.activity.Initializable#initialize()
-     */
-    public void initialize() throws Exception {
+    @PostConstruct
+    public void init() throws Exception {
         runnerPool = new HardResourceLimitingPool(theRunnerFactory, 5, maxOpenConn);
         connPerIpMap = new ConnectionPerIpMap();
-        ContainerUtil.enableLogging(runnerPool,getLogger());
+        ContainerUtil.enableLogging(runnerPool,new CommonsLogger(logger,"Pool"));
         ContainerUtil.initialize(runnerPool);
     }
 
@@ -162,8 +165,8 @@
      * everything to finish.
      */
     public void dispose() {
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Disposing server connection..." + this.toString());
+        if (logger.isDebugEnabled()) {
+            logger.debug("Disposing server connection..." + this.toString());
         }
         synchronized( this ) {
             if( null != serverConnectionThread ) {
@@ -200,7 +203,7 @@
             runnerPool = null;
         }
 
-        getLogger().debug("Closed server connection - cleaning up clients - " + this.toString());
+        logger.debug("Closed server connection - cleaning up clients - " + this.toString());
 
         synchronized (clientConnectionRunners) {
             Iterator<ClientConnectionRunner> runnerIterator = clientConnectionRunners.iterator();
@@ -214,7 +217,7 @@
             
         }
 
-        getLogger().debug("Cleaned up clients - " + this.toString());
+        logger.debug("Cleaned up clients - " + this.toString());
 
     }
 
@@ -227,8 +230,8 @@
         synchronized (clientConnectionRunners) {
             ClientConnectionRunner clientConnectionRunner = (ClientConnectionRunner)runnerPool.get();
             clientConnectionRunners.add(clientConnectionRunner);
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Adding one connection for a total of " + clientConnectionRunners.size());
+            if (logger.isDebugEnabled()) {
+                logger.debug("Adding one connection for a total of " + clientConnectionRunners.size());
             }
             return clientConnectionRunner;
         }
@@ -248,14 +251,14 @@
         * this situation will result in a dead-lock on 'clientConnectionRunners'
         */
         if( runnerPool == null ) {
-            getLogger().info("ServerConnection.removeClientConnectionRunner - dispose has been called - so just return : " + clientConnectionRunner );
+            logger.info("ServerConnection.removeClientConnectionRunner - dispose has been called - so just return : " + clientConnectionRunner );
             return;
         }
         
         synchronized (clientConnectionRunners) {
             if (clientConnectionRunners.remove(clientConnectionRunner)) {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Releasing one connection, leaving a total of " + clientConnectionRunners.size());
+                if (logger.isDebugEnabled()) {
+                    logger.debug("Releasing one connection, leaving a total of " + clientConnectionRunners.size());
                 }
                 runnerPool.put(clientConnectionRunner);
             }
@@ -280,21 +283,21 @@
             // Ignored - for the moment
         }
 
-        if ((getLogger().isDebugEnabled()) && (serverConnectionThread != null)) {
+        if ((logger.isDebugEnabled()) && (serverConnectionThread != null)) {
             StringBuilder debugBuffer =
                 new StringBuilder(128)
                     .append(serverConnectionThread.getName())
                     .append(" is listening on ")
                     .append(serverSocket.toString());
-            getLogger().debug(debugBuffer.toString());
+            logger.debug(debugBuffer.toString());
         }
         while( !Thread.interrupted() && null != serverConnectionThread ) {
             try {
                 Socket clientSocket = null;
                 try {
                     while (maxOpenConn > 0 && clientConnectionRunners.size() >= maxOpenConn) {
-                        if (getLogger().isInfoEnabled()) {
-                            getLogger().info("Maximum number of open connections (" +  clientConnectionRunners.size() + ") in use.");
+                        if (logger.isInfoEnabled()) {
+                            logger.info("Maximum number of open connections (" +  clientConnectionRunners.size() + ") in use.");
                         }
                         synchronized (this) { wait(10000); }
                     }
@@ -307,25 +310,25 @@
                     continue;
                 } catch( IOException se ) {
                     if (ioExceptionCount > 0) {
-                        getLogger().error( "Fatal exception while listening on server socket.  Terminating connection.", se );
+                        logger.error( "Fatal exception while listening on server socket.  Terminating connection.", se );
                         break;
                     } else {
                         continue;
                     }
                 } catch( SecurityException se ) {
-                    getLogger().error( "Fatal exception while listening on server socket.  Terminating connection.", se );
+                    logger.error( "Fatal exception while listening on server socket.  Terminating connection.", se );
                     break;
                 }
                 ClientConnectionRunner runner = null;
                 synchronized (clientConnectionRunners) {
                     if ((maxOpenConn > 0) && (clientConnectionRunners.size() >= maxOpenConn)) {
-                        if (getLogger().isWarnEnabled()) {
-                           getLogger().warn("Maximum number of open connections exceeded - refusing connection.  Current number of connections is " + clientConnectionRunners.size());
-                           if (getLogger().isInfoEnabled()) {
+                        if (logger.isWarnEnabled()) {
+                           logger.warn("Maximum number of open connections exceeded - refusing connection.  Current number of connections is " + clientConnectionRunners.size());
+                           if (logger.isInfoEnabled()) {
                                Iterator<ClientConnectionRunner> runnerIterator = clientConnectionRunners.iterator();
-                               getLogger().info("Connections: ");
+                               logger.info("Connections: ");
                                while( runnerIterator.hasNext() ) {
-                                   getLogger().info("    " + runnerIterator.next());
+                                   logger.info("    " + runnerIterator.next());
                                }
                            }
                         }
@@ -336,8 +339,8 @@
                         }
                         continue;
                     } else if ((maxOpenConnPerIP > 0) && (connPerIpMap.getConnectionPerIP(clientSocket.getInetAddress().getHostAddress()) >= maxOpenConnPerIP)) {
-                        if (getLogger().isWarnEnabled()) {
-                            getLogger().warn("Maximum number of open connections per IP exceeded - refusing connection.  Current number of connections for " + clientSocket.getInetAddress().getHostAddress() + " is " + connPerIpMap.getConnectionPerIP(clientSocket.getInetAddress().getHostAddress()));
+                        if (logger.isWarnEnabled()) {
+                            logger.warn("Maximum number of open connections per IP exceeded - refusing connection.  Current number of connections for " + clientSocket.getInetAddress().getHostAddress() + " is " + connPerIpMap.getConnectionPerIP(clientSocket.getInetAddress().getHostAddress()));
                         }
                         try {
                             clientSocket.close();
@@ -354,14 +357,13 @@
                         
                     }
                 }
-                setupLogger( runner );
                 try {
                     connThreadPool.execute( runner );
                 } catch (Exception e) {
                     // This error indicates that the underlying thread pool
                     // is out of threads.  For robustness, we catch this and
                     // cleanup
-                    getLogger().error("Internal error - insufficient threads available to service request.  " +
+                    logger.error("Internal error - insufficient threads available to service request.  " +
                                       Thread.activeCount() + " threads in service request pool.", e);
                     try {
                     connPerIpMap.removeConnectionPerIP(clientSocket.getInetAddress().getHostAddress());
@@ -374,9 +376,9 @@
                     removeClientConnectionRunner(runner);
                 }
             } catch( IOException ioe ) {
-                getLogger().error( "Exception accepting connection", ioe );
+                logger.error( "Exception accepting connection", ioe );
             } catch( Throwable e ) {
-                getLogger().error( "Exception executing client connection runner: " + e.getMessage(), e );
+                logger.error( "Exception executing client connection runner: " + e.getMessage(), e );
             }
         }
         synchronized( this ) {
@@ -391,7 +393,7 @@
      * that occurs upon a client connection.
      *
      */
-    class ClientConnectionRunner extends AbstractLogEnabled
+    class ClientConnectionRunner
         implements Poolable, Runnable  {
 
         /**
@@ -458,21 +460,21 @@
 
                 handler = ServerConnection.this.handlerFactory.createConnectionHandler();
                 String connectionString = null;
-                if( getLogger().isDebugEnabled() ) {
+                if( logger.isDebugEnabled() ) {
                     connectionString = getConnectionString();
                     String message = "Starting " + connectionString;
-                    getLogger().debug( message );
+                    logger.debug( message );
                 }
 
                 handler.handleConnection(clientSocket);
 
-                if( getLogger().isDebugEnabled() ) {
+                if( logger.isDebugEnabled() ) {
                     String message = "Ending " + connectionString;
-                    getLogger().debug( message );
+                    logger.debug( message );
                 }
 
             } catch( Throwable e ) {
-                getLogger().error( "Error handling connection", e );
+                logger.error( "Error handling connection", e );
             } finally {
 
                 // remove this connection from map!
@@ -484,7 +486,7 @@
                         clientSocket.close();
                     }
                 } catch( IOException ioe ) {
-                    getLogger().warn( "Error shutting down connection", ioe );
+                    logger.warn( "Error shutting down connection", ioe );
                 }
 
                 clientSocket = null;

Modified: james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SimpleConnectionManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SimpleConnectionManager.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SimpleConnectionManager.java (original)
+++ james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SimpleConnectionManager.java Thu Nov 26 19:57:23 2009
@@ -22,27 +22,25 @@
 package org.apache.james.socket;
 import java.net.ServerSocket;
 import java.util.HashMap;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.logging.Log;
 import org.apache.excalibur.thread.ThreadPool;
 import org.apache.avalon.cornerstone.services.connection.ConnectionHandlerFactory;
 import org.apache.avalon.cornerstone.services.threads.ThreadManager;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
 /**
  * An implementation of ConnectionManager that supports configurable
  * idle timeouts and a configurable value for the maximum number of
  * client connections to a particular port.
  *
  */
-public class SimpleConnectionManager
-    extends AbstractLogEnabled
-    implements JamesConnectionManager, Serviceable, Configurable, Disposable {
+public class SimpleConnectionManager implements JamesConnectionManager {
     /**
      * The default value for client socket idle timeouts.  The
      * Java default is 0, meaning no timeout.  That's dangerous
@@ -89,18 +87,32 @@
      * Whether the SimpleConnectionManager has been disposed.
      */
     private volatile boolean disposed = false;
+    private Log logger;
+    private HierarchicalConfiguration configuration;
 
+    @Resource(name="org.apache.avalon.cornerstone.services.threads.ThreadManager")
     public void setThreadManager(ThreadManager threadManager) {
         this.threadManager = threadManager;
     }
+    
 
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(Configuration)
-     */
-    public void configure(final Configuration configuration) throws ConfigurationException {
-        timeout = configuration.getChild("idle-timeout").getValueAsInteger(DEFAULT_SOCKET_TIMEOUT);
-        maxOpenConn = configuration.getChild("max-connections").getValueAsInteger(DEFAULT_MAX_CONNECTIONS);
-        maxOpenConnPerIP = configuration.getChild("max-connections-per-ip").getValueAsInteger(DEFAULT_MAX_CONNECTIONS_PER_IP);
+    @Resource(name="org.apache.commons.logging.Log")
+    public void setLog(Log logger) {
+        this.logger = logger;
+    }
+   
+    
+    @Resource(name="org.apache.commons.configuration.Configuration")
+    public void setConfiguration(HierarchicalConfiguration configuration) {
+        this.configuration = configuration;
+    }
+    
+
+    @PostConstruct
+    public void init() throws Exception {
+        timeout = configuration.getInt("idle-timeout", DEFAULT_SOCKET_TIMEOUT);
+        maxOpenConn = configuration.getInt("max-connections", DEFAULT_MAX_CONNECTIONS);
+        maxOpenConnPerIP = configuration.getInt("max-connections-per-ip", DEFAULT_MAX_CONNECTIONS_PER_IP);
         if (timeout < 0) {
             StringBuilder exceptionBuffer =
                 new StringBuilder(128).append("Specified socket timeout value of ").append(timeout).append(
@@ -121,43 +133,38 @@
                     " is not a legal value.");
             throw new ConfigurationException(exceptionBuffer.toString());
         }
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug(
+        if (logger.isDebugEnabled()) {
+            logger.debug(
                 "Connection timeout is " + (timeout == 0 ? "unlimited" : Long.toString(timeout)));
-            getLogger().debug(
+            logger.debug(
                 "The maximum number of simultaneously open connections is "
                     + (maxOpenConn == 0 ? "unlimited" : Integer.toString(maxOpenConn)));
         }
     }
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager)
-     */
-    public void service(ServiceManager componentManager) throws ServiceException {
-        setThreadManager((ThreadManager)componentManager.lookup(ThreadManager.ROLE));
-    }
     
     
     /**
      * Disconnects all the underlying ServerConnections
      */
+    @PreDestroy
     public void dispose() {
         disposed = true;
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Starting SimpleConnectionManager dispose...");
+        if (logger.isDebugEnabled()) {
+            logger.debug("Starting SimpleConnectionManager dispose...");
         }
         final String[] names = (String[])connectionMap.keySet().toArray(new String[0]);
         for (int i = 0; i < names.length; i++) {
             try {
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("Disconnecting ServerConnection " + names[i]);
+                if (logger.isDebugEnabled()) {
+                    logger.debug("Disconnecting ServerConnection " + names[i]);
                 }
                 disconnect(names[i], true);
             } catch (final Exception e) {
-                getLogger().warn("Error disconnecting " + names[i], e);
+                logger.warn("Error disconnecting " + names[i], e);
             }
         }
-        if (getLogger().isDebugEnabled()) {
-            getLogger().debug("Finishing SimpleConnectionManager dispose...");
+        if (logger.isDebugEnabled()) {
+            logger.debug("Finishing SimpleConnectionManager dispose...");
         }
     }
     
@@ -196,9 +203,8 @@
             throw new IllegalArgumentException("The maximum number of client connections (per IP) per server socket cannot be less that zero.");
         }
         ServerConnection runner =
-            new ServerConnection(socket, handlerFactory, threadPool, timeout, maxOpenConnections, maxOpenConnectionsPerIP);
-        setupLogger(runner);
-        ContainerUtil.initialize(runner);
+            new ServerConnection(socket, handlerFactory, threadPool, logger, timeout, maxOpenConnections, maxOpenConnectionsPerIP);
+        runner.init();
         connectionMap.put(name, runner);
         threadPool.execute(runner);
     }

Modified: james/server/trunk/common-util/src/main/java/org/apache/james/util/ConfigurationAdapter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/common-util/src/main/java/org/apache/james/util/ConfigurationAdapter.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/common-util/src/main/java/org/apache/james/util/ConfigurationAdapter.java (original)
+++ james/server/trunk/common-util/src/main/java/org/apache/james/util/ConfigurationAdapter.java Thu Nov 26 19:57:23 2009
@@ -34,9 +34,11 @@
 
 	public ConfigurationAdapter(org.apache.avalon.framework.configuration.Configuration avalonConfig) throws ConfigurationException {
 		String config = ConfigurationUtil.toString(avalonConfig);
+	      // thats needed because of our configuration style and needs to get applied before loading the config
+        setDelimiterParsingDisabled(false);
+        
 		load(new ByteArrayInputStream(config.getBytes()));        
-		// thats needed because of our configuration style
-		setDelimiterParsingDisabled(false);
+
 
 	}
 }

Modified: james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java (original)
+++ james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java Thu Nov 26 19:57:23 2009
@@ -102,6 +102,13 @@
         this.logger = logger;
     }
     
+    
+    @Resource(name="org.apache.commons.configuration.Configuration")
+    public final void setConfiguration(HierarchicalConfiguration config) {
+        this.conf = config;
+    }
+    
+    
     @SuppressWarnings("unchecked")
     @PostConstruct
     public void init() throws Exception

Modified: james/server/trunk/nntpserver-function/src/test/java/org/apache/james/nntpserver/NNTPServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/nntpserver-function/src/test/java/org/apache/james/nntpserver/NNTPServerTest.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/nntpserver-function/src/test/java/org/apache/james/nntpserver/NNTPServerTest.java (original)
+++ james/server/trunk/nntpserver-function/src/test/java/org/apache/james/nntpserver/NNTPServerTest.java Thu Nov 26 19:57:23 2009
@@ -31,7 +31,7 @@
 import org.apache.avalon.cornerstone.services.sockets.SocketManager;
 import org.apache.avalon.cornerstone.services.threads.ThreadManager;
 import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.service.ServiceException;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.logging.impl.SimpleLog;
 import org.apache.commons.net.nntp.NNTPClient;
 import org.apache.james.api.dnsservice.AbstractDNSServer;
@@ -46,7 +46,6 @@
 import org.apache.james.socket.AvalonProtocolServer;
 import org.apache.james.socket.JamesConnectionManager;
 import org.apache.james.socket.SimpleConnectionManager;
-import org.apache.james.test.mock.avalon.MockLogger;
 import org.apache.james.test.mock.avalon.MockSocketManager;
 import org.apache.james.test.mock.avalon.MockThreadManager;
 import org.apache.james.test.mock.james.MockFileSystem;
@@ -116,7 +115,7 @@
 		protoserver.init();
 	}
 
-    protected void setUpServiceManager() throws ServiceException {
+    protected void setUpServiceManager() throws Exception {
 		serviceManager = new FakeLoader();
 		m_usersRepository = new MockUsersRepository();
 		m_mailServer = new MockMailServer(m_usersRepository);
@@ -140,10 +139,7 @@
         
 		m_nntpRepos.setFileSystem(fs);
 
-		connectionManager = new SimpleConnectionManager();
-		ContainerUtil.enableLogging(connectionManager, new MockLogger());
-		
-		serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
+
 
 		serviceManager.put(MailServer.ROLE, m_mailServer);
 		serviceManager.put(UsersRepository.ROLE, m_usersRepository);
@@ -153,6 +149,15 @@
 		
 		threadManager = new MockThreadManager();
 		serviceManager.put(ThreadManager.ROLE, threadManager);
+	      
+		connectionManager = new SimpleConnectionManager();
+	    connectionManager.setThreadManager(threadManager);
+	    connectionManager.setLog(new SimpleLog("CM"));
+	    connectionManager.setConfiguration(new DefaultConfigurationBuilder());
+	    connectionManager.init();
+	                
+	    serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
+	        
 		nntpRepos = new MockNNTPRepository();
 		serviceManager.put(NNTPRepository.ROLE, nntpRepos);
 		

Modified: james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml (original)
+++ james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml Thu Nov 26 19:57:23 2009
@@ -77,6 +77,9 @@
     <provide name="defaultvirtualusertable"
              role="org.apache.james.api.vut.VirtualUserTable" />
     <provide name="virtualusertable-store" role="org.apache.james.api.vut.VirtualUserTableStore"/>
+    <provide name="imapserver" role="org.apache.jsieve.mailet.Poster"/>
+    <provide name="mailstore" role="org.apache.avalon.cornerstone.services.store.Store"/>
+    <provide name="users-store" role="org.apache.james.api.user.UsersStore"/>  
     <proxy disable='true'/>
   </block>
 
@@ -90,6 +93,9 @@
     <provide name="defaultvirtualusertable"
              role="org.apache.james.api.vut.VirtualUserTable" />
     <provide name="virtualusertable-store" role="org.apache.james.api.vut.VirtualUserTableStore"/>
+    <provide name="imapserver" role="org.apache.jsieve.mailet.Poster"/>
+    <provide name="mailstore" role="org.apache.avalon.cornerstone.services.store.Store"/> 
+    <provide name="users-store" role="org.apache.james.api.user.UsersStore"/>
     <proxy disable='true'/>
   </block>
 
@@ -372,7 +378,7 @@
 
   <!-- The Connection Manager block -->
   <block name="connections"
-         class="org.apache.james.socket.SimpleConnectionManager" >
+         class="org.apache.james.socket.AvalonSimpleConnectionManager" >
     <provide name="thread-manager"
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
     <proxy disable='true'/>

Modified: james/server/trunk/phoenix-deployment/src/test/org/apache/james/smtpserver/SMTPServerRemoteDeliveryIntegrationTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/smtpserver/SMTPServerRemoteDeliveryIntegrationTest.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/test/org/apache/james/smtpserver/SMTPServerRemoteDeliveryIntegrationTest.java (original)
+++ james/server/trunk/phoenix-deployment/src/test/org/apache/james/smtpserver/SMTPServerRemoteDeliveryIntegrationTest.java Thu Nov 26 19:57:23 2009
@@ -41,6 +41,7 @@
 import org.apache.avalon.cornerstone.services.store.Store;
 import org.apache.avalon.cornerstone.services.threads.ThreadManager;
 import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.logging.impl.SimpleLog;
 import org.apache.james.Constants;
 import org.apache.james.api.dnsservice.DNSService;
@@ -227,9 +228,7 @@
 
     private FakeLoader setUpServiceManager() throws Exception {
         m_serviceManager = new FakeLoader();
-        connectionManager = new SimpleConnectionManager();
-        ContainerUtil.enableLogging(connectionManager, new MockLogger());
-        m_serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
+
         mailetContext = new FakeMailContext();
         m_serviceManager.put(MailetContext.class.getName(), mailetContext);
         m_mailServer = new MockMailServer(new MockUsersRepository());
@@ -243,6 +242,14 @@
         m_serviceManager.put(SocketManager.ROLE, socketManager);
         threadManager = new MockThreadManager();
         m_serviceManager.put(ThreadManager.ROLE,threadManager );
+        
+        connectionManager = new SimpleConnectionManager();
+        connectionManager.setThreadManager(threadManager);
+        connectionManager.setLog(new SimpleLog("CM"));
+        connectionManager.setConfiguration(new DefaultConfigurationBuilder());
+        connectionManager.init();
+        m_serviceManager.put(SimpleConnectionManager.ROLE, connectionManager);
+        
         m_dnsServer = new AlterableDNSServer();
         m_serviceManager.put(DNSService.ROLE, m_dnsServer);
         m_serviceManager.put("dnsserver", m_dnsServer);

Modified: james/server/trunk/pop3server-function/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/test/java/org/apache/james/pop3server/POP3ServerTest.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/test/java/org/apache/james/pop3server/POP3ServerTest.java (original)
+++ james/server/trunk/pop3server-function/src/test/java/org/apache/james/pop3server/POP3ServerTest.java Thu Nov 26 19:57:23 2009
@@ -19,10 +19,23 @@
 
 package org.apache.james.pop3server;
 
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.mail.MessagingException;
+import javax.mail.util.SharedByteArrayInputStream;
+
+import junit.framework.TestCase;
+
 import org.apache.avalon.cornerstone.services.sockets.SocketManager;
 import org.apache.avalon.cornerstone.services.threads.ThreadManager;
 import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.service.ServiceException;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.logging.impl.SimpleLog;
 import org.apache.commons.net.pop3.POP3Client;
 import org.apache.commons.net.pop3.POP3MessageInfo;
@@ -35,8 +48,7 @@
 import org.apache.james.services.MailRepository;
 import org.apache.james.services.MailServer;
 import org.apache.james.socket.AvalonProtocolServer;
-import org.apache.james.socket.JamesConnectionManager;
-import org.apache.james.test.mock.avalon.MockLogger;
+import org.apache.james.socket.SimpleConnectionManager;
 import org.apache.james.test.mock.avalon.MockSocketManager;
 import org.apache.james.test.mock.avalon.MockThreadManager;
 import org.apache.james.test.mock.james.InMemorySpoolRepository;
@@ -46,22 +58,8 @@
 import org.apache.james.userrepository.MockUsersRepository;
 import org.apache.james.util.ConfigurationAdapter;
 import org.apache.james.util.POP3BeforeSMTPHelper;
-import org.apache.james.socket.SimpleConnectionManager;
 import org.apache.mailet.MailAddress;
 
-import javax.mail.MessagingException;
-import javax.mail.util.SharedByteArrayInputStream;
-
-import java.io.InputStream;
-import java.io.Reader;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import junit.framework.TestCase;
-
 /**
  * Tests the org.apache.james.smtpserver.SMTPServer unit
  */
@@ -128,11 +126,9 @@
         protoserver.init();
     }
 
-    protected void setUpServiceManager() throws ServiceException {
+    protected void setUpServiceManager() throws Exception {
         serviceManager = new FakeLoader();
-        connectionManager = new SimpleConnectionManager();
-        ContainerUtil.enableLogging(connectionManager, new MockLogger());
-        serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
+
         m_mailServer = new MockMailServer(m_usersRepository);
         serviceManager.put(MailServer.ROLE, m_mailServer);
         serviceManager.put(UsersRepository.ROLE,
@@ -141,6 +137,14 @@
         serviceManager.put(SocketManager.ROLE, socketManager);
         threadManager = new MockThreadManager();
         serviceManager.put(ThreadManager.ROLE, threadManager);
+        
+        connectionManager = new SimpleConnectionManager();
+        connectionManager.setThreadManager(threadManager);
+        connectionManager.setLog(new SimpleLog("CM"));
+        connectionManager.setConfiguration(new DefaultConfigurationBuilder());
+        connectionManager.init();
+        serviceManager.put(SimpleConnectionManager.ROLE, connectionManager);
+
         dnsservice = setUpDNSServer();
         serviceManager.put(DNSService.ROLE, setUpDNSServer());
         fSystem = new MockFileSystem();

Modified: james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java (original)
+++ james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java Thu Nov 26 19:57:23 2009
@@ -21,10 +21,25 @@
 
 package org.apache.james.remotemanager;
 
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.mail.MessagingException;
+
+import junit.framework.TestCase;
+
 import org.apache.avalon.cornerstone.services.sockets.SocketManager;
 import org.apache.avalon.cornerstone.services.threads.ThreadManager;
 import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.avalon.framework.service.ServiceException;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.logging.impl.SimpleLog;
 import org.apache.commons.net.telnet.TelnetClient;
 import org.apache.james.api.dnsservice.AbstractDNSServer;
@@ -46,39 +61,18 @@
 import org.apache.james.management.SpoolManagementService;
 import org.apache.james.services.MailServer;
 import org.apache.james.socket.AvalonProtocolServer;
-import org.apache.james.socket.JamesConnectionManager;
 import org.apache.james.socket.SimpleConnectionManager;
-import org.apache.james.test.mock.avalon.MockLogger;
 import org.apache.james.test.mock.avalon.MockSocketManager;
 import org.apache.james.test.mock.avalon.MockStore;
 import org.apache.james.test.mock.avalon.MockThreadManager;
 import org.apache.james.test.mock.james.MockFileSystem;
 import org.apache.james.test.mock.james.MockMailServer;
 import org.apache.james.test.mock.james.MockUsersStore;
-import org.apache.james.test.mock.james.MockVirtualUserTableManagementImpl;
-import org.apache.james.test.mock.james.MockVirtualUserTableStore;
 import org.apache.james.test.util.Util;
 import org.apache.james.userrepository.MockUsersRepository;
 import org.apache.james.util.ConfigurationAdapter;
 import org.apache.james.util.InternetPrintWriter;
 
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.mail.MessagingException;
-
-import junit.framework.TestCase;
-
 /**
  * Tests the org.apache.james.remotemanager.RemoteManager
  * TODO: impl missing command tests for: 
@@ -209,11 +203,8 @@
         readAnswer(3);
     }
 
-    protected void setUpServiceManager() throws ServiceException {
+    protected void setUpServiceManager() throws Exception {
         serviceManager = new FakeLoader();
-        connectionManager = new SimpleConnectionManager();
-        ContainerUtil.enableLogging(connectionManager, new MockLogger());
-        serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
         
         m_mockUsersRepository = new MockUsersRepository();
        
@@ -232,6 +223,14 @@
         threadManager = new MockThreadManager();
         serviceManager.put(ThreadManager.ROLE, threadManager);
         
+        
+        connectionManager = new SimpleConnectionManager();
+        connectionManager.setThreadManager(threadManager);
+        connectionManager.setLog(new SimpleLog("CM"));
+        connectionManager.setConfiguration(new DefaultConfigurationBuilder());
+        connectionManager.init();
+        serviceManager.put(SimpleConnectionManager.ROLE, connectionManager);
+        
         dnsservice = setUpDNSServer();
         serviceManager.put(DNSService.ROLE, dnsservice);
         vutManagement = new MockVirtualUserTableManagementService();

Modified: james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java (original)
+++ james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java Thu Nov 26 19:57:23 2009
@@ -43,6 +43,7 @@
 import org.apache.avalon.cornerstone.services.store.Store;
 import org.apache.avalon.cornerstone.services.threads.ThreadManager;
 import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.logging.impl.SimpleLog;
 import org.apache.commons.net.smtp.SMTPClient;
 import org.apache.commons.net.smtp.SMTPReply;
@@ -54,11 +55,9 @@
 import org.apache.james.services.MailServer;
 import org.apache.james.smtpserver.integration.SMTPServerDNSServiceAdapter;
 import org.apache.james.socket.AvalonProtocolServer;
-import org.apache.james.socket.JamesConnectionManager;
 import org.apache.james.socket.SimpleConnectionManager;
 import org.apache.james.test.mock.DummyDataSourceSelector;
 import org.apache.james.test.mock.DummyVirtualUserTableStore;
-import org.apache.james.test.mock.avalon.MockLogger;
 import org.apache.james.test.mock.avalon.MockSocketManager;
 import org.apache.james.test.mock.avalon.MockStore;
 import org.apache.james.test.mock.avalon.MockThreadManager;
@@ -158,7 +157,7 @@
     protected final int m_smtpListenerPort;
     protected MockMailServer m_mailServer;
     protected SMTPTestConfiguration m_testConfiguration;
-    protected JamesConnectionManager connectionManager;
+    protected SimpleConnectionManager connectionManager;
     protected SMTPServerProtocolHandlerFactory m_smtpServer;
     protected MockUsersRepository m_usersRepository = new MockUsersRepository();
     protected FakeLoader m_serviceManager;
@@ -239,10 +238,6 @@
 
     protected FakeLoader setUpServiceManager() throws Exception {
         m_serviceManager = new FakeLoader();
-        connectionManager = new SimpleConnectionManager();
-        ContainerUtil.enableLogging(connectionManager, new MockLogger());
-        
-        m_serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
         mailetContext = new FakeMailContext();
         m_serviceManager.put(MailetContext.class.getName(),mailetContext);
         m_mailServer = new MockMailServer(new MockUsersRepository());    
@@ -254,6 +249,15 @@
         
         threadManager = new MockThreadManager();
         m_serviceManager.put(ThreadManager.ROLE, threadManager);
+        
+        
+        connectionManager = new SimpleConnectionManager();
+        connectionManager.setThreadManager(threadManager);
+        connectionManager.setLog(new SimpleLog("CM"));
+        connectionManager.setConfiguration(new DefaultConfigurationBuilder());
+        connectionManager.init();
+        m_serviceManager.put(SimpleConnectionManager.ROLE, connectionManager);
+
         m_dnsServer = new AlterableDNSServer();
         m_serviceManager.put(DNSService.ROLE, m_dnsServer);
         

Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/AbstractAvalonJamesLoader.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/AbstractAvalonJamesLoader.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/AbstractAvalonJamesLoader.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/AbstractAvalonJamesLoader.java Thu Nov 26 19:57:23 2009
@@ -21,6 +21,7 @@
 package org.apache.james.transport;
 
 import org.apache.avalon.cornerstone.services.datasources.DataSourceSelector;
+import org.apache.avalon.cornerstone.services.store.Store;
 import org.apache.avalon.framework.activity.Initializable;
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
@@ -35,6 +36,8 @@
 import org.apache.james.api.dnsservice.DNSService;
 import org.apache.james.api.kernel.LoaderService;
 import org.apache.james.api.user.UsersRepository;
+import org.apache.james.api.user.UsersStore;
+import org.apache.james.api.vut.VirtualUserTable;
 import org.apache.james.api.vut.VirtualUserTableStore;
 import org.apache.james.bridge.GuiceInjected;
 import org.apache.james.services.MailServer;
@@ -62,6 +65,9 @@
     private UsersRepository userRepos;
     private DataSourceSelector dselector;
     private VirtualUserTableStore vutStore;
+    private Store store;
+    private VirtualUserTable vut;
+    private UsersStore usersStore;
 
     /**
      * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
@@ -83,7 +89,10 @@
         userRepos = (UsersRepository) manager.lookup(UsersRepository.ROLE);
         dselector = (DataSourceSelector) manager.lookup(DataSourceSelector.ROLE);
         vutStore = (VirtualUserTableStore) manager.lookup(VirtualUserTableStore.ROLE);
-        
+        store = (Store) manager.lookup(Store.ROLE);
+        vut = (VirtualUserTable) manager.lookup(VirtualUserTable.ROLE);
+        usersStore = (UsersStore) manager.lookup(UsersStore.ROLE);
+          
     }
 
 
@@ -107,7 +116,10 @@
             bind(MailServer.class).annotatedWith(Names.named("org.apache.james.services.MailServer")).toInstance(mailserver);
             bind(UsersRepository.class).annotatedWith(Names.named("org.apache.james.api.user.UsersRepository")).toInstance(userRepos);
             bind(DataSourceSelector.class).annotatedWith(Names.named("org.apache.avalon.cornerstone.services.datasources.DataSourceSelector")).toInstance(dselector);
+            bind(VirtualUserTable.class).annotatedWith(Names.named("org.apache.james.api.vut.VirtualUserTable")).toInstance(vut);
             bind(VirtualUserTableStore.class).annotatedWith(Names.named("org.apache.james.api.vut.VirtualUserTableStore")).toInstance(vutStore);
+            bind(Store.class).annotatedWith(Names.named("org.apache.avalon.cornerstone.services.store.Store")).toInstance(store);
+            bind(UsersStore.class).annotatedWith(Names.named("org.apache.james.api.user.UsersStore")).toInstance(usersStore);
             bind(LoaderService.class).annotatedWith(Names.named("org.apache.james.LoaderService")).toProvider(new Provider<LoaderService>() {
 
                 public LoaderService get() {

Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/LinearProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/LinearProcessor.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/LinearProcessor.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/LinearProcessor.java Thu Nov 26 19:57:23 2009
@@ -582,7 +582,7 @@
     @SuppressWarnings("unchecked")
     protected void configure(HierarchicalConfiguration processorConf) throws ConfigurationException {
         openProcessorList();
-        
+                
         final List<HierarchicalConfiguration> mailetConfs
             = processorConf.configurationsAt( "mailet" );
         // Loop through the mailet configuration, load
@@ -591,6 +591,8 @@
         for ( int j = 0; j < mailetConfs.size(); j++ )
         {
             HierarchicalConfiguration c = mailetConfs.get(j);
+            
+            // We need to set this because of correctly parsing comma 
             String mailetClassName = c.getString("[@class]");
             String matcherName = c.getString("[@match]",null);
             String invertedMatcherName = c.getString("[@notmatch]",null);

Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/MailetConfigImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/MailetConfigImpl.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/MailetConfigImpl.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/MailetConfigImpl.java Thu Nov 26 19:57:23 2009
@@ -25,7 +25,9 @@
 import org.apache.mailet.MailetConfig;
 import org.apache.mailet.MailetContext;
 
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
 
 /**
  * Implements the configuration object for a Mailet.
@@ -77,7 +79,15 @@
      */
     @SuppressWarnings("unchecked")
     public Iterator<String> getInitParameterNames() {
-        return configuration.getKeys();
+        Iterator<String> it = configuration.getKeys();
+        List<String> params = new ArrayList<String>();
+        while (it.hasNext()) {
+            String param = it.next();
+            if ((param.startsWith("[@") && param.endsWith("]")) == false) {
+                params.add(param);
+            }
+        }
+        return params.iterator();
     }
 
     /**

Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java Thu Nov 26 19:57:23 2009
@@ -76,7 +76,7 @@
      * Sets the virtual table store.
      * @param vutStore the vutStore to set, possibly null
      */
-    @Resource(name="org.apache.james.api.vut.VirtualUserTable")
+    @Resource(name="org.apache.james.api.vut.VirtualUserTableStore")
     public final void setVutStore(VirtualUserTableStore vutStore) {
         this.vutStore = vutStore;
     }

Modified: james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMailetLoader.xinfo
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMailetLoader.xinfo?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMailetLoader.xinfo (original)
+++ james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMailetLoader.xinfo Thu Nov 26 19:57:23 2009
@@ -60,6 +60,9 @@
     <dependency>
       <service name="org.apache.james.services.MailServer" version="1.0"/>
     </dependency>
+    <dependency>
+      <service name="org.apache.jsieve.mailet.Poster" version="1.0"/>
+    </dependency>
   </dependencies>  
 
 </blockinfo>

Modified: james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMatcherLoader.xinfo
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMatcherLoader.xinfo?rev=884682&r1=884681&r2=884682&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMatcherLoader.xinfo (original)
+++ james/server/trunk/spoolmanager-function/src/main/resources/org/apache/james/transport/AvalonJamesMatcherLoader.xinfo Thu Nov 26 19:57:23 2009
@@ -60,6 +60,9 @@
     <dependency>
       <service name="org.apache.james.services.MailServer" version="1.0"/>
     </dependency>
+    <dependency>
+      <service name="org.apache.jsieve.mailet.Poster" version="1.0"/>
+    </dependency>
   </dependencies>  
 
 </blockinfo>



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