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:23 UTC

[james-project] 06/23: JAMES-2989 POJOify MimePath

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 11424cc5fe78504ab510266c0d2a2c4d6537ef80
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:28:04 2019 +0700

    JAMES-2989 POJOify MimePath
---
 .../apache/james/mailbox/model/FetchGroupImpl.java |  2 --
 .../apache/james/mailbox/model/MessageResult.java  | 14 ------------
 .../model/{MimePathImpl.java => MimePath.java}     | 25 ++++++++++++++++------
 .../mailbox/model/PartContentDescriptorImpl.java   |  2 --
 .../{MimePathImplTest.java => MimePathTest.java}   | 10 ++++-----
 .../james/mailbox/store/MessageResultImpl.java     |  1 +
 .../apache/james/mailbox/store/ResultUtils.java    |  2 +-
 .../mailbox/store/StoreMessageResultIterator.java  |  1 +
 .../james/imap/processor/fetch/FetchProcessor.java |  5 ++---
 .../imap/processor/fetch/FetchResponseBuilder.java | 10 ++++-----
 10 files changed, 34 insertions(+), 38 deletions(-)

diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
index d3b8d62..7cafe91 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
@@ -22,8 +22,6 @@ package org.apache.james.mailbox.model;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.james.mailbox.model.MessageResult.MimePath;
-
 /**
  * Specifies a fetch group.
  */
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 2cb24c1..7ed64f5 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
@@ -266,19 +266,5 @@ public interface MessageResult extends Comparable<MessageResult> {
      * Indicates if the message have attachments, regardless of loaded attachments.
      */
     boolean hasAttachments() throws MailboxException;
-    
-    /**
-     * Describes a path within a multipart MIME message. All implementations
-     * must implement equals. Two paths are equal if and only if each position
-     * is identical.
-     */
-    interface MimePath {
 
-        /**
-         * Gets the positions of each part in the path.
-         * 
-         * @return part positions describing the path
-         */
-        int[] getPositions();
-    }
 }
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePath.java
similarity index 73%
rename from mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
rename to mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePath.java
index 0548429..f77a5ea 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePath.java
@@ -23,23 +23,36 @@
 package org.apache.james.mailbox.model;
 
 import java.util.Arrays;
+import java.util.List;
 
