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 a26512a2ba9cff835aebfaf357017840bef1d6b7 Author: Benoit Tellier <[email protected]> AuthorDate: Sun Apr 12 16:48:20 2020 +0700 JAMES-3148 ACL mapper should not position default value --- .../apache/james/mailbox/cassandra/mail/CassandraACLMapper.java | 3 +-- .../james/mailbox/cassandra/mail/CassandraMailboxMapper.java | 9 +++++++-- .../mailbox/cassandra/mail/task/MailboxMergingTaskRunner.java | 8 ++++++-- .../james/mailbox/cassandra/mail/CassandraACLMapperTest.java | 4 ++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java index 376cd0a..b04814c 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java @@ -112,8 +112,7 @@ public class CassandraACLMapper { public Mono<MailboxACL> getACL(CassandraId cassandraId) { return getStoredACLRow(cassandraId) - .map(row -> getAcl(cassandraId, row)) - .defaultIfEmpty(MailboxACL.EMPTY); + .map(row -> getAcl(cassandraId, row)); } private MailboxACL getAcl(CassandraId cassandraId, Row row) { diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java index 05d3339..a0b4fd4 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java @@ -159,12 +159,17 @@ public class CassandraMailboxMapper implements MailboxMapper { } private Mono<Mailbox> retrieveMailbox(CassandraId mailboxId) { - Mono<MailboxACL> acl = cassandraACLMapper.getACL(mailboxId); + Mono<MailboxACL> acl = retrieveAcl(mailboxId); Mono<Mailbox> simpleMailbox = mailboxDAO.retrieveMailbox(mailboxId); return acl.zipWith(simpleMailbox, this::addAcl); } + private Mono<MailboxACL> retrieveAcl(CassandraId mailboxId) { + return cassandraACLMapper.getACL(mailboxId) + .defaultIfEmpty(MailboxACL.EMPTY); + } + private Mailbox addAcl(MailboxACL acl, Mailbox mailbox) { mailbox.setACL(acl); return mailbox; @@ -302,7 +307,7 @@ public class CassandraMailboxMapper implements MailboxMapper { private Mono<Mailbox> toMailboxWithAcl(Mailbox mailbox) { CassandraId cassandraId = (CassandraId) mailbox.getMailboxId(); - return cassandraACLMapper.getACL(cassandraId) + return retrieveAcl(cassandraId) .map(acl -> { mailbox.setACL(acl); return mailbox; 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 794c2e6..8e7c6e0 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 @@ -89,8 +89,12 @@ public class MailboxMergingTaskRunner { private void mergeRights(CassandraId oldMailboxId, CassandraId newMailboxId) { try { - MailboxACL oldAcl = cassandraACLMapper.getACL(oldMailboxId).block(); - MailboxACL newAcl = cassandraACLMapper.getACL(newMailboxId).block(); + MailboxACL oldAcl = cassandraACLMapper.getACL(oldMailboxId) + .defaultIfEmpty(MailboxACL.EMPTY) + .block(); + MailboxACL newAcl = cassandraACLMapper.getACL(newMailboxId) + .defaultIfEmpty(MailboxACL.EMPTY) + .block(); MailboxACL finalAcl = newAcl.union(oldAcl); cassandraACLMapper.setACL(newMailboxId, finalAcl); diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java index d6dafc1..f3f8b81 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java @@ -85,7 +85,7 @@ class CassandraACLMapperTest { @Test void retrieveACLWhenNoACLStoredShouldReturnEmptyACL() { - assertThat(cassandraACLMapper.getACL(MAILBOX_ID).block()).isEqualTo(MailboxACL.EMPTY); + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).blockOptional()).isEmpty(); } @Test @@ -98,7 +98,7 @@ class CassandraACLMapperTest { cassandraACLMapper.delete(MAILBOX_ID).block(); - assertThat(cassandraACLMapper.getACL(MAILBOX_ID).block()).isEqualTo(MailboxACL.EMPTY); + assertThat(cassandraACLMapper.getACL(MAILBOX_ID).blockOptional()).isEmpty(); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
