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 2021/10/05 05:13:38 UTC

[james-project] branch master updated: Remove GroupMembershipResolver and implement (#670)

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


The following commit(s) were added to refs/heads/master by this push:
     new e2def03  Remove GroupMembershipResolver and implement (#670)
e2def03 is described below

commit e2def03d1cf7b4ac057706e93dddfc9941e513fa
Author: vttran <vt...@linagora.com>
AuthorDate: Tue Oct 5 12:13:32 2021 +0700

    Remove GroupMembershipResolver and implement (#670)
---
 .../james/mailbox/acl/GroupMembershipResolver.java |   33 -
 .../james/mailbox/acl/MailboxACLResolver.java      |   15 +-
 .../mailbox/acl/SimpleGroupMembershipResolver.java |   82 --
 .../james/mailbox/acl/UnionMailboxACLResolver.java |   52 +-
 .../acl/SimpleGroupMembershipResolverTest.java     |   77 --
 .../mailbox/acl/UnionMailboxACLResolverTest.java   | 1020 +++-----------------
 .../cassandra/CassandraMailboxManagerProvider.java |    5 +-
 .../cassandra/CassandraTestSystemFixture.java      |    3 +-
 .../CassandraMailboxManagerAttachmentTest.java     |    3 +-
 .../mailbox/jpa/JpaMailboxManagerProvider.java     |    5 +-
 .../maildir/MaildirMailboxManagerProvider.java     |    5 +-
 .../manager/InMemoryIntegrationResources.java      |    5 +-
 .../resources/META-INF/spring/spring-mailbox.xml   |    7 +-
 .../james/mailbox/store/StoreRightManager.java     |   18 +-
 .../mailbox/store/StoreMailboxManagerTest.java     |    4 +-
 .../james/mailbox/store/StoreRightManagerTest.java |    6 +-
 .../cassandra/host/CassandraHostSystem.java        |    3 +-
 .../mpt/imapmailbox/jpa/host/JPAHostSystem.java    |    5 +-
 .../maildir/host/MaildirHostSystem.java            |    5 +-
 .../james/modules/mailbox/JPAMailboxModule.java    |    4 -
 .../org/apache/james/modules/MailboxModule.java    |    5 -
 21 files changed, 160 insertions(+), 1202 deletions(-)

diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/acl/GroupMembershipResolver.java b/mailbox/api/src/main/java/org/apache/james/mailbox/acl/GroupMembershipResolver.java
deleted file mode 100644
index caab6d5..0000000
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/acl/GroupMembershipResolver.java
+++ /dev/null
@@ -1,33 +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.acl;
-
-import org.apache.james.core.Username;
-
-/**
- * An interface for querying group memberships.  
- */
-public interface GroupMembershipResolver {
-
-    /**
-     * Tests if the given user is a member of the given group.
-     */
-    boolean isMember(Username user, String group);
-
-}
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/acl/MailboxACLResolver.java b/mailbox/api/src/main/java/org/apache/james/mailbox/acl/MailboxACLResolver.java
index 96b8869..4e83a5d 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/acl/MailboxACLResolver.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/acl/MailboxACLResolver.java
@@ -49,7 +49,7 @@ public interface MailboxACLResolver {
      * An implementation [...] MAY force rights to always or never be granted to
      * particular identifiers.
      */
-    MailboxACL applyGlobalACL(MailboxACL resourceACL, boolean resourceOwnerIsGroup) throws UnsupportedRightException;
+    MailboxACL applyGlobalACL(MailboxACL resourceACL) throws UnsupportedRightException;
 
     /**
      * Computes a result suitable for the LISTRIGHTS IMAP command. The result is
@@ -62,15 +62,12 @@ public interface MailboxACLResolver {
      * @param resourceOwner
      *            the owner of the mailbox named in the LISTRIGHTS command. User
      *            name or group name.
-     * @param resourceOwnerIsGroup
-     *            true if the {@code resourceOwner} is a group of users, false
-     *            otherwise.
      * @return an array of {@link MailboxACL.Rfc4314Rights}. The first element is the
      *         set of implicit (global) rights which does not need to be set
      *         explicitly for the given identifier. Further elements are groups
      *         of rights which can be set for the given identifier and resource.
      */
-    List<MailboxACL.Rfc4314Rights> listRights(MailboxACL.EntryKey key, GroupMembershipResolver groupMembershipResolver, String resourceOwner, boolean resourceOwnerIsGroup) throws UnsupportedRightException;
+    List<MailboxACL.Rfc4314Rights> listRights(MailboxACL.EntryKey key, String resourceOwner) throws UnsupportedRightException;
 
     /**
      * Computes the rights which apply to the given user and resource. Global
@@ -80,20 +77,14 @@ public interface MailboxACLResolver {
      *            the user for whom the rights are computed, possibly
      *            <code>null</code> when there is no authenticated user in the
      *            given context.
-     * @param groupMembershipResolver
-     *            this resolver is used when checking whether any group rights
-     *            contained in resourceACL are applicable for the requestUser.
      * @param resourceACL
      *            the ACL defining the access right for the resource in
      *            question.
      * @param resourceOwner
      *            this user name is used as a replacement for the "owner" place
      *            holder in the resourceACL.
-     * @param resourceOwnerIsGroup
-     *            true if the resourceOwner is a group of users, false
-     *            otherwise.
      * @return the rights applicable for the given user and resource.
      */
-    MailboxACL.Rfc4314Rights resolveRights(Username requestUser, GroupMembershipResolver groupMembershipResolver, MailboxACL resourceACL, String resourceOwner, boolean resourceOwnerIsGroup) throws UnsupportedRightException;
+    MailboxACL.Rfc4314Rights resolveRights(Username requestUser, MailboxACL resourceACL, String resourceOwner) throws UnsupportedRightException;
 
 }
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/acl/SimpleGroupMembershipResolver.java b/mailbox/api/src/main/java/org/apache/james/mailbox/acl/SimpleGroupMembershipResolver.java
deleted file mode 100644
index 0fd8659..0000000
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/acl/SimpleGroupMembershipResolver.java
+++ /dev/null
@@ -1,82 +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.acl;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.james.core.Username;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-
-/**
- * In memory {@link GroupMembershipResolver} implementation. There is no
- * persistence. You will get only what you add.
- */
-public class SimpleGroupMembershipResolver implements GroupMembershipResolver {
-
-    public static class Membership {
-        private final String group;
-        private final Username user;
-
-        public Membership(Username user, String group) {
-            this.group = group;
-            this.user = user;
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (o instanceof Membership) {
-                Membership that = (Membership) o;
-                
-                return Objects.equal(this.user, that.user) && Objects.equal(this.group, that.group);
-            }
-            return false;
-        }
-
-        @Override
-        public int hashCode() {
-            return Objects.hashCode(group, user);
-        }
-
-        @Override
-        public String toString() {
-            return MoreObjects.toStringHelper(this)
-                .add("group", group)
-                .add("user", user)
-                .toString();
-        }
-
-    }
-
-    private final Set<Membership> memberships = new HashSet<>(32);
-
-    public void addMembership(String group, Username user) {
-        memberships.add(new Membership(user, group));
-    }
-
-    @Override
-    public boolean isMember(Username user, String group) {
-        return memberships.contains(new Membership(user, group));
-    }
-
-}
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/acl/UnionMailboxACLResolver.java b/mailbox/api/src/main/java/org/apache/james/mailbox/acl/UnionMailboxACLResolver.java
index 05a767c..c61d18f 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/acl/UnionMailboxACLResolver.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/acl/UnionMailboxACLResolver.java
@@ -45,7 +45,7 @@ import com.google.common.collect.ImmutableList;
  * applicable identifiers. Inspired by RFC 4314 Section 2.
  * 
  * In
- * {@link UnionMailboxACLResolver#resolveRights(String, org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver, MailboxACL, String, boolean)}
+ * {@link UnionMailboxACLResolver#resolveRights(Username, MailboxACL, String)}
  * all applicable negative and non-negative rights are union-ed separately and
  * the result is computed afterwards with
  * <code>nonNegativeUnion.except(negativeUnion)</code>.
@@ -57,8 +57,6 @@ import com.google.common.collect.ImmutableList;
  * 
  */
 public class UnionMailboxACLResolver implements MailboxACLResolver {
-    public static final MailboxACL DEFAULT_GLOBAL_GROUP_ACL = MailboxACL.OWNER_FULL_EXCEPT_ADMINISTRATION_ACL;
-
     /**
      * Nothing else than full rights for the owner.
      */
@@ -67,26 +65,23 @@ public class UnionMailboxACLResolver implements MailboxACLResolver {
     private static final int POSITIVE_INDEX = 0;
     private static final int NEGATIVE_INDEX = 1;
 
-    private final MailboxACL groupGlobalACL;
     /**
      * Stores global ACL which is merged with ACL of every mailbox when
      * computing
-     * {@link #rightsOf(String, org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver, Mailbox)}
+     * {@link #rightsOf(String, Mailbox)}
      * and
-     * {@link #hasRight(String, Mailbox, Right, org.apache.james.mailbox.MailboxACLResolver.GroupMembershipResolver)}
+     * {@link #hasRight(String, Mailbox, Right)}
      * .
      */
     private final MailboxACL userGlobalACL;
 
     /**
      * Creates a new instance of UnionMailboxACLResolver with
-     * {@link #DEFAULT_GLOBAL_USER_ACL} as {@link #userGlobalACL} and
-     * {@link #DEFAULT_GLOBAL_USER_ACL} as {@link #groupGlobalACL}.
+     * {@link #DEFAULT_GLOBAL_USER_ACL} as {@link #userGlobalACL}
      */
     public UnionMailboxACLResolver() {
         super();
         this.userGlobalACL = DEFAULT_GLOBAL_USER_ACL;
-        this.groupGlobalACL = DEFAULT_GLOBAL_GROUP_ACL;
     }
 
     /**
@@ -107,7 +102,6 @@ public class UnionMailboxACLResolver implements MailboxACLResolver {
             throw new NullPointerException("Missing groupGlobalACL.");
         }
         this.userGlobalACL = userGlobalACL;
-        this.groupGlobalACL = groupGlobalACL;
     }
 
     /**
@@ -117,22 +111,22 @@ public class UnionMailboxACLResolver implements MailboxACLResolver {
      * There are two use cases for which this method was designed and tested:
      * 
      * (1) Calls from
-     * {@link #hasRight(String, GroupMembershipResolver, Right, MailboxACL, String, boolean)}
+     * {@link #hasRight(String, Right, MailboxACL, String)}
      * and
-     * {@link #resolveRights(String, GroupMembershipResolver, MailboxACL, String, boolean)}
+     * {@link #resolveRights(Username, MailboxACL, String)}
      * in which the {@code queryKey} is a {@link NameType#user}.
      * 
      * (2) Calls from
-     * {@link #listRights(EntryKey, GroupMembershipResolver, String, boolean)}
+     * {@link #listRights(EntryKey, String)}
      * where {@code queryKey} can be anything including {@link NameType#user},
      * {@link NameType#group} and all {@link NameType#special} identifiers.
      * 
      * Clearly the set of cases which this method has to handle in (1) is a
      * proper subset of the cases handled in (2). See the javadoc on
-     * {@link #listRights(EntryKey, GroupMembershipResolver, String, boolean)}
+     * {@link #listRights(EntryKey, String)}
      * for more details.
      */
-    protected static boolean applies(EntryKey aclKey, EntryKey queryKey, GroupMembershipResolver groupMembershipResolver, String resourceOwner, boolean resourceOwnerIsGroup) {
+    protected static boolean applies(EntryKey aclKey, EntryKey queryKey, String resourceOwner) {
         final String aclKeyName = aclKey.getName();
         final NameType aclKeyNameType = aclKey.getNameType();
         if (SpecialName.anybody.name().equals(aclKeyName)) {
@@ -146,18 +140,16 @@ public class UnionMailboxACLResolver implements MailboxACLResolver {
                 switch (aclKeyNameType) {
                 case special:
                     if (SpecialName.authenticated.name().equals(aclKeyName)) {
-                        /* non null query user is viewed as authenticated */
+                        /* non-null query user is viewed as authenticated */
                         return true;
                     } else if (SpecialName.owner.name().equals(aclKeyName)) {
-                        return (!resourceOwnerIsGroup && queryUserOrGroupName.equals(resourceOwner)) || (resourceOwnerIsGroup && groupMembershipResolver.isMember(Username.of(queryUserOrGroupName), resourceOwner));
+                        return queryUserOrGroupName.equals(resourceOwner);
                     } else {
                         /* should not happen unless the parent if is changed */
                         throw new IllegalStateException("Unexpected " + SpecialName.class.getName() + "." + aclKeyName);
                     }
                 case user:
                     return aclKeyName.equals(queryUserOrGroupName);
-                case group:
-                    return groupMembershipResolver.isMember(Username.of(queryUserOrGroupName), aclKeyName);
                 default:
                     throw new IllegalStateException("Unexpected " + NameType.class.getName() + "." + aclKeyNameType);
                 }
@@ -171,7 +163,7 @@ public class UnionMailboxACLResolver implements MailboxACLResolver {
                          */
                         return true;
                     } else if (SpecialName.owner.name().equals(aclKeyName)) {
-                        return resourceOwnerIsGroup && queryUserOrGroupName.equals(resourceOwner);
+                        return false;
                     } else {
                         /* should not happen unless the parent if is changed */
                         throw new IllegalStateException("Unexpected " + SpecialName.class.getName() + "." + aclKeyName);
@@ -220,8 +212,8 @@ public class UnionMailboxACLResolver implements MailboxACLResolver {
     }
 
     @Override
-    public MailboxACL applyGlobalACL(MailboxACL resourceACL, boolean resourceOwnerIsGroup) throws UnsupportedRightException {
-        return resourceOwnerIsGroup ? resourceACL.union(groupGlobalACL) : resourceACL.union(userGlobalACL);
+    public MailboxACL applyGlobalACL(MailboxACL resourceACL) throws UnsupportedRightException {
+        return resourceACL.union(userGlobalACL);
     }
 
     /**
@@ -270,11 +262,10 @@ public class UnionMailboxACLResolver implements MailboxACLResolver {
      * authenticated.
      */
     @Override
-    public List<Rfc4314Rights> listRights(EntryKey queryKey, GroupMembershipResolver groupMembershipResolver, String resourceOwner, boolean resourceOwnerIsGroup) throws UnsupportedRightException {
+    public List<Rfc4314Rights> listRights(EntryKey queryKey, String resourceOwner) throws UnsupportedRightException {
         Rfc4314Rights[] positiveNegativePair = { MailboxACL.NO_RIGHTS, MailboxACL.NO_RIGHTS };
 
-        MailboxACL userACL = resourceOwnerIsGroup ? groupGlobalACL : userGlobalACL;
-        resolveRights(queryKey, groupMembershipResolver, userACL.getEntries(), resourceOwner, resourceOwnerIsGroup, positiveNegativePair);
+        resolveRights(queryKey, userGlobalACL.getEntries(), resourceOwner, positiveNegativePair);
 
         if (queryKey.isNegative()) {
             return toListRights(positiveNegativePair[NEGATIVE_INDEX]);
@@ -295,14 +286,13 @@ public class UnionMailboxACLResolver implements MailboxACLResolver {
     }
 
     @Override
-    public Rfc4314Rights resolveRights(Username requestUser, GroupMembershipResolver groupMembershipResolver, MailboxACL resourceACL, String resourceOwner, boolean resourceOwnerIsGroup) throws UnsupportedRightException {
+    public Rfc4314Rights resolveRights(Username requestUser, MailboxACL resourceACL, String resourceOwner) throws UnsupportedRightException {
         Rfc4314Rights[] positiveNegativePair = { MailboxACL.NO_RIGHTS, MailboxACL.NO_RIGHTS };
         final EntryKey queryKey = requestUser == null ? null : EntryKey.createUserEntryKey(requestUser);
-        MailboxACL userACL = resourceOwnerIsGroup ? groupGlobalACL : userGlobalACL;
-        resolveRights(queryKey, groupMembershipResolver, userACL.getEntries(), resourceOwner, resourceOwnerIsGroup, positiveNegativePair);
+        resolveRights(queryKey, userGlobalACL.getEntries(), resourceOwner, positiveNegativePair);
 
         if (resourceACL != null) {
-            resolveRights(queryKey, groupMembershipResolver, resourceACL.getEntries(), resourceOwner, resourceOwnerIsGroup, positiveNegativePair);
+            resolveRights(queryKey, resourceACL.getEntries(), resourceOwner, positiveNegativePair);
         }
 
         return positiveNegativePair[POSITIVE_INDEX].except(positiveNegativePair[NEGATIVE_INDEX]);
@@ -311,12 +301,12 @@ public class UnionMailboxACLResolver implements MailboxACLResolver {
     /**
      * What needs to be done for both global ACL and the given mailboxe's ACL.
      */
-    private void resolveRights(EntryKey queryKey, GroupMembershipResolver groupMembershipResolver, Map<EntryKey, Rfc4314Rights> entries, String resourceOwner, boolean resourceOwnerIsGroup, Rfc4314Rights[] positiveNegativePair)
+    private void resolveRights(EntryKey queryKey, Map<EntryKey, Rfc4314Rights> entries, String resourceOwner, Rfc4314Rights[] positiveNegativePair)
             throws UnsupportedRightException {
         if (entries != null) {
             for (Entry<EntryKey, Rfc4314Rights> entry : entries.entrySet()) {
                 final EntryKey key = entry.getKey();
-                if (applies(key, queryKey, groupMembershipResolver, resourceOwner, resourceOwnerIsGroup)) {
+                if (applies(key, queryKey, resourceOwner)) {
                     if (key.isNegative()) {
                         positiveNegativePair[NEGATIVE_INDEX] = positiveNegativePair[NEGATIVE_INDEX].union(entry.getValue());
                     } else {
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/acl/SimpleGroupMembershipResolverTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/acl/SimpleGroupMembershipResolverTest.java
deleted file mode 100644
index 4a255b8..0000000
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/acl/SimpleGroupMembershipResolverTest.java
+++ /dev/null
@@ -1,77 +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.acl;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.apache.james.core.Username;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-class SimpleGroupMembershipResolverTest {
-    private static final Username USER = Username.of("user");
-
-    private SimpleGroupMembershipResolver simpleGroupMembershipResolver;
-
-    @BeforeEach
-    void setUp() {
-       simpleGroupMembershipResolver = new SimpleGroupMembershipResolver();
-    }
-
-    @Test
-    void isMemberShouldReturnFalseWhenEmptyResolver() {
-        //When
-        boolean actual = simpleGroupMembershipResolver.isMember(USER, "group");
-        //Then
-        assertThat(actual).isFalse();
-    }
-
-    @Test
-    void isMemberShouldReturnTrueWhenTheSearchedMembershipIsPresent() {
-        //Given
-        simpleGroupMembershipResolver.addMembership("group", USER);
-        //When
-        boolean actual = simpleGroupMembershipResolver.isMember(USER, "group");
-        //Then
-        assertThat(actual).isTrue();
-    }
-
-    @Test
-    void addMembershipShouldAddAMembershipWhenNonNullUser() {
-        //When
-        simpleGroupMembershipResolver.addMembership("group", USER);
-        boolean actual = simpleGroupMembershipResolver.isMember(USER, "group");
-        //Then
-        assertThat(actual).isTrue();
-    }
-
-    @Test
-    void addMembershipShouldAddAMembershipWithANullUser() {
-        //Given
-        Username userAdded = null;
-        //When
-        simpleGroupMembershipResolver.addMembership("group", userAdded);
-        boolean actual = simpleGroupMembershipResolver.isMember(userAdded, "group");
-        //Then
-        assertThat(actual).isTrue();
-    }
-
-}
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/acl/UnionMailboxACLResolverTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/acl/UnionMailboxACLResolverTest.java
index 5961f879..2432613 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/acl/UnionMailboxACLResolverTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/acl/UnionMailboxACLResolverTest.java
@@ -27,16 +27,11 @@ import org.apache.james.mailbox.exception.UnsupportedRightException;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxACL.Entry;
 import org.apache.james.mailbox.model.MailboxACL.EntryKey;
-import org.apache.james.mailbox.model.MailboxACL.NameType;
 import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 class UnionMailboxACLResolverTest {
-
-    private static final String GROUP_1 = "group1";
-    private static final String GROUP_2 = "group2";
-
     private static final Username USER_1 = Username.of("user1");
     private static final Username USER_2 = Username.of("user2");
 
@@ -46,10 +41,6 @@ class UnionMailboxACLResolverTest {
     private MailboxACL authenticatedRead;
     private UnionMailboxACLResolver authenticatedReadListWriteGlobal;
     private MailboxACL authenticatedReadNegative;
-    private MailboxACL group1Read;
-    private MailboxACL group1ReadNegative;
-    private SimpleGroupMembershipResolver groupMembershipResolver;
-    private UnionMailboxACLResolver negativeGroup2FullGlobal;
     private UnionMailboxACLResolver noGlobals;
     private UnionMailboxACLResolver ownerFullGlobal;
     private MailboxACL ownerRead;
@@ -58,15 +49,11 @@ class UnionMailboxACLResolverTest {
     private MailboxACL user1ReadNegative;
     private EntryKey user1Key;
     private EntryKey user2Key;
-    private EntryKey group1Key;
-    private EntryKey group2Key;
 
     @BeforeEach
     void setUp() throws Exception {
         user1Key = EntryKey.createUserEntryKey(USER_1);
         user2Key = EntryKey.createUserEntryKey(USER_2);
-        group1Key = EntryKey.createGroupEntryKey(GROUP_1);
-        group2Key = EntryKey.createGroupEntryKey(GROUP_2);
 
         MailboxACL acl = new MailboxACL(new Entry(MailboxACL.AUTHENTICATED_KEY, MailboxACL.FULL_RIGHTS));
         authenticatedReadListWriteGlobal = new UnionMailboxACLResolver(acl, acl);
@@ -75,19 +62,10 @@ class UnionMailboxACLResolverTest {
         acl = new MailboxACL(new Entry(MailboxACL.OWNER_KEY, MailboxACL.FULL_RIGHTS));
         ownerFullGlobal = new UnionMailboxACLResolver(acl, acl);
         noGlobals = new UnionMailboxACLResolver(MailboxACL.EMPTY, MailboxACL.EMPTY);
-        acl = new MailboxACL(new Entry(new EntryKey(GROUP_2, NameType.group, true), MailboxACL.FULL_RIGHTS));
-        negativeGroup2FullGlobal = new UnionMailboxACLResolver(acl, new MailboxACL(new Entry(new EntryKey(GROUP_2, NameType.group, true), MailboxACL.FULL_RIGHTS)));
-
-        groupMembershipResolver = new SimpleGroupMembershipResolver();
-        groupMembershipResolver.addMembership(GROUP_1, USER_1);
-        groupMembershipResolver.addMembership(GROUP_2, USER_2);
 
         user1Read = new MailboxACL(new Entry(user1Key, Rfc4314Rights.fromSerializedRfc4314Rights("r")));
         user1ReadNegative = new MailboxACL(new Entry(EntryKey.createUserEntryKey(USER_1, true), Rfc4314Rights.fromSerializedRfc4314Rights("r")));
 
-        group1Read = new MailboxACL(new Entry(group1Key, Rfc4314Rights.fromSerializedRfc4314Rights("r")));
-        group1ReadNegative = new MailboxACL(new Entry(EntryKey.createGroupEntryKey(GROUP_1, true), Rfc4314Rights.fromSerializedRfc4314Rights("r")));
-
         anybodyRead = new MailboxACL(new Entry(MailboxACL.ANYBODY_KEY, Rfc4314Rights.fromSerializedRfc4314Rights("r")));
         anybodyReadNegative = new MailboxACL(new Entry(MailboxACL.ANYBODY_NEGATIVE_KEY, Rfc4314Rights.fromSerializedRfc4314Rights("r")));
 
@@ -102,298 +80,186 @@ class UnionMailboxACLResolverTest {
     @Test
     void testAppliesNullUser() throws UnsupportedRightException {
 
-        assertThat(UnionMailboxACLResolver.applies(user1Key, null, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(user2Key, null, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(group1Key, null, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(group2Key, null, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.ANYBODY_KEY, null, groupMembershipResolver, USER_1.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.AUTHENTICATED_KEY, null, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.OWNER_KEY, null, groupMembershipResolver, USER_1.asString(), false)).isFalse();
+        assertThat(UnionMailboxACLResolver.applies(user1Key, null, USER_1.asString())).isFalse();
+        assertThat(UnionMailboxACLResolver.applies(user2Key, null, USER_1.asString())).isFalse();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.ANYBODY_KEY, null, USER_1.asString())).isTrue();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.AUTHENTICATED_KEY, null, USER_1.asString())).isFalse();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.OWNER_KEY, null, USER_1.asString())).isFalse();
     }
 
     @Test
     void testAppliesUser() throws UnsupportedRightException {
         /* requester is the resource owner */
-        assertThat(UnionMailboxACLResolver.applies(user1Key, user1Key, groupMembershipResolver, USER_1.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(user2Key, user1Key, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(group1Key, user1Key, groupMembershipResolver, USER_1.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(group2Key, user1Key, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.ANYBODY_KEY, user1Key, groupMembershipResolver, USER_1.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.AUTHENTICATED_KEY, user1Key, groupMembershipResolver, USER_1.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.OWNER_KEY, user1Key, groupMembershipResolver, USER_1.asString(), false)).isTrue();
+        assertThat(UnionMailboxACLResolver.applies(user1Key, user1Key, USER_1.asString())).isTrue();
+        assertThat(UnionMailboxACLResolver.applies(user2Key, user1Key, USER_1.asString())).isFalse();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.ANYBODY_KEY, user1Key, USER_1.asString())).isTrue();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.AUTHENTICATED_KEY, user1Key, USER_1.asString())).isTrue();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.OWNER_KEY, user1Key, USER_1.asString())).isTrue();
 
         /* requester is not the resource user */
-        assertThat(UnionMailboxACLResolver.applies(user1Key, user1Key, groupMembershipResolver, USER_2.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(user2Key, user1Key, groupMembershipResolver, USER_2.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(group1Key, user1Key, groupMembershipResolver, USER_2.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(group2Key, user1Key, groupMembershipResolver, USER_2.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.ANYBODY_KEY, user1Key, groupMembershipResolver, USER_2.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.AUTHENTICATED_KEY, user1Key, groupMembershipResolver, USER_2.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.OWNER_KEY, user1Key, groupMembershipResolver, USER_2.asString(), false)).isFalse();
-
-        /* requester member of owner group */
-        assertThat(UnionMailboxACLResolver.applies(user1Key, user1Key, groupMembershipResolver, GROUP_1, true)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(user2Key, user1Key, groupMembershipResolver, GROUP_1, true)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(group1Key, user1Key, groupMembershipResolver, GROUP_1, true)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(group2Key, user1Key, groupMembershipResolver, GROUP_1, true)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.ANYBODY_KEY, user1Key, groupMembershipResolver, GROUP_1, true)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.AUTHENTICATED_KEY, user1Key, groupMembershipResolver, GROUP_1, true)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.OWNER_KEY, user1Key, groupMembershipResolver, GROUP_1, true)).isTrue();
-
-        /* requester not member of owner group */
-        assertThat(UnionMailboxACLResolver.applies(user1Key, user1Key, groupMembershipResolver, GROUP_2, true)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(user2Key, user1Key, groupMembershipResolver, GROUP_2, true)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(group1Key, user1Key, groupMembershipResolver, GROUP_2, true)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(group2Key, user1Key, groupMembershipResolver, GROUP_2, true)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.ANYBODY_KEY, user1Key, groupMembershipResolver, GROUP_2, true)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.AUTHENTICATED_KEY, user1Key, groupMembershipResolver, GROUP_2, true)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.OWNER_KEY, user1Key, groupMembershipResolver, GROUP_2, true)).isFalse();
+        assertThat(UnionMailboxACLResolver.applies(user1Key, user1Key, USER_2.asString())).isTrue();
+        assertThat(UnionMailboxACLResolver.applies(user2Key, user1Key, USER_2.asString())).isFalse();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.ANYBODY_KEY, user1Key, USER_2.asString())).isTrue();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.AUTHENTICATED_KEY, user1Key, USER_2.asString())).isTrue();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.OWNER_KEY, user1Key, USER_2.asString())).isFalse();
 
         /* owner query */
-        assertThat(UnionMailboxACLResolver.applies(user1Key, MailboxACL.OWNER_KEY, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(user2Key, MailboxACL.OWNER_KEY, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(group1Key, MailboxACL.OWNER_KEY, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(group2Key, MailboxACL.OWNER_KEY, groupMembershipResolver, USER_1.asString(), false)).isFalse();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.ANYBODY_KEY, MailboxACL.OWNER_KEY, groupMembershipResolver, USER_1.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.AUTHENTICATED_KEY, MailboxACL.OWNER_KEY, groupMembershipResolver, USER_1.asString(), false)).isTrue();
-        assertThat(UnionMailboxACLResolver.applies(MailboxACL.OWNER_KEY, MailboxACL.OWNER_KEY, groupMembershipResolver, USER_1.asString(), false)).isTrue();
-
+        assertThat(UnionMailboxACLResolver.applies(user1Key, MailboxACL.OWNER_KEY, USER_1.asString())).isFalse();
+        assertThat(UnionMailboxACLResolver.applies(user2Key, MailboxACL.OWNER_KEY, USER_1.asString())).isFalse();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.ANYBODY_KEY, MailboxACL.OWNER_KEY, USER_1.asString())).isTrue();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.AUTHENTICATED_KEY, MailboxACL.OWNER_KEY, USER_1.asString())).isTrue();
+        assertThat(UnionMailboxACLResolver.applies(MailboxACL.OWNER_KEY, MailboxACL.OWNER_KEY, USER_1.asString())).isTrue();
     }
 
     @Test
     void testResolveRightsNullUser() throws UnsupportedRightException {
 
         assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, user1ReadNegative, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(null, user1Read, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
 
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, user1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, user1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, user1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, user1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, group1Read, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(null, user1Read, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, group1ReadNegative, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(null, user1ReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
 
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, group1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, group1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, group1Read, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(null, user1Read, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, group1ReadNegative, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(null, user1ReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, group1Read, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(null, user1Read, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, group1ReadNegative, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(null, user1ReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, group1Read, USER_1.asString(), false)
+            noGlobals.resolveRights(null, user1Read, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, group1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, anybodyRead, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, anybodyReadNegative, USER_1.asString(), false)
+            noGlobals.resolveRights(null, user1ReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, anybodyRead, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(null, anybodyRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, anybodyReadNegative, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(null, anybodyReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, anybodyRead, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(null, anybodyRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, anybodyReadNegative, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(null, anybodyReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, anybodyRead, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(null, anybodyRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, anybodyReadNegative, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(null, anybodyReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, anybodyRead, USER_1.asString(), false)
+            noGlobals.resolveRights(null, anybodyRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, anybodyReadNegative, USER_1.asString(), false)
+            noGlobals.resolveRights(null, anybodyReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
-
         assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, authenticatedRead, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(null, authenticatedRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, authenticatedReadNegative, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(null, authenticatedReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
 
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, authenticatedRead, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, authenticatedReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, authenticatedRead, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(null, authenticatedRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, authenticatedReadNegative, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(null, authenticatedReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, authenticatedRead, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(null, authenticatedRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, authenticatedReadNegative, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(null, authenticatedReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, authenticatedRead, USER_1.asString(), false)
+            noGlobals.resolveRights(null, authenticatedRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, authenticatedReadNegative, USER_1.asString(), false)
+            noGlobals.resolveRights(null, authenticatedReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
-
         assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, ownerRead, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(null, ownerRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, ownerReadNegative, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(null, ownerReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
 
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, ownerRead, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, ownerReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, ownerRead, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(null, ownerRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, ownerReadNegative, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(null, ownerReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, ownerRead, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(null, ownerRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, ownerReadNegative, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(null, ownerReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, ownerRead, USER_1.asString(), false)
+            noGlobals.resolveRights(null, ownerRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, ownerReadNegative, USER_1.asString(), false)
+            noGlobals.resolveRights(null, ownerReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
@@ -402,23 +268,19 @@ class UnionMailboxACLResolverTest {
     @Test
     void testResolveRightsNullUserGlobals() throws UnsupportedRightException {
         assertThat(
-            anyoneReadListGlobal.resolveRights(null, groupMembershipResolver, user1Read, USER_2.asString(), false)
+            anyoneReadListGlobal.resolveRights(null, user1Read, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(null, groupMembershipResolver, MailboxACL.EMPTY, USER_2.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(null, MailboxACL.EMPTY, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            ownerFullGlobal.resolveRights(null, groupMembershipResolver, MailboxACL.EMPTY, USER_2.asString(), false)
+            ownerFullGlobal.resolveRights(null, MailboxACL.EMPTY, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
         assertThat(
-            noGlobals.resolveRights(null, groupMembershipResolver, MailboxACL.EMPTY, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(null, groupMembershipResolver, MailboxACL.EMPTY, USER_2.asString(), false)
+            noGlobals.resolveRights(null, MailboxACL.EMPTY, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
     }
@@ -428,231 +290,146 @@ class UnionMailboxACLResolverTest {
     void testResolveRightsUserSelfOwner() throws UnsupportedRightException {
 
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, group1Read, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, USER_1.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, user1Read, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, user1ReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
-
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, user1Read, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, user1ReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, user1Read, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, user1ReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, USER_1.asString(), false)
+            noGlobals.resolveRights(USER_1, user1Read, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, USER_1.asString(), false)
+            noGlobals.resolveRights(USER_1, user1ReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, anybodyRead, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, anybodyRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, anybodyReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, anybodyRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, anybodyReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
-
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, anybodyRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, anybodyReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, USER_1.asString(), false)
+            noGlobals.resolveRights(USER_1, anybodyRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, USER_1.asString(), false)
+            noGlobals.resolveRights(USER_1, anybodyReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, authenticatedRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, authenticatedReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, authenticatedRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, authenticatedReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, authenticatedRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, authenticatedReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
-
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, USER_1.asString(), false)
+            noGlobals.resolveRights(USER_1, authenticatedRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, USER_1.asString(), false)
+            noGlobals.resolveRights(USER_1, authenticatedReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, ownerRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, USER_1.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, ownerReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, ownerRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, USER_1.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, ownerReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, ownerRead, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, ownerRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, USER_1.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, ownerReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, USER_1.asString(), false)
+            noGlobals.resolveRights(USER_1, ownerRead, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, USER_1.asString(), false)
+            noGlobals.resolveRights(USER_1, ownerReadNegative, USER_1.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
@@ -663,702 +440,147 @@ class UnionMailboxACLResolverTest {
     void testResolveRightsUserNotOwner() throws UnsupportedRightException {
 
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, user1Read, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, USER_2.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, user1Read, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, USER_2.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, user1ReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, group1Read, USER_2.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, user1Read, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, USER_2.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, user1ReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, USER_2.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, user1Read, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, USER_2.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, user1ReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, USER_2.asString(), false)
+            noGlobals.resolveRights(USER_1, user1Read, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, USER_2.asString(), false)
+            noGlobals.resolveRights(USER_1, user1ReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, USER_2.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, anybodyRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, USER_2.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, anybodyReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, anybodyRead, USER_2.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, anybodyRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, USER_2.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, anybodyReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, USER_2.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, anybodyRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, USER_2.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, anybodyReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
-
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, USER_2.asString(), false)
+            noGlobals.resolveRights(USER_1, anybodyRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, USER_2.asString(), false)
+            noGlobals.resolveRights(USER_1, anybodyReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, USER_2.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, authenticatedRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, USER_2.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, authenticatedReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, USER_2.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, authenticatedRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, USER_2.asString(), false)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, authenticatedReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, USER_2.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, authenticatedRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, USER_2.asString(), false)
+            ownerFullGlobal.resolveRights(USER_1, authenticatedReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, USER_2.asString(), false)
+            noGlobals.resolveRights(USER_1, authenticatedRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, USER_2.asString(), false)
+            noGlobals.resolveRights(USER_1, authenticatedReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, USER_2.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, ownerRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, USER_2.asString(), false)
+            anyoneReadListGlobal.resolveRights(USER_1, ownerReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
 
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, ownerRead, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, USER_2.asString(), false)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-    }
-
-    @Test
-    void testResolveRightsUserMemberOfOwnerGroup() throws UnsupportedRightException {
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, GROUP_1, true)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, ownerRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, GROUP_1, true)
+            authenticatedReadListWriteGlobal.resolveRights(USER_1, ownerReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
 
         assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, GROUP_1, true)
+            ownerFullGlobal.resolveRights(USER_1, ownerRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, user1Read, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
         assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, GROUP_1, true)
+            ownerFullGlobal.resolveRights(USER_1, ownerReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
 
         assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, GROUP_1, true)
+            noGlobals.resolveRights(USER_1, ownerRead, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
         assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, GROUP_1, true)
+            noGlobals.resolveRights(USER_1, ownerReadNegative, USER_2.asString())
                 .contains(MailboxACL.Right.Read))
             .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, group1Read, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, anybodyRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, ownerRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, GROUP_1, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-    }
-
-
-    @Test
-    void testResolveRightsUserNotMemberOfOwnerGroup() throws UnsupportedRightException {
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, user1Read, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, user1Read, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, user1ReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, group1Read, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, group1Read, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, group1ReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, anybodyRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, anybodyReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, authenticatedReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            anyoneReadListGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-        assertThat(
-            authenticatedReadListWriteGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isTrue();
-
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            ownerFullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, ownerRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            noGlobals.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerRead, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-        assertThat(
-            negativeGroup2FullGlobal.resolveRights(USER_1, groupMembershipResolver, ownerReadNegative, GROUP_2, true)
-                .contains(MailboxACL.Right.Read))
-            .isFalse();
-
     }
 }
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
index cad1f34..50ee68f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
@@ -28,9 +28,7 @@ import org.apache.james.events.delivery.InVmEventDelivery;
 import org.apache.james.mailbox.AttachmentContentLoader;
 import org.apache.james.mailbox.Authenticator;
 import org.apache.james.mailbox.Authorizator;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager;
@@ -100,10 +98,9 @@ public class CassandraMailboxManagerProvider {
                                                                  MessageId.Factory messageIdFactory,
                                                                  ThreadIdGuessingAlgorithm threadIdGuessingAlgorithm) {
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
-        GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
         InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new RecordingMetricFactory()), EventBusTestFixture.RETRY_BACKOFF_CONFIGURATION, new MemoryEventDeadLetters());
-        StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver, eventBus);
+        StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, eventBus);
 
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
index 7806baf..a31836e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
@@ -30,7 +30,6 @@ import org.apache.james.events.delivery.InVmEventDelivery;
 import org.apache.james.mailbox.AttachmentContentLoader;
 import org.apache.james.mailbox.Authenticator;
 import org.apache.james.mailbox.Authorizator;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager;
@@ -68,7 +67,7 @@ public class CassandraTestSystemFixture {
 
     public static CassandraMailboxManager createMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory) {
         InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new RecordingMetricFactory()), EventBusTestFixture.RETRY_BACKOFF_CONFIGURATION, new MemoryEventDeadLetters());
-        StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), eventBus);
+        StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), eventBus);
         StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mapperFactory, storeRightManager);
 
         SessionProviderImpl sessionProvider = new SessionProviderImpl(mock(Authenticator.class), mock(Authorizator.class));
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
index 9745536..273f354 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
@@ -33,7 +33,6 @@ import org.apache.james.mailbox.AttachmentContentLoader;
 import org.apache.james.mailbox.Authenticator;
 import org.apache.james.mailbox.Authorizator;
 import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.cassandra.CassandraMailboxManager;
 import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
@@ -83,7 +82,7 @@ class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManagerAttach
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
         InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new RecordingMetricFactory()), EventBusTestFixture.RETRY_BACKOFF_CONFIGURATION, new MemoryEventDeadLetters());
-        StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), eventBus);
+        StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), eventBus);
         StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mailboxSessionMapperFactory, storeRightManager);
 
         SessionProviderImpl sessionProvider = new SessionProviderImpl(noAuthenticator, noAuthorizator);
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
index ab0bbf8..1aafb34 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
@@ -28,9 +28,7 @@ import org.apache.james.events.MemoryEventDeadLetters;
 import org.apache.james.events.delivery.InVmEventDelivery;
 import org.apache.james.mailbox.Authenticator;
 import org.apache.james.mailbox.Authorizator;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider;
 import org.apache.james.mailbox.jpa.mail.JPAUidProvider;
@@ -57,14 +55,13 @@ public class JpaMailboxManagerProvider {
         JPAMailboxSessionMapperFactory mf = new JPAMailboxSessionMapperFactory(entityManagerFactory, new JPAUidProvider(entityManagerFactory), new JPAModSeqProvider(entityManagerFactory));
 
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
-        GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
 
         InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new RecordingMetricFactory()), EventBusTestFixture.RETRY_BACKOFF_CONFIGURATION, new MemoryEventDeadLetters());
-        StoreRightManager storeRightManager = new StoreRightManager(mf, aclResolver, groupMembershipResolver, eventBus);
+        StoreRightManager storeRightManager = new StoreRightManager(mf, aclResolver, eventBus);
         StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mf, storeRightManager,
             LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
         SessionProviderImpl sessionProvider = new SessionProviderImpl(noAuthenticator, noAuthorizator);
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
index 2862403..66e6372 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
@@ -27,9 +27,7 @@ import org.apache.james.events.MemoryEventDeadLetters;
 import org.apache.james.events.delivery.InVmEventDelivery;
 import org.apache.james.mailbox.Authenticator;
 import org.apache.james.mailbox.Authorizator;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.MailboxManagerConfiguration;
@@ -54,11 +52,10 @@ public class MaildirMailboxManagerProvider {
         MaildirMailboxSessionMapperFactory mf = new MaildirMailboxSessionMapperFactory(store);
 
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
-        GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
         InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new RecordingMetricFactory()), EventBusTestFixture.RETRY_BACKOFF_CONFIGURATION, new MemoryEventDeadLetters());
-        StoreRightManager storeRightManager = new StoreRightManager(mf, aclResolver, groupMembershipResolver, eventBus);
+        StoreRightManager storeRightManager = new StoreRightManager(mf, aclResolver, eventBus);
 
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
index b1ed0f1..724938e 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
@@ -35,8 +35,6 @@ import org.apache.james.mailbox.Authenticator;
 import org.apache.james.mailbox.Authorizator;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.SessionProvider;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.extension.PreDeletionHook;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
@@ -296,9 +294,8 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
 
             InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
 
-            GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
             EventBus eventBus = this.eventBus.get();
-            StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), groupMembershipResolver, eventBus);
+            StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), eventBus);
 
             StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mailboxSessionMapperFactory,
                 storeRightManager, limitAnnotationCount.get(), limitAnnotationSize.get());
diff --git a/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml b/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml
index a9af953..5a53bd8 100644
--- a/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml
+++ b/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml
@@ -45,10 +45,6 @@
       Mailbox ACL Resolver
      -->
     <bean id="aclResolver" class="org.apache.james.mailbox.acl.UnionMailboxACLResolver"/>
-    <!-- 
-      Group Membership Resolver
-     -->
-    <bean id="groupMembershipResolver" class="org.apache.james.mailbox.acl.SimpleGroupMembershipResolver"/>
     <!--
       Attachments
      -->
@@ -62,8 +58,7 @@
     <bean id="storeRightManager" class="org.apache.james.mailbox.store.StoreRightManager" >
         <constructor-arg index="0" ref="messageMapperFactory" />
         <constructor-arg index="1" ref="aclResolver" />
-        <constructor-arg index="2" ref="groupMembershipResolver" />
-        <constructor-arg index="3" ref="event-bus" />
+        <constructor-arg index="2" ref="event-bus" />
     </bean>
 
     <bean id="sessionProvider" class="org.apache.james.mailbox.store.SessionProviderImpl" >
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java
index 7274f0c..a623696 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java
@@ -34,7 +34,6 @@ import org.apache.james.core.Username;
 import org.apache.james.events.EventBus;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.RightManager;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
 import org.apache.james.mailbox.events.MailboxIdRegistrationKey;
 import org.apache.james.mailbox.exception.DifferentDomainException;
@@ -61,21 +60,16 @@ import com.google.common.collect.ImmutableMap;
 import reactor.core.publisher.Mono;
 
 public class StoreRightManager implements RightManager {
-    public static final boolean GROUP_FOLDER = true;
-
     private final EventBus eventBus;
     private final MailboxSessionMapperFactory mailboxSessionMapperFactory;
     private final MailboxACLResolver aclResolver;
-    private final GroupMembershipResolver groupMembershipResolver;
 
     @Inject
     public StoreRightManager(MailboxSessionMapperFactory mailboxSessionMapperFactory,
                              MailboxACLResolver aclResolver,
-                             GroupMembershipResolver groupMembershipResolver,
                              EventBus eventBus) {
         this.mailboxSessionMapperFactory = mailboxSessionMapperFactory;
         this.aclResolver = aclResolver;
-        this.groupMembershipResolver = groupMembershipResolver;
         this.eventBus = eventBus;
     }
 
@@ -123,10 +117,8 @@ public class StoreRightManager implements RightManager {
             .map(Throwing.function(value ->
                 aclResolver.resolveRights(
                     username,
-                    groupMembershipResolver,
                     mailbox.getACL(),
-                    mailbox.getUser().asString(),
-                    !GROUP_FOLDER))
+                    mailbox.getUser().asString()))
                 .sneakyThrow())
             .orElse(MailboxACL.NO_RIGHTS);
     }
@@ -138,9 +130,7 @@ public class StoreRightManager implements RightManager {
             .orElseThrow(() -> new MailboxNotFoundException(mailboxPath));
 
         return aclResolver.listRights(key,
-            groupMembershipResolver,
-            mailbox.getUser().asString(),
-            !GROUP_FOLDER);
+            mailbox.getUser().asString());
     }
 
     @Override
@@ -291,9 +281,7 @@ public class StoreRightManager implements RightManager {
      *         there are any).
      */
     public MailboxACL getResolvedMailboxACL(Mailbox mailbox, MailboxSession mailboxSession) throws UnsupportedRightException {
-        MailboxACL acl = aclResolver.applyGlobalACL(
-            mailbox.getACL(),
-            !GROUP_FOLDER);
+        MailboxACL acl = aclResolver.applyGlobalACL(mailbox.getACL());
 
         return filteredForSession(mailbox, acl, mailboxSession);
     }
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
index 6753101..29a0df9 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
@@ -34,7 +34,6 @@ import org.apache.james.mailbox.AttachmentContentLoader;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.BadCredentialsException;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -100,8 +99,7 @@ class StoreMailboxManagerTest {
 
         InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new RecordingMetricFactory()), RETRY_BACKOFF_CONFIGURATION, new MemoryEventDeadLetters());
 
-        StoreRightManager storeRightManager = new StoreRightManager(mockedMapperFactory, new UnionMailboxACLResolver(),
-                                                                    new SimpleGroupMembershipResolver(), eventBus);
+        StoreRightManager storeRightManager = new StoreRightManager(mockedMapperFactory, new UnionMailboxACLResolver(), eventBus);
 
         StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mockedMapperFactory, storeRightManager);
         SessionProviderImpl sessionProvider = new SessionProviderImpl(authenticator, FakeAuthorizator.forUserAndAdmin(ADMIN, CURRENT_USER));
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
index 8d78e2c..0dad3c0 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
@@ -34,9 +34,7 @@ import org.apache.james.core.Username;
 import org.apache.james.events.EventBus;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.DifferentDomainException;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -66,7 +64,6 @@ class StoreRightManagerTest {
     StoreRightManager storeRightManager;
     MailboxSession aliceSession;
     MailboxACLResolver mailboxAclResolver;
-    GroupMembershipResolver groupMembershipResolver;
     MailboxMapper mockedMailboxMapper;
 
     @BeforeEach
@@ -75,12 +72,11 @@ class StoreRightManagerTest {
         MailboxSessionMapperFactory mockedMapperFactory = mock(MailboxSessionMapperFactory.class);
         mockedMailboxMapper = mock(MailboxMapper.class);
         mailboxAclResolver = new UnionMailboxACLResolver();
-        groupMembershipResolver = new SimpleGroupMembershipResolver();
         EventBus eventBus = mock(EventBus.class);
         when(mockedMapperFactory.getMailboxMapper(aliceSession))
             .thenReturn(mockedMailboxMapper);
 
-        storeRightManager = new StoreRightManager(mockedMapperFactory, mailboxAclResolver, groupMembershipResolver, eventBus);
+        storeRightManager = new StoreRightManager(mockedMapperFactory, mailboxAclResolver, eventBus);
     }
 
     @Test
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
index bdc05e4..044b446 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
@@ -30,7 +30,6 @@ import org.apache.james.imap.main.DefaultImapDecoderFactory;
 import org.apache.james.imap.processor.main.DefaultImapProcessorFactory;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.SubscriptionManager;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.cassandra.CassandraMailboxManager;
 import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
@@ -103,7 +102,7 @@ public class CassandraHostSystem extends JamesImapHostSystem {
 
 
         InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new RecordingMetricFactory()), EventBusTestFixture.RETRY_BACKOFF_CONFIGURATION, new MemoryEventDeadLetters());
-        StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), eventBus);
+        StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), eventBus);
 
         StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mapperFactory, storeRightManager);
         SessionProviderImpl sessionProvider = new SessionProviderImpl(authenticator, authorizator);
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
index deeed4e..7e6095f 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
@@ -35,9 +35,7 @@ import org.apache.james.imap.processor.main.DefaultImapProcessorFactory;
 import org.apache.james.mailbox.AttachmentContentLoader;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.SubscriptionManager;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.jpa.JPAMailboxFixture;
 import org.apache.james.mailbox.jpa.JPAMailboxSessionMapperFactory;
@@ -101,12 +99,11 @@ public class JPAHostSystem extends JamesImapHostSystem {
         JPAMailboxSessionMapperFactory mapperFactory = new JPAMailboxSessionMapperFactory(entityManagerFactory, uidProvider, modSeqProvider);
 
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
-        GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
 
         InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new RecordingMetricFactory()), EventBusTestFixture.RETRY_BACKOFF_CONFIGURATION, new MemoryEventDeadLetters());
-        StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver, eventBus);
+        StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, eventBus);
         StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mapperFactory, storeRightManager);
         SessionProviderImpl sessionProvider = new SessionProviderImpl(authenticator, authorizator);
         DefaultUserQuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(sessionProvider, mapperFactory);
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
index d192e9f..4f13e10 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
@@ -33,9 +33,7 @@ import org.apache.james.imap.encode.main.DefaultImapEncoderFactory;
 import org.apache.james.imap.main.DefaultImapDecoderFactory;
 import org.apache.james.imap.processor.main.DefaultImapProcessorFactory;
 import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.maildir.MaildirMailboxSessionMapperFactory;
 import org.apache.james.mailbox.maildir.MaildirStore;
@@ -77,11 +75,10 @@ public class MaildirHostSystem extends JamesImapHostSystem {
         StoreSubscriptionManager sm = new StoreSubscriptionManager(mailboxSessionMapperFactory);
         
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
-        GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
         InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new RecordingMetricFactory()), EventBusTestFixture.RETRY_BACKOFF_CONFIGURATION, new MemoryEventDeadLetters());
-        StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, aclResolver, groupMembershipResolver, eventBus);
+        StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, aclResolver, eventBus);
         StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mailboxSessionMapperFactory, storeRightManager);
         SessionProviderImpl sessionProvider = new SessionProviderImpl(authenticator, authorizator);
         QuotaComponents quotaComponents = QuotaComponents.disabled(sessionProvider, mailboxSessionMapperFactory);
diff --git a/server/container/guice/mailbox-jpa/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java b/server/container/guice/mailbox-jpa/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
index 6d8e896..13a89ce 100644
--- a/server/container/guice/mailbox-jpa/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
+++ b/server/container/guice/mailbox-jpa/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
@@ -32,9 +32,7 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.SessionProvider;
 import org.apache.james.mailbox.SubscriptionManager;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.indexer.ReIndexer;
 import org.apache.james.mailbox.jpa.JPAAttachmentContentLoader;
@@ -87,7 +85,6 @@ public class JPAMailboxModule extends AbstractModule {
         bind(UserRepositoryAuthenticator.class).in(Scopes.SINGLETON);
         bind(UserRepositoryAuthorizator.class).in(Scopes.SINGLETON);
         bind(JPAId.Factory.class).in(Scopes.SINGLETON);
-        bind(SimpleGroupMembershipResolver.class).in(Scopes.SINGLETON);
         bind(UnionMailboxACLResolver.class).in(Scopes.SINGLETON);
         bind(DefaultMessageId.Factory.class).in(Scopes.SINGLETON);
         bind(NaiveThreadIdGuessingAlgorithm.class).in(Scopes.SINGLETON);
@@ -111,7 +108,6 @@ public class JPAMailboxModule extends AbstractModule {
         bind(SessionProvider.class).to(SessionProviderImpl.class);
         bind(Authorizator.class).to(UserRepositoryAuthorizator.class);
         bind(MailboxId.Factory.class).to(JPAId.Factory.class);
-        bind(GroupMembershipResolver.class).to(SimpleGroupMembershipResolver.class);
         bind(MailboxACLResolver.class).to(UnionMailboxACLResolver.class);
         bind(AttachmentContentLoader.class).to(JPAAttachmentContentLoader.class);
 
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxModule.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxModule.java
index 9720959..0b6fefe 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxModule.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxModule.java
@@ -19,9 +19,7 @@
 package org.apache.james.modules;
 
 import org.apache.james.mailbox.SystemMailboxesProvider;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.store.SystemMailboxesProviderImpl;
 import org.apache.james.modules.mailbox.MailReceptionHealthCheckModule;
@@ -47,9 +45,6 @@ public class MailboxModule extends AbstractModule {
 
         bind(UnionMailboxACLResolver.class).in(Scopes.SINGLETON);
         bind(MailboxACLResolver.class).to(UnionMailboxACLResolver.class);
-        bind(SimpleGroupMembershipResolver.class).in(Scopes.SINGLETON);
-        bind(GroupMembershipResolver.class).to(SimpleGroupMembershipResolver.class);
-
 
         bind(SystemMailboxesProviderImpl.class).in(Scopes.SINGLETON);
         bind(SystemMailboxesProvider.class).to(SystemMailboxesProviderImpl.class);

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