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 2011/08/22 12:51:10 UTC
svn commit: r1160200 - in /james/server/trunk:
imapserver/src/main/java/org/apache/james/imapserver/netty/
pop3server/src/main/java/org/apache/james/pop3server/core/
Author: norman
Date: Mon Aug 22 10:51:10 2011
New Revision: 1160200
URL: http://svn.apache.org/viewvc?rev=1160200&view=rev
Log:
Use the raw message header for TOP and RETR response. See MAILBOX-115
Modified:
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java
james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java
Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java?rev=1160200&r1=1160199&r2=1160200&view=diff
==============================================================================
--- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java (original)
+++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ChannelImapResponseWriter.java Mon Aug 22 10:51:10 2011
@@ -20,7 +20,6 @@
package org.apache.james.imapserver.netty;
import java.io.IOException;
-import java.nio.ByteBuffer;
import org.apache.james.imap.encode.ImapResponseWriter;
import org.apache.james.imap.message.response.Literal;
@@ -43,9 +42,9 @@ public class ChannelImapResponseWriter i
/*
* (non-Javadoc)
- * @see org.apache.james.imap.encode.ImapResponseWriter#write(java.nio.ByteBuffer)
+ * @see org.apache.james.imap.encode.ImapResponseWriter#write(byte[])
*/
- public void write(ByteBuffer buffer) throws IOException {
+ public void write(byte[] buffer) throws IOException {
channel.write(ChannelBuffers.wrappedBuffer(buffer));
}
Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java?rev=1160200&r1=1160199&r2=1160200&view=diff
==============================================================================
--- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java (original)
+++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java Mon Aug 22 10:51:10 2011
@@ -20,10 +20,7 @@
package org.apache.james.pop3server.core;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.nio.channels.Channels;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
@@ -32,7 +29,6 @@ import java.util.NoSuchElementException;
import java.util.Set;
import org.apache.james.mailbox.Content;
-import org.apache.james.mailbox.InputStreamContent;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageRange;
@@ -96,15 +92,9 @@ public class RetrCmdHandler implements C
// response = new
// POP3Response(POP3Response.OK_RESPONSE,
// "Message follows");
- Content content = result.getFullContent();
- InputStream in;
- if (content instanceof InputStreamContent) {
- in = ((InputStreamContent) content).getInputStream();
- } else {
- in = createInputStream(content);
- }
+ Content content = result.getFullContent();
// session.writeStream(new ExtraDotInputStream(in));
- session.writeStream(new CRLFTerminatedInputStream(new ExtraDotInputStream(in)));
+ session.writeStream(new CRLFTerminatedInputStream(new ExtraDotInputStream(content.getInputStream())));
} finally {
// write a single dot to mark message as complete
@@ -138,11 +128,6 @@ public class RetrCmdHandler implements C
return response;
}
- protected InputStream createInputStream(Content content) throws IOException {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- content.writeTo(Channels.newChannel(out));
- return new ByteArrayInputStream(out.toByteArray());
- }
/*
* (non-Javadoc)
Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java?rev=1160200&r1=1160199&r2=1160200&view=diff
==============================================================================
--- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java (original)
+++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java Mon Aug 22 10:51:10 2011
@@ -20,28 +20,24 @@
package org.apache.james.pop3server.core;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.WritableByteChannel;
+import java.io.SequenceInputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Set;
-import org.apache.james.mailbox.Content;
-import org.apache.james.mailbox.InputStreamContent;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageRange;
import org.apache.james.mailbox.MessageResult;
import org.apache.james.mailbox.MessageResult.FetchGroup;
-import org.apache.james.mailbox.MessageResult.Header;
import org.apache.james.pop3server.POP3Response;
import org.apache.james.pop3server.POP3Session;
import org.apache.james.protocols.api.Request;
@@ -117,31 +113,12 @@ public class TopCmdHandler extends RetrC
session.writeStream(new ByteArrayInputStream((POP3Response.OK_RESPONSE + " Message follows\r\n").getBytes()));
try {
- ByteArrayOutputStream headersOut = new ByteArrayOutputStream();
- WritableByteChannel headersChannel = Channels.newChannel(headersOut);
+
+ InputStream headersIn = result.getHeaders().getInputStream();
+ InputStream bodyIn = new CountingBodyInputStream(new ExtraDotInputStream(new CRLFTerminatedInputStream(result.getBody().getInputStream())), lines);
- // write headers
- Iterator<Header> headers = result.headers();
- while (headers.hasNext()) {
- headers.next().writeTo(headersChannel);
-
- // we need to write out the CRLF after each
- // header
- headersChannel.write(ByteBuffer.wrap("\r\n".getBytes()));
- }
- // headers and body are seperated by a CRLF
- headersChannel.write(ByteBuffer.wrap("\r\n".getBytes()));
- session.writeStream(new ByteArrayInputStream(headersOut.toByteArray()));
-
- InputStream bodyIn;
- Content content = result.getBody();
- if (content instanceof InputStreamContent) {
- bodyIn = ((InputStreamContent) content).getInputStream();
- } else {
- bodyIn = createInputStream(content);
- }
// write body
- session.writeStream(new CountingBodyInputStream(new ExtraDotInputStream(new CRLFTerminatedInputStream(bodyIn)), lines));
+ session.writeStream(new SequenceInputStream(Collections.enumeration(Arrays.asList(headersIn, new ByteArrayInputStream("\r\n".getBytes()), bodyIn))));
} finally {
// write a single dot to mark message as complete
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org