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 <[email protected]> Authored: Mon Dec 17 16:39:12 2018 +0700 Committer: Benoit Tellier <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
