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