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 eb28fc39917e85d43f584ffde9aae83330ffe273
Author: Benoit TELLIER <btell...@linagora.com>
AuthorDate: Tue Dec 10 23:22:00 2024 +0100

    [PERF] Leverage events for IMAP move
---
 .../james/mailbox/store/StoreMessageManager.java   | 51 +++++++++++-----------
 1 file changed, 25 insertions(+), 26 deletions(-)

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 699974a7af..9c998cf80c 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
@@ -984,32 +984,31 @@ public class StoreMessageManager implements 
MessageManager {
                         .targetMailboxIds(to.getMailboxEntity().getMailboxId())
                         .build();
 
-                    return Flux.concat(
-                            eventBus.dispatch(EventFactory.added()
-                                    .randomEventId()
-                                    .mailboxSession(session)
-                                    .mailbox(to.getMailboxEntity())
-                                    .metaData(moveUids)
-                                    .isDelivery(!IS_DELIVERY)
-                                    .isAppended(!IS_APPENDED)
-                                    .movedFrom(getId())
-                                    .build(),
-                                new 
MailboxIdRegistrationKey(to.getMailboxEntity().getMailboxId())),
-                            eventBus.dispatch(EventFactory.expunged()
-                                    .randomEventId()
-                                    .mailboxSession(session)
-                                    .mailbox(getMailboxEntity())
-                                    
.addMetaData(moveResult.getOriginalMessages())
-                                    .movedTo(to.getId())
-                                    .build(),
-                                new 
MailboxIdRegistrationKey(mailbox.getMailboxId())),
-                            eventBus.dispatch(EventFactory.moved()
-                                    .messageMoves(messageMoves)
-                                    .messageId(messageIds)
-                                    .session(session)
-                                    .build(),
-                                
messageMoves.impactedMailboxIds().map(MailboxIdRegistrationKey::new).collect(ImmutableSet.toImmutableSet())))
-                        .then()
+                    EventBus.EventWithRegistrationKey added = new 
EventBus.EventWithRegistrationKey(EventFactory.added()
+                        .randomEventId()
+                        .mailboxSession(session)
+                        .mailbox(to.getMailboxEntity())
+                        .metaData(moveUids)
+                        .isDelivery(!IS_DELIVERY)
+                        .isAppended(!IS_APPENDED)
+                        .movedFrom(getId())
+                        .build(),
+                        ImmutableSet.of(new 
MailboxIdRegistrationKey(to.getMailboxEntity().getMailboxId())));
+                    EventBus.EventWithRegistrationKey expunged = new 
EventBus.EventWithRegistrationKey(EventFactory.expunged()
+                        .randomEventId()
+                        .mailboxSession(session)
+                        .mailbox(getMailboxEntity())
+                        .addMetaData(moveResult.getOriginalMessages())
+                        .movedTo(to.getId())
+                        .build(),
+                        ImmutableSet.of(new 
MailboxIdRegistrationKey(mailbox.getMailboxId())));
+                    EventBus.EventWithRegistrationKey  moved = new 
EventBus.EventWithRegistrationKey(EventFactory.moved()
+                        .messageMoves(messageMoves)
+                        .messageId(messageIds)
+                        .session(session)
+                        .build(),
+                        
messageMoves.impactedMailboxIds().map(MailboxIdRegistrationKey::new).collect(ImmutableSet.toImmutableSet()));
+                    return Mono.from(eventBus.dispatch(ImmutableList.of(added, 
expunged, moved)))
                         .thenReturn(moveUids);
                 })));
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to