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 2011/06/22 20:49:59 UTC

svn commit: r1138579 [2/2] - in /james/server/trunk: ./ container-spring/src/main/config/james/context/ container-spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ container-spring/src/main/java/org/apache/james/container/s...

Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/CommandHandlerResultJMXMonitor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/CommandHandlerResultJMXMonitor.java?rev=1138579&r1=1138578&r2=1138579&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/CommandHandlerResultJMXMonitor.java (original)
+++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/CommandHandlerResultJMXMonitor.java Wed Jun 22 18:49:58 2011
@@ -20,9 +20,6 @@ package org.apache.james.smtpserver.jmx;
 
 import java.util.Collection;
 
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.protocols.api.CommandHandler;
 import org.apache.james.protocols.lib.jmx.AbstractCommandHandlerResultJMXMonitor;
 import org.apache.james.protocols.lib.jmx.AbstractCommandHandlerStats;
@@ -32,9 +29,7 @@ import org.apache.james.protocols.smtp.S
 /**
  * Expose JMX statistics for {@link CommandHandler}
  */
-public class CommandHandlerResultJMXMonitor extends AbstractCommandHandlerResultJMXMonitor<SMTPResponse, SMTPSession> implements Configurable {
-
-    private String jmxPath;
+public class CommandHandlerResultJMXMonitor extends AbstractCommandHandlerResultJMXMonitor<SMTPResponse, SMTPSession> {
 
     /*
      * (non-Javadoc)
@@ -46,18 +41,7 @@ public class CommandHandlerResultJMXMoni
         Collection<String> col = handler.getImplCommands();
         String cName = handler.getClass().getName();
 
-        return new SMTPCommandHandlerStats(jmxPath, cName, col.toArray(new String[col.size()]));
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * org.apache.james.lifecycle.Configurable#configure(org.apache.commons.
-     * configuration.HierarchicalConfiguration)
-     */
-    public void configure(HierarchicalConfiguration config) throws ConfigurationException {
-        this.jmxPath = config.getString("jmxName", getDefaultJMXName());
+        return new SMTPCommandHandlerStats(getJMXName(), cName, col.toArray(new String[col.size()]));
     }
 
     protected String getDefaultJMXName() {

Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/HookResultJMXMonitor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/HookResultJMXMonitor.java?rev=1138579&r1=1138578&r2=1138579&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/HookResultJMXMonitor.java (original)
+++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/jmx/HookResultJMXMonitor.java Wed Jun 22 18:49:58 2011
@@ -24,12 +24,10 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import javax.annotation.PreDestroy;
-
+import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.protocols.api.ExtensibleHandler;
+import org.apache.james.protocols.api.LifecycleAwareProtocolHandler;
 import org.apache.james.protocols.api.WiringException;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.Hook;
@@ -40,7 +38,7 @@ import org.apache.james.protocols.smtp.h
  * {@link HookResultHook} implementation which will register a
  * {@link HookStatsMBean} under JMX for every Hook it processed
  */
-public class HookResultJMXMonitor implements HookResultHook, ExtensibleHandler, Configurable {
+public class HookResultJMXMonitor implements HookResultHook, ExtensibleHandler, LifecycleAwareProtocolHandler {
 
     private Map<String, HookStats> hookStats = new HashMap<String, HookStats>();
     private String jmxPath;
@@ -63,17 +61,6 @@ public class HookResultJMXMonitor implem
         return result;
     }
 
-    @PreDestroy
-    public void dispose() {
-        synchronized (hookStats) {
-            Iterator<HookStats> stats = hookStats.values().iterator();
-            while (stats.hasNext()) {
-                stats.next().dispose();
-            }
-            hookStats.clear();
-        }
-    }
-
     /*
      * (non-Javadoc)
      * 
@@ -112,18 +99,23 @@ public class HookResultJMXMonitor implem
 
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * org.apache.james.lifecycle.Configurable#configure(org.apache.commons.
-     * configuration.HierarchicalConfiguration)
-     */
-    public void configure(HierarchicalConfiguration config) throws ConfigurationException {
-        this.jmxPath = config.getString("jmxName", getDefaultJMXName());
-    }
-
     protected String getDefaultJMXName() {
         return "smtpserver";
     }
+
+    @Override
+    public void init(Configuration config) throws ConfigurationException {
+        this.jmxPath = config.getString("jmxName", getDefaultJMXName());        
+    }
+
+    @Override
+    public void destroy() {
+        synchronized (hookStats) {
+            Iterator<HookStats> stats = hookStats.values().iterator();
+            while (stats.hasNext()) {
+                stats.next().dispose();
+            }
+            hookStats.clear();
+        }        
+    }
 }

Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java?rev=1138579&r1=1138578&r2=1138579&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java (original)
+++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java Wed Jun 22 18:49:58 2011
@@ -23,9 +23,12 @@ import javax.annotation.Resource;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.james.dnsservice.library.netmatcher.NetMatcher;
-import org.apache.james.protocols.api.ProtocolHandlerChain;
+import org.apache.james.protocols.api.ProtocolHandlerLoader;
+import org.apache.james.protocols.lib.ProtocolHandlerChainImpl;
 import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
 import org.apache.james.protocols.smtp.SMTPConfiguration;
+import org.apache.james.smtpserver.CoreCmdHandlerLoader;
+import org.apache.james.smtpserver.jmx.JMXHandlersLoader;
 import org.jboss.netty.channel.ChannelUpstreamHandler;
 import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
 
@@ -39,7 +42,7 @@ public class SMTPServer extends Abstract
      * Command handlers , Message handlers and connection handlers Constructed
      * during initialisation to allow dependency injection.
      */
-    private ProtocolHandlerChain handlerChain;
+    private ProtocolHandlerChainImpl handlerChain;
 
     /**
      * Whether authentication is required to use this SMTP server.
@@ -86,9 +89,13 @@ public class SMTPServer extends Abstract
 
     private boolean verifyIdentity;
 
-    @Resource(name = "smtphandlerchain")
-    public void setProtocolHandlerChain(ProtocolHandlerChain handlerChain) {
-        this.handlerChain = handlerChain;
+    private ProtocolHandlerLoader loader;
+
+    private HierarchicalConfiguration configuration;
+
+    @Resource(name = "protocolhandlerloader")
+    public void setProtocolHandlerLoader(ProtocolHandlerLoader loader) {
+        this.loader = loader;
     }
 
     public void doConfigure(final HierarchicalConfiguration configuration) throws ConfigurationException {
@@ -160,6 +167,20 @@ public class SMTPServer extends Abstract
             verifyIdentity = configuration.getBoolean("verifyIdentity", true);
 
         }
+        this.configuration = configuration;
+    }
+
+    @Override
+    protected void postDestroy() {
+        super.postDestroy();
+        handlerChain.destroy();
+    }
+
+    @Override
+    protected void preInit() throws Exception {
+        super.preInit();
+        handlerChain = new ProtocolHandlerChainImpl(loader, configuration.configurationAt("handlerchain"), jmxName, CoreCmdHandlerLoader.class.getName(), JMXHandlersLoader.class.getName());
+        handlerChain.init();
     }
 
     /**

Modified: james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java?rev=1138579&r1=1138578&r2=1138579&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java (original)
+++ james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java Wed Jun 22 18:49:58 2011
@@ -43,8 +43,7 @@ import org.apache.commons.net.smtp.SMTPC
 import org.apache.commons.net.smtp.SMTPReply;
 import org.apache.james.protocols.impl.AbstractChannelPipelineFactory;
 import org.apache.james.protocols.lib.PortUtil;
-import org.apache.james.protocols.lib.mock.MockJSR250Loader;
-import org.apache.james.protocols.lib.mock.MockProtocolHandlerChain;
+import org.apache.james.protocols.lib.mock.MockProtocolHandlerLoader;
 import org.apache.james.queue.api.mock.MockMailQueue;
 import org.apache.james.queue.api.mock.MockMailQueueFactory;
 import org.apache.james.rrt.api.RecipientRewriteTable;
@@ -61,7 +60,7 @@ import org.apache.mailet.MailAddress;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public abstract class SMTPServerTest extends TestCase {
+public class SMTPServerTest extends TestCase {
 
     final class AlterableDNSServer implements DNSService {
 
@@ -145,12 +144,11 @@ public abstract class SMTPServerTest ext
     // private SMTPServer m_smtpServer;
     protected SMTPTestConfiguration m_testConfiguration;
     protected MockUsersRepository m_usersRepository = new MockUsersRepository();
-    protected MockJSR250Loader m_serviceManager;
     protected AlterableDNSServer m_dnsServer;
     protected MockMailRepositoryStore store;
     protected MockFileSystem fileSystem;
     protected SMTPServerDNSServiceAdapter dnsAdapter;
-    protected MockProtocolHandlerChain chain;
+    protected MockProtocolHandlerLoader chain;
     protected MockMailQueueFactory queueFactory;
     protected MockMailQueue queue;
 
@@ -161,14 +159,10 @@ public abstract class SMTPServerTest ext
 
     protected void setUp() throws Exception {
         setUpFakeLoader();
-        Logger log = LoggerFactory.getLogger("Mock");
         // slf4j can't set programmatically any log level. It's just a facade
         // log.setLevel(SimpleLog.LOG_LEVEL_ALL);
         m_testConfiguration = new SMTPTestConfiguration(m_smtpListenerPort);
 
-        chain = new MockProtocolHandlerChain();
-        chain.setLoader(m_serviceManager);
-        chain.setLog(log);
         setUpSMTPServer();
     }
 
@@ -192,7 +186,7 @@ public abstract class SMTPServerTest ext
         m_smtpServer.setDNSService(m_dnsServer);
         m_smtpServer.setFileSystem(fileSystem);
 
-        m_smtpServer.setProtocolHandlerChain(chain);
+        m_smtpServer.setProtocolHandlerLoader(chain);
 
         m_smtpServer.setLog(log);
     }
@@ -218,6 +212,7 @@ public abstract class SMTPServerTest ext
         smtpProtocol.disconnect();
     }
 
+    /*
     public void testConnectionLimit() throws Exception {
         m_testConfiguration.setConnectionLimit(2);
         finishSetUp(m_testConfiguration);
@@ -246,11 +241,10 @@ public abstract class SMTPServerTest ext
         Thread.sleep(3000);
 
     }
+    */
 
     protected void finishSetUp(SMTPTestConfiguration testConfiguration) throws Exception {
         testConfiguration.init();
-        chain.configure(testConfiguration);
-        chain.init();
 
         initSMTPServer(testConfiguration);
 
@@ -288,19 +282,20 @@ public abstract class SMTPServerTest ext
     }
 
     protected void setUpFakeLoader() throws Exception {
-        m_serviceManager = new MockJSR250Loader();
-        m_serviceManager.put("usersrepository", m_usersRepository);
+        chain = new MockProtocolHandlerLoader();
+
+        chain.put("usersrepository", m_usersRepository);
 
         m_dnsServer = new AlterableDNSServer();
-        m_serviceManager.put("dnsservice", m_dnsServer);
+        chain.put("dnsservice", m_dnsServer);
 
         store = new MockMailRepositoryStore();
-        m_serviceManager.put("mailStore", store);
+        chain.put("mailStore", store);
         fileSystem = new MockFileSystem();
 
-        m_serviceManager.put("filesystem", fileSystem);
-        m_serviceManager.put("org.apache.james.smtpserver.protocol.DNSService", dnsAdapter);
-        m_serviceManager.put("recipientrewritetable", new RecipientRewriteTable() {
+        chain.put("filesystem", fileSystem);
+        chain.put("org.apache.james.smtpserver.protocol.DNSService", dnsAdapter);
+        chain.put("recipientrewritetable", new RecipientRewriteTable() {
 
             public void addRegexMapping(String user, String domain, String regex) throws RecipientRewriteTableException {
                 throw new UnsupportedOperationException("Not implemented");
@@ -364,11 +359,11 @@ public abstract class SMTPServerTest ext
             }
         });
 
-        m_serviceManager.put("org.apache.james.smtpserver.protocol.DNSService", dnsAdapter);
+        chain.put("org.apache.james.smtpserver.protocol.DNSService", dnsAdapter);
         queueFactory = new MockMailQueueFactory();
         queue = (MockMailQueue) queueFactory.getQueue(MockMailQueueFactory.SPOOL);
-        m_serviceManager.put("mailqueuefactory", queueFactory);
-        m_serviceManager.put("domainlist", new SimpleDomainList() {
+        chain.put("mailqueuefactory", queueFactory);
+        chain.put("domainlist", new SimpleDomainList() {
             public boolean containsDomain(String serverName) {
                 return "localhost".equals(serverName);
             }



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