Author: bago Date: Fri Sep 16 14:31:17 2011 New Revision: 1171588 URL: http://svn.apache.org/viewvc?rev=1171588&view=rev Log: Remote SMTPResponseEncoder by moving RetCodeResponse encoding logic into the RetCodeResponse implementation (SMTPResponse) so that we can directly use AbstractResponseEncoder (that is not anymore abstract). Refactored fields to use generic interfaces when available.
Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractResponseEncoder.java james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPNettySession.java james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPResponseEncoder.java james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractResponseEncoder.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractResponseEncoder.java?rev=1171588&r1=1171587&r2=1171588&view=diff ============================================================================== --- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractResponseEncoder.java (original) +++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractResponseEncoder.java Fri Sep 16 14:31:17 2011 @@ -18,12 +18,11 @@ ****************************************************************/ package org.apache.james.protocols.impl; -import static org.jboss.netty.buffer.ChannelBuffers.*; +import static org.jboss.netty.buffer.ChannelBuffers.copiedBuffer; import java.nio.charset.Charset; import java.util.List; - import org.apache.james.protocols.api.Response; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; @@ -35,7 +34,7 @@ import org.jboss.netty.handler.codec.one * * @param <R> */ -public abstract class AbstractResponseEncoder<R extends Response> extends OneToOneEncoder{ +public class AbstractResponseEncoder extends OneToOneEncoder{ private Class<? extends Response> classType; private Charset charset; @@ -45,13 +44,12 @@ public abstract class AbstractResponseEn this.charset = charset; } - @SuppressWarnings("unchecked") @Override protected Object encode(ChannelHandlerContext arg0, Channel arg1, Object obj) throws Exception { if (classType.isInstance(obj)) { StringBuilder builder = new StringBuilder(); - R response = (R) obj; - List<String> lines = getResponse(response); + Response response = (Response) obj; + List<CharSequence> lines = response.getLines(); for (int i = 0; i < lines.size(); i++) { builder.append(lines.get(i)); if (i < lines.size()) { @@ -62,9 +60,4 @@ public abstract class AbstractResponseEn } return obj; } - - /** - * Return a list which contains the response - */ - protected abstract List<String> getResponse(R response); } Modified: james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java?rev=1171588&r1=1171587&r2=1171588&view=diff ============================================================================== --- james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java (original) +++ james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPChannelUpstreamHandler.java Fri Sep 16 14:31:17 2011 @@ -27,13 +27,12 @@ import org.apache.james.protocols.impl.A 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.smtp.SMTPSession; 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; @@ -61,15 +60,14 @@ public class SMTPChannelUpstreamHandler @Override protected ProtocolSession createSession(ChannelHandlerContext ctx) throws Exception { + SSLEngine engine = null; if (context != null) { - SSLEngine engine = context.createSSLEngine(); + 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()); } + return new SMTPNettySession(conf, logger, ctx.getChannel(), engine); } @Override @@ -81,9 +79,9 @@ public class SMTPChannelUpstreamHandler if (channel.isConnected()) { ctx.getChannel().write(new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unable to process request")).addListener(ChannelFutureListener.CLOSE); } - SMTPSession smtpSession = (SMTPSession) ctx.getAttachment(); - if (smtpSession != null) { - smtpSession.getLogger().debug("Unable to process request", e.getCause()); + ProtocolSession session = (ProtocolSession) ctx.getAttachment(); + if (session != null) { + session.getLogger().debug("Unable to process request", e.getCause()); } else { logger.debug("Unable to process request", e.getCause()); } Modified: james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPNettySession.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPNettySession.java?rev=1171588&r1=1171587&r2=1171588&view=diff ============================================================================== --- james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPNettySession.java (original) +++ james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPNettySession.java Fri Sep 16 14:31:17 2011 @@ -54,10 +54,6 @@ public class SMTPNettySession extends Ab relayingAllowed = theConfigData.isRelayingAllowed(getRemoteIPAddress()); } - public SMTPNettySession(SMTPConfiguration theConfigData, Logger logger, Channel channel) { - this(theConfigData, logger, channel, null); - } - /** * @see org.apache.james.protocols.smtp.SMTPSession#getConnectionState() */ Modified: james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java?rev=1171588&r1=1171587&r2=1171588&view=diff ============================================================================== --- james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java (original) +++ james/protocols/trunk/smtp-netty/src/main/java/org/apache/james/protocols/smtp/netty/SMTPServer.java Fri Sep 16 14:31:17 2011 @@ -19,12 +19,17 @@ package org.apache.james.protocols.smtp.netty; +import java.nio.charset.Charset; + import javax.net.ssl.SSLContext; +import org.apache.james.protocols.api.ProtocolHandlerChain; import org.apache.james.protocols.impl.AbstractAsyncServer; +import org.apache.james.protocols.impl.AbstractResponseEncoder; import org.apache.james.protocols.impl.AbstractSSLAwareChannelPipelineFactory; import org.apache.james.protocols.smtp.SMTPConfiguration; import org.apache.james.protocols.smtp.SMTPProtocolHandlerChain; +import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.protocols.smtp.SMTPServerMBean; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.ChannelUpstreamHandler; @@ -40,7 +45,7 @@ import org.slf4j.LoggerFactory; */ public class SMTPServer extends AbstractAsyncServer implements SMTPServerMBean { - private SMTPProtocolHandlerChain chain; + private ProtocolHandlerChain chain; private Logger logger = LoggerFactory.getLogger(SMTPServer.class); @@ -57,8 +62,8 @@ public class SMTPServer extends Abstract private final SMTPConfiguration theConfigData; - private final static SMTPResponseEncoder SMTP_RESPONSE_ENCODER = new SMTPResponseEncoder(); - private SMTPChannelUpstreamHandler coreHandler; + private final static OneToOneEncoder SMTP_RESPONSE_ENCODER = new AbstractResponseEncoder(SMTPResponse.class, Charset.forName("US-ASCII")); + private ChannelUpstreamHandler coreHandler; Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java?rev=1171588&r1=1171587&r2=1171588&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java Fri Sep 16 14:31:17 2011 @@ -19,6 +19,7 @@ package org.apache.james.protocols.smtp; +import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -103,7 +104,24 @@ public class SMTPResponse implements Ret * @return all responseLines */ public List<CharSequence> getLines() { - return lines; + List<CharSequence> responseList = new ArrayList<CharSequence>(); + + for (int k = 0; k < lines.size(); k++) { + StringBuffer respBuff = new StringBuffer(256); + respBuff.append(getRetCode()); + if (k == lines.size() - 1) { + respBuff.append(" "); + respBuff.append(lines.get(k)); + + } else { + respBuff.append("-"); + respBuff.append(lines.get(k)); + + } + responseList.add(respBuff.toString()); + } + + return responseList; } /** @@ -137,6 +155,6 @@ public class SMTPResponse implements Ret * @see java.lang.Object#toString() */ public String toString() { - return getRetCode() + " " + getLines(); + return getLines().toString(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org