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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org