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 bt...@apache.org on 2019/11/28 02:12:33 UTC

[james-project] 16/23: JAMES-2989 POJOify mailbox-api headers

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 6c9350f78b69201264a1b70c2d4e0313756e76d8
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 13:17:50 2019 +0700

    JAMES-2989 POJOify  mailbox-api headers
---
 .../org/apache/james/mailbox/model/Header.java}    | 23 ++++++---
 .../org/apache/james/mailbox/model/Headers.java    |  1 -
 .../apache/james/mailbox/model/MessageResult.java  | 20 --------
 .../james/mailbox/store/LazyMimeDescriptor.java    |  2 +-
 .../james/mailbox/store/MessageResultImpl.java     |  1 +
 .../james/mailbox/store/MimeDescriptorImpl.java    | 22 ++++-----
 .../apache/james/mailbox/store/ResultUtils.java    | 13 +++---
 .../mailbox/store/StoreMessageResultIterator.java  |  1 +
 .../mailbox/store/search/MessageSearches.java      |  2 +-
 .../comparator/AbstractHeaderComparator.java       |  2 +-
 .../mailbox/store/streaming/FullByteContent.java   |  5 +-
 .../store/streaming/PartContentBuilder.java        | 16 +++----
 .../PartContentBuilderComplexMultipartTest.java    |  4 +-
 ...PartContentBuilderMultipartAlternativeTest.java |  4 +-
 .../imap/processor/fetch/EnvelopeBuilder.java      |  6 +--
 .../imap/processor/fetch/FetchResponseBuilder.java | 25 +++++-----
 .../imap/processor/fetch/HeaderBodyElement.java    |  6 +--
 .../imap/processor/fetch/MessageResultUtils.java   | 46 +++++++++---------
 .../imap/processor/fetch/MimeBodyElement.java      | 12 ++---
 .../fetch/MailboxMessageResultUtilsTest.java       | 54 ++++------------------
 .../james/jmap/draft/methods/ReferenceUpdater.java |  2 +-
 21 files changed, 109 insertions(+), 158 deletions(-)

diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Header.java
similarity index 84%
rename from mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java
rename to mailbox/api/src/main/java/org/apache/james/mailbox/model/Header.java
index f1424f2..71b2e4c 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Header.java
@@ -20,32 +20,41 @@
 /**
  * 
  */
-package org.apache.james.mailbox.store;
+package org.apache.james.mailbox.model;
 
 import static java.nio.charset.StandardCharsets.US_ASCII;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 
