You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/12/12 06:13:46 UTC
[james-project] 03/08: JAMES-3754 Add saveDate field to MessageResult
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 574a3204e7265a8e465d82ae7922bc9f7f0c097b
Author: Quan Tran <hq...@linagora.com>
AuthorDate: Wed Nov 30 16:06:45 2022 +0700
JAMES-3754 Add saveDate field to MessageResult
---
.../custom/listeners/SetCustomFlagOnBigMessagesTest.java | 3 ++-
.../org/apache/james/mailbox/model/MessageMetaData.java | 9 ++++++++-
.../org/apache/james/mailbox/model/MessageResult.java | 3 +++
.../test/java/org/apache/james/mailbox/EventTest.java | 9 +++++----
.../org/apache/james/mailbox/MailboxListenerTest.java | 2 +-
.../main/scala/org/apache/james/event/json/DTOs.scala | 5 +++--
.../apache/james/event/json/AddedSerializationTest.java | 13 ++++++++++---
.../james/event/json/ExpungedSerializationTest.java | 16 +++++++++++-----
.../apache/james/mailbox/store/MessageResultImpl.java | 6 ++++++
.../james/mailbox/store/StoreMessageResultIterator.java | 6 ++++++
.../james/mailbox/store/mail/model/MailboxMessage.java | 2 +-
.../apache/james/mailbox/store/PreDeletionHooksTest.java | 3 ++-
.../mailbox/store/mail/model/MetadataMapAssertTest.java | 9 +++++----
.../store/quota/ListeningCurrentQuotaUpdaterTest.java | 8 ++++----
.../imap/processor/base/MailboxEventAnalyserTest.java | 3 ++-
.../imap/processor/base/SelectedMailboxImplTest.java | 3 ++-
16 files changed, 71 insertions(+), 29 deletions(-)
diff --git a/examples/custom-listeners/src/test/java/org/apache/james/examples/custom/listeners/SetCustomFlagOnBigMessagesTest.java b/examples/custom-listeners/src/test/java/org/apache/james/examples/custom/listeners/SetCustomFlagOnBigMessagesTest.java
index 04a0f84e37..bc1aba81c4 100644
--- a/examples/custom-listeners/src/test/java/org/apache/james/examples/custom/listeners/SetCustomFlagOnBigMessagesTest.java
+++ b/examples/custom-listeners/src/test/java/org/apache/james/examples/custom/listeners/SetCustomFlagOnBigMessagesTest.java
@@ -25,6 +25,7 @@ import static org.apache.james.mailbox.events.MailboxEvents.Added.IS_DELIVERY;
import static org.assertj.core.api.Assertions.assertThat;
import java.nio.charset.StandardCharsets;
+import java.util.Optional;
import java.util.stream.Stream;
import javax.mail.Flags;
@@ -129,7 +130,7 @@ class SetCustomFlagOnBigMessagesTest {
.getMessages(MessageRange.one(composedIdOfSmallMessage.getUid()), FetchGroup.MINIMAL, mailboxSession)
.next();
MessageMetaData oneMBMetaData = new MessageMetaData(addedMessage.getUid(), addedMessage.getModSeq(),
- addedMessage.getFlags(), ONE_MB, addedMessage.getInternalDate(), addedMessage.getMessageId(), addedMessage.getThreadId());
+ addedMessage.getFlags(), ONE_MB, addedMessage.getInternalDate(), Optional.empty(), addedMessage.getMessageId(), addedMessage.getThreadId());
Event eventWithAFakeMessageSize = EventFactory.added()
.eventId(RANDOM_EVENT_ID)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMetaData.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMetaData.java
index de6fe30802..ed2e7be9a8 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMetaData.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMetaData.java
@@ -19,6 +19,7 @@
package org.apache.james.mailbox.model;
import java.util.Date;
+import java.util.Optional;
import javax.mail.Flags;
@@ -32,16 +33,18 @@ public class MessageMetaData {
private final Flags flags;
private final long size;
private final Date internalDate;
+ private final Optional<Date> saveDate;
private final ModSeq modSeq;
private final MessageId messageId;
private final ThreadId threadId;
- public MessageMetaData(MessageUid uid, ModSeq modSeq, Flags flags, long size, Date internalDate, MessageId messageId, ThreadId threadId) {
+ public MessageMetaData(MessageUid uid, ModSeq modSeq, Flags flags, long size, Date internalDate, Optional<Date> saveDate, MessageId messageId, ThreadId threadId) {
this.uid = uid;
this.flags = flags;
this.size = size;
this.modSeq = modSeq;
this.internalDate = internalDate;
+ this.saveDate = saveDate;
this.messageId = messageId;
this.threadId = threadId;
}
@@ -67,6 +70,10 @@ public class MessageMetaData {
return internalDate;
}
+ public Optional<Date> getSaveDate() {
+ return saveDate;
+ }
+
public MessageUid getUid() {
return uid;
}
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 331ddf6dc5..a4d84958d5 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
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import java.util.Optional;
import javax.mail.Flags;
@@ -64,6 +65,8 @@ public interface MessageResult extends Comparable<MessageResult> {
ThreadId getThreadId();
+ Optional<Date> getSaveDate();
+
Date getInternalDate();
Flags getFlags();
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/EventTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/EventTest.java
index c084becb09..14d6d89e36 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/EventTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/EventTest.java
@@ -23,6 +23,7 @@ import static org.apache.james.mailbox.events.MailboxEvents.Added.IS_DELIVERY;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Date;
+import java.util.Optional;
import java.util.UUID;
import javax.mail.Flags;
@@ -69,8 +70,8 @@ class EventTest {
MessageUid uid2 = MessageUid.of(37);
TestMessageId messageId1 = TestMessageId.of(45);
TestMessageId messageId2 = TestMessageId.of(46);
- MessageMetaData metaData1 = new MessageMetaData(uid1, ModSeq.of(85), new Flags(), 36, new Date(), messageId1, ThreadId.fromBaseMessageId(messageId1));
- MessageMetaData metaData2 = new MessageMetaData(uid2, ModSeq.of(85), new Flags(), 36, new Date(), messageId2, ThreadId.fromBaseMessageId(messageId2));
+ MessageMetaData metaData1 = new MessageMetaData(uid1, ModSeq.of(85), new Flags(), 36, new Date(), Optional.empty(), messageId1, ThreadId.fromBaseMessageId(messageId1));
+ MessageMetaData metaData2 = new MessageMetaData(uid2, ModSeq.of(85), new Flags(), 36, new Date(), Optional.empty(), messageId2, ThreadId.fromBaseMessageId(messageId2));
Added added = new Added(MailboxSession.SessionId.of(36), BOB, MailboxPath.inbox(BOB), TestId.of(48),
ImmutableSortedMap.of(
@@ -86,8 +87,8 @@ class EventTest {
MessageUid uid1 = MessageUid.of(36);
MessageUid uid2 = MessageUid.of(37);
TestMessageId messageId = TestMessageId.of(45);
- MessageMetaData metaData1 = new MessageMetaData(uid1, ModSeq.of(85), new Flags(), 36, new Date(), messageId, ThreadId.fromBaseMessageId(messageId));
- MessageMetaData metaData2 = new MessageMetaData(uid2, ModSeq.of(85), new Flags(), 36, new Date(), messageId, ThreadId.fromBaseMessageId(messageId));
+ MessageMetaData metaData1 = new MessageMetaData(uid1, ModSeq.of(85), new Flags(), 36, new Date(), Optional.empty(), messageId, ThreadId.fromBaseMessageId(messageId));
+ MessageMetaData metaData2 = new MessageMetaData(uid2, ModSeq.of(85), new Flags(), 36, new Date(), Optional.empty(), messageId, ThreadId.fromBaseMessageId(messageId));
Added added = new Added(MailboxSession.SessionId.of(36), BOB, MailboxPath.inbox(BOB), TestId.of(48),
ImmutableSortedMap.of(
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxListenerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxListenerTest.java
index af96c1cdca..236f1d5e9a 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxListenerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxListenerTest.java
@@ -74,7 +74,7 @@ class MailboxListenerTest {
private static final MailboxACL ACL_2 = new MailboxACL(
Pair.of(MailboxACL.EntryKey.createUserEntryKey(Username.of("Bob")), new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read)));
private static final MessageUid UID = MessageUid.of(85);
- private static final MessageMetaData META_DATA = new MessageMetaData(UID, ModSeq.of(45), new Flags(), 45, new Date(), TestMessageId.of(75), ThreadId.fromBaseMessageId(TestMessageId.of(75)));
+ private static final MessageMetaData META_DATA = new MessageMetaData(UID, ModSeq.of(45), new Flags(), 45, new Date(), Optional.of(new Date()), TestMessageId.of(75), ThreadId.fromBaseMessageId(TestMessageId.of(75)));
@Test
void mailboxAddedShouldMatchBeanContract() {
diff --git a/mailbox/event/json/src/main/scala/org/apache/james/event/json/DTOs.scala b/mailbox/event/json/src/main/scala/org/apache/james/event/json/DTOs.scala
index 33efeac146..6c0afb3c04 100644
--- a/mailbox/event/json/src/main/scala/org/apache/james/event/json/DTOs.scala
+++ b/mailbox/event/json/src/main/scala/org/apache/james/event/json/DTOs.scala
@@ -90,12 +90,13 @@ object DTOs {
Flags.fromJavaFlags(javaMessageMetaData.getFlags),
javaMessageMetaData.getSize,
javaMessageMetaData.getInternalDate.toInstant,
+ javaMessageMetaData.getSaveDate.map(_.toInstant).toScala,
javaMessageMetaData.getMessageId,
Option(javaMessageMetaData.getThreadId))
}
- case class MessageMetaData(uid: MessageUid, modSeq: ModSeq, flags: Flags, size: Long, internalDate: Instant, messageId: MessageId, threadId: Option[ThreadId]) {
- def toJava: JavaMessageMetaData = new JavaMessageMetaData(uid, modSeq, Flags.toJavaFlags(flags), size, Date.from(internalDate), messageId, retrieveThreadId)
+ case class MessageMetaData(uid: MessageUid, modSeq: ModSeq, flags: Flags, size: Long, internalDate: Instant, saveDate: Option[Instant], messageId: MessageId, threadId: Option[ThreadId]) {
+ def toJava: JavaMessageMetaData = new JavaMessageMetaData(uid, modSeq, Flags.toJavaFlags(flags), size, Date.from(internalDate), saveDate.map(Date.from).toJava, messageId, retrieveThreadId)
def retrieveThreadId: ThreadId = threadId.getOrElse(ThreadId.fromBaseMessageId(messageId))
}
diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/AddedSerializationTest.java b/mailbox/event/json/src/test/java/org/apache/james/event/json/AddedSerializationTest.java
index 40df84bb4c..8af651840b 100644
--- a/mailbox/event/json/src/test/java/org/apache/james/event/json/AddedSerializationTest.java
+++ b/mailbox/event/json/src/test/java/org/apache/james/event/json/AddedSerializationTest.java
@@ -23,12 +23,14 @@ import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
import static org.apache.james.event.json.SerializerFixture.EVENT_ID;
import static org.apache.james.event.json.SerializerFixture.EVENT_SERIALIZER;
import static org.apache.james.mailbox.events.MailboxEvents.Added.IS_DELIVERY;
+import static org.apache.james.mailbox.store.mail.model.MailboxMessage.EMPTY_SAVE_DATE;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.time.Instant;
import java.util.Date;
import java.util.NoSuchElementException;
+import java.util.Optional;
import java.util.SortedMap;
import javax.mail.Flags;
@@ -68,11 +70,14 @@ class AddedSerializationTest {
.add("User Custom Flag")
.build();
private static final SortedMap<MessageUid, MessageMetaData> ADDED = ImmutableSortedMap.of(
- MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
+ MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), Optional.of(Date.from(INSTANT)), MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
+ private static final SortedMap<MessageUid, MessageMetaData> BACKWARD_ADDED = ImmutableSortedMap.of(
+ MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), EMPTY_SAVE_DATE, MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
private static final SortedMap<MessageUid, MessageMetaData> ADDED_WITH_DISTINCT_MESSAGE_ID_AND_THREAD_ID = ImmutableSortedMap.of(
- MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), MESSAGE_ID, ThreadId.fromBaseMessageId(TestMessageId.of(100))));
+ MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), Optional.of(Date.from(INSTANT)), MESSAGE_ID, ThreadId.fromBaseMessageId(TestMessageId.of(100))));
private static final Added DEFAULT_ADDED_EVENT = new Added(SESSION_ID, USERNAME, MAILBOX_PATH, MAILBOX_ID, ADDED, EVENT_ID, !IS_DELIVERY);
+ private static final Added BACKWARD_ADDED_EVENT = new Added(SESSION_ID, USERNAME, MAILBOX_PATH, MAILBOX_ID, BACKWARD_ADDED, EVENT_ID, !IS_DELIVERY);
private static final Added ADDED_WITH_DISTINCT_MESSAGE_ID_AND_THREAD_ID_EVENT = new Added(
SESSION_ID, USERNAME, MAILBOX_PATH, MAILBOX_ID, ADDED_WITH_DISTINCT_MESSAGE_ID_AND_THREAD_ID, EVENT_ID, !IS_DELIVERY);
private static final String DEFAULT_ADDED_EVENT_JSON =
@@ -94,6 +99,7 @@ class AddedSerializationTest {
" \"userFlags\":[\"User Custom Flag\"]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
+ " \"saveDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"," +
" \"threadId\":\"42\"" +
" }" +
@@ -122,6 +128,7 @@ class AddedSerializationTest {
" \"userFlags\":[\"User Custom Flag\"]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
+ " \"saveDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"," +
" \"threadId\":\"100\"" +
" }" +
@@ -179,7 +186,7 @@ class AddedSerializationTest {
@Test
void previousAddedFormatShouldBeWellDeserialized() {
assertThat(EVENT_SERIALIZER.fromJson(DEFAULT_BACKWARD_ADDED_EVENT_JSON).get())
- .isEqualTo(DEFAULT_ADDED_EVENT);
+ .isEqualTo(BACKWARD_ADDED_EVENT);
}
@Nested
diff --git a/mailbox/event/json/src/test/java/org/apache/james/event/json/ExpungedSerializationTest.java b/mailbox/event/json/src/test/java/org/apache/james/event/json/ExpungedSerializationTest.java
index 36c0688444..4a98466031 100644
--- a/mailbox/event/json/src/test/java/org/apache/james/event/json/ExpungedSerializationTest.java
+++ b/mailbox/event/json/src/test/java/org/apache/james/event/json/ExpungedSerializationTest.java
@@ -22,6 +22,7 @@ package org.apache.james.event.json;
import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
import static org.apache.james.event.json.SerializerFixture.EVENT_ID;
import static org.apache.james.event.json.SerializerFixture.EVENT_SERIALIZER;
+import static org.apache.james.mailbox.store.mail.model.MailboxMessage.EMPTY_SAVE_DATE;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -29,6 +30,7 @@ import java.time.Instant;
import java.util.Date;
import java.util.Map;
import java.util.NoSuchElementException;
+import java.util.Optional;
import javax.mail.Flags;
@@ -67,12 +69,14 @@ class ExpungedSerializationTest {
.add("User Custom Flag")
.build();
private static final Map<MessageUid, MessageMetaData> EXPUNGED = ImmutableMap.of(
- MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
+ MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), Optional.of(Date.from(INSTANT)), MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
+ private static final Map<MessageUid, MessageMetaData> BACKWARD_EXPUNGED = ImmutableMap.of(
+ MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), EMPTY_SAVE_DATE, MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
private static final Map<MessageUid, MessageMetaData> EXPUNGED_WITH_DISTINCT_MESSAGE_ID_AND_THREAD_ID = ImmutableMap.of(
- MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), MESSAGE_ID, ThreadId.fromBaseMessageId(TestMessageId.of(100))));
+ MESSAGE_UID, new MessageMetaData(MESSAGE_UID, MOD_SEQ, FLAGS, SIZE, Date.from(INSTANT), Optional.of(Date.from(INSTANT)), MESSAGE_ID, ThreadId.fromBaseMessageId(TestMessageId.of(100))));
- private static final Expunged DEFAULT_EXPUNGED_EVENT = new Expunged(SESSION_ID, USERNAME,
- MAILBOX_PATH, MAILBOX_ID, EXPUNGED, EVENT_ID);
+ private static final Expunged DEFAULT_EXPUNGED_EVENT = new Expunged(SESSION_ID, USERNAME, MAILBOX_PATH, MAILBOX_ID, EXPUNGED, EVENT_ID);
+ private static final Expunged BACKWARD_EXPUNGED_EVENT = new Expunged(SESSION_ID, USERNAME, MAILBOX_PATH, MAILBOX_ID, BACKWARD_EXPUNGED, EVENT_ID);
private static final Expunged EXPUNGED_WITH_DISTINCT_MESSAGE_ID_AND_THREAD_ID_EVENT = new Expunged(
SESSION_ID, USERNAME, MAILBOX_PATH, MAILBOX_ID, EXPUNGED_WITH_DISTINCT_MESSAGE_ID_AND_THREAD_ID, EVENT_ID);
private static final String DEFAULT_EXPUNGED_EVENT_JSON =
@@ -94,6 +98,7 @@ class ExpungedSerializationTest {
" \"userFlags\":[\"User Custom Flag\"]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
+ " \"saveDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"," +
" \"threadId\": \"42\"" +
" }" +
@@ -121,6 +126,7 @@ class ExpungedSerializationTest {
" \"userFlags\":[\"User Custom Flag\"]}," +
" \"size\": 45, " +
" \"internalDate\": \"2018-12-14T09:41:51.541Z\"," +
+ " \"saveDate\": \"2018-12-14T09:41:51.541Z\"," +
" \"messageId\": \"42\"," +
" \"threadId\": \"100\"" +
" }" +
@@ -177,7 +183,7 @@ class ExpungedSerializationTest {
@Test
void previousExpungedFormatShouldBeWellDeserialized() {
assertThat(EVENT_SERIALIZER.fromJson(DEFAULT_BACKWARD_EXPUNGED_EVENT_JSON).get())
- .isEqualTo(DEFAULT_EXPUNGED_EVENT);
+ .isEqualTo(BACKWARD_EXPUNGED_EVENT);
}
@Nested
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 73866e4a20..541e0450d2 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
@@ -27,6 +27,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import javax.mail.Flags;
@@ -96,6 +97,11 @@ public class MessageResultImpl implements MessageResult {
return message.getThreadId();
}
+ @Override
+ public Optional<Date> getSaveDate() {
+ return message.getSaveDate();
+ }
+
@Override
public Date getInternalDate() {
return message.getInternalDate();
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 ec9d68b755..b58f83a756 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
@@ -25,6 +25,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Objects;
+import java.util.Optional;
import javax.mail.Flags;
@@ -183,6 +184,11 @@ public class StoreMessageResultIterator implements MessageResultIterator {
return messageMetaData.getThreadId();
}
+ @Override
+ public Optional<Date> getSaveDate() {
+ return messageMetaData.getSaveDate();
+ }
+
@Override
public Date getInternalDate() {
return messageMetaData().getInternalDate();
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java
index 6bfd3efa1f..d6e7f17b2b 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java
@@ -117,7 +117,7 @@ public interface MailboxMessage extends Message, Comparable<MailboxMessage> {
Flags createFlags();
default MessageMetaData metaData() {
- return new MessageMetaData(getUid(), getModSeq(), createFlags(), getFullContentOctets(), getInternalDate(), getMessageId(), getThreadId());
+ return new MessageMetaData(getUid(), getModSeq(), createFlags(), getFullContentOctets(), getInternalDate(), getSaveDate(), getMessageId(), getThreadId());
}
default int compareTo(MailboxMessage other) {
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PreDeletionHooksTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PreDeletionHooksTest.java
index 3882a8cc83..62675e2901 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PreDeletionHooksTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PreDeletionHooksTest.java
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.when;
import java.time.Duration;
import java.util.Date;
+import java.util.Optional;
import java.util.concurrent.locks.ReentrantLock;
import javax.mail.Flags;
@@ -59,7 +60,7 @@ class PreDeletionHooksTest {
private static final TestId MAILBOX_ID = TestId.of(45);
private static final ModSeq MOD_SEQ = ModSeq.of(18);
private static final int SIZE = 12;
- private static final MessageMetaData MESSAGE_META_DATA = new MessageMetaData(MessageUid.of(1), MOD_SEQ, new Flags(), SIZE, new Date(), TestMessageId.of(42), ThreadId.fromBaseMessageId(TestMessageId.of(42)));
+ private static final MessageMetaData MESSAGE_META_DATA = new MessageMetaData(MessageUid.of(1), MOD_SEQ, new Flags(), SIZE, new Date(), Optional.empty(), TestMessageId.of(42), ThreadId.fromBaseMessageId(TestMessageId.of(42)));
private static final PreDeletionHook.DeleteOperation DELETE_OPERATION = PreDeletionHook.DeleteOperation.from(ImmutableList.of(MetadataWithMailboxId.from(
MESSAGE_META_DATA,
MAILBOX_ID)));
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java
index 6fe06f6867..b774698262 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import javax.mail.Flags;
@@ -63,7 +64,7 @@ class MetadataMapAssertTest {
@Test
void metadataMapAssertShouldSucceedWhenContainingRightMetadata() {
Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<>();
- metaDataMap.put(UID, new MessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE, MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
+ metaDataMap.put(UID, new MessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE, Optional.empty(), MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1);
}
@@ -71,7 +72,7 @@ class MetadataMapAssertTest {
@Test
void metadataMapAssertShouldFailWhenUidMismatch() {
Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<>();
- metaDataMap.put(UID, new MessageMetaData(UID.next(), MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE, MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
+ metaDataMap.put(UID, new MessageMetaData(UID.next(), MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE, Optional.empty(), MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
assertThatThrownBy(() -> MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1))
.isInstanceOf(AssertionError.class);
@@ -82,7 +83,7 @@ class MetadataMapAssertTest {
Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<>();
Date date = new Date();
date.setTime(DATE.getTime() + 100L);
- metaDataMap.put(UID, new MessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), date, MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
+ metaDataMap.put(UID, new MessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), date, Optional.empty(), MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
assertThatThrownBy(() -> MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1))
.isInstanceOf(AssertionError.class);
@@ -91,7 +92,7 @@ class MetadataMapAssertTest {
@Test
void metadataMapAssertShouldFailWhenSizeMismatch() {
Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<>();
- metaDataMap.put(UID, new MessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length() + 1, DATE, MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
+ metaDataMap.put(UID, new MessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length() + 1, DATE, Optional.empty(), MESSAGE_ID, ThreadId.fromBaseMessageId(MESSAGE_ID)));
assertThatThrownBy(() -> MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1))
.isInstanceOf(AssertionError.class);
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
index f89989b1d5..f20a2c22fe 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
@@ -100,8 +100,8 @@ class ListeningCurrentQuotaUpdaterTest {
Added added = mock(Added.class);
when(added.getMailboxId()).thenReturn(MAILBOX_ID);
when(added.getMailboxPath()).thenReturn(MAILBOX_PATH);
- when(added.getMetaData(MessageUid.of(36))).thenReturn(new MessageMetaData(MessageUid.of(36), ModSeq.first(),new Flags(), SIZE, new Date(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())));
- when(added.getMetaData(MessageUid.of(38))).thenReturn(new MessageMetaData(MessageUid.of(38), ModSeq.first(),new Flags(), SIZE, new Date(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())));
+ when(added.getMetaData(MessageUid.of(36))).thenReturn(new MessageMetaData(MessageUid.of(36), ModSeq.first(),new Flags(), SIZE, new Date(), Optional.empty(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())));
+ when(added.getMetaData(MessageUid.of(38))).thenReturn(new MessageMetaData(MessageUid.of(38), ModSeq.first(),new Flags(), SIZE, new Date(), Optional.empty(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())));
when(added.getUids()).thenReturn(Lists.newArrayList(MessageUid.of(36), MessageUid.of(38)));
when(added.getUsername()).thenReturn(USERNAME_BENWA);
when(mockedQuotaRootResolver.getQuotaRootReactive(eq(MAILBOX_ID))).thenReturn(Mono.just(QUOTA_ROOT));
@@ -116,8 +116,8 @@ class ListeningCurrentQuotaUpdaterTest {
@Test
void expungedEventShouldDecreaseCurrentQuotaValues() throws Exception {
Expunged expunged = mock(Expunged.class);
- when(expunged.getMetaData(MessageUid.of(36))).thenReturn(new MessageMetaData(MessageUid.of(36), ModSeq.first(), new Flags(), SIZE, new Date(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())));
- when(expunged.getMetaData(MessageUid.of(38))).thenReturn(new MessageMetaData(MessageUid.of(38), ModSeq.first(), new Flags(), SIZE, new Date(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())));
+ when(expunged.getMetaData(MessageUid.of(36))).thenReturn(new MessageMetaData(MessageUid.of(36), ModSeq.first(), new Flags(), SIZE, new Date(), Optional.empty(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())));
+ when(expunged.getMetaData(MessageUid.of(38))).thenReturn(new MessageMetaData(MessageUid.of(38), ModSeq.first(), new Flags(), SIZE, new Date(), Optional.empty(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())));
when(expunged.getUids()).thenReturn(Lists.newArrayList(MessageUid.of(36), MessageUid.of(38)));
when(expunged.getMailboxId()).thenReturn(MAILBOX_ID);
when(expunged.getUsername()).thenReturn(USERNAME_BENWA);
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 8dc7aef80f..f2a9753778 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
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Date;
+import java.util.Optional;
import javax.mail.Flags;
@@ -132,7 +133,7 @@ class MailboxEventAnalyserTest {
.randomEventId()
.mailboxSession(MAILBOX_SESSION)
.mailbox(DEFAULT_MAILBOX)
- .addMetaData(new MessageMetaData(MessageUid.of(11), ModSeq.first(), new Flags(), 45, new Date(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())))
+ .addMetaData(new MessageMetaData(MessageUid.of(11), ModSeq.first(), new Flags(), 45, new Date(), Optional.empty(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())))
.isDelivery(!IS_DELIVERY)
.build();
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
index d8bc996eac..b628795603 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
@@ -33,6 +33,7 @@ import static org.mockito.Mockito.when;
import java.time.Duration;
import java.util.Date;
+import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
@@ -222,7 +223,7 @@ class SelectedMailboxImplTest {
.randomEventId()
.mailboxSession(MailboxSessionUtil.create(Username.of("user")))
.mailbox(mailbox)
- .addMetaData(new MessageMetaData(EMITTED_EVENT_UID, MOD_SEQ, new Flags(), SIZE, new Date(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())))
+ .addMetaData(new MessageMetaData(EMITTED_EVENT_UID, MOD_SEQ, new Flags(), SIZE, new Date(), Optional.empty(), new DefaultMessageId(), ThreadId.fromBaseMessageId(new DefaultMessageId())))
.isDelivery(!IS_DELIVERY)
.build();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org