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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org