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: [email protected]
For additional commands, e-mail: [email protected]