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