Author: norman
Date: Sun Sep 25 16:06:40 2011
New Revision: 1175419

URL: http://svn.apache.org/viewvc?rev=1175419&view=rev
Log:
LineHandler and ConnectHandler now return Response. See PROTOCOLS-34

Added:
    
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java
   (with props)
Modified:
    
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java
    
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java

Modified: 
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java?rev=1175419&r1=1175418&r2=1175419&view=diff
==============================================================================
--- 
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java
 (original)
+++ 
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/DataLineLMTPMessageHookHandler.java
 Sun Sep 25 16:06:40 2011
@@ -91,12 +91,14 @@ public class DataLineLMTPMessageHookHand
                     mimeMessageCopyOnWriteProxy = new 
MimeMessageCopyOnWriteProxy(mmiss);
                     mail.setMessage(mimeMessageCopyOnWriteProxy);
 
-                    deliverMail(session, mail);
+                    Response response = deliverMail(session, mail);
 
                     session.popLineHandler();
 
                     // do the clean up
                     session.resetState();
+                    
+                    return response;
 
                 } catch (MessagingException e) {
                     // TODO probably return a temporary problem
@@ -128,7 +130,6 @@ public class DataLineLMTPMessageHookHand
             return response;
         }
         
-        // TODO: Fix me as we should better return the response all the time
         return null;
     }
 
@@ -139,7 +140,9 @@ public class DataLineLMTPMessageHookHand
      * @param mail
      */
     @SuppressWarnings("unchecked")
-    protected void deliverMail(SMTPSession session, Mail mail) {
+    protected LMTPMultiResponse deliverMail(SMTPSession session, Mail mail) {
+        LMTPMultiResponse mResponse = null;
+        
         Iterator<MailAddress> recipients = mail.getRecipients().iterator();
         while (recipients.hasNext()) {
             MailAddress recipient = recipients.next();
@@ -177,8 +180,13 @@ public class DataLineLMTPMessageHookHand
                 session.getLogger().info("Unexpected error handling DATA 
stream", e);
                 response = new SMTPResponse(SMTPRetCode.LOCAL_ERROR, 
DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.UNDEFINED_STATUS) + " 
Temporary error deliver message to " + recipient);
             }
-            session.writeResponse(response);
+            if (mResponse == null) {
+                mResponse = new LMTPMultiResponse(response);
+            } else {
+                mResponse.addResponse(response);
+            }
         }
+        return mResponse;
 
     }
 

Added: 
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java?rev=1175419&view=auto
==============================================================================
--- 
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java
 (added)
+++ 
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java
 Sun Sep 25 16:06:40 2011
@@ -0,0 +1,79 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.lmtpserver;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.james.protocols.api.Response;
+
+public class LMTPMultiResponse implements Response {
+
+    private List<Response> responses = new ArrayList<Response>();
+
+    public LMTPMultiResponse(Response response) {
+        addResponse(response);
+    }
+    
+    public void addResponse(Response response) {
+        this.responses .add(response);
+        
+    }
+    
+    @Override
+    public String getRetCode() {
+        return responses.get(0).getRetCode();
+    }
+
+    @Override
+    public List<CharSequence> getLines() {
+        List<CharSequence> lines = new ArrayList<CharSequence>();
+        for (Response response: responses) {
+            lines.addAll(response.getLines());
+        }
+        return lines;
+    }
+
+    @Override
+    public String getRawLine() {
+        StringBuilder sb = new StringBuilder();
+        Iterator<Response> rIt = responses.iterator();
+        while(rIt.hasNext()) {
+            Response response = rIt.next();
+            sb.append(response.getRawLine());
+            if (rIt.hasNext()) {
+                sb.append("\r\n");
+            }
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public boolean isEndSession() {
+        for (Response response: responses) {
+            if (response.isEndSession()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+}

Propchange: 
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/LMTPMultiResponse.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java?rev=1175419&r1=1175418&r2=1175419&view=diff
==============================================================================
--- 
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
 (original)
+++ 
james/server/trunk/lmtpserver/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
 Sun Sep 25 16:06:40 2011
@@ -26,19 +26,19 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.james.lmtpserver.CoreCmdHandlerLoader;
 import org.apache.james.lmtpserver.jmx.JMXHandlersLoader;
+import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.HandlersPackage;
 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.SMTPProtocol;
-import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.smtpserver.netty.SMTPChannelUpstreamHandler;
 import org.jboss.netty.channel.ChannelUpstreamHandler;
 import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
 
 public class LMTPServer extends AbstractProtocolAsyncServer implements 
LMTPServerMBean {
 
-    private final static ResponseEncoder ENCODER =  new 
ResponseEncoder(SMTPResponse.class, Charset.forName("US-ASCII"));
+    private final static ResponseEncoder ENCODER =  new 
ResponseEncoder(Response.class, Charset.forName("US-ASCII"));
 
     /**
      * The maximum message size allowed by this SMTP server. The default value,



---------------------------------------------------------------------
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