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 2018/12/19 04:10:39 UTC

[13/13] james-project git commit: MAILBOX-359 Compose MessageMetaData in MessageResult

MAILBOX-359 Compose MessageMetaData in MessageResult


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1c3c3e56
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1c3c3e56
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1c3c3e56

Branch: refs/heads/master
Commit: 1c3c3e569dfc02ba98cc44237fc44472bf81ceba
Parents: ef2c68c
Author: Benoit Tellier <bt...@linagora.com>
Authored: Mon Dec 17 16:39:12 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Dec 19 10:58:07 2018 +0700

----------------------------------------------------------------------
 .../james/mailbox/model/MessageResult.java      | 21 ++++-
 .../james/mailbox/store/MessageResultImpl.java  | 26 +++---
 .../store/StoreMessageResultIterator.java       | 94 +++++++++-----------
 .../AbstractMessageIdManagerSideEffectTest.java | 11 +--
 .../base/MailboxEventAnalyserTest.java          |  1 +
 .../james/jmap/methods/GetMessagesMethod.java   |  3 +-
 6 files changed, 81 insertions(+), 75 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1c3c3e56/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
----------------------------------------------------------------------
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 b0591bd..8bd39aa 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
@@ -20,12 +20,15 @@
 package org.apache.james.mailbox.model;
 
 import java.io.IOException;
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
+import javax.mail.Flags;
 import javax.mail.MessagingException;
 
+import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 
 
@@ -57,7 +60,20 @@ import org.apache.james.mailbox.exception.MailboxException;
  * </p>
  */
 
-public interface MessageResult extends Comparable<MessageResult>, MessageMetaData {
+public interface MessageResult extends Comparable<MessageResult> {
+    MessageId getMessageId();
+
+    Date getInternalDate();
+
+    Flags getFlags();
+
+    long getSize();
+
+    MessageMetaData messageMetaData();
+
+    MessageUid getUid();
+
+    long getModSeq();
 
     /**
      * Indicates the results fetched.
@@ -264,7 +280,4 @@ public interface MessageResult extends Comparable<MessageResult>, MessageMetaDat
          */
         int[] getPositions();
     }
-
-    @Override
-    MessageId getMessageId();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c3c3e56/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
----------------------------------------------------------------------
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 05b910a..03caa8c 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
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.Headers;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageAttachment;
 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.store.mail.model.MailboxMessage;
@@ -68,33 +69,43 @@ public class MessageResultImpl implements MessageResult {
     }
 
     @Override
+    public MessageMetaData messageMetaData() {
+        return message.metaData();
+    }
+
+    @Override
     public MailboxId getMailboxId() {
         return message.getMailboxId();
     }
 
     @Override
     public MessageUid getUid() {
-        return message.getUid();
+        return messageMetaData().getUid();
     }
 
     @Override
     public MessageId getMessageId() {
-        return message.getMessageId();
+        return messageMetaData().getMessageId();
     }
     
     @Override
     public Date getInternalDate() {
-        return message.getInternalDate();
+        return messageMetaData().getInternalDate();
     }
 
     @Override
     public Flags getFlags() {
-        return message.createFlags();
+        return messageMetaData().getFlags();
+    }
+
+    @Override
+    public long getModSeq() {
+        return messageMetaData().getModSeq();
     }
 
     @Override
     public long getSize() {
-        return message.getFullContentOctets();
+        return messageMetaData().getSize();
     }
 
     @Override
@@ -318,11 +329,6 @@ public class MessageResultImpl implements MessageResult {
         }
         return mimeDescriptor;
     }
-
-    @Override
-    public long getModSeq() {
-        return message.getModSeq();
-    }
     
     @Override
     public Headers getHeaders() throws MailboxException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c3c3e56/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
----------------------------------------------------------------------
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 4a6965b..664d91c 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
@@ -22,6 +22,7 @@ import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
+import java.util.Objects;
 
 import javax.mail.Flags;
 
@@ -32,6 +33,7 @@ import org.apache.james.mailbox.model.Headers;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageRange.Type;
 import org.apache.james.mailbox.model.MessageResult;