-public class MimePathImpl implements MessageResult.MimePath {
+import com.github.steveash.guavate.Guavate;
+import com.google.common.base.Joiner;
+
+/**
+ * Describes a path within a multipart MIME message. All implementations
+ * must implement equals. Two paths are equal if and only if each position
+ * is identical.
+ */
+public final class MimePath {
     private final int[] positions;
 
-    public MimePathImpl(int[] positions) {
-        this.positions = positions;
+    public MimePath(int[] positions) {
+        this.positions = Arrays.copyOf(positions, positions.length);
     }
 
-    @Override
+    /**
+     * Gets the positions of each part in the path.
+     *
+     * @return part positions describing the path
+     */
     public int[] getPositions() {
         return positions;
     }
 
     @Override
     public final boolean equals(Object o) {
-        if (o instanceof MimePathImpl) {
-            MimePathImpl mimePath = (MimePathImpl) o;
+        if (o instanceof MimePath) {
+            MimePath mimePath = (MimePath) o;
 
             return Arrays.equals(this.positions, mimePath.positions);
         }
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
index 6072220..e0761f4 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
@@ -22,8 +22,6 @@ package org.apache.james.mailbox.model;
 import java.util.Objects;
 
 import org.apache.james.mailbox.model.MessageResult.FetchGroup.PartContentDescriptor;
-import org.apache.james.mailbox.model.MessageResult.MimePath;
-
 
 public class PartContentDescriptorImpl implements PartContentDescriptor {
 
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java
similarity index 88%
rename from mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java
rename to mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java
index ff649d2..3715a40 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java
@@ -25,31 +25,31 @@ import org.junit.jupiter.api.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
-class MimePathImplTest {
+class MimePathTest {
     @Test
     void shouldMatchBeanContract() {
-        EqualsVerifier.forClass(MimePathImpl.class)
+        EqualsVerifier.forClass(MimePath.class)
             .verify();
     }
 
     @Test
     void toStringWhenEmpty() {
         int[] empty = {};
-        assertThat(new MimePathImpl(empty).toString())
+        assertThat(new MimePath(empty).toString())
             .isEqualTo("MIMEPath:[]");
     }
 
     @Test
     void toStringWhenSingle() {
         int[] single = {1};
-        assertThat(new MimePathImpl(single).toString())
+        assertThat(new MimePath(single).toString())
             .isEqualTo("MIMEPath:[1]");
     }
 
     @Test
     void toStringWhenMany() {
         int[] many = {1, 2, 3};
-        assertThat(new MimePathImpl(many).toString())
+        assertThat(new MimePath(many).toString())
             .isEqualTo("MIMEPath:[1, 2, 3]");
     }
 }
\ No newline at end of file
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 0e4e4a1..46a92c9 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
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MimeDescriptor;
+import org.apache.james.mailbox.model.MimePath;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.streaming.InputStreamContent;
 import org.apache.james.mailbox.store.streaming.InputStreamContent.Type;
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 96a64ac..e83d74d 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
@@ -29,7 +29,7 @@ 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.FetchGroup;
-import org.apache.james.mailbox.model.MessageResult.MimePath;
+import org.apache.james.mailbox.model.MimePath;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.streaming.PartContentBuilder;
 import org.apache.james.mime4j.MimeException;
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 c18d1f8..aec7a7d 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
@@ -44,6 +44,7 @@ import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MessageResult.FetchGroup;
 import org.apache.james.mailbox.model.MessageResultIterator;
 import org.apache.james.mailbox.model.MimeDescriptor;
+import org.apache.james.mailbox.model.MimePath;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
index ebe12e5..03ba656 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
@@ -47,9 +47,8 @@ import org.apache.james.mailbox.model.FetchGroupImpl;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MessageResult.FetchGroup;
-import org.apache.james.mailbox.model.MessageResult.MimePath;
 import org.apache.james.mailbox.model.MessageResultIterator;
-import org.apache.james.mailbox.model.MimePathImpl;
+import org.apache.james.mailbox.model.MimePath;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.util.MDCBuilder;
 import org.slf4j.Logger;
@@ -234,7 +233,7 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
         if (isBase) {
             result.or(content);
         } else {
-            MimePath mimePath = new MimePathImpl(path);
+            MimePath mimePath = new MimePath(path);
             result.addPartContent(mimePath, content);
         }
     }
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 29b9535..36329fd 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
@@ -46,7 +46,7 @@ import org.apache.james.mailbox.exception.MessageRangeException;
 import org.apache.james.mailbox.model.Content;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MimePathImpl;
+import org.apache.james.mailbox.model.MimePath;
 
 public final class FetchResponseBuilder {
 
@@ -290,7 +290,7 @@ public final class FetchResponseBuilder {
                 throw new MailboxException("Unable to get TEXT of body", e);
             }
         } else {
-            MessageResult.MimePath mimePath = new MimePathImpl(path);
+            MimePath mimePath = new MimePath(path);
             body = messageResult.getBody(mimePath);
         }
         if (body == null) {
@@ -378,14 +378,14 @@ public final class FetchResponseBuilder {
         if (isBase) {
             headers = messageResult.getHeaders().headers();
         } else {
-            MessageResult.MimePath mimePath = new MimePathImpl(path);
+            MimePath mimePath = new MimePath(path);
             headers = messageResult.iterateHeaders(mimePath);
         }
         return headers;
     }
 
     private Iterator<MessageResult.Header> getMimeHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException {
-        MessageResult.MimePath mimePath = new MimePathImpl(path);
+        MimePath mimePath = new MimePath(path);
         return messageResult.iterateMimeHeaders(mimePath);
     }
 
@@ -400,7 +400,7 @@ public final class FetchResponseBuilder {
                 throw new MailboxException("Unable to get content", e);
             }
         } else {
-            MessageResult.MimePath mimePath = new MimePathImpl(path);
+            MimePath mimePath = new MimePath(path);
             full = messageResult.getMimeBody(mimePath);
         }
 


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