Author: norman Date: Sat Sep 17 12:47:07 2011 New Revision: 1171969 URL: http://svn.apache.org/viewvc?rev=1171969&view=rev Log: Refactor smtpserver to for latest protocols refactoring
Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java?rev=1171969&r1=1171968&r2=1171969&view=diff ============================================================================== --- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java (original) +++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPChannelUpstreamHandler.java Sat Sep 17 12:47:07 2011 @@ -19,53 +19,33 @@ package org.apache.james.smtpserver.netty; import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLEngine; import org.apache.james.lifecycle.api.LifecycleUtil; import org.apache.james.protocols.api.ProtocolHandlerChain; -import org.apache.james.protocols.api.ProtocolSession; -import org.apache.james.protocols.impl.AbstractChannelUpstreamHandler; -import org.apache.james.protocols.smtp.SMTPConfiguration; -import org.apache.james.protocols.smtp.SMTPResponse; -import org.apache.james.protocols.smtp.SMTPRetCode; +import org.apache.james.protocols.api.ProtocolSessionFactory; +import org.apache.james.protocols.impl.BasicChannelUpstreamHandler; import org.apache.james.protocols.smtp.SMTPSession; import org.apache.james.smtpserver.SMTPConstants; -import org.jboss.netty.channel.Channel; -import org.jboss.netty.channel.ChannelFutureListener; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelUpstreamHandler; -import org.jboss.netty.channel.ExceptionEvent; -import org.jboss.netty.channel.ChannelHandler.Sharable; -import org.jboss.netty.handler.codec.frame.TooLongFrameException; import org.slf4j.Logger; /** * {@link ChannelUpstreamHandler} which is used by the SMTPServer */ @Sharable -public class SMTPChannelUpstreamHandler extends org.apache.james.protocols.smtp.netty.SMTPChannelUpstreamHandler { +public class SMTPChannelUpstreamHandler extends BasicChannelUpstreamHandler { - public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, SMTPConfiguration conf, Logger logger, SSLContext context, String[] enabledCipherSuites) { - super(chain, conf, logger, context, enabledCipherSuites); - } - public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, SMTPConfiguration conf, Logger logger) { - super(chain, conf, logger); + public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, ProtocolSessionFactory sessionFactory, Logger logger, SSLContext context, String[] enabledCipherSuites) { + super(chain, sessionFactory, logger, context, enabledCipherSuites); } - - - @Override - protected ProtocolSession createSession(ChannelHandlerContext ctx) throws Exception { - if (context != null) { - SSLEngine engine = context.createSSLEngine(); - if (enabledCipherSuites != null && enabledCipherSuites.length > 0) { - engine.setEnabledCipherSuites(enabledCipherSuites); - } - return new SMTPNettySession(conf, logger, ctx.getChannel(), engine); - } else { - return new SMTPNettySession(conf, logger, ctx.getChannel()); - } + + public SMTPChannelUpstreamHandler(ProtocolHandlerChain chain, ProtocolSessionFactory sessionFactory, Logger logger) { + super(chain, sessionFactory, logger); } + /** * Cleanup temporary files * Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java?rev=1171969&r1=1171968&r2=1171969&view=diff ============================================================================== --- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java (original) +++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/netty/SMTPNettySession.java Sat Sep 17 12:47:07 2011 @@ -18,35 +18,26 @@ ****************************************************************/ package org.apache.james.smtpserver.netty; -import javax.net.ssl.SSLEngine; - +import org.apache.james.protocols.api.ProtocolTransport; import org.apache.james.protocols.smtp.SMTPConfiguration; import org.apache.james.protocols.smtp.SMTPSession; import org.apache.james.smtpserver.netty.SMTPServer.SMTPHandlerConfigurationDataImpl; -import org.jboss.netty.channel.Channel; import org.slf4j.Logger; /** * {@link SMTPSession} implementation for use with Netty */ -public class SMTPNettySession extends org.apache.james.protocols.smtp.netty.SMTPNettySession { +public class SMTPNettySession extends org.apache.james.protocols.smtp.SMTPSessionImpl { private SMTPConfiguration theConfigData; - public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger, Channel channel, SSLEngine engine) { - super(theConfigData, logger, channel, engine); - this.theConfigData = theConfigData; - } - - - public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger, Channel channel) { - super(theConfigData, logger, channel); + public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger, ProtocolTransport transport) { + super(theConfigData, logger, transport); this.theConfigData = theConfigData; } - - public boolean verifyIdentity() { + public boolean verifyIdentity() { if (theConfigData instanceof SMTPHandlerConfigurationDataImpl) { return ((SMTPHandlerConfigurationDataImpl) theConfigData).verifyIdentity(); } else { 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=1171969&r1=1171968&r2=1171969&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 Sat Sep 17 12:47:07 2011 @@ -18,6 +18,8 @@ ****************************************************************/ package org.apache.james.smtpserver.netty; +import java.nio.charset.Charset; + import javax.annotation.Resource; import org.apache.commons.configuration.ConfigurationException; @@ -25,9 +27,14 @@ import org.apache.commons.configuration. import org.apache.james.dnsservice.api.DNSService; import org.apache.james.dnsservice.library.netmatcher.NetMatcher; import org.apache.james.protocols.api.HandlersPackage; +import org.apache.james.protocols.api.ProtocolSession; +import org.apache.james.protocols.api.ProtocolSessionFactory; +import org.apache.james.protocols.api.ProtocolTransport; +import org.apache.james.protocols.impl.ResponseEncoder; import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer; import org.apache.james.protocols.smtp.SMTPConfiguration; -import org.apache.james.protocols.smtp.netty.SMTPResponseEncoder; +import org.apache.james.protocols.smtp.SMTPProtocol; +import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.smtpserver.CoreCmdHandlerLoader; import org.apache.james.smtpserver.jmx.JMXHandlersLoader; import org.jboss.netty.channel.ChannelUpstreamHandler; @@ -87,7 +94,7 @@ public class SMTPServer extends Abstract private DNSService dns; private String authorizedAddresses; - private final static SMTPResponseEncoder SMTP_RESPONSE_ENCODER = new SMTPResponseEncoder(); + private final static ResponseEncoder SMTP_RESPONSE_ENCODER = new ResponseEncoder(SMTPResponse.class, Charset.forName("US-ASCII")); private SMTPChannelUpstreamHandler coreHandler; @@ -108,7 +115,21 @@ public class SMTPServer extends Abstract } authorizedNetworks = new NetMatcher(networks, dns); } - coreHandler = new SMTPChannelUpstreamHandler(getProtocolHandlerChain(), theConfigData, getLogger(), getSSLContext(), getEnabledCipherSuites()); + SMTPProtocol transport = new SMTPProtocol(getProtocolHandlerChain(), theConfigData) { + + @Override + public ProtocolSessionFactory getProtocolSessionFactory() { + return new ProtocolSessionFactory() { + + @Override + public ProtocolSession newSession(ProtocolTransport transport) { + return new SMTPNettySession(theConfigData, getLogger(), transport); + } + }; + } + + }; + coreHandler = new SMTPChannelUpstreamHandler(getProtocolHandlerChain(), transport.getProtocolSessionFactory(), getLogger(), getSSLContext(), getEnabledCipherSuites()); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org