-import org.apache.james.mailbox.model.MessageResult;
-
-public final class ResultHeader implements MessageResult.Header {
+/**
+ * A header.
+ */
+public final class Header implements Content {
     private final String name;
     private final String value;
     private final long size;
 
-    public ResultHeader(String name, String value) {
+    public Header(String name, String value) {
         this.name = name;
         this.value = value;
         this.size = name.length() + value.length() + 2;
     }
 
-    @Override
+    /**
+     * Gets the name of this header.
+     *
+     * @return name of this header
+     */
     public String getName() {
         return name;
     }
 
-    @Override
+    /**
+     * Gets the (unparsed) value of this header.
+     *
+     * @return value of this header
+     */
     public String getValue() {
         return value;
     }
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java
index 52b959b..16e715d 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java
@@ -22,7 +22,6 @@ package org.apache.james.mailbox.model;
 import java.util.Iterator;
 
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult.Header;
 
 public interface Headers extends Content {
     /**
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
index c85df56..82894d6 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
@@ -101,26 +101,6 @@ public interface MessageResult extends Comparable<MessageResult> {
     Iterator<Header> iterateMimeHeaders(MimePath path) throws MailboxException;
 
     /**
-     * A header.
-     */
-    interface Header extends Content {
-
-        /**
-         * Gets the name of this header.
-         * 
-         * @return name of this header
-         */
-        String getName();
-
-        /**
-         * Gets the (unparsed) value of this header.
-         * 
-         * @return value of this header
-         */
-        String getValue();
-    }
-
-    /**
      * Gets the full message including headers and body. The message data should
      * have normalised line endings (CRLF).
      * 
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/LazyMimeDescriptor.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/LazyMimeDescriptor.java
index 25d6a37..aad4f90 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/LazyMimeDescriptor.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/LazyMimeDescriptor.java
@@ -27,8 +27,8 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.Header;
 import org.apache.james.mailbox.model.MimeDescriptor;
 import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
index e3f5e05..569c55e 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
@@ -34,6 +34,7 @@ import org.apache.james.mailbox.ModSeq;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Content;
 import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.model.Headers;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageAttachment;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java
index 7f4baae..32475b9 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java
@@ -32,7 +32,7 @@ import java.util.Map;
 import java.util.TreeMap;
 
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.model.MimeDescriptor;
 import org.apache.james.mailbox.store.streaming.CountingInputStream;
 import org.apache.james.mime4j.MimeException;
@@ -60,12 +60,12 @@ public class MimeDescriptorImpl implements MimeDescriptor {
 
     private static MimeDescriptorImpl createDescriptor(MimeTokenStream parser) throws IOException, MimeException {
         EntityState next = parser.next();
-        final Collection<MessageResult.Header> headers = new ArrayList<>();
+        final Collection<Header> headers = new ArrayList<>();
         while (next != EntityState.T_BODY
                 && next != EntityState.T_END_OF_STREAM
                 && next != EntityState.T_START_MULTIPART) {
             if (next == EntityState.T_FIELD) {
-                headers.add(new ResultHeader(parser.getField().getName(), parser
+                headers.add(new Header(parser.getField().getName(), parser
                         .getField().getBody().trim()));
             }
             next = parser.next();
@@ -87,7 +87,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
         return mimeDescriptorImpl;
     }
 
-    private static MimeDescriptorImpl compositePartDescriptor(MimeTokenStream parser, Collection<MessageResult.Header> headers)
+    private static MimeDescriptorImpl compositePartDescriptor(MimeTokenStream parser, Collection<Header> headers)
             throws IOException, MimeException {
         MaximalBodyDescriptor descriptor = (MaximalBodyDescriptor) parser
                 .getBodyDescriptor();
@@ -104,7 +104,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
         return mimeDescriptor;
     }
 
-    private static MimeDescriptorImpl simplePartDescriptor(MimeTokenStream parser, Collection<MessageResult.Header> headers)
+    private static MimeDescriptorImpl simplePartDescriptor(MimeTokenStream parser, Collection<Header> headers)
             throws IOException, MimeException {
         MaximalBodyDescriptor descriptor = (MaximalBodyDescriptor) parser
                 .getBodyDescriptor();
@@ -137,7 +137,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
     }
 
     private static MimeDescriptorImpl createDescriptor(long bodyOctets, long lines, MaximalBodyDescriptor descriptor,
-            MimeDescriptor embeddedMessage, Collection<MessageResult.Header> headers) {
+            MimeDescriptor embeddedMessage, Collection<Header> headers) {
         final String contentDescription = descriptor.getContentDescription();
         final String contentId = descriptor.getContentId();
 
@@ -180,7 +180,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
     private final String type;
     private final String transferEncoding;
     private final List<String> languages;
-    private final Collection<MessageResult.Header> headers;
+    private final Collection<Header> headers;
     private final Map<String, String> contentTypeParameters;
     private final String disposition;
     private final Map<String, String> dispositionParams;
@@ -192,7 +192,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
     private MimeDescriptorImpl(long bodyOctets,
                                String contentDescription, String contentId,
                                long lines, String subType, String type,
-                               String transferEncoding, Collection<MessageResult.Header> headers,
+                               String transferEncoding, Collection<Header> headers,
                                Map<String, String> contentTypeParameters, List<String> languages,
                                String disposition, Map<String, String> dispositionParams,
                                MimeDescriptor embeddedMessage, Collection<MimeDescriptor> parts,
@@ -262,7 +262,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
     }
 
     @Override
-    public Iterator<MessageResult.Header> headers() {
+    public Iterator<Header> headers() {
         return headers.iterator();
     }
 
@@ -303,7 +303,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
     @Override
     public InputStream getInputStream() {
         StringBuilder sb = new StringBuilder();
-        for (MessageResult.Header header : headers) {
+        for (Header header : headers) {
             sb.append(header.getName()).append(": ").append(header.getValue()).append("\r\n");
         }
         sb.append("\r\n");
@@ -313,7 +313,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
     @Override
     public long size() throws MailboxException {
         long result = 0;
-        for (MessageResult.Header header : headers) {
+        for (Header header : headers) {
             if (header != null) {
                 result += header.size();
                 result += 2;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
index d3803ae..1f59126 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
@@ -28,6 +28,7 @@ import java.util.List;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Content;
 import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MimePath;
 import org.apache.james.mailbox.model.PartContentDescriptor;
@@ -44,8 +45,8 @@ import org.apache.james.mime4j.util.ContentUtil;
 
 public class ResultUtils {
 
-    public static List<MessageResult.Header> createHeaders(MailboxMessage document) throws IOException {
-        List<MessageResult.Header> results = new ArrayList<>();
+    public static List<Header> createHeaders(MailboxMessage document) throws IOException {
+        List<Header> results = new ArrayList<>();
         MimeStreamParser parser = new MimeStreamParser(MimeConfig.PERMISSIVE);
         parser.setContentHandler(new AbstractContentHandler() {
             @Override
@@ -76,8 +77,8 @@ public class ResultUtils {
                     fieldValue = fieldValue.substring(1);
                 }
                 
-                ResultHeader resultHeader = new ResultHeader(field.getName(), fieldValue);
-                results.add(resultHeader);
+                Header header = new Header(field.getName(), fieldValue);
+                results.add(header);
             }
         });
         try {
@@ -187,7 +188,7 @@ public class ResultUtils {
         int[] path = path(mimePath);
         if (path != null) {
             PartContentBuilder builder = build(path, message);
-            List<MessageResult.Header> headers = builder.getMessageHeaders();
+            List<Header> headers = builder.getMessageHeaders();
             messageResult.setHeaders(mimePath, headers.iterator());
         }
     }
@@ -197,7 +198,7 @@ public class ResultUtils {
         int[] path = path(mimePath);
         if (path != null) {
             PartContentBuilder builder = build(path, message);
-            List<MessageResult.Header> headers = builder.getMimeHeaders();
+            List<Header> headers = builder.getMimeHeaders();
             messageResult.setMimeHeaders(mimePath, headers.iterator());
         }
     }
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
index dfdf2ce..a392954 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.ModSeq;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Content;
 import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.model.Headers;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxId;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
index ebbccbd..a255e61 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
@@ -45,8 +45,8 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.UnsupportedSearchException;
 import org.apache.james.mailbox.extractor.TextExtractor;
 import org.apache.james.mailbox.model.Attachment;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.model.MessageAttachment;
-import org.apache.james.mailbox.model.MessageResult.Header;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.mailbox.model.SearchQuery.AddressType;
 import org.apache.james.mailbox.model.SearchQuery.DateResolution;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
index d6137fe..bd5e338 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
@@ -23,7 +23,7 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.Locale;
 
-import org.apache.james.mailbox.model.MessageResult.Header;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.store.ResultUtils;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.slf4j.Logger;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java
index 8864182..534a357 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java
@@ -28,8 +28,7 @@ import java.util.List;
 
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Content;
-import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.Header;
+import org.apache.james.mailbox.model.Header;
 
 /**
  * Abstract base class for {@link Content} implementations which hold the headers and 
@@ -42,7 +41,7 @@ public class FullByteContent implements Content {
     private final byte[] body;
     private final long size;
     
-    public FullByteContent(byte[] body, List<MessageResult.Header> headers) throws MailboxException {
+    public FullByteContent(byte[] body, List<Header> headers) throws MailboxException {
         this.headers = headers;
         this.body = body;
         this.size = caculateSize();
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java
index d548d46..6d2b46d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java
@@ -28,9 +28,7 @@ import java.util.List;
 import org.apache.commons.io.IOUtils;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Content;
-import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.Header;
-import org.apache.james.mailbox.store.ResultHeader;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mime4j.MimeException;
 import org.apache.james.mime4j.stream.EntityState;
 import org.apache.james.mime4j.stream.MimeConfig;
@@ -223,8 +221,8 @@ public class PartContentBuilder {
         return content;
     }
 
-    public List<MessageResult.Header> getMimeHeaders() throws IOException, UnexpectedEOFException, MimeException {
-        final List<MessageResult.Header> results;
+    public List<Header> getMimeHeaders() throws IOException, UnexpectedEOFException, MimeException {
+        final List<Header> results;
         if (empty) {
             results = Collections.emptyList();
         } else {
@@ -238,7 +236,7 @@ public class PartContentBuilder {
                     case T_FIELD:
                         final String fieldValue = parser.getField().getBody().trim();
                         final String fieldName = parser.getField().getName();
-                        ResultHeader header = new ResultHeader(fieldName, fieldValue);
+                        Header header = new Header(fieldName, fieldValue);
                         results.add(header);
                         break;
                 case T_BODY:
@@ -260,8 +258,8 @@ public class PartContentBuilder {
         return results;
     }
 
-    public List<MessageResult.Header> getMessageHeaders() throws IOException, MimeException {
-        final List<MessageResult.Header> results;
+    public List<Header> getMessageHeaders() throws IOException, MimeException {
+        final List<Header> results;
         if (empty) {
             results = Collections.emptyList();
         } else {
@@ -278,7 +276,7 @@ public class PartContentBuilder {
                         case T_FIELD:
                             final String fieldValue = parser.getField().getBody().trim();
                             final String fieldName = parser.getField().getName();
-                            ResultHeader header = new ResultHeader(fieldName, fieldValue);
+                            Header header = new Header(fieldName, fieldValue);
                             results.add(header);
                             break;
                     case T_BODY:
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderComplexMultipartTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderComplexMultipartTest.java
index 8dd9e95..034093a 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderComplexMultipartTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderComplexMultipartTest.java
@@ -29,7 +29,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.List;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.james.mailbox.model.MessageResult.Header;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.store.streaming.PartContentBuilder;
 import org.apache.james.mailbox.store.streaming.PartContentBuilder.PartNotFoundException;
 import org.junit.Before;
@@ -204,7 +204,7 @@ public class PartContentBuilderComplexMultipartTest {
             throws Exception {
         List<Header> headers = headers(position);
         assertThat(headers.size()).isEqualTo(1);
-        ResultHeader header = (ResultHeader) headers.get(0);
+        Header header = (Header) headers.get(0);
         assertThat(header.getName()).isEqualTo(CONTENT_TYPE);
         assertThat(header.getValue()).isEqualTo(contentType);
     }
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderMultipartAlternativeTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderMultipartAlternativeTest.java
index da1b920..5c937b6 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderMultipartAlternativeTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderMultipartAlternativeTest.java
@@ -28,7 +28,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.List;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.james.mailbox.model.MessageResult.Header;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.store.streaming.PartContentBuilder;
 import org.junit.Before;
 import org.junit.Test;
@@ -120,7 +120,7 @@ public class PartContentBuilderMultipartAlternativeTest {
             throws Exception {
         List<Header> headers = headers(mail, position);
         assertThat(headers.size()).isEqualTo(1);
-        ResultHeader header = (ResultHeader) headers.get(0);
+        Header header = (Header) headers.get(0);
         assertThat(header.getName()).isEqualTo(CONTENT_TYPE);
         assertThat(header.getValue()).isEqualTo(contentType);
     }
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java
index 866a2e3..ab5862d 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java
@@ -31,8 +31,8 @@ import javax.mail.internet.MimeUtility;
 import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.message.response.FetchResponse;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.model.Headers;
-import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mime4j.codec.EncoderUtil;
 import org.apache.james.mime4j.dom.address.Address;
 import org.apache.james.mime4j.dom.address.AddressList;
@@ -62,7 +62,7 @@ public final class EnvelopeBuilder {
     }
 
     private String headerValue(Headers message, String headerName) throws MailboxException {
-        final MessageResult.Header header = MessageResultUtils.getMatching(headerName, message.headers());
+        final Header header = MessageResultUtils.getMatching(headerName, message.headers());
         final String result;
         if (header == null) {
             result = null;
@@ -108,7 +108,7 @@ public final class EnvelopeBuilder {
      * @throws MailboxException
      */
     private FetchResponse.Envelope.Address[] buildAddresses(Headers message, String headerName) throws MailboxException {
-        final MessageResult.Header header = MessageResultUtils.getMatching(headerName, message.headers());
+        final Header header = MessageResultUtils.getMatching(headerName, message.headers());
         FetchResponse.Envelope.Address[] results;
         if (header == null) {
             results = null;
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
index 36329fd..4e9906c 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
@@ -44,6 +44,7 @@ import org.apache.james.mailbox.ModSeq;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MessageRangeException;
 import org.apache.james.mailbox.model.Content;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MimePath;
@@ -302,13 +303,13 @@ public final class FetchResponseBuilder {
 
     private FetchResponse.BodyElement mimeHeaders(MessageResult messageResult, String name, int[] path, boolean isBase) throws MailboxException {
         final FetchResponse.BodyElement result;
-        final Iterator<MessageResult.Header> headers = getMimeHeaders(messageResult, path, isBase);
-        List<MessageResult.Header> lines = MessageResultUtils.getAll(headers);
+        final Iterator<Header> headers = getMimeHeaders(messageResult, path, isBase);
+        List<Header> lines = MessageResultUtils.getAll(headers);
         result = new MimeBodyElement(name, lines);
         return result;
     }
 
-    private HeaderBodyElement headerBodyElement(MessageResult messageResult, String name, List<MessageResult.Header> lines, int[] path, boolean isBase) throws MailboxException {
+    private HeaderBodyElement headerBodyElement(MessageResult messageResult, String name, List<Header> lines, int[] path, boolean isBase) throws MailboxException {
         final HeaderBodyElement result = new HeaderBodyElement(name, lines);
         // if the size is 2 we had found not header and just want to write the empty line with CLRF terminated
         // so check if there is a content for it. If not we MUST NOT write the empty line in any case
@@ -354,27 +355,27 @@ public final class FetchResponseBuilder {
             }
             return element;
         } else {
-            final Iterator<MessageResult.Header> headers = getHeaders(messageResult, path, isBase);
-            List<MessageResult.Header> lines = MessageResultUtils.getAll(headers);
+            final Iterator<Header> headers = getHeaders(messageResult, path, isBase);
+            List<Header> lines = MessageResultUtils.getAll(headers);
             return headerBodyElement(messageResult, name, lines, path, isBase);
         }
     }
 
     private FetchResponse.BodyElement fieldsNot(MessageResult messageResult, String name, int[] path, Collection<String> names, boolean isBase) throws MailboxException {
-        final Iterator<MessageResult.Header> headers = getHeaders(messageResult, path, isBase);
-        List<MessageResult.Header> lines = MessageResultUtils.getNotMatching(names, headers);
+        final Iterator<Header> headers = getHeaders(messageResult, path, isBase);
+        List<Header> lines = MessageResultUtils.getNotMatching(names, headers);
         
         return headerBodyElement(messageResult, name, lines, path, isBase);
     }
 
     private FetchResponse.BodyElement fields(MessageResult messageResult, String name, int[] path, Collection<String> names, boolean isBase) throws MailboxException {
-        final Iterator<MessageResult.Header> headers = getHeaders(messageResult, path, isBase);
-        List<MessageResult.Header> lines = MessageResultUtils.getMatching(names, headers);
+        final Iterator<Header> headers = getHeaders(messageResult, path, isBase);
+        List<Header> lines = MessageResultUtils.getMatching(names, headers);
         return headerBodyElement(messageResult, name, lines, path, isBase);
     }
 
-    private Iterator<MessageResult.Header> getHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException {
-        final Iterator<MessageResult.Header> headers;
+    private Iterator<Header> getHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException {
+        final Iterator<Header> headers;
         if (isBase) {
             headers = messageResult.getHeaders().headers();
         } else {
@@ -384,7 +385,7 @@ public final class FetchResponseBuilder {
         return headers;
     }
 
-    private Iterator<MessageResult.Header> getMimeHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException {
+    private Iterator<Header> getMimeHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException {
         MimePath mimePath = new MimePath(path);
         return messageResult.iterateMimeHeaders(mimePath);
     }
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/HeaderBodyElement.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/HeaderBodyElement.java
index 699728d..e2b3abd 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/HeaderBodyElement.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/HeaderBodyElement.java
@@ -27,14 +27,14 @@ import java.util.List;
 import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.message.response.FetchResponse.BodyElement;
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.Header;
 
 /**
  * {@link BodyElement} which represent a HEADER element specified by for example (BODY[1.HEADER])
  */
 public class HeaderBodyElement extends MimeBodyElement {
 
-    public HeaderBodyElement(String name, List<MessageResult.Header> headers) throws MailboxException {
+    public HeaderBodyElement(String name, List<Header> headers) throws MailboxException {
         super(name, headers);
     }
 
@@ -50,7 +50,7 @@ public class HeaderBodyElement extends MimeBodyElement {
     }
 
     @Override
-    protected long calculateSize(List<MessageResult.Header> headers) throws MailboxException {
+    protected long calculateSize(List<Header> headers) throws MailboxException {
         if (headers.isEmpty()) {
             // even if the headers are empty we need to include the headers body
             // seperator
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MessageResultUtils.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MessageResultUtils.java
index 4929415..3416670 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MessageResultUtils.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MessageResultUtils.java
@@ -28,7 +28,7 @@ import java.util.List;
 import javax.mail.MessagingException;
 
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.Header;
 
 public class MessageResultUtils {
 
@@ -36,14 +36,14 @@ public class MessageResultUtils {
      * Gets all header lines.
      * 
      * @param iterator
-     *            {@link org.apache.james.mailbox.MessageResult.Header} <code>Iterator</code>
+     *            {@link Header} <code>Iterator</code>
      * @return <code>List</code> of <code>MessageResult.Header<code>'s,
      * in their natural order
      * 
      * @throws MessagingException
      */
-    public static List<MessageResult.Header> getAll(Iterator<MessageResult.Header> iterator) {
-        final List<MessageResult.Header> results = new ArrayList<>();
+    public static List<Header> getAll(Iterator<Header> iterator) {
+        final List<Header> results = new ArrayList<>();
         if (iterator != null) {
             while (iterator.hasNext()) {
                 results.add(iterator.next());
@@ -59,16 +59,16 @@ public class MessageResultUtils {
      * @param names
      *            header names to be matched, not null
      * @param iterator
-     *            {@link org.apache.james.mailbox.MessageResult.Header} <code>Iterator</code>
+     *            {@link Header} <code>Iterator</code>
      * @return <code>List</code> of <code>MessageResult.Header</code>'s, in
      *         their natural order
      * @throws MessagingException
      */
-    public static List<MessageResult.Header> getMatching(String[] names, Iterator<MessageResult.Header> iterator) throws MailboxException {
-        final List<MessageResult.Header> results = new ArrayList<>(20);
+    public static List<Header> getMatching(String[] names, Iterator<Header> iterator) throws MailboxException {
+        final List<Header> results = new ArrayList<>(20);
         if (iterator != null) {
             while (iterator.hasNext()) {
-                MessageResult.Header header = iterator.next();
+                Header header = iterator.next();
                 final String headerName = header.getName();
                 if (headerName != null) {
                     if (Arrays.stream(names)
@@ -88,20 +88,20 @@ public class MessageResultUtils {
      * @param names
      *            header names to be matched, not null
      * @param iterator
-     *            {@link org.apache.james.mailbox.MessageResult.Header} <code>Iterator</code>
+     *            {@link Header} <code>Iterator</code>
      * @return <code>List</code> of <code>MessageResult.Header</code>'s, in
      *         their natural order
      * @throws MessagingException
      */
-    public static List<MessageResult.Header> getMatching(Collection<String> names, Iterator<MessageResult.Header> iterator) throws MailboxException {
+    public static List<Header> getMatching(Collection<String> names, Iterator<Header> iterator) throws MailboxException {
         return matching(names, iterator, false);
     }
 
-    private static List<MessageResult.Header> matching(Collection<String> names, Iterator<MessageResult.Header> iterator, boolean not) throws MailboxException {
-        final List<MessageResult.Header> results = new ArrayList<>(names.size());
+    private static List<Header> matching(Collection<String> names, Iterator<Header> iterator, boolean not) throws MailboxException {
+        final List<Header> results = new ArrayList<>(names.size());
         if (iterator != null) {
             while (iterator.hasNext()) {
-                final MessageResult.Header header = iterator.next();
+                final Header header = iterator.next();
                 final boolean match = contains(names, header);
                 final boolean add = (not && !match) || (!not && match);
                 if (add) {
@@ -112,7 +112,7 @@ public class MessageResultUtils {
         return results;
     }
 
-    private static boolean contains(Collection<String> names, MessageResult.Header header) throws MailboxException {
+    private static boolean contains(Collection<String> names, Header header) throws MailboxException {
         final String headerName = header.getName();
         if (headerName != null) {
             return names.stream().anyMatch(name -> name.equalsIgnoreCase(headerName));
@@ -127,12 +127,12 @@ public class MessageResultUtils {
      * @param names
      *            header names to be matched, not null
      * @param iterator
-     *            {@link org.apache.james.mailbox.MessageResult.Header} <code>Iterator</code>
+     *            {@link Header} <code>Iterator</code>
      * @return <code>List</code> of <code>MessageResult.Header</code>'s, in
      *         their natural order
      * @throws MessagingException
      */
-    public static List<MessageResult.Header> getNotMatching(Collection<String> names, Iterator<MessageResult.Header> iterator) throws MailboxException {
+    public static List<Header> getNotMatching(Collection<String> names, Iterator<Header> iterator) throws MailboxException {
         return matching(names, iterator, true);
     }
 
@@ -148,11 +148,11 @@ public class MessageResultUtils {
      *         exist
      * @throws MessagingException
      */
-    public static MessageResult.Header getMatching(String name, Iterator<MessageResult.Header> iterator) throws MailboxException {
-        MessageResult.Header result = null;
+    public static Header getMatching(String name, Iterator<Header> iterator) throws MailboxException {
+        Header result = null;
         if (name != null) {
             while (iterator.hasNext()) {
-                MessageResult.Header header = iterator.next();
+                Header header = iterator.next();
                 final String headerName = header.getName();
                 if (name.equalsIgnoreCase(headerName)) {
                     result = header;
@@ -170,16 +170,16 @@ public class MessageResultUtils {
      * @param names
      *            header names, not null
      * @param iterator
-     *            {@link org.apache.james.mailbox.MessageResult.Header} <code>Iterator</code>
+     *            {@link Header} <code>Iterator</code>
      * @return <code>List</code> of <code>@MessageResult.Header</code>'s, in
      *         their natural order
      * @throws MessagingException
      */
-    public static List<MessageResult.Header> getNotMatching(String[] names, Iterator<MessageResult.Header> iterator) throws MailboxException {
-        final List<MessageResult.Header> results = new ArrayList<>(20);
+    public static List<Header> getNotMatching(String[] names, Iterator<Header> iterator) throws MailboxException {
+        final List<Header> results = new ArrayList<>(20);
         if (iterator != null) {
             while (iterator.hasNext()) {
-                MessageResult.Header header = iterator.next();
+                Header header = iterator.next();
                 final String headerName = header.getName();
                 if (headerName != null) {
                     boolean match = Arrays.stream(names)
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimeBodyElement.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimeBodyElement.java
index 9d8466a..9991dcf 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimeBodyElement.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimeBodyElement.java
@@ -28,7 +28,7 @@ import java.util.List;
 import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.message.response.FetchResponse.BodyElement;
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.Header;
 
 
 /**
@@ -38,13 +38,13 @@ import org.apache.james.mailbox.model.MessageResult;
 public class MimeBodyElement implements BodyElement {
     private final String name;
 
-    protected final List<MessageResult.Header> headers;
+    protected final List<Header> headers;
 
     protected long size;
     private static final Charset US_ASCII = Charset.forName("US-ASCII");
 
 
-    public MimeBodyElement(String name, List<MessageResult.Header> headers) throws MailboxException {
+    public MimeBodyElement(String name, List<Header> headers) throws MailboxException {
         super();
         this.name = name;
         this.headers = headers;
@@ -58,13 +58,13 @@ public class MimeBodyElement implements BodyElement {
     }
     
 
-    protected long calculateSize(List<MessageResult.Header> headers) throws MailboxException {
+    protected long calculateSize(List<Header> headers) throws MailboxException {
         final int result;
         if (headers.isEmpty()) {
            result = 0;
         } else {
             int count = 0;
-            for (MessageResult.Header header : headers) {
+            for (Header header : headers) {
                 count += header.size() + ImapConstants.LINE_END.length();
             }
             result = count + ImapConstants.LINE_END.length();
@@ -82,7 +82,7 @@ public class MimeBodyElement implements BodyElement {
     public InputStream getInputStream() throws IOException {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
 
-        for (MessageResult.Header header : headers) {
+        for (Header header : headers) {
             out.write((header.getName() + ": " + header.getValue() + ImapConstants.LINE_END).getBytes(US_ASCII));
         }
         // no empty line with CRLF for MIME headers. See IMAP-297
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/MailboxMessageResultUtilsTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/MailboxMessageResultUtilsTest.java
index 751389c..c77374e 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/MailboxMessageResultUtilsTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/MailboxMessageResultUtilsTest.java
@@ -22,11 +22,10 @@ package org.apache.james.imap.processor.fetch;
 import static org.apache.james.imap.processor.fetch.MessageResultUtils.getMatching;
 import static org.assertj.core.api.Assertions.assertThat;
 
-import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.Header;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -40,48 +39,13 @@ public class MailboxMessageResultUtilsTest {
 
     Header headerThree;
 
-    List<MessageResult.Header> headers;
-
-    private static class Header implements MessageResult.Header {
-
-        public String name;
-
-        public String value;
-
-        public Header(String name) {
-            this.name = name;
-            value = "Value";
-        }
-
-        @Override
-        public long size() {
-            return 0;
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public String getValue() {
-            return value;
-        }
-
-        
-        @Override
-        public InputStream getInputStream() {
-            return null;
-        }
-
-
-    }
+    List<Header> headers;
 
     @Before
     public void setUp() throws Exception {
-        headerOne = new Header("One");
-        headerTwo = new Header("Two");
-        headerThree = new Header("Three");
+        headerOne = new Header("One", "Value");
+        headerTwo = new Header("Two", "Value");
+        headerThree = new Header("Three", "Value");
         headers = new ArrayList<>();
         headers.add(headerOne);
         headers.add(headerTwo);
@@ -90,7 +54,7 @@ public class MailboxMessageResultUtilsTest {
 
     @Test
     public void testGetAllContent() {
-        List<MessageResult.Header> results = MessageResultUtils.getAll(headers.iterator());
+        List<Header> results = MessageResultUtils.getAll(headers.iterator());
         assertThat(results.size()).isEqualTo(3);
         assertThat(results.get(0)).isEqualTo(headerOne);
         assertThat(results.get(1)).isEqualTo(headerTwo);
@@ -99,8 +63,7 @@ public class MailboxMessageResultUtilsTest {
 
     @Test
     public void testGetMatching() throws Exception {
-
-        List<MessageResult.Header> results = MessageResultUtils
+        List<Header> results = MessageResultUtils
                 .getMatching(NAMES, headers.iterator());
         assertThat(results.size()).isEqualTo(2);
         assertThat(results.get(0)).isEqualTo(headerOne);
@@ -109,8 +72,7 @@ public class MailboxMessageResultUtilsTest {
 
     @Test
     public void testGetNotMatching() throws Exception {
-
-        List<MessageResult.Header> results = MessageResultUtils.getNotMatching(NAMES, headers
+        List<Header> results = MessageResultUtils.getNotMatching(NAMES, headers
                 .iterator());
         assertThat(results.size()).isEqualTo(1);
         assertThat(results.get(0)).isEqualTo(headerTwo);
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java
index 410c17d..bfc1c30 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java
@@ -33,11 +33,11 @@ import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.Header;
 import org.apache.james.mailbox.model.Headers;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.Header;
 import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.util.streams.Iterators;


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