You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/12/07 03:57:38 UTC

[james-project] 08/13: JAMES-3435 CassandraACLDAOV2 no longer need to return ACLDiffs upon updates

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 38024f9566c820bd1b6a84a3e9359a1e65017f99
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sat Dec 5 08:39:19 2020 +0700

    JAMES-3435 CassandraACLDAOV2 no longer need to return ACLDiffs upon updates
    
    The event sourcing system wrapping CassandraACLDAOV2 updates already takes care of it.
---
 .../mailbox/cassandra/mail/CassandraACLDAO.java    | 42 ----------------------
 .../mailbox/cassandra/mail/CassandraACLDAOV1.java  |  2 +-
 .../mailbox/cassandra/mail/CassandraACLDAOV2.java  | 23 +++---------
 .../mailbox/cassandra/mail/utils/GuiceUtils.java   |  1 -
 4 files changed, 6 insertions(+), 62 deletions(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAO.java
deleted file mode 100644
index 627baec..0000000
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAO.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mailbox.cassandra.mail;
-
-import java.util.function.Supplier;
-
-import org.apache.james.mailbox.acl.ACLDiff;
-import org.apache.james.mailbox.cassandra.ids.CassandraId;
-import org.apache.james.mailbox.model.MailboxACL;
-
-import reactor.core.publisher.Mono;
-
-public interface CassandraACLDAO {
-    interface CassandraACLDAOSupplier extends Supplier<CassandraACLDAO> {
-
-    }
-
-    Mono<Void> delete(CassandraId cassandraId);
-
-    Mono<MailboxACL> getACL(CassandraId cassandraId);
-
-    Mono<ACLDiff> updateACL(CassandraId cassandraId, MailboxACL.ACLCommand command);
-
-    Mono<ACLDiff> setACL(CassandraId cassandraId, MailboxACL mailboxACL);
-}
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV1.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV1.java
index 3bd9c47..db5eb86 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV1.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV1.java
@@ -54,7 +54,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 
 import reactor.core.publisher.Mono;
 
-public class CassandraACLDAOV1 implements CassandraACLDAO {
+public class CassandraACLDAOV1 {
     public static final int INITIAL_VALUE = 0;
     private static final Logger LOG = LoggerFactory.getLogger(CassandraACLDAOV1.class);
     private static final String OLD_VERSION = "oldVersion";
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV2.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV2.java
index c9e6339..8357650 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV2.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLDAOV2.java
@@ -31,7 +31,6 @@ import javax.inject.Inject;
 
 import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
-import org.apache.james.mailbox.acl.ACLDiff;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
 import org.apache.james.mailbox.cassandra.table.CassandraACLV2Table;
@@ -49,7 +48,7 @@ import com.google.common.collect.ImmutableSet;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
-public class CassandraACLDAOV2 implements CassandraACLDAO {
+public class CassandraACLDAOV2 {
     private final CassandraAsyncExecutor executor;
     private final PreparedStatement insertRights;
     private final PreparedStatement removeRights;
@@ -125,26 +124,14 @@ public class CassandraACLDAOV2 implements CassandraACLDAO {
             .reduce(Throwing.biFunction(MailboxACL::union));
     }
 
-    public Mono<ACLDiff> updateACL(CassandraId cassandraId, MailboxACL.ACLCommand command) {
-        return getACL(cassandraId)
-            .switchIfEmpty(Mono.just(new MailboxACL()))
-            .flatMap(before -> doUpdateACL(cassandraId, command)
-                .then(getACL(cassandraId)
-                    .switchIfEmpty(Mono.just(new MailboxACL()))
-                    .map(after -> ACLDiff.computeDiff(before, after))));
-    }
-
-    public Mono<ACLDiff> setACL(CassandraId cassandraId, MailboxACL mailboxACL) {
-        return getACL(cassandraId)
-            .switchIfEmpty(Mono.just(MailboxACL.EMPTY))
-            .flatMap(oldACL -> delete(cassandraId)
+    public Mono<Void> setACL(CassandraId cassandraId, MailboxACL mailboxACL) {
+        return delete(cassandraId)
                 .then(Flux.fromIterable(mailboxACL.getEntries().entrySet())
                     .concatMap(entry -> doSetACL(cassandraId, mailboxACL))
-                    .then())
-                .thenReturn(ACLDiff.computeDiff(oldACL, mailboxACL)));
+                    .then());
     }
 
-    private Mono<Void> doUpdateACL(CassandraId cassandraId, MailboxACL.ACLCommand command) {
+    public Mono<Void> updateACL(CassandraId cassandraId, MailboxACL.ACLCommand command) {
         ImmutableSet<String> rightStrings = asStringSet(command.getRights());
         switch (command.getEditMode()) {
             case ADD:
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/utils/GuiceUtils.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/utils/GuiceUtils.java
index ad7fa95..bb2d0c7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/utils/GuiceUtils.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/utils/GuiceUtils.java
@@ -38,7 +38,6 @@ import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
 import org.apache.james.json.DTO;
 import org.apache.james.json.DTOModule;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.mail.CassandraACLDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraACLDAOV1;
 import org.apache.james.mailbox.cassandra.mail.eventsourcing.acl.ACLModule;
 import org.apache.james.mailbox.model.MessageId;


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