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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
