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