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

Reply via email to