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 95b343b1d85a59d51327faf8b2896ccb38aac471
Author: Quan Tran <[email protected]>
AuthorDate: Thu Mar 19 16:11:43 2026 +0700

    JAMES-4191 MessageIdMapper: add findMailboxesReactive(MessageId messageId) 
API
---
 .../mailbox/cassandra/mail/CassandraMessageIdMapper.java    | 11 ++++++++---
 .../mailbox/inmemory/mail/InMemoryMessageIdMapper.java      | 13 +++++++++----
 .../mailbox/postgres/mail/PostgresMessageIdMapper.java      |  5 +++++
 .../apache/james/mailbox/store/mail/MessageIdMapper.java    |  2 ++
 .../james/mailbox/store/mail/model/MessageIdMapperTest.java |  7 +++++++
 5 files changed, 31 insertions(+), 7 deletions(-)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
index 7cd8064c5e..9a37a8ccbc 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
@@ -163,12 +163,17 @@ public class CassandraMessageIdMapper implements 
MessageIdMapper {
 
     @Override
     public List<MailboxId> findMailboxes(MessageId messageId) {
+        return findMailboxesReactive(messageId)
+            .collectList()
+            .block();
+    }
+
+    @Override
+    public Flux<MailboxId> findMailboxesReactive(MessageId messageId) {
         return imapUidDAO.retrieve((CassandraMessageId) messageId, 
Optional.empty(), chooseReadConsistency())
             .map(CassandraMessageMetadata::getComposedMessageId)
             .map(ComposedMessageIdWithMetaData::getComposedMessageId)
-            .map(ComposedMessageId::getMailboxId)
-            .collectList()
-            .block();
+            .map(ComposedMessageId::getMailboxId);
     }
 
     public JamesExecutionProfiles.ConsistencyChoice chooseReadConsistency() {
diff --git 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java
 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java
index 61c38d3148..b90eb181d0 100644
--- 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java
+++ 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java
@@ -93,10 +93,15 @@ public class InMemoryMessageIdMapper implements 
MessageIdMapper {
 
     @Override
     public List<MailboxId> findMailboxes(MessageId messageId) {
-        return find(ImmutableList.of(messageId), 
MessageMapper.FetchType.METADATA)
-            .stream()
-            .map(MailboxMessage::getMailboxId)
-            .collect(ImmutableList.toImmutableList());
+        return findMailboxesReactive(messageId)
+            .collectList()
+            .block();
+    }
+
+    @Override
+    public Flux<MailboxId> findMailboxesReactive(MessageId messageId) {
+        return findReactive(ImmutableList.of(messageId), 
MessageMapper.FetchType.METADATA)
+            .map(MailboxMessage::getMailboxId);
     }
 
     @Override
diff --git 
a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageIdMapper.java
 
b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageIdMapper.java
index e8f910eaa2..00ae4820b4 100644
--- 
a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageIdMapper.java
+++ 
b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/mail/PostgresMessageIdMapper.java
@@ -140,6 +140,11 @@ public class PostgresMessageIdMapper implements 
MessageIdMapper {
             .block();
     }
 
+    @Override
+    public Flux<MailboxId> findMailboxesReactive(MessageId messageId) {
+        return 
mailboxMessageDAO.findMailboxes(PostgresMessageId.class.cast(messageId));
+    }
+
     @Override
     public void save(MailboxMessage mailboxMessage) throws MailboxException {
         PostgresMailboxId mailboxId = 
PostgresMailboxId.class.cast(mailboxMessage.getMailboxId());
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageIdMapper.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageIdMapper.java
index dff3bf456c..74c19f68fa 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageIdMapper.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageIdMapper.java
@@ -54,6 +54,8 @@ public interface MessageIdMapper {
 
     List<MailboxId> findMailboxes(MessageId messageId);
 
+    Flux<MailboxId> findMailboxesReactive(MessageId messageId);
+
     void save(MailboxMessage mailboxMessage) throws MailboxNotFoundException, 
MailboxException;
 
     void copyInMailbox(MailboxMessage mailboxMessage, Mailbox mailbox) throws 
MailboxException;
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
index 618baacec9..62eeb4a13f 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
@@ -145,6 +145,13 @@ public abstract class MessageIdMapperTest {
         assertThat(mailboxes).containsOnly(benwaInboxMailbox.getMailboxId());
     }
 
+    @Test
+    void 
findMailboxesReactiveShouldReturnOneMailboxWhenMessageExistsInOneMailbox() 
throws MailboxException {
+        saveMessages();
+        List<MailboxId> mailboxes = 
sut.findMailboxesReactive(message1.getMessageId()).collectList().block();
+        assertThat(mailboxes).containsOnly(benwaInboxMailbox.getMailboxId());
+    }
+
     @Test
     void 
findMailboxesShouldReturnTwoMailboxesWhenMessageExistsInTwoMailboxes() throws 
MailboxException {
         saveMessages();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to