You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2012/01/01 16:28:27 UTC

svn commit: r1226256 - in /james/protocols/trunk/smtp/src: main/java/org/apache/james/protocols/smtp/core/ main/java/org/apache/james/protocols/smtp/core/esmtp/ test/java/org/apache/james/protocols/smtp/

Author: norman
Date: Sun Jan  1 15:28:26 2012
New Revision: 1226256

URL: http://svn.apache.org/viewvc?rev=1226256&view=rev
Log:
Add getCharset() and getLineDelimiters() to ProtocolSession. See PROTOCOLS-78

Modified:
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAddHeadersFilter.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
    james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAddHeadersFilter.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAddHeadersFilter.java?rev=1226256&r1=1226255&r2=1226256&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAddHeadersFilter.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAddHeadersFilter.java Sun Jan  1 15:28:26 2012
@@ -102,15 +102,17 @@ public abstract class AbstractAddHeaders
         public final String value;
         
         private final String[] lines;
+        private final String lineDelimiter;
         
-        public Header(String name, String value) {
+        public Header(String name, String value, String lineDelimiter) {
             this.name = name;
             this.value = value;
-            this.lines = toString().split("\r\n");
+            this.lines = toString().split(lineDelimiter);
+            this.lineDelimiter = lineDelimiter;
         }
         
         public String toString() {
-             return name + ": " + value + "\r\n";
+             return name + ": " + value + lineDelimiter;
         }
         
         /**
@@ -124,17 +126,19 @@ public abstract class AbstractAddHeaders
          * @return response
          */
         public Response transferTo(SMTPSession session, LineHandler<SMTPSession> handler) {
+            String charset = session.getCharset().name();
+
             try {
                 Response response = null;
                 for (int i = 0; i < lines.length; i++) {
-                     response = handler.onLine(session, ByteBuffer.wrap((lines[i] + "\r\n").getBytes("US-ASCII")));
+                     response = handler.onLine(session, ByteBuffer.wrap((lines[i] + session.getLineDelimiter()).getBytes(charset)));
                      if (response != null) {
                          break;
                      }
                 }
                 return response;
             } catch (UnsupportedEncodingException e) {
-                throw new RuntimeException("NO US-ASCII ?", e);
+                throw new RuntimeException("NO " + charset + " support ?", e);
             }
         }
     }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java?rev=1226256&r1=1226255&r2=1226256&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java Sun Jan  1 15:28:26 2012
@@ -107,7 +107,7 @@ public class ReceivedDataLineFilter exte
         if (heloName != null) {
             headerLineBuffer.append(" (").append(heloMode).append(" ").append(heloName).append(") ");
         }
-        headerLineBuffer.append(" ([").append(session.getRemoteAddress().getAddress().getHostAddress()).append("])").append("\r\n");
+        headerLineBuffer.append(" ([").append(session.getRemoteAddress().getAddress().getHostAddress()).append("])").append(session.getLineDelimiter());
         headerLineBuffer.delete(0, headerLineBuffer.length());
 
         headerLineBuffer.append(Header.MULTI_LINE_PREFIX).append("by ").append(session.getConfiguration().getHelloName()).append(" (").append(session.getConfiguration().getSoftwareName()).append(") with ").append(getServiceType(session, heloMode));
@@ -117,7 +117,7 @@ public class ReceivedDataLineFilter exte
             // Only indicate a recipient if they're the only recipient
             // (prevents email address harvesting and large headers in
             // bulk email)
-            headerLineBuffer.append("\r\n");
+            headerLineBuffer.append(session.getLineDelimiter());
             headerLineBuffer.append(Header.MULTI_LINE_PREFIX).append("for <").append(((List<MailAddress>) session.getAttachment(SMTPSession.RCPT_LIST, State.Transaction)).get(0).toString()).append(">;");
         } else {
             // Put the ; on the end of the 'by' line
@@ -125,6 +125,6 @@ public class ReceivedDataLineFilter exte
         }
         headerLineBuffer.append(Header.MULTI_LINE_PREFIX).append(DATEFORMAT.get().format(new Date()));
 
-        return Arrays.asList(new Header("Received", headerLineBuffer.toString()));
+        return Arrays.asList(new Header("Received", headerLineBuffer.toString(), session.getLineDelimiter()));
     }
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java?rev=1226256&r1=1226255&r2=1226256&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java Sun Jan  1 15:28:26 2012
@@ -63,7 +63,6 @@ public class AuthCmdHandler
     private static final String[] MAIL_PARAMS = { "AUTH" };
     private static final List<String> ESMTP_FEATURES = Collections.unmodifiableList(Arrays.asList("AUTH LOGIN PLAIN", "AUTH=LOGIN PLAIN"));
     
-    private final static String CHARSET = "US-ASCII";
     private static final Response AUTH_ABORTED = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " Authentication aborted").immutable();
     private static final Response ALREADY_AUTH = new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_OTHER)+" User has previously authenticated. "
             + " Further authentication is not required!").immutable();
@@ -77,6 +76,7 @@ public class AuthCmdHandler
     private abstract class AbstractSMTPLineHandler implements LineHandler<SMTPSession> {
 
         public Response onLine(SMTPSession session, ByteBuffer line) {
+            String charset = session.getCharset().name();
             try {
                 byte[] l;
                 if (line.hasArray()) {
@@ -85,9 +85,9 @@ public class AuthCmdHandler
                     l = new byte[line.remaining()];
                     line.get(l);
                 }
-                return handleCommand(session, new String(l, CHARSET));
+                return handleCommand(session, new String(l, charset));
             } catch (UnsupportedEncodingException e) {
-                throw new RuntimeException("No " + CHARSET + " support!");
+                throw new RuntimeException("No " + charset + " support!");
             }
            
         }

Modified: james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java?rev=1226256&r1=1226255&r2=1226256&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java (original)
+++ james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/BaseFakeSMTPSession.java Sun Jan  1 15:28:26 2012
@@ -23,6 +23,7 @@ package org.apache.james.protocols.smtp;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.InetSocketAddress;
+import java.nio.charset.Charset;
 import java.util.Map;
 
 import org.apache.james.protocols.api.Response;
@@ -207,4 +208,12 @@ public class BaseFakeSMTPSession impleme
         throw new UnsupportedOperationException("Unimplemented Stub Method");
     }
 
+    public Charset getCharset() {
+        throw new UnsupportedOperationException("Unimplemented Stub Method");
+    }
+
+    public String getLineDelimiter() {
+        throw new UnsupportedOperationException("Unimplemented Stub Method");
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org