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 935e1f5750841148ded392b9057917df5588926c Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Fri Jan 17 15:22:37 2020 +0700 JAMES-2997 step #10 Mailbox backend is responsible of creating messageAttachments We should avoid to compute them in parallel in JMAP and rather rely on mailboxManager append result, which can be enriched to convey attachments. --- .../listeners/SetCustomFlagOnBigMessagesTest.java | 12 ++--- .../org/apache/james/mailbox/MessageManager.java | 40 +++++++++++++- .../mailbox/MailboxManagerStressContract.java | 2 +- .../apache/james/mailbox/MailboxManagerTest.java | 52 ++++++++++-------- .../mailbox/manager/ManagerTestProvisionner.java | 4 +- .../ElasticSearchIntegrationTest.java | 16 +++--- .../search/ElasticSearchSearcherTest.java | 3 +- .../james/vault/DeletedMessageVaultHookTest.java | 3 +- .../james/mailbox/store/StoreMessageManager.java | 20 ++++--- .../store/AbstractCombinationManagerTest.java | 62 +++++++++++----------- .../store/AbstractMessageIdManagerStorageTest.java | 1 + .../search/AbstractMessageSearchIndexTest.java | 52 +++++++++--------- .../tools/indexer/MessageIdReIndexerImplTest.java | 2 +- .../mailbox/tools/indexer/ReIndexerImplTest.java | 12 ++--- .../james/imap/processor/AppendProcessor.java | 3 +- .../org/apache/james/modules/MailboxProbeImpl.java | 4 +- .../mailets/delivery/MailboxAppender.java | 8 +-- .../mailets/delivery/LocalDeliveryTest.java | 8 ++- .../james/jmap/draft/methods/MessageAppender.java | 38 ++++++------- .../james/jmap/draft/methods/SendMDNProcessor.java | 24 +-------- .../org/apache/james/jmap/draft/model/JmapMDN.java | 3 +- .../MessageFastViewProjectionItemFactoryTest.java | 2 +- .../jmap/draft/methods/GetMessagesMethodTest.java | 52 +++++++++--------- .../methods/SetMessagesUpdateProcessorTest.java | 4 +- .../message/view/MessageFastViewFactoryTest.java | 8 +-- .../message/view/MessageFullViewFactoryTest.java | 2 +- .../message/view/MessageHeaderViewFactoryTest.java | 2 +- .../view/MessageMetadataViewFactoryTest.java | 2 +- .../jmap/draft/send/PostDequeueDecoratorTest.java | 16 +++--- ...mputeMessageFastViewProjectionListenerTest.java | 12 ++--- ...llFastViewProjectionItemsRequestToTaskTest.java | 4 +- ...erFastViewProjectionItemsRequestToTaskTest.java | 4 +- .../webadmin/vault/routes/RestoreService.java | 2 +- .../james/webadmin/routes/MailboxesRoutesTest.java | 16 +++--- .../james/webadmin/routes/MessageRoutesTest.java | 4 +- .../webadmin/routes/UserMailboxesRoutesTest.java | 4 +- .../james/webadmin/service/ExportServiceTest.java | 3 +- .../service/MailboxesExportRequestToTaskTest.java | 4 +- 38 files changed, 273 insertions(+), 237 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 e3340d5..d198a94 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 @@ -81,7 +81,7 @@ class SetCustomFlagOnBigMessagesTest { ComposedMessageId composedId = inboxMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(smallMessage()), - mailboxSession); + mailboxSession).getIds(); assertThat(getMessageFlags(composedId.getUid())) .allSatisfy(flags -> assertThat(flags.contains(BIG_MESSAGE)).isFalse()); @@ -97,7 +97,7 @@ class SetCustomFlagOnBigMessagesTest { MessageManager.AppendCommand.builder() .withFlags(appendMessageFlag) .build(smallMessage()), - mailboxSession); + mailboxSession).getIds(); assertThat(getMessageFlags(composedId.getUid())) .allSatisfy(flags -> { @@ -111,7 +111,7 @@ class SetCustomFlagOnBigMessagesTest { ComposedMessageId composedId = inboxMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(bigMessage()), - mailboxSession); + mailboxSession).getIds(); assertThat(getMessageFlags(composedId.getUid())) .allSatisfy(flags -> assertThat(flags.contains(BIG_MESSAGE)).isTrue()); @@ -122,7 +122,7 @@ class SetCustomFlagOnBigMessagesTest { ComposedMessageId composedIdOfSmallMessage = inboxMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(smallMessage()), - mailboxSession); + mailboxSession).getIds(); MessageResult addedMessage = inboxMessageManager .getMessages(MessageRange.one(composedIdOfSmallMessage.getUid()), FetchGroup.MINIMAL, mailboxSession) @@ -154,7 +154,7 @@ class SetCustomFlagOnBigMessagesTest { MessageManager.AppendCommand.builder() .withFlags(appendMessageFlag) .build(bigMessage()), - mailboxSession); + mailboxSession).getIds(); assertThat(getMessageFlags(composedId.getUid())) .allSatisfy(flags -> { @@ -173,7 +173,7 @@ class SetCustomFlagOnBigMessagesTest { MessageManager.AppendCommand.builder() .withFlags(appendMessageFlag) .build(bigMessage()), - mailboxSession); + mailboxSession).getIds(); assertThat(getMessageFlags(composedId.getUid())) .allSatisfy(flags -> assertThat(flags.contains(BIG_MESSAGE)).isTrue()); diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java index 52c0f6e..2c67375 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java @@ -28,6 +28,7 @@ import java.util.EnumSet; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.stream.Stream; @@ -44,6 +45,7 @@ import org.apache.james.mailbox.model.MailboxACL; import org.apache.james.mailbox.model.MailboxCounters; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.mailbox.model.MessageAttachment; import org.apache.james.mailbox.model.MessageRange; import org.apache.james.mailbox.model.MessageResult; import org.apache.james.mailbox.model.MessageResultIterator; @@ -138,6 +140,40 @@ public interface MessageManager { */ Map<MessageUid, Flags> setFlags(Flags flags, FlagsUpdateMode flagsUpdateMode, MessageRange set, MailboxSession mailboxSession) throws MailboxException; + class AppendResult { + private final ComposedMessageId ids; + private final List<MessageAttachment> messageAttachments; + + public AppendResult(ComposedMessageId ids, List<MessageAttachment> messageAttachments) { + this.ids = ids; + this.messageAttachments = messageAttachments; + } + + public ComposedMessageId getIds() { + return ids; + } + + public List<MessageAttachment> getMessageAttachments() { + return messageAttachments; + } + + @Override + public final boolean equals(Object o) { + if (o instanceof AppendResult) { + AppendResult that = (AppendResult) o; + + return Objects.equals(this.ids, that.ids) + && Objects.equals(this.messageAttachments, that.messageAttachments); + } + return false; + } + + @Override + public final int hashCode() { + return Objects.hash(ids, messageAttachments); + } + } + /** * Appends a message to this mailbox. This method must return a higher UID * as the last call in every case which also needs to be unique for the @@ -157,7 +193,7 @@ public interface MessageManager { * @throws MailboxException * when message cannot be appended */ - ComposedMessageId appendMessage(InputStream msgIn, Date internalDate, MailboxSession mailboxSession, boolean isRecent, Flags flags) throws MailboxException; + AppendResult appendMessage(InputStream msgIn, Date internalDate, MailboxSession mailboxSession, boolean isRecent, Flags flags) throws MailboxException; class AppendCommand { @@ -265,7 +301,7 @@ public interface MessageManager { } } - ComposedMessageId appendMessage(AppendCommand appendCommand, MailboxSession session) throws MailboxException; + AppendResult appendMessage(AppendCommand appendCommand, MailboxSession session) throws MailboxException; /** * Gets messages in the given range. The messages may get fetched under diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java index 3bf6d8f..4821757 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java @@ -93,7 +93,7 @@ public interface MailboxManagerStressContract<T extends MailboxManager> { MessageManager.AppendCommand .from(Message.Builder.of() .setSubject("test") - .setBody("testmail", StandardCharsets.UTF_8)), mailboxSession); + .setBody("testmail", StandardCharsets.UTF_8)), mailboxSession).getIds(); System.out.println("Append message with uid=" + messageId.getUid()); if (uids.put(messageId.getUid(), new Object()) != null) { diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java index f51c124..7382127 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java @@ -824,7 +824,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { @Test void deleteMessageShouldFireExpungedEvent() throws Exception { - ComposedMessageId messageId = inboxManager.appendMessage(MessageManager.AppendCommand.builder().build(message), session); + ComposedMessageId messageId = inboxManager.appendMessage(MessageManager.AppendCommand.builder().build(message), session).getIds(); inboxManager.setFlags(new Flags(Flags.Flag.DELETED), MessageManager.FlagsUpdateMode.ADD, MessageRange.all(), session); retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(inboxId)); @@ -913,7 +913,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { assumeTrue(mailboxManager.getSupportedMessageCapabilities().contains(MailboxManager.MessageCapabilities.UniqueID)); Optional<MailboxId> targetMailboxId = mailboxManager.createMailbox(newPath, session); - ComposedMessageId messageId = inboxManager.appendMessage(AppendCommand.builder().build(message), session); + ComposedMessageId messageId = inboxManager.appendMessage(AppendCommand.builder().build(message), session).getIds(); retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(targetMailboxId.get())); mailboxManager.copyMessages(MessageRange.all(), inbox, newPath, session); @@ -946,7 +946,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { assumeTrue(mailboxManager.getSupportedMessageCapabilities().contains(MailboxManager.MessageCapabilities.UniqueID)); Optional<MailboxId> targetMailboxId = mailboxManager.createMailbox(newPath, session); - ComposedMessageId messageId = inboxManager.appendMessage(AppendCommand.builder().build(message), session); + ComposedMessageId messageId = inboxManager.appendMessage(AppendCommand.builder().build(message), session).getIds(); retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(targetMailboxId.get())); mailboxManager.moveMessages(MessageRange.all(), inbox, newPath, session); @@ -964,7 +964,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { assumeTrue(mailboxManager.getSupportedMessageCapabilities().contains(MailboxManager.MessageCapabilities.UniqueID)); mailboxManager.createMailbox(newPath, session); - ComposedMessageId messageId = inboxManager.appendMessage(AppendCommand.builder().build(message), session); + ComposedMessageId messageId = inboxManager.appendMessage(AppendCommand.builder().build(message), session).getIds(); retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(inboxId)); mailboxManager.moveMessages(MessageRange.all(), inbox, newPath, session); @@ -1194,7 +1194,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MessageManager cacahueteMessageManager = mailboxManager.getMailbox(cacahueteMailboxId, session); MessageId cacahueteMessageId = cacahueteMessageManager .appendMessage(AppendCommand.from(message), session) - .getMessageId(); + .getIds().getMessageId(); MailboxPath pirouetteFilder = MailboxPath.forUser(USER_1, "PIROUETTE"); MailboxId pirouetteMailboxId = mailboxManager.createMailbox(pirouetteFilder, session).get(); @@ -1202,7 +1202,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MessageId pirouetteMessageId = pirouetteMessageManager .appendMessage(AppendCommand.from(message), session) - .getMessageId(); + .getIds().getMessageId(); MultimailboxesSearchQuery multiMailboxesQuery = MultimailboxesSearchQuery .from(new SearchQuery()) @@ -1226,7 +1226,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MessageId messageId = delegatedMessageManager .appendMessage(AppendCommand.from(message), sessionFromDelegater) - .getMessageId(); + .getIds().getMessageId(); mailboxManager.setRights(delegatedMailboxPath, MailboxACL.EMPTY.apply(MailboxACL.command() @@ -1376,7 +1376,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MessageId messageId = searchedMessageManager .appendMessage(AppendCommand.from(message), session) - .getMessageId(); + .getIds().getMessageId(); MultimailboxesSearchQuery multiMailboxesQuery = MultimailboxesSearchQuery .from(new SearchQuery()) @@ -1842,9 +1842,11 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MessageId messageId1 = inboxMessageManager .appendMessage(AppendCommand.from(message), session) + .getIds() .getMessageId(); MessageId messageId2 = inboxMessageManager .appendMessage(AppendCommand.from(message), session) + .getIds() .getMessageId(); mailboxManager.moveMessages(MessageRange.all(), inbox, otherMailbox, session); @@ -1883,9 +1885,11 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MessageManager inboxMessageManager = mailboxManager.getMailbox(inbox, session); ComposedMessageId composedMessageId1 = inboxMessageManager - .appendMessage(AppendCommand.from(message), session); + .appendMessage(AppendCommand.from(message), session) + .getIds(); MessageId messageId2 = inboxMessageManager .appendMessage(AppendCommand.from(message), session) + .getIds() .getMessageId(); mailboxManager.moveMessages(MessageRange.one(composedMessageId1.getUid()), inbox, otherMailbox, session); @@ -1975,9 +1979,11 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MessageId messageId1 = inboxMessageManager .appendMessage(AppendCommand.from(message), session) + .getIds() .getMessageId(); MessageId messageId2 = inboxMessageManager .appendMessage(AppendCommand.from(message), session) + .getIds() .getMessageId(); mailboxManager.copyMessages(MessageRange.all(), inbox, otherMailbox, session); @@ -2015,9 +2021,11 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { MessageManager inboxMessageManager = mailboxManager.getMailbox(inbox, session); ComposedMessageId composedMessageId1 = inboxMessageManager - .appendMessage(AppendCommand.from(message), session); + .appendMessage(AppendCommand.from(message), session) + .getIds(); MessageId messageId2 = inboxMessageManager .appendMessage(AppendCommand.from(message), session) + .getIds() .getMessageId(); MessageId messageId1 = composedMessageId1.getMessageId(); @@ -2205,7 +2213,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { void expungeShouldCallAllPreDeletionHooks() throws Exception { ComposedMessageId composeId = inboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(message), session); + .build(message), session).getIds(); inboxManager.expunge(MessageRange.one(composeId.getUid()), session); ArgumentCaptor<PreDeletionHook.DeleteOperation> preDeleteCaptor1 = ArgumentCaptor.forClass(PreDeletionHook.DeleteOperation.class); @@ -2226,7 +2234,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { void deleteMailboxShouldCallAllPreDeletionHooks() throws Exception { ComposedMessageId composeId = inboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(message), session); + .build(message), session).getIds(); mailboxManager.deleteMailbox(inbox, session); ArgumentCaptor<PreDeletionHook.DeleteOperation> preDeleteCaptor1 = ArgumentCaptor.forClass(PreDeletionHook.DeleteOperation.class); @@ -2247,7 +2255,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { void deleteMailboxByIdShouldCallAllPreDeletionHooks() throws Exception { ComposedMessageId composeId = inboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(message), session); + .build(message), session).getIds(); mailboxManager.deleteMailbox(inboxId, session); ArgumentCaptor<PreDeletionHook.DeleteOperation> preDeleteCaptor1 = ArgumentCaptor.forClass(PreDeletionHook.DeleteOperation.class); @@ -2268,10 +2276,10 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { void expungeShouldCallAllPreDeletionHooksOnEachMessageDeletionCall() throws Exception { ComposedMessageId composeId1 = inboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(message), session); + .build(message), session).getIds(); ComposedMessageId composeId2 = inboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(message), session); + .build(message), session).getIds(); inboxManager.expunge(MessageRange.one(composeId1.getUid()), session); inboxManager.expunge(MessageRange.one(composeId2.getUid()), session); @@ -2294,7 +2302,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { void expungeShouldCallAllPreDeletionHooksOnlyOnMessagesMarkedAsDeleted() throws Exception { ComposedMessageId composeId1 = inboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(message), session); + .build(message), session).getIds(); inboxManager.appendMessage(AppendCommand.builder() .build(message), session); @@ -2329,10 +2337,10 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { void expungeShouldCallAllPreDeletionHooksOnEachMessageDeletionOnDifferentMailboxes() throws Exception { ComposedMessageId composeId1 = inboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(message), session); + .build(message), session).getIds(); ComposedMessageId composeId2 = anotherMailboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(message), session); + .build(message), session).getIds(); inboxManager.expunge(MessageRange.one(composeId1.getUid()), session); anotherMailboxManager.expunge(MessageRange.one(composeId2.getUid()), session); @@ -2362,7 +2370,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { ComposedMessageId composeId1 = inboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(message), session); + .build(message), session).getIds(); assertThatThrownBy(() -> inboxManager.expunge(MessageRange.one(composeId1.getUid()), session)) .isInstanceOf(RuntimeException.class); @@ -2389,7 +2397,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { return Mono.empty(); }); - ComposedMessageId composeId1 = inboxManager.appendMessage(AppendCommand.builder().build(message), session); + ComposedMessageId composeId1 = inboxManager.appendMessage(AppendCommand.builder().build(message), session).getIds(); inboxManager.setFlags(new Flags(Flags.Flag.DELETED), MessageManager.FlagsUpdateMode.ADD, MessageRange.one(composeId1.getUid()), session); inboxManager.expunge(MessageRange.all(), session); @@ -2420,7 +2428,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { void getMessagesShouldIncludeHasAttachmentInformation() throws Exception { ComposedMessageId composeId = inboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(ClassLoaderUtils.getSystemResourceAsSharedStream("eml/twoAttachmentsApi.eml")), session); + .build(ClassLoaderUtils.getSystemResourceAsSharedStream("eml/twoAttachmentsApi.eml")), session).getIds(); MessageResultIterator messages = inboxManager.getMessages(MessageRange.one(composeId.getUid()), FetchGroup.MINIMAL, session); @@ -2434,7 +2442,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> { void getMessagesShouldNotIncludeAttachmentInformationWhenNone() throws Exception { ComposedMessageId composeId = inboxManager.appendMessage(AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) - .build(message), session); + .build(message), session).getIds(); MessageResultIterator messages = inboxManager.getMessages(MessageRange.one(composeId.getUid()), FetchGroup.MINIMAL, session); diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestProvisionner.java b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestProvisionner.java index 555cdb7..309d48b 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestProvisionner.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestProvisionner.java @@ -99,7 +99,9 @@ public class ManagerTestProvisionner { public MessageUid appendMessage(MessageManager messageManager, MailboxSession session, Flags flags) throws MailboxException, UnsupportedEncodingException { return messageManager.appendMessage(new ByteArrayInputStream(MockMail.MAIL_TEXT_PLAIN.getBytes(StandardCharsets.UTF_8)), - Calendar.getInstance().getTime(), session, true, flags).getUid(); + Calendar.getInstance().getTime(), session, true, flags) + .getIds() + .getUid(); } } \ No newline at end of file diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java index 1813ef3..51983b3 100644 --- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java +++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java @@ -131,7 +131,7 @@ class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest { Message.Builder.of() .setTo(recipient) .setBody(Strings.repeat("0à2345678é", 3200), StandardCharsets.UTF_8)), - session); + session).getIds(); elasticSearch.awaitForElasticSearch(); @@ -150,7 +150,7 @@ class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest { Message.Builder.of() .setTo(recipient) .setBody(Strings.repeat("0123456789", 3300), StandardCharsets.UTF_8)), - session); + session).getIds(); elasticSearch.awaitForElasticSearch(); @@ -169,7 +169,7 @@ class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest { Message.Builder.of() .setTo(recipient) .setBody(Strings.repeat("0123456789 ", 5000), StandardCharsets.UTF_8)), - session); + session).getIds(); elasticSearch.awaitForElasticSearch(); @@ -188,7 +188,7 @@ class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest { Message.Builder.of() .setTo(recipient) .setBody(Strings.repeat("0123456789 ", 5000) + " matchMe", StandardCharsets.UTF_8)), - session); + session).getIds(); elasticSearch.awaitForElasticSearch(); @@ -208,7 +208,7 @@ class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest { Message.Builder.of() .setTo(recipient) .setBody(reasonableLongTerm, StandardCharsets.UTF_8)), - session); + session).getIds(); elasticSearch.awaitForElasticSearch(); @@ -225,14 +225,14 @@ class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest { ComposedMessageId customDateHeaderMessageId = messageManager.appendMessage( MessageManager.AppendCommand.builder() .build(ClassLoader.getSystemResourceAsStream("eml/mailCustomDateHeader.eml")), - session); + session).getIds(); elasticSearch.awaitForElasticSearch(); ComposedMessageId customStringHeaderMessageId = messageManager.appendMessage( MessageManager.AppendCommand.builder() .build(ClassLoader.getSystemResourceAsStream("eml/mailCustomStringHeader.eml")), - session); + session).getIds(); elasticSearch.awaitForElasticSearch(); @@ -256,7 +256,7 @@ class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest { ComposedMessageId customStringHeaderMessageId = messageManager.appendMessage( MessageManager.AppendCommand.builder() .build(ClassLoader.getSystemResourceAsStream("eml/mailCustomStringHeader.eml")), - session); + session).getIds(); elasticSearch.awaitForElasticSearch(); diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcherTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcherTest.java index fcaa97b..444628f 100644 --- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcherTest.java +++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcherTest.java @@ -167,6 +167,7 @@ class ElasticSearchSearcherTest { Message.Builder.of() .setTo(recipient) .setBody("Hello", StandardCharsets.UTF_8)), - session); + session) + .getIds(); } } \ No newline at end of file diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java index 8c5cfc8..4f0bfc5 100644 --- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java +++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java @@ -102,7 +102,8 @@ class DeletedMessageVaultHookTest { private ComposedMessageId appendMessage(MessageManager messageManager) throws Exception { return messageManager.appendMessage(MessageManager.AppendCommand.builder() .withInternalDate(INTERNAL_DATE) - .build(mailContent), aliceSession); + .build(mailContent), aliceSession) + .getIds(); } @BeforeEach diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java index 9f2557b..1cb207e 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java @@ -44,6 +44,7 @@ import javax.mail.internet.SharedInputStream; import javax.mail.util.SharedFileInputStream; import org.apache.commons.io.input.TeeInputStream; +import org.apache.commons.lang3.tuple.Pair; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxManager.MessageCapabilities; import org.apache.james.mailbox.MailboxPathLocker; @@ -301,7 +302,7 @@ public class StoreMessageManager implements MessageManager { } @Override - public ComposedMessageId appendMessage(AppendCommand appendCommand, MailboxSession session) throws MailboxException { + public AppendResult appendMessage(AppendCommand appendCommand, MailboxSession session) throws MailboxException { return appendMessage( appendCommand.getMsgIn(), appendCommand.getInternalDate(), @@ -311,7 +312,7 @@ public class StoreMessageManager implements MessageManager { } @Override - public ComposedMessageId appendMessage(InputStream msgIn, Date internalDate, final MailboxSession mailboxSession, boolean isRecent, Flags flagsToBeSet) throws MailboxException { + public AppendResult appendMessage(InputStream msgIn, Date internalDate, final MailboxSession mailboxSession, boolean isRecent, Flags flagsToBeSet) throws MailboxException { File file = null; if (!isWriteable(mailboxSession)) { @@ -443,13 +444,13 @@ public class StoreMessageManager implements MessageManager { return bodyStartOctet; } - private ComposedMessageId createAndDispatchMessage(Date internalDate, MailboxSession mailboxSession, File file, PropertyBuilder propertyBuilder, Flags flags, int bodyStartOctet) throws IOException, MailboxException { + private AppendResult createAndDispatchMessage(Date internalDate, MailboxSession mailboxSession, File file, PropertyBuilder propertyBuilder, Flags flags, int bodyStartOctet) throws IOException, MailboxException { try (SharedFileInputStream contentIn = new SharedFileInputStream(file)) { final int size = (int) file.length(); new QuotaChecker(quotaManager, quotaRootResolver, mailbox).tryAddition(1, size); return locker.executeWithLock(getMailboxPath(), () -> { - MessageMetaData data = appendMessageToStore(internalDate, size, bodyStartOctet, contentIn, flags, propertyBuilder, mailboxSession); + Pair<MessageMetaData, List<MessageAttachment>> data = appendMessageToStore(internalDate, size, bodyStartOctet, contentIn, flags, propertyBuilder, mailboxSession); Mailbox mailbox = getMailboxEntity(); @@ -457,12 +458,14 @@ public class StoreMessageManager implements MessageManager { .randomEventId() .mailboxSession(mailboxSession) .mailbox(mailbox) - .addMetaData(data) + .addMetaData(data.getLeft()) .build(), new MailboxIdRegistrationKey(mailbox.getMailboxId())) .subscribeOn(Schedulers.elastic()) .block(); - return new ComposedMessageId(mailbox.getMailboxId(), data.getMessageId(), data.getUid()); + MessageMetaData messageMetaData = data.getLeft(); + ComposedMessageId ids = new ComposedMessageId(mailbox.getMailboxId(), messageMetaData.getMessageId(), messageMetaData.getUid()); + return new AppendResult(ids, data.getRight()); }, MailboxPathLocker.LockType.Write); } } @@ -668,14 +671,15 @@ public class StoreMessageManager implements MessageManager { }, MailboxPathLocker.LockType.Write); } - private MessageMetaData appendMessageToStore(Date internalDate, int size, int bodyStartOctet, SharedInputStream content, Flags flags, PropertyBuilder propertyBuilder, MailboxSession session) throws MailboxException { + private Pair<MessageMetaData, List<MessageAttachment>> appendMessageToStore(Date internalDate, int size, int bodyStartOctet, SharedInputStream content, Flags flags, PropertyBuilder propertyBuilder, MailboxSession session) throws MailboxException { MessageMapper messageMapper = mapperFactory.getMessageMapper(session); MessageId messageId = messageIdFactory.generate(); return mapperFactory.getMessageMapper(session).execute(() -> { List<MessageAttachment> attachments = storeAttachments(messageId, content, session); MailboxMessage message = createMessage(internalDate, size, bodyStartOctet, content, flags, propertyBuilder, attachments); - return messageMapper.add(getMailboxEntity(), message); + MessageMetaData metadata = messageMapper.add(getMailboxEntity(), message); + return Pair.of(metadata, attachments); }); } diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java index 03f5900..33a7280 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java @@ -98,7 +98,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMessageCountFromMessageManagerShouldReturnDataSetInMailboxesFromMessageIdManager() throws Exception { MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -111,7 +111,7 @@ public abstract class AbstractCombinationManagerTest { query.andCriteria(SearchQuery.all()); MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -124,7 +124,7 @@ public abstract class AbstractCombinationManagerTest { query.andCriteria(SearchQuery.all()); MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -142,7 +142,7 @@ public abstract class AbstractCombinationManagerTest { SearchQuery query = new SearchQuery(); query.andCriteria(SearchQuery.all()); - ComposedMessageId composedMessageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session); + ComposedMessageId composedMessageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session).getIds(); messageIdManager.setInMailboxes(composedMessageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -161,7 +161,7 @@ public abstract class AbstractCombinationManagerTest { MultimailboxesSearchQuery multiMailboxesQuery = builder.build(); MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -173,7 +173,7 @@ public abstract class AbstractCombinationManagerTest { void setFlagsToDeleteThenExpungeFromMessageManagerThenGetMessageFromMessageIdManagerShouldNotReturnAnything() throws Exception { Flags deleted = new Flags(Flag.DELETED); MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageManager1.setFlags(deleted, FlagsUpdateMode.ADD, MessageRange.all(), session); messageManager1.expunge(MessageRange.all(), session); @@ -184,7 +184,7 @@ public abstract class AbstractCombinationManagerTest { @Test void expungeFromMessageManagerShouldWorkWhenSetFlagsToDeletedWithMessageIdManager() throws Exception { Flags deleted = new Flags(Flag.DELETED); - ComposedMessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session); + ComposedMessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session).getIds(); messageIdManager.setFlags(deleted, FlagsUpdateMode.ADD, messageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId()), session); @@ -199,7 +199,7 @@ public abstract class AbstractCombinationManagerTest { ComposedMessageId messageId = messageManager1.appendMessage( MessageManager.AppendCommand.builder() .withFlags(deleted) - .build(mailContent), session); + .build(mailContent), session).getIds(); messageIdManager.setInMailboxes(messageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId()), session); @@ -211,7 +211,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMessageFromMessageIdManagerShouldReturnMessageWhenAppendMessageFromMessageManager() throws Exception { MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); assertThat(messageIdManager.getMessage(messageId, FetchGroup.MINIMAL, session)).hasSize(1); } @@ -219,7 +219,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMessageFromMessageIdManagerShouldReturnMessageWhenCopyMessageWithMailboxIdFromMailboxManager() throws Exception { MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); mailboxManager.copyMessages(MessageRange.all(), mailbox1.getMailboxId(), mailbox2.getMailboxId(), session); @@ -233,7 +233,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMessageFromMessageIdManagerShouldReturnMessageWhenCopyMessageWithMailboxPathFromMailboxManager() throws Exception { MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); mailboxManager.copyMessages(MessageRange.all(), MailboxFixture.INBOX_ALICE, MailboxFixture.OUTBOX_ALICE, session); @@ -247,7 +247,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMessageFromMessageIdManagerShouldReturnMessageWhenMoveMessageWithMailboxIdFromMailboxManager() throws Exception { MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); mailboxManager.moveMessages(MessageRange.all(), MailboxFixture.INBOX_ALICE, MailboxFixture.OUTBOX_ALICE, session); @@ -261,7 +261,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMessagesFromMessageManagerShouldReturnMessagesCreatedBySetInMailboxesFromMessageIdManager() throws Exception { MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -276,7 +276,7 @@ public abstract class AbstractCombinationManagerTest { ComposedMessageId messageId = messageManager1.appendMessage( MessageManager.AppendCommand.builder() .withFlags(recent) - .build(mailContent), session); + .build(mailContent), session).getIds(); long mailbox2NextUid = messageManager2.getMetaData(true, session, MessageManager.MetaData.FetchGroup.UNSEEN_COUNT).getUidNext().asLong(); messageIdManager.setInMailboxes(messageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -294,7 +294,7 @@ public abstract class AbstractCombinationManagerTest { MessageManager.AppendCommand.builder() .withFlags(recent) .build(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -307,7 +307,7 @@ public abstract class AbstractCombinationManagerTest { ComposedMessageId messageId = messageManager1.appendMessage( MessageManager.AppendCommand.builder() .withFlags(recent) - .build(mailContent), session); + .build(mailContent), session).getIds(); messageIdManager.setInMailboxes(messageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -327,7 +327,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMetadataFromMessageManagerShouldReturnHighestModSeqWhenSetInMailboxesFromMessageIdManager() throws Exception { MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -337,7 +337,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMetadataFromMessageManagerShouldReturnMessageCountWhenSetInMailboxesFromMessageIdManager() throws Exception { MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -347,7 +347,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMetadataFromMessageManagerShouldReturnNumberOfUnseenMessageWhenSetInMailboxesFromMessageIdManager() throws Exception { MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -356,7 +356,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMetadataFromMessageManagerShouldReturnFirstUnseenMessageWhenSetInMailboxesFromMessageIdManager() throws Exception { - ComposedMessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session); + ComposedMessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session).getIds(); messageIdManager.setInMailboxes(messageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -367,7 +367,7 @@ public abstract class AbstractCombinationManagerTest { void getMetadataFromMessageManagerShouldReturnNumberOfUnseenMessageWhenSetFlagsFromMessageIdManager() throws Exception { Flags newFlag = new Flags(Flag.RECENT); MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setFlags(newFlag, FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -377,7 +377,7 @@ public abstract class AbstractCombinationManagerTest { @Test void getMetadataFromMessageManagerShouldReturnFirstUnseenMessageWhenSetFlagsFromMessageIdManager() throws Exception { Flags newFlag = new Flags(Flag.USER); - ComposedMessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session); + ComposedMessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session).getIds(); messageIdManager.setFlags(newFlag, FlagsUpdateMode.ADD, messageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -387,7 +387,7 @@ public abstract class AbstractCombinationManagerTest { @Test void setInMailboxesFromMessageIdManagerShouldMoveMessage() throws Exception { MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox2.getMailboxId()), session); @@ -412,7 +412,7 @@ public abstract class AbstractCombinationManagerTest { MessageManager.AppendCommand.builder() .withFlags(messageFlag) .build(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -443,7 +443,7 @@ public abstract class AbstractCombinationManagerTest { MessageManager.AppendCommand.builder() .withFlags(messageFlag) .build(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setFlags(deleted, FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId()), session); @@ -461,7 +461,7 @@ public abstract class AbstractCombinationManagerTest { MessageManager.AppendCommand.builder() .withFlags(customFlag1) .build(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setFlags(customFlag2, FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId()), session); @@ -483,7 +483,7 @@ public abstract class AbstractCombinationManagerTest { MessageManager.AppendCommand.builder() .withFlags(custom1) .build(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); messageManager2.setFlags(custom2, FlagsUpdateMode.ADD, MessageRange.all(), session); @@ -500,7 +500,7 @@ public abstract class AbstractCombinationManagerTest { void getUidsShouldInteractWellWithSetInMailboxes() throws Exception { MessageId messageId = messageManager1 .appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); @@ -521,7 +521,7 @@ public abstract class AbstractCombinationManagerTest { void getUidsShouldInteractWellWithDelete() throws Exception { MessageId messageId = messageManager1 .appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), session); @@ -533,10 +533,10 @@ public abstract class AbstractCombinationManagerTest { void getUidsShouldInteractWellWithDeletes() throws Exception { MessageId messageId1 = messageManager1 .appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); MessageId messageId2 = messageManager1 .appendMessage(MessageManager.AppendCommand.from(mailContent), session) - .getMessageId(); + .getIds().getMessageId(); messageIdManager.delete(ImmutableList.of(messageId1, messageId2), session); diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java index fa1c0ec..55914ad 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java @@ -969,6 +969,7 @@ public abstract class AbstractMessageIdManagerStorageTest { .appendMessage(MessageManager.AppendCommand.builder() .withFlags(new Flags(Flags.Flag.DELETED)) .build(ClassLoaderUtils.getSystemResourceAsSharedStream("eml/twoAttachmentsApi.eml")), bobSession) + .getIds() .getMessageId(); List<MessageResult> messages = messageIdManager.getMessage(messageId, FetchGroup.MINIMAL, bobSession); diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java index 6da8aa0..9063fd6 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java @@ -133,7 +133,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1388617200000L), session, RECENT, - new Flags(Flags.Flag.DELETED)); + new Flags(Flags.Flag.DELETED)).getIds(); // sentDate: Thu, 4 Jun 2015 09:23:37 +0000 // Internal date : 2014/02/02 00:00:00.000 m2 = inboxMessageManager.appendMessage( @@ -141,7 +141,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1391295600000L), session, RECENT, - new Flags(Flags.Flag.ANSWERED)); + new Flags(Flags.Flag.ANSWERED)).getIds(); // sentDate: Thu, 4 Jun 2015 09:27:37 +0000 // Internal date : 2014/03/02 00:00:00.000 m3 = inboxMessageManager.appendMessage( @@ -149,7 +149,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1393714800000L), session, RECENT, - new Flags(Flags.Flag.DRAFT)); + new Flags(Flags.Flag.DRAFT)).getIds(); // sentDate: Tue, 2 Jun 2015 08:16:19 +0000 // Internal date : 2014/05/02 00:00:00.000 m4 = inboxMessageManager.appendMessage( @@ -157,7 +157,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1398981600000L), session, RECENT, - new Flags(Flags.Flag.RECENT)); + new Flags(Flags.Flag.RECENT)).getIds(); // sentDate: Fri, 15 May 2015 06:35:59 +0000 // Internal date : 2014/04/02 00:00:00.000 m5 = inboxMessageManager.appendMessage( @@ -165,7 +165,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1396389600000L), session, RECENT, - new Flags(Flags.Flag.FLAGGED)); + new Flags(Flags.Flag.FLAGGED)).getIds(); // sentDate: Wed, 03 Jun 2015 19:14:32 +0000 // Internal date : 2014/06/02 00:00:00.000 m6 = inboxMessageManager.appendMessage( @@ -173,7 +173,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1401660000000L), session, RECENT, - new Flags(Flags.Flag.SEEN)); + new Flags(Flags.Flag.SEEN)).getIds(); // sentDate: Thu, 04 Jun 2015 07:36:08 +0000 // Internal date : 2014/07/02 00:00:00.000 m7 = inboxMessageManager.appendMessage( @@ -181,7 +181,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1404252000000L), session, NOT_RECENT, - new Flags()); + new Flags()).getIds(); // sentDate: Thu, 4 Jun 2015 06:08:41 +0200 // Internal date : 2014/08/02 00:00:00.000 m8 = inboxMessageManager.appendMessage( @@ -189,7 +189,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1406930400000L), session, RECENT, - new Flags("Hello")); + new Flags("Hello")).getIds(); // sentDate: Thu, 4 Jun 2015 06:08:41 +0200 // Internal date : 2014/08/02 00:00:00.000 mOther = myFolderMessageManager.appendMessage( @@ -197,34 +197,34 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1406930400000L), session, RECENT, - new Flags(Flags.Flag.SEEN)); + new Flags(Flags.Flag.SEEN)).getIds(); m9 = inboxMessageManager.appendMessage( ClassLoader.getSystemResourceAsStream("eml/frnog.eml"), new Date(1409608800000L), session, RECENT, - new Flags("Hello you")); + new Flags("Hello you")).getIds(); mailWithAttachment = myFolderMessageManager.appendMessage( ClassLoader.getSystemResourceAsStream("eml/oneAttachmentAndSomeTextInlined.eml"), new Date(1409608900000L), session, RECENT, - new Flags("Hello you")); + new Flags("Hello you")).getIds(); mailWithInlinedAttachment = myFolderMessageManager.appendMessage( ClassLoader.getSystemResourceAsStream("eml/oneInlinedAttachment.eml"), new Date(1409608900000L), session, RECENT, - new Flags("Hello you")); + new Flags("Hello you")).getIds(); m10 = otherInboxMessageManager.appendMessage( ClassLoader.getSystemResourceAsStream("eml/mail1.eml"), new Date(1391295600000L), otherSession, RECENT, - new Flags()); + new Flags()).getIds(); await(); } @@ -422,7 +422,7 @@ public abstract class AbstractMessageSearchIndexTest { ComposedMessageId mailWithDotsInHeader = myFolderMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(ClassLoader.getSystemResourceAsStream("eml/headerWithDot.eml")), - session); + session).getIds(); await(); SearchQuery searchQuery = new SearchQuery(SearchQuery.all()); @@ -437,7 +437,7 @@ public abstract class AbstractMessageSearchIndexTest { ComposedMessageId mailWithDotsInHeader = myFolderMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(ClassLoader.getSystemResourceAsStream("eml/headerWithDot.eml")), - session); + session).getIds(); await(); SearchQuery searchQuery = new SearchQuery(SearchQuery.headerExists("X-header.with.dots")); @@ -453,7 +453,7 @@ public abstract class AbstractMessageSearchIndexTest { ComposedMessageId m11 = inboxMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(ClassLoader.getSystemResourceAsStream("eml/mail5.eml")), - session); + session).getIds(); String emailToSearch = "luc.du...@james.apache.org"; @@ -1362,7 +1362,7 @@ public abstract class AbstractMessageSearchIndexTest { ComposedMessageId messageWithBeautifulBananaAsTextAttachment = myFolderMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(ClassLoader.getSystemResourceAsStream("eml/emailWithTextAttachment.eml")), - session); + session).getIds(); await(); SearchQuery searchQuery = new SearchQuery(SearchQuery.mailContains("User message banana")); @@ -1377,7 +1377,7 @@ public abstract class AbstractMessageSearchIndexTest { ComposedMessageId messageWithBeautifulBananaAsTextAttachment = myFolderMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(ClassLoader.getSystemResourceAsStream("eml/emailWithTextAttachment.eml")), - session); + session).getIds(); await(); SearchQuery searchQuery = new SearchQuery(SearchQuery.attachmentContains("beautiful banana")); @@ -1401,7 +1401,7 @@ public abstract class AbstractMessageSearchIndexTest { .setBody(multipart) .build(); ComposedMessageId messageWithBeautifulBananaAsPDFAttachment = myFolderMessageManager - .appendMessage(MessageManager.AppendCommand.from(message), session); + .appendMessage(MessageManager.AppendCommand.from(message), session).getIds(); await(); SearchQuery searchQuery = new SearchQuery(SearchQuery.attachmentContains("beautiful banana")); @@ -1441,19 +1441,19 @@ public abstract class AbstractMessageSearchIndexTest { .build(Message.Builder.of() .setSubject("test") .setBody("testmail", StandardCharsets.UTF_8)), - session); + session).getIds(); ComposedMessageId message2 = messageManager.appendMessage(MessageManager.AppendCommand.builder() .withInternalDate(date2) .build(Message.Builder.of() .setSubject("test") .setBody("testmail", StandardCharsets.UTF_8)), - session); + session).getIds(); ComposedMessageId message3 = messageManager.appendMessage(MessageManager.AppendCommand.builder() .withInternalDate(date3) .build(Message.Builder.of() .setSubject("test") .setBody("testmail", StandardCharsets.UTF_8)), - session); + session).getIds(); await(); @@ -1480,7 +1480,7 @@ public abstract class AbstractMessageSearchIndexTest { .withInternalDate(date1) .build(Message.Builder.of() .setSubject("test") - .setBody("testmail", StandardCharsets.UTF_8)), session); + .setBody("testmail", StandardCharsets.UTF_8)), session).getIds(); ComposedMessageId message2 = messageManager.appendMessage(MessageManager.AppendCommand.builder() .withInternalDate(date2) .build(Message.Builder.of() @@ -1488,12 +1488,12 @@ public abstract class AbstractMessageSearchIndexTest { .setDate(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss") .parse("2017/08/23 00:00:00 "), TimeZone.getTimeZone(ZoneId.of("+0200"))) .setBody("testmail", StandardCharsets.UTF_8)), - session); + session).getIds(); ComposedMessageId message3 = messageManager.appendMessage(MessageManager.AppendCommand.builder() .withInternalDate(date3) .build(Message.Builder.of() .setSubject("test") - .setBody("testmail", StandardCharsets.UTF_8)), session); + .setBody("testmail", StandardCharsets.UTF_8)), session).getIds(); await(); @@ -1555,7 +1555,7 @@ public abstract class AbstractMessageSearchIndexTest { .build()) .build()) .build())), - session); + session).getIds(); await(); diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImplTest.java index 41a043f..694a73c 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImplTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImplTest.java @@ -67,7 +67,7 @@ public class MessageIdReIndexerImplTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); reIndexer.reIndex(createdMessage.getMessageId()).run(); diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java index a24e48a..7399e20 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java @@ -71,7 +71,7 @@ public class ReIndexerImplTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); reIndexer.reIndex(INBOX).run(); @@ -98,7 +98,7 @@ public class ReIndexerImplTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); reIndexer.reIndex().run(); ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); @@ -124,7 +124,7 @@ public class ReIndexerImplTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); reIndexer.reIndex(USERNAME).run(); ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); @@ -150,7 +150,7 @@ public class ReIndexerImplTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); reIndexer.reIndex(INBOX, createdMessage.getUid()).run(); ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); @@ -173,7 +173,7 @@ public class ReIndexerImplTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); reIndexer.reIndex(mailboxId, createdMessage.getUid()).run(); ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); @@ -216,7 +216,7 @@ public class ReIndexerImplTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); reIndexer.reIndex(mailboxId).run(); ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java index 2b348fd..1efaedb 100644 --- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java +++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java @@ -127,7 +127,8 @@ public class AppendProcessor extends AbstractMailboxProcessor<AppendRequest> { final MailboxSession mailboxSession = session.getMailboxSession(); final SelectedMailbox selectedMailbox = session.getSelected(); final boolean isSelectedMailbox = selectedMailbox != null && selectedMailbox.getMailboxId().equals(mailbox.getId()); - final ComposedMessageId messageId = mailbox.appendMessage(message, datetime, mailboxSession, !isSelectedMailbox, flagsToBeSet); + final ComposedMessageId messageId = mailbox.appendMessage(message, datetime, mailboxSession, !isSelectedMailbox, flagsToBeSet) + .getIds(); if (isSelectedMailbox) { selectedMailbox.addRecent(messageId.getUid()); } diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java index f112583..c5b0c54 100644 --- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java +++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java @@ -152,7 +152,7 @@ public class MailboxProbeImpl implements GuiceProbe, MailboxProbe { MailboxSession mailboxSession = mailboxManager.createSystemSession(Username.of(username)); MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, mailboxSession); - return messageManager.appendMessage(message, internalDate, mailboxSession, isRecent, flags); + return messageManager.appendMessage(message, internalDate, mailboxSession, isRecent, flags).getIds(); } public ComposedMessageId appendMessage(String username, MailboxPath mailboxPath, MessageManager.AppendCommand appendCommand) @@ -160,7 +160,7 @@ public class MailboxProbeImpl implements GuiceProbe, MailboxProbe { MailboxSession mailboxSession = mailboxManager.createSystemSession(Username.of(username)); MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, mailboxSession); - return messageManager.appendMessage(appendCommand, mailboxSession); + return messageManager.appendMessage(appendCommand, mailboxSession).getIds(); } @Override diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java index 9722c19..f552ca4 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java @@ -26,6 +26,7 @@ import org.apache.james.core.Username; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.MessageManager.AppendResult; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MailboxExistsException; import org.apache.james.mailbox.model.ComposedMessageId; @@ -49,7 +50,8 @@ public class MailboxAppender { public ComposedMessageId append(MimeMessage mail, Username user, String folder) throws MessagingException { MailboxSession session = createMailboxSession(user); - return append(mail, user, useSlashAsSeparator(folder, session), session); + return append(mail, user, useSlashAsSeparator(folder, session), session) + .getIds(); } private String useSlashAsSeparator(String urlPath, MailboxSession session) throws MessagingException { @@ -63,7 +65,7 @@ public class MailboxAppender { return destination; } - private ComposedMessageId append(MimeMessage mail, Username user, String folder, MailboxSession session) throws MessagingException { + private AppendResult append(MimeMessage mail, Username user, String folder, MailboxSession session) throws MessagingException { mailboxManager.startProcessingRequest(session); try { MailboxPath mailboxPath = MailboxPath.forUser(user, folder); @@ -75,7 +77,7 @@ public class MailboxAppender { } } - private ComposedMessageId appendMessageToMailbox(MimeMessage mail, MailboxSession session, MailboxPath path) throws MailboxException, MessagingException { + private AppendResult appendMessageToMailbox(MimeMessage mail, MailboxSession session, MailboxPath path) throws MailboxException, MessagingException { createMailboxIfNotExist(session, path); final MessageManager mailbox = mailboxManager.getMailbox(path, session); if (mailbox == null) { diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java index 601a78d..44716b2 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java @@ -36,6 +36,8 @@ import org.apache.james.core.builder.MimeMessageBuilder; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.MessageManager.AppendCommand; +import org.apache.james.mailbox.MessageManager.AppendResult; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.metrics.api.MetricFactory; import org.apache.james.metrics.tests.RecordingMetricFactory; @@ -86,6 +88,7 @@ public class LocalDeliveryTest { Username username = Username.of("recei...@domain.com"); MailboxPath inbox = MailboxPath.inbox(username); MessageManager messageManager = mock(MessageManager.class); + when(messageManager.appendMessage(any(AppendCommand.class), any(MailboxSession.class))).thenReturn(mock(AppendResult.class)); when(usersRepository.supportVirtualHosting()).thenReturn(true); when(usersRepository.getUsername(new MailAddress(username.asString()))).thenReturn(username); @@ -98,7 +101,7 @@ public class LocalDeliveryTest { testee.service(mail); // Then - verify(messageManager).appendMessage(any(MessageManager.AppendCommand.class), any(MailboxSession.class)); + verify(messageManager).appendMessage(any(AppendCommand.class), any(MailboxSession.class)); } @Test @@ -107,6 +110,7 @@ public class LocalDeliveryTest { Username username = Username.of("receiver"); MailboxPath inbox = MailboxPath.inbox(username); MessageManager messageManager = mock(MessageManager.class); + when(messageManager.appendMessage(any(AppendCommand.class), any(MailboxSession.class))).thenReturn(mock(AppendResult.class)); when(usersRepository.supportVirtualHosting()).thenReturn(false); when(usersRepository.getUsername(new MailAddress("receiver@localhost"))).thenReturn(username); when(usersRepository.getUsername(new MailAddress(RECEIVER_DOMAIN_COM))).thenReturn(username); @@ -119,7 +123,7 @@ public class LocalDeliveryTest { testee.service(mail); // Then - verify(messageManager).appendMessage(any(MessageManager.AppendCommand.class), any(MailboxSession.class)); + verify(messageManager).appendMessage(any(AppendCommand.class), any(MailboxSession.class)); } private Mail createMail() throws MessagingException, IOException { diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java index 595dce4..3b76e13 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java @@ -38,6 +38,7 @@ import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.MessageManager.AppendResult; import org.apache.james.mailbox.exception.AttachmentNotFoundException; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.AttachmentId; @@ -74,8 +75,8 @@ public class MessageAppender { } public MetaDataWithContent appendMessageInMailboxes(CreationMessageEntry createdEntry, - List<MailboxId> targetMailboxes, - MailboxSession session) throws MailboxException { + List<MailboxId> targetMailboxes, + MailboxSession session) throws MailboxException { Preconditions.checkArgument(!targetMailboxes.isEmpty()); ImmutableList<MessageAttachment> messageAttachments = getMessageAttachments(session, createdEntry.getValue().getAttachments()); byte[] messageContent = mimeMessageConverter.convert(createdEntry, messageAttachments, session); @@ -83,53 +84,54 @@ public class MessageAppender { Date internalDate = Date.from(createdEntry.getValue().getDate().toInstant()); MessageManager mailbox = mailboxManager.getMailbox(targetMailboxes.get(0), session); - ComposedMessageId message = mailbox.appendMessage( + AppendResult appendResult = mailbox.appendMessage( MessageManager.AppendCommand.builder() .withInternalDate(internalDate) .withFlags(getFlags(createdEntry.getValue())) .notRecent() .build(content), session); + ComposedMessageId ids = appendResult.getIds(); if (targetMailboxes.size() > 1) { - messageIdManager.setInMailboxes(message.getMessageId(), targetMailboxes, session); + messageIdManager.setInMailboxes(ids.getMessageId(), targetMailboxes, session); } return MetaDataWithContent.builder() - .uid(message.getUid()) + .uid(ids.getUid()) .keywords(createdEntry.getValue().getKeywords()) .internalDate(internalDate.toInstant()) .sharedContent(content) .size(messageContent.length) - .attachments(messageAttachments) + .attachments(appendResult.getMessageAttachments()) .mailboxId(mailbox.getId()) - .messageId(message.getMessageId()) + .messageId(ids.getMessageId()) .build(); } public MetaDataWithContent appendMessageInMailbox(org.apache.james.mime4j.dom.Message message, - MessageManager messageManager, - List<MessageAttachment> attachments, - Flags flags, - MailboxSession session) throws MailboxException { + MessageManager messageManager, + Flags flags, + MailboxSession session) throws MailboxException { byte[] messageContent = asBytes(message); SharedByteArrayInputStream content = new SharedByteArrayInputStream(messageContent); Date internalDate = new Date(); - ComposedMessageId appendedMessage = messageManager.appendMessage(MessageManager.AppendCommand.builder() + AppendResult appendResult = messageManager.appendMessage(MessageManager.AppendCommand.builder() .withFlags(flags) .build(content), session); + ComposedMessageId ids = appendResult.getIds(); return MetaDataWithContent.builder() - .uid(appendedMessage.getUid()) + .uid(ids.getUid()) .keywords(Keywords.lenientFactory().fromFlags(flags)) .internalDate(internalDate.toInstant()) .sharedContent(content) .size(messageContent.length) - .attachments(attachments) + .attachments(appendResult.getMessageAttachments()) .mailboxId(messageManager.getId()) - .messageId(appendedMessage.getMessageId()) + .messageId(ids.getMessageId()) .build(); } @@ -141,12 +143,6 @@ public class MessageAppender { } } - public MetaDataWithContent appendMessageInMailbox(CreationMessageEntry createdEntry, - MailboxId targetMailbox, - MailboxSession session) throws MailboxException { - return appendMessageInMailboxes(createdEntry, ImmutableList.of(targetMailbox), session); - } - private Flags getFlags(CreationMessage message) { return message.getKeywords().asFlags(); } diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java index 9b782ec..98f6675 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java @@ -22,7 +22,6 @@ package org.apache.james.jmap.draft.methods; import static org.apache.james.jmap.draft.methods.Method.JMAP_PREFIX; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.List; import javax.inject.Inject; @@ -43,13 +42,9 @@ import org.apache.james.mailbox.Role; import org.apache.james.mailbox.SystemMailboxesProvider; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.OverQuotaException; -import org.apache.james.mailbox.model.Attachment; import org.apache.james.mailbox.model.FetchGroup; -import org.apache.james.mailbox.model.MessageAttachment; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.MessageResult; -import org.apache.james.mdn.MDN; -import org.apache.james.mdn.MDNReport; import org.apache.james.metrics.api.MetricFactory; import org.apache.james.mime4j.codec.DecodeMonitor; import org.apache.james.mime4j.dom.Message; @@ -60,8 +55,6 @@ import org.apache.james.server.core.Envelope; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.collect.ImmutableList; - public class SendMDNProcessor implements SetMessagesProcessor { private static final Logger LOGGER = LoggerFactory.getLogger(SendMDNProcessor.class); @@ -145,14 +138,12 @@ public class SendMDNProcessor implements SetMessagesProcessor { JmapMDN mdn = MDNCreationEntry.getValue(); Message originalMessage = retrieveOriginalMessage(mdn, mailboxSession); - MDNReport mdnReport = mdn.generateReport(originalMessage, mailboxSession); - List<MessageAttachment> reportAsAttachment = ImmutableList.of(convertReportToAttachment(mdnReport)); Message mdnAnswer = mdn.generateMDNMessage(originalMessage, mailboxSession); Flags seen = new Flags(Flags.Flag.SEEN); MetaDataWithContent metaDataWithContent = messageAppender.appendMessageInMailbox(mdnAnswer, - getOutbox(mailboxSession), reportAsAttachment, seen, mailboxSession); + getOutbox(mailboxSession), seen, mailboxSession); messageSender.sendMessage(metaDataWithContent, Envelope.fromMime4JMessage(mdnAnswer), mailboxSession); @@ -173,19 +164,6 @@ public class SendMDNProcessor implements SetMessagesProcessor { return messageBuilder.parseMessage(messages.get(0).getHeaders().getInputStream()); } - private MessageAttachment convertReportToAttachment(MDNReport mdnReport) { - Attachment attachment = Attachment.builder() - .bytes(mdnReport.formattedValue().getBytes(StandardCharsets.UTF_8)) - .type(MDN.DISPOSITION_CONTENT_TYPE) - .build(); - - return MessageAttachment.builder() - .attachment(attachment) - .isInline(true) - .build(); - } - - private MessageManager getOutbox(MailboxSession mailboxSession) throws MailboxException { return systemMailboxesProvider.getMailboxByRole(Role.OUTBOX, mailboxSession.getUser()) .findAny() diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/JmapMDN.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/JmapMDN.java index ecc6429..57194b4 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/JmapMDN.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/JmapMDN.java @@ -176,8 +176,7 @@ public class JmapMDN { .findFirst(); } - - public MDNReport generateReport(Message originalMessage, MailboxSession mailboxSession) throws InvalidOriginMessageForMDNException { + private MDNReport generateReport(Message originalMessage, MailboxSession mailboxSession) throws InvalidOriginMessageForMDNException { if (originalMessage.getMessageId() == null) { throw InvalidOriginMessageForMDNException.missingHeader("Message-ID"); } diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/MessageFastViewProjectionItemFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/MessageFastViewProjectionItemFactoryTest.java index 84fe433..a042f8e 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/MessageFastViewProjectionItemFactoryTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/MessageFastViewProjectionItemFactoryTest.java @@ -136,7 +136,7 @@ class MessageFastViewProjectionItemFactoryTest { MessageResult toMessageResult(String messageAsString) throws Exception { ComposedMessageId composedMessageId = mailbox.appendMessage(MessageManager.AppendCommand.builder() - .build(messageAsString), session); + .build(messageAsString), session).getIds(); return mailbox.getMessages(MessageRange.one(composedMessageId.getUid()), FetchGroup.FULL_CONTENT, session) .next(); diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java index 41b2ad1..c726407 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java @@ -180,9 +180,9 @@ public class GetMessagesMethodTest { @SuppressWarnings("unchecked") public void processShouldFetchMessages() throws Exception { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); - ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session); - ComposedMessageId message2 = inbox.appendMessage(AppendCommand.from(messageContent2), session); - ComposedMessageId message3 = inbox.appendMessage(AppendCommand.from(messageContent3), session); + ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session).getIds(); + ComposedMessageId message2 = inbox.appendMessage(AppendCommand.from(messageContent2), session).getIds(); + ComposedMessageId message3 = inbox.appendMessage(AppendCommand.from(messageContent3), session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId(), @@ -215,7 +215,7 @@ public class GetMessagesMethodTest { org.apache.james.mime4j.dom.Message.Builder.of() .setSubject("message 1 subject") .setBody("my <b>HTML</b> message", "html", StandardCharsets.UTF_8)), - session); + session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message.getMessageId())) @@ -237,7 +237,7 @@ public class GetMessagesMethodTest { @Test public void processShouldReturnOnlyMandatoryPropertiesOnEmptyPropertyList() throws Exception { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); - ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(this.messageContent1), session); + ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(this.messageContent1), session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) @@ -255,7 +255,7 @@ public class GetMessagesMethodTest { public void processShouldReturnAllPropertiesWhenNoPropertyGiven() throws Exception { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); - ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session); + ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) @@ -271,7 +271,7 @@ public class GetMessagesMethodTest { public void processShouldAddMandatoryPropertiesWhenNotInPropertyList() throws Exception { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); - ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session); + ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) @@ -290,7 +290,7 @@ public class GetMessagesMethodTest { public void processShouldReturnTextBodyWhenBodyInPropertyListAndEmptyHtmlBody() throws Exception { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); - ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session); + ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent1), session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) @@ -316,7 +316,7 @@ public class GetMessagesMethodTest { org.apache.james.mime4j.dom.Message.Builder.of() .setSubject("message 1 subject") .setBody("my <b>HTML</b> message", "html", StandardCharsets.UTF_8)), - session); + session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message.getMessageId())) @@ -344,7 +344,7 @@ public class GetMessagesMethodTest { AppendCommand.from(org.apache.james.mime4j.dom.Message.Builder.of() .setSubject("message 1 subject") .setBody("", "html", StandardCharsets.UTF_8)), - session); + session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message.getMessageId())) @@ -378,7 +378,7 @@ public class GetMessagesMethodTest { .addBodyPart(BodyPartBuilder.create() .setBody("<a>The </a> <strong>HTML</strong> message", "html", StandardCharsets.UTF_8)) .build())), - session); + session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message.getMessageId())) @@ -409,7 +409,7 @@ public class GetMessagesMethodTest { .setField(new RawField("HEADer2", "Header2Content")) .setSubject("message 1 subject") .setBody("my message", StandardCharsets.UTF_8)), - session); + session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) @@ -437,7 +437,7 @@ public class GetMessagesMethodTest { .setField(new RawField("HEADer2", "Header2Content")) .setSubject("message 1 subject") .setBody("my message", StandardCharsets.UTF_8)), - session); + session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) @@ -469,7 +469,7 @@ public class GetMessagesMethodTest { .setField(new RawField("HEADer2", "Header2Content")) .setSubject("message 1 subject") .setBody("my message", StandardCharsets.UTF_8)), - session); + session).getIds(); MailboxId customMailboxId = mailboxManager.getMailbox(customMailboxPath, session).getId(); messageIdManager.setInMailboxes(message1.getMessageId(), @@ -506,7 +506,7 @@ public class GetMessagesMethodTest { .setField(new RawField("HEADer2", "Header2Content")) .setSubject("message 1 subject") .setBody("my message", StandardCharsets.UTF_8)), - session); + session).getIds(); MailboxId customMailboxId = mailboxManager.getMailbox(customMailboxPath, session).getId(); messageIdManager.setInMailboxes(message1.getMessageId(), @@ -541,7 +541,7 @@ public class GetMessagesMethodTest { .setField(new RawField("HEADer2", "Header2Content")) .setSubject("message 1 subject") .setBody("my message", StandardCharsets.UTF_8)), - session); + session).getIds(); MailboxId customMailboxId = mailboxManager.getMailbox(customMailboxPath, session).getId(); messageIdManager.setInMailboxes(message1.getMessageId(), @@ -576,7 +576,7 @@ public class GetMessagesMethodTest { .setField(new RawField("HEADer2", "Header2Content")) .setSubject("message 1 subject") .setBody("my message", StandardCharsets.UTF_8)), - session); + session).getIds(); MailboxId customMailboxId = mailboxManager.getMailbox(customMailboxPath, session).getId(); messageIdManager.setInMailboxes(message1.getMessageId(), @@ -611,8 +611,8 @@ public class GetMessagesMethodTest { .setBody("my message", StandardCharsets.UTF_8) .build(); - ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent), session); - ComposedMessageId message2 = inbox.appendMessage(AppendCommand.from(messageContent), session); + ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent), session).getIds(); + ComposedMessageId message2 = inbox.appendMessage(AppendCommand.from(messageContent), session).getIds(); doCallRealMethod() .doThrow(new RuntimeException()) @@ -643,17 +643,17 @@ public class GetMessagesMethodTest { AppendCommand.builder() .withFlags(flags) .build(messageContent1), - session); + session).getIds(); ComposedMessageId message2 = inbox.appendMessage( AppendCommand.builder() .withFlags(flags) .build(messageContent2), - session); + session).getIds(); ComposedMessageId message3 = inbox.appendMessage( AppendCommand.builder() .withFlags(flags) .build(messageContent3), - session); + session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId(), @@ -702,17 +702,17 @@ public class GetMessagesMethodTest { AppendCommand.builder() .withFlags(flags1) .build(messageContent1), - session); + session).getIds(); ComposedMessageId message2 = inbox.appendMessage( AppendCommand.builder() .withFlags(flags2) .build(messageContent2), - session); + session).getIds(); ComposedMessageId message3 = inbox.appendMessage( AppendCommand.builder() .withFlags(flags3) .build(messageContent3), - session); + session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId(), @@ -756,7 +756,7 @@ public class GetMessagesMethodTest { AppendCommand.builder() .withFlags(flags) .build(messageContent1), - session); + session).getIds(); GetMessagesRequest request = GetMessagesRequest.builder() .ids(ImmutableList.of(message1.getMessageId())) diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessorTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessorTest.java index 1afbcb1..a9a8c8d 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessorTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessorTest.java @@ -204,7 +204,9 @@ public class SetMessagesUpdateProcessorTest { when(outbox.getMailboxPath()).thenReturn(MailboxPath.forUser(USER, OUTBOX)); when(outbox.appendMessage(any(MessageManager.AppendCommand.class), any(MailboxSession.class))) - .thenReturn(new ComposedMessageId(OUTBOX_ID, TestMessageId.of(23), MessageUid.of(1))); + .thenReturn(new MessageManager.AppendResult( + new ComposedMessageId(OUTBOX_ID, TestMessageId.of(23), MessageUid.of(1)), + Optional.empty())); drafts = mock(MessageManager.class); when(drafts.getId()).thenReturn(DRAFTS_ID); diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactoryTest.java index 1c1463b..a871a02 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactoryTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactoryTest.java @@ -121,19 +121,19 @@ class MessageFastViewFactoryTest { previewComputedMessage1 = bobInbox.appendMessage(MessageManager.AppendCommand.builder() .withFlags(new Flags(Flags.Flag.SEEN)) .build(ClassLoaderUtils.getSystemResourceAsSharedStream("fullMessage.eml")), - session); + session).getIds(); missingPreviewComputedMessage1 = bobInbox.appendMessage(MessageManager.AppendCommand.builder() .withFlags(new Flags(Flags.Flag.SEEN)) .build(ClassLoaderUtils.getSystemResourceAsSharedStream("fullMessage.eml")), - session); + session).getIds(); previewComputedMessage2 = bobInbox.appendMessage(MessageManager.AppendCommand.builder() .withFlags(new Flags(Flags.Flag.SEEN)) .build(ClassLoaderUtils.getSystemResourceAsSharedStream("fullMessage.eml")), - session); + session).getIds(); previewComputedMessage3 = bobInbox.appendMessage(MessageManager.AppendCommand.builder() .withFlags(new Flags(Flags.Flag.SEEN)) .build(ClassLoaderUtils.getSystemResourceAsSharedStream("fullMessage.eml")), - session); + session).getIds(); fastViewProjection = new MemoryMessageFastViewProjection(new RecordingMetricFactory()); diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java index f6423e4..14f7221 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java @@ -121,7 +121,7 @@ class MessageFullViewFactoryTest { message1 = bobInbox.appendMessage(MessageManager.AppendCommand.builder() .withFlags(new Flags(Flags.Flag.SEEN)) .build(ClassLoaderUtils.getSystemResourceAsSharedStream("fullMessage.eml")), - session); + session).getIds(); fastViewProjection = spy(new MemoryMessageFastViewProjection(new RecordingMetricFactory())); messageFullViewFactory = new MessageFullViewFactory(resources.getBlobManager(), messageContentExtractor, htmlTextExtractor, diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactoryTest.java index 8ed0b63..06b28fc 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactoryTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactoryTest.java @@ -74,7 +74,7 @@ class MessageHeaderViewFactoryTest { message1 = bobInbox.appendMessage(MessageManager.AppendCommand.builder() .withFlags(new Flags(Flags.Flag.SEEN)) .build(ClassLoaderUtils.getSystemResourceAsSharedStream("fullMessage.eml")), - session); + session).getIds(); testee = new MessageHeaderViewFactory(resources.getBlobManager(), messageIdManager); } diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactoryTest.java index 348e1ef..f1423c8 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactoryTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactoryTest.java @@ -66,7 +66,7 @@ class MessageMetadataViewFactoryTest { message1 = bobInbox.appendMessage(MessageManager.AppendCommand.builder() .withFlags(new Flags(Flags.Flag.SEEN)) .build("header: value\r\n\r\nbody"), - session); + session).getIds(); testee = new MessageMetadataViewFactory(resources.getBlobManager(), messageIdManager); } diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/send/PostDequeueDecoratorTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/send/PostDequeueDecoratorTest.java index 1b4f256..2111440 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/send/PostDequeueDecoratorTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/send/PostDequeueDecoratorTest.java @@ -114,7 +114,7 @@ public class PostDequeueDecoratorTest { mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(SENT_MAILBOX_PATH, mailboxSession); - ComposedMessageId sentMessageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); + ComposedMessageId sentMessageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession).getIds(); mail.setAttribute(messageIdAttribute(sentMessageId.getMessageId().serialize())); mail.setAttribute(USERNAME_ATTRIBUTE); @@ -126,7 +126,7 @@ public class PostDequeueDecoratorTest { MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME); mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); - ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); + ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession).getIds(); mail.setAttribute(messageIdAttribute(messageId.getMessageId().serialize())); mail.setAttribute(USERNAME_ATTRIBUTE); @@ -139,7 +139,7 @@ public class PostDequeueDecoratorTest { mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); - ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); + ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession).getIds(); mail.setAttribute(messageIdAttribute(messageId.getMessageId().serialize())); mail.setAttribute(USERNAME_ATTRIBUTE); @@ -157,7 +157,7 @@ public class PostDequeueDecoratorTest { mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); - ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); + ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession).getIds(); mail.setAttribute(messageIdAttribute(messageId.getMessageId().serialize())); mail.setAttribute(USERNAME_ATTRIBUTE); @@ -175,7 +175,7 @@ public class PostDequeueDecoratorTest { mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); - ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); + ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession).getIds(); mail.setAttribute(messageIdAttribute(messageId.getMessageId().serialize())); mail.setAttribute(USERNAME_ATTRIBUTE); @@ -209,7 +209,7 @@ public class PostDequeueDecoratorTest { mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); - ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); + ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession).getIds(); mail.setAttribute(messageIdAttribute(messageId.getMessageId().serialize())); testee.done(true); @@ -265,7 +265,7 @@ public class PostDequeueDecoratorTest { mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); MailboxId sentMailboxId = mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession).get(); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); - ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); + ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession).getIds(); mail.setAttribute(messageIdAttribute(messageId.getMessageId().serialize())); mail.setAttribute(USERNAME_ATTRIBUTE); @@ -293,7 +293,7 @@ public class PostDequeueDecoratorTest { mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); mailboxManager.createMailbox(SENT_MAILBOX_PATH, mailboxSession).get(); MessageManager messageManager = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); - ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession); + ComposedMessageId messageId = messageManager.appendMessage(AppendCommand.from(message), mailboxSession).getIds(); mail.setAttribute(messageIdAttribute(messageId.getMessageId().serialize())); mail.setAttribute(USERNAME_ATTRIBUTE); diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListenerTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListenerTest.java index 5a22e2d..ce2c2a8 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListenerTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListenerTest.java @@ -162,7 +162,7 @@ class ComputeMessageFastViewProjectionListenerTest { ComposedMessageId composedId = inboxMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(previewMessage()), - mailboxSession); + mailboxSession).getIds(); assertThat(Mono.from(messageFastViewProjection.retrieve(composedId.getMessageId())).block()) .isEqualTo(PRECOMPUTED_PROPERTIES_PREVIEW); @@ -173,7 +173,7 @@ class ComputeMessageFastViewProjectionListenerTest { ComposedMessageId composedId = inboxMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(emptyMessage()), - mailboxSession); + mailboxSession).getIds(); assertThat(Mono.from(messageFastViewProjection.retrieve(composedId.getMessageId())).block()) .isEqualTo(PRECOMPUTED_PROPERTIES_EMPTY); @@ -184,7 +184,7 @@ class ComputeMessageFastViewProjectionListenerTest { ComposedMessageId composedId = inboxMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(ClassLoaderUtils.getSystemResourceAsSharedStream("fullMessage.eml")), - mailboxSession); + mailboxSession).getIds(); assertThat(Mono.from(messageFastViewProjection.retrieve(composedId.getMessageId())).block()) .isEqualTo(PRECOMPUTED_PROPERTIES_PREVIEW_HAS_ATTACHMENT); @@ -195,7 +195,7 @@ class ComputeMessageFastViewProjectionListenerTest { ComposedMessageId composedId = inboxMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(ClassLoaderUtils.getSystemResourceAsSharedStream("emptyBodyMessageWithOneAttachment.eml")), - mailboxSession); + mailboxSession).getIds(); assertThat(Mono.from(messageFastViewProjection.retrieve(composedId.getMessageId())).block()) .isEqualTo(PRECOMPUTED_PROPERTIES_HAS_ATTACHMENT); @@ -206,12 +206,12 @@ class ComputeMessageFastViewProjectionListenerTest { ComposedMessageId composedId1 = inboxMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(previewMessage()), - mailboxSession); + mailboxSession).getIds(); ComposedMessageId composedId2 = inboxMessageManager.appendMessage( MessageManager.AppendCommand.builder() .build(emptyMessage()), - mailboxSession); + mailboxSession).getIds(); SoftAssertions.assertSoftly(softly -> { softly.assertThat(Mono.from(messageFastViewProjection.retrieve(composedId1.getMessageId())).block()) diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java index ef1e5e6..c58245b 100644 --- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java +++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java @@ -304,7 +304,7 @@ class RecomputeAllFastViewProjectionItemsRequestToTaskTest { Optional<MailboxId> mailboxId = mailboxManager.createMailbox(MailboxPath.inbox(BOB), session); ComposedMessageId messageId = mailboxManager.getMailbox(mailboxId.get(), session).appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - session); + session).getIds(); String taskId = with() .queryParam("action", "recomputeFastViewProjectionItems") @@ -327,7 +327,7 @@ class RecomputeAllFastViewProjectionItemsRequestToTaskTest { Optional<MailboxId> mailboxId = mailboxManager.createMailbox(MailboxPath.inbox(BOB), session); ComposedMessageId messageId = mailboxManager.getMailbox(mailboxId.get(), session).appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - session); + session).getIds(); String taskId1 = with() .queryParam("action", "recomputeFastViewProjectionItems") diff --git a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsRequestToTaskTest.java b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsRequestToTaskTest.java index 807d799..866cc7a 100644 --- a/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsRequestToTaskTest.java +++ b/server/protocols/webadmin/webadmin-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeUserFastViewProjectionItemsRequestToTaskTest.java @@ -372,7 +372,7 @@ class RecomputeUserFastViewProjectionItemsRequestToTaskTest { void recomputeUserShouldUpdateProjection() throws Exception { ComposedMessageId messageId = mailboxManager.getMailbox(bobInboxboxId, bobSession).appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - bobSession); + bobSession).getIds(); String taskId = with() .queryParam("action", "recomputeFastViewProjectionItems") @@ -392,7 +392,7 @@ class RecomputeUserFastViewProjectionItemsRequestToTaskTest { void recomputeUserShouldBeIdempotent() throws Exception { ComposedMessageId messageId = mailboxManager.getMailbox(bobInboxboxId, bobSession).appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - bobSession); + bobSession).getIds(); String taskId1 = with() .queryParam("action", "recomputeFastViewProjectionItems") diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/RestoreService.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/RestoreService.java index 7f2c6a5..3331980 100644 --- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/RestoreService.java +++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/RestoreService.java @@ -80,7 +80,7 @@ class RestoreService { private Mono<RestoreResult> appendToMailbox(MessageManager restoreMailboxManager, DeletedMessage deletedMessage, MailboxSession session) { return appendCommand(deletedMessage) .map(Throwing.<AppendCommand, ComposedMessageId>function( - appendCommand -> restoreMailboxManager.appendMessage(appendCommand, session)).sneakyThrow()) + appendCommand -> restoreMailboxManager.appendMessage(appendCommand, session).getIds()).sneakyThrow()) .map(any -> RESTORE_SUCCEED) .onErrorResume(throwable -> { LOGGER.error("append message {} to restore mailbox of user {} didn't success", diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java index 50da3b0..cba4c7a 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java @@ -207,7 +207,7 @@ class MailboxesRoutesTest { ComposedMessageId composedMessageId = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); doThrow(new RuntimeException()) .when(searchIndex) @@ -244,7 +244,7 @@ class MailboxesRoutesTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); String taskId = with() .post("/mailboxes?task=reIndex") @@ -395,7 +395,7 @@ class MailboxesRoutesTest { ComposedMessageId composedMessageId = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); doThrow(new RuntimeException()) .when(searchIndex) @@ -433,7 +433,7 @@ class MailboxesRoutesTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); String taskId = when() .post("/mailboxes/" + mailboxId.serialize() + "?task=reIndex") @@ -566,7 +566,7 @@ class MailboxesRoutesTest { ComposedMessageId composedMessageId = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); String taskId = when() .post("/mailboxes/" + mailboxId.serialize() + "/mails/" @@ -599,7 +599,7 @@ class MailboxesRoutesTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); String taskId = when() .post("/mailboxes/" + mailboxId.serialize() + "/mails/" @@ -781,7 +781,7 @@ class MailboxesRoutesTest { ComposedMessageId composedMessageId = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); doThrow(new RuntimeException()) .when(searchIndex) @@ -829,7 +829,7 @@ class MailboxesRoutesTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); doThrow(new RuntimeException()).when(searchIndex).add(any(MailboxSession.class), any(Mailbox.class), any(MailboxMessage.class)); diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java index 46ef7e6..4ac0ccd 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java @@ -166,7 +166,7 @@ class MessageRoutesTest { ComposedMessageId composedMessageId = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); String taskId = when() .post("/messages/" + composedMessageId.getMessageId().serialize() + "?task=reIndex") @@ -197,7 +197,7 @@ class MessageRoutesTest { ComposedMessageId composedMessageId = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); String taskId = when() .post("/messages/" + composedMessageId.getMessageId().serialize() + "?task=reIndex") diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java index 6f52c47..4cc023f 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java @@ -1159,7 +1159,7 @@ class UserMailboxesRoutesTest { ComposedMessageId composedMessageId = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); doThrow(new RuntimeException()) .when(searchIndex) @@ -1197,7 +1197,7 @@ class UserMailboxesRoutesTest { ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession) .appendMessage( MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"), - systemSession); + systemSession).getIds(); String taskId = given() .queryParam("task", "reIndex") diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/ExportServiceTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/ExportServiceTest.java index ea86287..e21fc07 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/ExportServiceTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/ExportServiceTest.java @@ -115,7 +115,8 @@ class ExportServiceTest { return testSystem.mailboxManager.getMailbox(bobInboxPath, testSystem.bobSession) .appendMessage(MessageManager.AppendCommand.builder() .build(message), - testSystem.bobSession); + testSystem.bobSession) + .getIds(); } @Test diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java index 949bd4a..9dfe1e5 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/MailboxesExportRequestToTaskTest.java @@ -348,7 +348,7 @@ class MailboxesExportRequestToTaskTest { ComposedMessageId id = testSystem.mailboxManager.getMailbox(bobInboxboxId, testSystem.bobSession).appendMessage( MessageManager.AppendCommand.builder().build(MESSAGE_CONTENT), - testSystem.bobSession); + testSystem.bobSession).getIds(); String taskId = with() .queryParam("action", "export") @@ -375,7 +375,7 @@ class MailboxesExportRequestToTaskTest { ComposedMessageId id = testSystem.mailboxManager.getMailbox(bobInboxboxId, testSystem.bobSession).appendMessage( MessageManager.AppendCommand.builder().build(MESSAGE_CONTENT), - testSystem.bobSession); + testSystem.bobSession).getIds(); testSystem.usersRepository.addUser(CEDRIC, PASSWORD); MailboxSession cedricSession = testSystem.mailboxManager.createSystemSession(CEDRIC); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org