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/06/15 22:24:11 UTC

svn commit: r1136175 [2/2] - in /james/mailbox/trunk: jcr/src/main/java/org/apache/james/mailbox/jcr/ jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/ jcr/src/main/resources/org/apache/james/mailbox/jcr/ jpa/src/main/java/org/apache/james/mai...

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java?rev=1136175&r1=1136174&r2=1136175&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java Wed Jun 15 20:24:10 2011
@@ -18,11 +18,14 @@
  ****************************************************************/
 package org.apache.james.mailbox.store.search.comparator;
 
+import java.io.IOException;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Locale;
 
-import org.apache.james.mailbox.store.mail.model.Header;
+import org.apache.james.mailbox.MailboxException;
+import org.apache.james.mailbox.MessageResult.Header;
+import org.apache.james.mailbox.store.ResultUtils;
 import org.apache.james.mailbox.store.mail.model.Message;
 
 
@@ -33,13 +36,22 @@ public abstract class AbstractHeaderComp
     public final static String CC ="cc";
 
     protected String getHeaderValue(String headerName, Message<?> message) {
-        final List<Header> headers = message.getHeaders();
-        for (Header header:headers) {
-            final String name = header.getFieldName();
-            if (headerName.equalsIgnoreCase(name)) {
-                final String value = header.getValue();
-                return value.toUpperCase(Locale.ENGLISH);
+        try {
+            final List<Header> headers = ResultUtils.createHeaders(message);
+            for (Header header : headers) {
+                try {
+                    String name = header.getName();
+                    if (headerName.equalsIgnoreCase(name)) {
+                        final String value = header.getValue();
+                        return value.toUpperCase(Locale.ENGLISH);
+                    }
+                } catch (MailboxException e) {
+                    // skip the header line
+                }
+
             }
+        } catch (IOException e) {
+            // skip the header
         }
         return "";
     }

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=1136175&r1=1136174&r2=1136175&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 Wed Jun 15 20:24:10 2011
@@ -27,6 +27,7 @@ import java.nio.channels.WritableByteCha
 
 import org.apache.commons.io.input.BoundedInputStream;
 import org.apache.james.mailbox.Content;
+import org.apache.james.mailbox.store.ResultUtils;
 import org.apache.james.mailbox.store.mail.model.Message;
 
 /**
@@ -69,7 +70,7 @@ public final class InputStreamContent im
         // wrap the streams in a BoundedInputStream to make sure it really match with the stored size.
         switch (type) {
         case Full:
-            return new BoundedInputStream(m.getFullContent(), size());
+            return new BoundedInputStream(ResultUtils.toInput(m), size());
         default:
             return new BoundedInputStream(m.getBodyContent(), size());
         }
@@ -86,7 +87,7 @@ public final class InputStreamContent im
         try {
             switch (type) {
             case Full:
-                in = m.getFullContent();
+                in = ResultUtils.toInput(m);
                 break;
             default:
                 in = m.getBodyContent();

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java?rev=1136175&r1=1136174&r2=1136175&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MessageBuilder.java Wed Jun 15 20:24:10 2011
@@ -18,13 +18,12 @@
  ****************************************************************/
 package org.apache.james.mailbox.store;
 
-import java.util.ArrayList;
 import java.util.Date;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
 
 import javax.mail.Flags;
 
-import org.apache.james.mailbox.store.mail.model.Header;
 import org.apache.james.mailbox.store.mail.model.Message;
 
 public class MessageBuilder {
@@ -35,7 +34,7 @@ public class MessageBuilder {
     public int size = 8867;
     public Flags flags = new Flags();
     public byte[] body = {};
-    public final List<SimpleHeader> headers = new ArrayList<SimpleHeader>();
+    public final Map<String, String> headers = new HashMap<String, String>();
     public int lineNumber = 0;
     
     public Message<Long> build() throws Exception {
@@ -43,10 +42,8 @@ public class MessageBuilder {
         return result;
     }
     
-    public Header header(String field, String value) {
-        SimpleHeader header = new SimpleHeader(field, ++lineNumber, value);
-        headers.add(header);
-        return header;
+    public void header(String field, String value) {
+        headers.put(field, value);
     }
 
     public void setKey(int mailboxId, int uid) {

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SimpleMailboxMembership.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SimpleMailboxMembership.java?rev=1136175&r1=1136174&r2=1136175&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SimpleMailboxMembership.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/SimpleMailboxMembership.java Wed Jun 15 20:24:10 2011
@@ -26,11 +26,14 @@ import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 
 import javax.mail.Flags;
 
-import org.apache.james.mailbox.store.mail.model.Header;
 import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.mail.model.Property;
 
@@ -49,36 +52,21 @@ public class SimpleMailboxMembership imp
     public boolean seen = false;
 
     public SimpleMailboxMembership(long mailboxId, long uid, long modSeq, Date internalDate, int size, 
-            Flags flags, byte[] body, final List<SimpleHeader> headers) throws Exception {
+            Flags flags, byte[] body, final Map<String, String> headers) throws Exception {
         super();
         this.mailboxId = mailboxId;
         this.uid = uid;
         this.internalDate = internalDate;
         this.size = size;
         this.body = body;
-        final List<SimpleHeader> originalHeaders = headers;
+        final Map<String,String> originalHeaders = headers;
         if (originalHeaders == null) {
-            this.headers = new ArrayList<SimpleHeader>();
+            this.headers = new HashMap<String,String>();
         } else {
-            this.headers = new ArrayList<SimpleHeader>(originalHeaders.size());
-            for (SimpleHeader header:originalHeaders) {
-                this.headers.add(new SimpleHeader(header));
-            }
+            this.headers = originalHeaders;
         }
         
-        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        final Writer writer = new OutputStreamWriter(baos, "us-ascii");
-        for (SimpleHeader header:headers) {
-            writer.write(header.getFieldName());
-            writer.write(": ");
-            writer.write(header.getValue());
-            writer.write(NEW_LINE);
-        }
-        writer.write(NEW_LINE);
-        writer.flush();
-        baos.write(body);
-        baos.flush();
-        fullContent = baos.toByteArray();
+        this.body =  body;
         setFlags(flags);
     }
 
@@ -240,8 +228,7 @@ public class SimpleMailboxMembership imp
     public static final char[] NEW_LINE = { 0x0D, 0x0A };
     
     public byte[] body;
-    public byte[] fullContent;
-    public List<SimpleHeader> headers;
+    public Map<String, String> headers;
     public List<SimpleProperty> properties;
     public String subType = null;
     public String mediaType = null;
@@ -260,20 +247,26 @@ public class SimpleMailboxMembership imp
         return new ByteArrayInputStream(body);
     }
 
-    /**
-     * Gets the full content (including headers) of the document.
-     * @return read only buffer, not null
-     * @throws IOException 
-     */
-    public InputStream getFullContent() throws IOException {
-        return new ByteArrayInputStream(fullContent);
-    }
-    
-    /**
-     * @see org.apache.james.imap.Message.mail.model.Document#getHeaders()
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.mailbox.store.mail.model.Message#getHeaderContent()
      */
-    public List<Header> getHeaders() {
-        return new ArrayList<Header>(headers);
+    public InputStream getHeaderContent() throws IOException {
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        final Writer writer = new OutputStreamWriter(baos, "us-ascii");
+
+        Iterator<Entry<String, String>> hIt = headers.entrySet().iterator();
+        while (hIt.hasNext()) {
+            Entry<String, String> header = hIt.next();
+            writer.write(header.getKey());
+            writer.write(": ");
+            writer.write(header.getValue());
+            writer.write(NEW_LINE);
+        }
+        writer.flush();
+        return new ByteArrayInputStream(baos.toByteArray());
+
     }
 
     public long getBodyOctets() {



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