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 e7015c29861b1342d51e048567d34c29cdfda292
Author: Benoit Tellier <[email protected]>
AuthorDate: Fri Jun 12 16:11:47 2020 +0700

    JAMES-3167 Rework mailbox right merging
---
 .../cassandra/mail/task/MailboxMergingTaskRunner.java   | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTaskRunner.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTaskRunner.java
index bf9888d..08e55f5 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTaskRunner.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTaskRunner.java
@@ -24,7 +24,6 @@ import javax.inject.Inject;
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.acl.ACLDiff;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.mail.CassandraACLMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxDAO;
@@ -41,6 +40,9 @@ import org.apache.james.util.streams.Limit;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.fge.lambdas.Throwing;
+
+import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
 public class MailboxMergingTaskRunner {
@@ -91,12 +93,11 @@ public class MailboxMergingTaskRunner {
     }
 
     private Mono<Void> mergeRights(CassandraId oldMailboxId, CassandraId 
newMailboxId) {
-            Mono<MailboxACL> oldAclMono = 
cassandraACLMapper.getACL(oldMailboxId)
-                    .defaultIfEmpty(MailboxACL.EMPTY);
-            Mono<MailboxACL> newAclMono = 
cassandraACLMapper.getACL(newMailboxId)
-                    .defaultIfEmpty(MailboxACL.EMPTY);
-        return Mono.zip(oldAclMono, newAclMono)
-            .flatMap(acls -> cassandraACLMapper.setACL(newMailboxId, 
acls.getT1())
-                .then(rightsDAO.update(oldMailboxId, 
ACLDiff.computeDiff(acls.getT2(), MailboxACL.EMPTY))));
+            return Flux.concat(
+                    cassandraACLMapper.getACL(oldMailboxId),
+                    cassandraACLMapper.getACL(newMailboxId))
+                .reduce(Throwing.biFunction(MailboxACL::union))
+                .flatMap(union -> cassandraACLMapper.setACL(newMailboxId, 
union))
+                .then();
     }
 }


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

Reply via email to