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 11:55:48 UTC

svn commit: r1160168 - in /james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store: MessageResultImpl.java streaming/FullByteContent.java streaming/InputStreamContent.java

Author: norman
Date: Mon Aug 22 09:55:47 2011
New Revision: 1160168

URL: http://svn.apache.org/viewvc?rev=1160168&view=rev
Log:
Allow to access raw message header without parsing it. This will give us some possibilities to improve performance in imap and pop3. See MAILBOX-115

Modified:
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java?rev=1160168&r1=1160167&r2=1160168&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java Mon Aug 22 09:55:47 2011
@@ -381,7 +381,7 @@ public class MessageResultImpl implement
 
         @Override
         public long size() {
-            return msg.getFullContentOctets() - msg.getBodyOctets();
+            return msg.getFullContentOctets() - msg.getBodyOctets() -2;
         }
 
         @Override

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java?rev=1160168&r1=1160167&r2=1160168&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java Mon Aug 22 09:55:47 2011
@@ -19,11 +19,10 @@
 package org.apache.james.mailbox.store.streaming;
 
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.SequenceInputStream;
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -65,18 +64,20 @@ public class FullByteContent implements 
 
     @Override
     public InputStream getInputStream() throws IOException {
-        List<InputStream> inputs = new ArrayList<InputStream>();
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
         for (final Iterator<MessageResult.Header> it = headers.iterator(); it.hasNext();) {
             final MessageResult.Header header = it.next();
             if (header != null) {
-                
-                inputs.add(header.getInputStream());
+                try {
+                    out.write((header.getName() + ": " + header.getValue() + "\r\n").getBytes("US-ASCII"));
+                } catch (MailboxException e) {
+                    throw new IOException("Unable to read headers", e);
+                }
             }
-            inputs.add(new ByteArrayInputStream("\r\n".getBytes()));
         }
-        inputs.add(new ByteArrayInputStream("\r\n".getBytes()));
-        inputs.add(new ByteArrayInputStream(body));
-        return new SequenceInputStream(Collections.enumeration(inputs));
+        out.write("\r\n".getBytes("US-ASCII"));
+        out.flush();
+        return new SequenceInputStream(new ByteArrayInputStream(out.toByteArray()), new ByteArrayInputStream(body));
     }
 
     @Override

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java?rev=1160168&r1=1160167&r2=1160168&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java Mon Aug 22 09:55:47 2011
@@ -34,7 +34,7 @@ import org.apache.james.mailbox.store.ma
  * {@link Content} which is stored in a {@link InputStream}
  *
  */
-public final class InputStreamContent implements org.apache.james.mailbox.InputStreamContent{
+public final class InputStreamContent implements Content{
     private Message<?> m;
     private Type type;
 



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