@@ -45,8 +47,6 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Objects;
-
 public class StoreMessageResultIterator implements MessageResultIterator {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(StoreMessageResultIterator.class);
@@ -187,7 +187,7 @@ public class StoreMessageResultIterator implements MessageResultIterator {
         MessageResult result;
         try {
             result = ResultUtils.loadMessageResult(message, group);
-            cursor = result.getUid();
+            cursor = result.messageMetaData().getUid();
         } catch (MailboxException e) {
             result = new UnloadedMessageResult(message, e);
         }
@@ -209,93 +209,88 @@ public class StoreMessageResultIterator implements MessageResultIterator {
     private static final class UnloadedMessageResult implements MessageResult {
         private final MailboxException exception;
 
-        private final Date internalDate;
-
-        private final long size;
-
-        private final MessageUid uid;
-
-        private final Flags flags;
-
+        private final MessageMetaData messageMetaData;
         private final MessageId messageId;
-
-        private long modSeq = -1;
-
         private final MailboxId mailboxId;
 
         public UnloadedMessageResult(MailboxMessage message, MailboxException exception) {
-            super();
-            internalDate = message.getInternalDate();
-            size = message.getFullContentOctets();
-            uid = message.getUid();
-            flags = message.createFlags();
-            modSeq = message.getModSeq();
+            messageMetaData = message.metaData();
             mailboxId = message.getMailboxId();
             messageId = message.getMessageId();
             this.exception = exception;
         }
 
         @Override
-        public MailboxId getMailboxId() {
-            return mailboxId;
+        public MessageMetaData messageMetaData() {
+            return messageMetaData;
         }
 
         @Override
-        public Flags getFlags() {
-            return flags;
+        public MessageUid getUid() {
+            return messageMetaData().getUid();
         }
 
         @Override
-        public Content getFullContent() throws MailboxException {
-            throw exception;
+        public MessageId getMessageId() {
+            return messageMetaData().getMessageId();
         }
 
         @Override
         public Date getInternalDate() {
-            return internalDate;
+            return messageMetaData().getInternalDate();
         }
 
         @Override
-        public Content getBody() throws MailboxException {
-            throw exception;
+        public Flags getFlags() {
+            return messageMetaData().getFlags();
+        }
+
+        @Override
+        public long getModSeq() {
+            return messageMetaData().getModSeq();
         }
 
         @Override
         public long getSize() {
-            return size;
+            return messageMetaData().getSize();
         }
 
         @Override
-        public MessageUid getUid() {
-            return uid;
+        public MailboxId getMailboxId() {
+            return mailboxId;
         }
 
         @Override
-        public MessageId getMessageId() {
-            return messageId;
+        public Content getFullContent() throws MailboxException {
+            throw exception;
+        }
+
+        @Override
+        public Content getBody() throws MailboxException {
+            throw exception;
         }
         
         @Override
         public int compareTo(MessageResult that) {
-            return uid.compareTo(that.getUid());
+            return getUid().compareTo(that.getUid());
         }
 
         @Override
-        public int hashCode() {
-            return Objects.hashCode(exception, internalDate, size, uid, flags, modSeq, messageId);
+        public final boolean equals(Object o) {
+            if (o instanceof UnloadedMessageResult) {
+                UnloadedMessageResult that = (UnloadedMessageResult) o;
+
+                return Objects.equals(this.exception, that.exception)
+                    && Objects.equals(this.messageMetaData, that.messageMetaData)
+                    && Objects.equals(this.messageId, that.messageId)
+                    && Objects.equals(this.mailboxId, that.mailboxId);
+            }
+            return false;
         }
 
         @Override
-        public boolean equals(Object obj) {
-            if (this == obj) {
-                return true;
-            }
-            if (obj instanceof UnloadedMessageResult) {
-                UnloadedMessageResult that = (UnloadedMessageResult)obj;
-                return (size == that.size) && (uid.equals(that.uid)) && (modSeq == that.modSeq) && exception.equals(that.exception)
-                        && internalDate.equals(that.internalDate) && flags.equals(that.flags);
-            }
-            return false;
+        public final int hashCode() {
+            return Objects.hash(exception, messageMetaData, messageId, mailboxId);
         }
 
         @Override
@@ -329,11 +324,6 @@ public class StoreMessageResultIterator implements MessageResultIterator {
         }
 
         @Override
-        public long getModSeq() {
-            return modSeq;
-        }
-
-        @Override
         public Headers getHeaders() throws MailboxException {
             throw exception;
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c3c3e56/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index b2a3050..b916395 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -47,6 +47,7 @@ import org.apache.james.mailbox.exception.OverQuotaException;
 import org.apache.james.mailbox.fixture.MailboxFixture;
 import org.apache.james.mailbox.model.FetchGroupImpl;
 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.Quota;
 import org.apache.james.mailbox.model.QuotaRoot;
@@ -105,7 +106,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
         reset(dispatcher);
 
         MessageResult messageResult = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session).get(0);
-        SimpleMessageMetaData simpleMessageMetaData = fromMessageResult(messageId, messageResult);
+        MessageMetaData simpleMessageMetaData = messageResult.messageMetaData();
 
         messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
 
@@ -121,9 +122,9 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
         reset(dispatcher);
 
         MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session).get(0);
-        SimpleMessageMetaData simpleMessageMetaData1 = fromMessageResult(messageId1, messageResult1);
+        MessageMetaData simpleMessageMetaData1 = messageResult1.messageMetaData();
         MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroupImpl.MINIMAL, session).get(0);
-        SimpleMessageMetaData simpleMessageMetaData2 = fromMessageResult(messageId2, messageResult2);
+        MessageMetaData simpleMessageMetaData2 = messageResult2.messageMetaData();
 
         messageIdManager.delete(ImmutableList.of(messageId1, messageId2), session);
 
@@ -355,8 +356,4 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
         when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(
             Quota.<QuotaSize>builder().used(QuotaSize.size(2)).computedLimit(QuotaSize.unlimited()).build());
     }
-
-    private SimpleMessageMetaData fromMessageResult(MessageId messageId, MessageResult messageResult) {
-        return new SimpleMessageMetaData(messageResult.getUid(), messageResult.getModSeq(), messageResult.getFlags(), messageResult.getSize(), messageResult.getInternalDate(), messageId);
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c3c3e56/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
index 55e4d0c..e26ff4f 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
@@ -41,6 +41,7 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MessageResultIterator;
 import org.apache.james.mailbox.model.TestId;

http://git-wip-us.apache.org/repos/asf/james-project/blob/1c3c3e56/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
index 1c97156..ca05d89 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
@@ -44,7 +44,6 @@ import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.FetchGroupImpl;
 import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.util.MDCBuilder;
@@ -170,7 +169,7 @@ public class GetMessagesMethod implements Method {
                 .collect(Guavate.toImmutableList());
             try {
                 Keywords keywords = messageResults.stream()
-                    .map(MessageMetaData::getFlags)
+                    .map(MessageResult::getFlags)
                     .map(keywordsFactory::fromFlags)
                     .reduce(ACCUMULATOR)
                     .get();


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