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 d91ce3dbbe003c83c924510d0b210be75c1b0eb9 Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Fri Sep 13 16:18:47 2019 +0700 JAMES-2883 SearchIndex should not attempt to read a deleted mailbox --- .../ElasticSearchListeningMessageSearchIndex.java | 4 ++-- ...ElasticSearchListeningMessageSearchIndexTest.java | 4 ++-- .../lucene/search/LuceneMessageSearchIndex.java | 10 +++++----- .../mailbox/store/search/LazyMessageSearchIndex.java | 4 ++-- .../store/search/ListeningMessageSearchIndex.java | 12 ++++++++---- .../mailbox/tools/indexer/ReIndexerPerformer.java | 2 +- .../tools/indexer/CassandraReIndexerImplTest.java | 3 ++- .../mailbox/tools/indexer/ReIndexerImplTest.java | 20 +++++++++++--------- .../org/apache/james/FakeMessageSearchIndex.java | 2 +- .../james/webadmin/routes/ReindexingRoutesTest.java | 18 +++++++++--------- 10 files changed, 43 insertions(+), 36 deletions(-) diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java index d93836b..c7df3d3 100644 --- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java +++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java @@ -164,12 +164,12 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe } @Override - public void deleteAll(MailboxSession session, Mailbox mailbox) { + public void deleteAll(MailboxSession session, MailboxId mailboxId) { elasticSearchIndexer .deleteAllMatchingQuery( termQuery( JsonMessageConstants.MAILBOX_ID, - mailbox.getMailboxId().serialize())); + mailboxId.serialize())); } @Override diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java index 2a1efb5..f7c2f3f 100644 --- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java +++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java @@ -250,7 +250,7 @@ public class ElasticSearchListeningMessageSearchIndexTest { @Test public void deleteAllShouldWork() { //Given - testee.deleteAll(session, mailbox); + testee.deleteAll(session, MAILBOX_ID); //Then QueryBuilder expectedQueryBuilder = QueryBuilders.termQuery("mailboxId", "12"); @@ -264,7 +264,7 @@ public class ElasticSearchListeningMessageSearchIndexTest { .when(elasticSearchIndexer).deleteAllMatchingQuery(any()); //Then - assertThatThrownBy(() -> testee.deleteAll(session, mailbox)).isInstanceOf(RuntimeException.class); + assertThatThrownBy(() -> testee.deleteAll(session, MAILBOX_ID)).isInstanceOf(RuntimeException.class); } } \ No newline at end of file diff --git a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java index 188a291..88aaeed 100644 --- a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java +++ b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java @@ -1332,18 +1332,18 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex { public void delete(MailboxSession session, Mailbox mailbox, Collection<MessageUid> expungedUids) throws IOException { Collection<MessageRange> messageRanges = MessageRange.toRanges(expungedUids); for (MessageRange messageRange : messageRanges) { - delete(mailbox, messageRange); + delete(mailbox.getMailboxId(), messageRange); } } @Override - public void deleteAll(MailboxSession session, Mailbox mailbox) throws IOException { - delete(mailbox, MessageRange.all()); + public void deleteAll(MailboxSession session, MailboxId mailboxId) throws IOException { + delete(mailboxId, MessageRange.all()); } - public void delete(Mailbox mailbox, MessageRange range) throws IOException { + public void delete(MailboxId mailboxId, MessageRange range) throws IOException { BooleanQuery query = new BooleanQuery(); - query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().serialize())), BooleanClause.Occur.MUST); + query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailboxId.serialize())), BooleanClause.Occur.MUST); query.add(createQuery(range), BooleanClause.Occur.MUST); writer.deleteDocuments(query); diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java index 545bfa5..6a0bf49 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java @@ -96,8 +96,8 @@ public class LazyMessageSearchIndex extends ListeningMessageSearchIndex { } @Override - public void deleteAll(MailboxSession session, Mailbox mailbox) throws Exception { - index.deleteAll(session, mailbox); + public void deleteAll(MailboxSession session, MailboxId mailboxId) throws Exception { + index.deleteAll(session, mailboxId); } /** diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java index 6a9d904..77fa42c 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java @@ -27,6 +27,7 @@ import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.events.Event; import org.apache.james.mailbox.events.MailboxListener; import org.apache.james.mailbox.model.Mailbox; +import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageRange; import org.apache.james.mailbox.model.UpdatedFlags; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; @@ -74,18 +75,21 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex, } private void handleMailboxEvent(Event event, MailboxSession session, MailboxEvent mailboxEvent) throws Exception { - Mailbox mailbox = factory.getMailboxMapper(session).findMailboxById(mailboxEvent.getMailboxId()); + MailboxId mailboxId = mailboxEvent.getMailboxId(); if (event instanceof Added) { + Mailbox mailbox = factory.getMailboxMapper(session).findMailboxById(mailboxId); handleAdded(session, mailbox, (Added) event); } else if (event instanceof Expunged) { + Mailbox mailbox = factory.getMailboxMapper(session).findMailboxById(mailboxId); Expunged expunged = (Expunged) event; delete(session, mailbox, expunged.getUids()); } else if (event instanceof FlagsUpdated) { + Mailbox mailbox = factory.getMailboxMapper(session).findMailboxById(mailboxId); FlagsUpdated flagsUpdated = (FlagsUpdated) event; update(session, mailbox, flagsUpdated.getUpdatedFlags()); } else if (event instanceof MailboxDeletion) { - deleteAll(session, mailbox); + deleteAll(session, mailboxId); } } @@ -128,9 +132,9 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex, * Delete the messages contained in the given {@link Mailbox} from the index * * @param session The mailbox session performing the expunge - * @param mailbox mailbox on which the expunge was performed + * @param mailboxId mailboxId on which the expunge was performed */ - public abstract void deleteAll(MailboxSession session, Mailbox mailbox) throws Exception; + public abstract void deleteAll(MailboxSession session, MailboxId mailboxId) throws Exception; /** * Update the messages concerned by the updated flags list for the given {@link Mailbox} diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java index 5a1dbf4..4caf1c7 100644 --- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java +++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java @@ -73,7 +73,7 @@ public class ReIndexerPerformer { LOGGER.info("Intend to reindex mailbox with mailboxId {}", mailboxId.serialize()); MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXING); Mailbox mailbox = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId); - messageSearchIndex.deleteAll(mailboxSession, mailbox); + messageSearchIndex.deleteAll(mailboxSession, mailboxId); try { return Iterators.toStream( mailboxSessionMapperFactory.getMessageMapper(mailboxSession) diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java index a1a79d8..a862423 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java @@ -37,6 +37,7 @@ import org.apache.james.mailbox.cassandra.CassandraMailboxManagerProvider; import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule; import org.apache.james.mailbox.indexer.ReIndexer; import org.apache.james.mailbox.model.Mailbox; +import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.PreDeletionHooks; @@ -94,7 +95,7 @@ public class CassandraReIndexerImplTest { reIndexer.reIndex(INBOX).run(); // The indexer is called for each message - verify(messageSearchIndex).deleteAll(any(MailboxSession.class), any(Mailbox.class)); + verify(messageSearchIndex).deleteAll(any(MailboxSession.class), any(MailboxId.class)); verify(messageSearchIndex, times(threadCount * operationCount)) .add(any(MailboxSession.class), any(Mailbox.class),any(MailboxMessage.class)); verifyNoMoreInteractions(messageSearchIndex); 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 944ecc9..da02b95 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 @@ -76,14 +76,14 @@ public class ReIndexerImplTest { reIndexer.reIndex(INBOX).run(); ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); - ArgumentCaptor<Mailbox> mailboxCaptor1 = ArgumentCaptor.forClass(Mailbox.class); + ArgumentCaptor<MailboxId> mailboxCaptor1 = ArgumentCaptor.forClass(MailboxId.class); ArgumentCaptor<Mailbox> mailboxCaptor2 = ArgumentCaptor.forClass(Mailbox.class); verify(messageSearchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor1.capture()); verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture()); verifyNoMoreInteractions(messageSearchIndex); - assertThat(mailboxCaptor1.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId)); + assertThat(mailboxCaptor1.getValue()).satisfies(capturedMailboxId -> assertThat(capturedMailboxId).isEqualTo(mailboxId)); assertThat(mailboxCaptor2.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId)); assertThat(messageCaptor.getValue()).satisfies(message -> { assertThat(message.getMailboxId()).isEqualTo(mailboxId); @@ -102,14 +102,14 @@ public class ReIndexerImplTest { reIndexer.reIndex().run(); ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); - ArgumentCaptor<Mailbox> mailboxCaptor1 = ArgumentCaptor.forClass(Mailbox.class); + ArgumentCaptor<MailboxId> mailboxCaptor1 = ArgumentCaptor.forClass(MailboxId.class); ArgumentCaptor<Mailbox> mailboxCaptor2 = ArgumentCaptor.forClass(Mailbox.class); verify(messageSearchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor1.capture()); verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture()); verifyNoMoreInteractions(messageSearchIndex); - assertThat(mailboxCaptor1.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId)); + assertThat(mailboxCaptor1.getValue()).satisfies(capturedMailboxId -> assertThat(capturedMailboxId).isEqualTo(mailboxId)); assertThat(mailboxCaptor2.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId)); assertThat(messageCaptor.getValue()).satisfies(message -> { assertThat(message.getMailboxId()).isEqualTo(mailboxId); @@ -128,14 +128,14 @@ public class ReIndexerImplTest { reIndexer.reIndex(User.fromUsername(USERNAME)).run(); ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); - ArgumentCaptor<Mailbox> mailboxCaptor1 = ArgumentCaptor.forClass(Mailbox.class); + ArgumentCaptor<MailboxId> mailboxCaptor1 = ArgumentCaptor.forClass(MailboxId.class); ArgumentCaptor<Mailbox> mailboxCaptor2 = ArgumentCaptor.forClass(Mailbox.class); verify(messageSearchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor1.capture()); verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture()); verifyNoMoreInteractions(messageSearchIndex); - assertThat(mailboxCaptor1.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId)); + assertThat(mailboxCaptor1.getValue()).satisfies(capturedMailboxId -> assertThat(capturedMailboxId).isEqualTo(mailboxId)); assertThat(mailboxCaptor2.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId)); assertThat(messageCaptor.getValue()).satisfies(message -> { assertThat(message.getMailboxId()).isEqualTo(mailboxId); @@ -220,13 +220,15 @@ public class ReIndexerImplTest { reIndexer.reIndex(mailboxId).run(); ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); + ArgumentCaptor<MailboxId> mailboxIdCaptor = ArgumentCaptor.forClass(MailboxId.class); ArgumentCaptor<Mailbox> mailboxCaptor = ArgumentCaptor.forClass(Mailbox.class); - verify(messageSearchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor.capture()); + verify(messageSearchIndex).deleteAll(any(MailboxSession.class), mailboxIdCaptor.capture()); verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor.capture(), messageCaptor.capture()); verifyNoMoreInteractions(messageSearchIndex); assertThat(mailboxCaptor.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId)); + assertThat(mailboxIdCaptor.getValue()).satisfies(capturedMailboxId -> assertThat(capturedMailboxId).isEqualTo(mailboxId)); assertThat(messageCaptor.getValue()).satisfies(message -> { assertThat(message.getMailboxId()).isEqualTo(mailboxId); assertThat(message.getUid()).isEqualTo(createdMessage.getUid()); @@ -239,12 +241,12 @@ public class ReIndexerImplTest { MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get(); reIndexer.reIndex(mailboxId).run(); - ArgumentCaptor<Mailbox> mailboxCaptor = ArgumentCaptor.forClass(Mailbox.class); + ArgumentCaptor<MailboxId> mailboxCaptor = ArgumentCaptor.forClass(MailboxId.class); verify(messageSearchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor.capture()); verifyNoMoreInteractions(messageSearchIndex); - assertThat(mailboxCaptor.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId)); + assertThat(mailboxCaptor.getValue()).satisfies(capturedMailboxId -> assertThat(capturedMailboxId).isEqualTo(mailboxId)); } @Test diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java index b17dab3..e272402 100644 --- a/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java +++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java @@ -60,7 +60,7 @@ public class FakeMessageSearchIndex extends ListeningMessageSearchIndex { } @Override - public void deleteAll(MailboxSession session, Mailbox mailbox) throws Exception { + public void deleteAll(MailboxSession session, MailboxId mailboxId) throws Exception { throw new NotImplementedException("not implemented"); } diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java index 93301d7..b8c09d7 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java @@ -256,14 +256,14 @@ class ReindexingRoutesTest { ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); - ArgumentCaptor<Mailbox> mailboxCaptor1 = ArgumentCaptor.forClass(Mailbox.class); + ArgumentCaptor<MailboxId> mailboxIdCaptor = ArgumentCaptor.forClass(MailboxId.class); ArgumentCaptor<Mailbox> mailboxCaptor2 = ArgumentCaptor.forClass(Mailbox.class); - verify(searchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor1.capture()); + verify(searchIndex).deleteAll(any(MailboxSession.class), mailboxIdCaptor.capture()); verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture()); verifyNoMoreInteractions(searchIndex); - assertThat(mailboxCaptor1.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId)); + assertThat(mailboxIdCaptor.getValue()).matches(capturedMailboxId -> capturedMailboxId.equals(mailboxId)); assertThat(mailboxCaptor2.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId)); assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId) && message.getUid().equals(createdMessage.getUid())); @@ -443,14 +443,14 @@ class ReindexingRoutesTest { ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); - ArgumentCaptor<Mailbox> mailboxCaptor1 = ArgumentCaptor.forClass(Mailbox.class); + ArgumentCaptor<MailboxId> mailboxIdCaptor = ArgumentCaptor.forClass(MailboxId.class); ArgumentCaptor<Mailbox> mailboxCaptor2 = ArgumentCaptor.forClass(Mailbox.class); - verify(searchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor1.capture()); + verify(searchIndex).deleteAll(any(MailboxSession.class), mailboxIdCaptor.capture()); verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture()); verifyNoMoreInteractions(searchIndex); - assertThat(mailboxCaptor1.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId)); + assertThat(mailboxIdCaptor.getValue()).matches(capturedMailboxId -> capturedMailboxId.equals(mailboxId)); assertThat(mailboxCaptor2.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId)); assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId) && message.getUid().equals(createdMessage.getUid())); @@ -631,14 +631,14 @@ class ReindexingRoutesTest { ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class); - ArgumentCaptor<Mailbox> mailboxCaptor1 = ArgumentCaptor.forClass(Mailbox.class); + ArgumentCaptor<MailboxId> mailboxIdCaptor = ArgumentCaptor.forClass(MailboxId.class); ArgumentCaptor<Mailbox> mailboxCaptor2 = ArgumentCaptor.forClass(Mailbox.class); - verify(searchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor1.capture()); + verify(searchIndex).deleteAll(any(MailboxSession.class), mailboxIdCaptor.capture()); verify(searchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture()); verifyNoMoreInteractions(searchIndex); - assertThat(mailboxCaptor1.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId)); + assertThat(mailboxIdCaptor.getValue()).matches(capturedMailboxId -> capturedMailboxId.equals(mailboxId)); assertThat(mailboxCaptor2.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId)); assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId) && message.getUid().equals(createdMessage.getUid())); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org