http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
 
b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
index 1524da0..31e35f0 100644
--- 
a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
+++ 
b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.store.search;
 
+
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -30,6 +31,7 @@ import org.apache.james.mailbox.store.FakeAuthorizator;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.StoreMessageIdManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -48,15 +50,17 @@ public class SimpleMessageSearchIndexTest extends 
AbstractMessageSearchIndexTest
         MailboxSessionMapperFactory mapperFactory = new 
InMemoryMailboxSessionMapperFactory();
         messageSearchIndex = new SimpleMessageSearchIndex(mapperFactory, 
mapperFactory, new PDFTextExtractor());
         InMemoryMessageId.Factory messageIdFactory = new 
InMemoryMessageId.Factory();
+        UnionMailboxACLResolver aclResolver = new UnionMailboxACLResolver();
+        SimpleGroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
+        StoreRightManager storeRightManager = new 
StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver);
         storeMailboxManager = new InMemoryMailboxManager(
             mapperFactory,
             new FakeAuthenticator(),
             FakeAuthorizator.defaultReject(),
             new JVMMailboxPathLocker(),
-            new UnionMailboxACLResolver(),
-            new SimpleGroupMembershipResolver(),
             new MessageParser(),
-            messageIdFactory);
+            messageIdFactory,
+            storeRightManager);
         DefaultDelegatingMailboxListener delegatingListener = new 
DefaultDelegatingMailboxListener();
         MailboxEventDispatcher mailboxEventDispatcher = new 
MailboxEventDispatcher(new DefaultDelegatingMailboxListener());
         storeMailboxManager.setDelegatingMailboxListener(delegatingListener);

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/spring/src/main/resources/META-INF/spring/spring-mailbox.xml
----------------------------------------------------------------------
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 db43d6a..ca91f42 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
@@ -60,4 +60,11 @@
      -->
     <bean id="messageParser" 
class="org.apache.james.mailbox.store.mail.model.impl.MessageParser"/>
 
+    <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" />
+    </bean>
+
+
 </beans>

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 64a0bad..173c247 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -41,18 +41,13 @@ import org.apache.commons.io.input.TeeInputStream;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MailboxSession.User;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
-import org.apache.james.mailbox.acl.MailboxACLResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.ReadOnlyException;
-import org.apache.james.mailbox.exception.UnsupportedRightException;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxACL;
-import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
 import org.apache.james.mailbox.model.MailboxCounters;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -91,7 +86,6 @@ import org.apache.james.util.IteratorWrapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
@@ -460,7 +454,7 @@ public class StoreMessageManager implements 
org.apache.james.mailbox.MessageMana
 
     /**
      * This mailbox is writable
-     * 
+     *
      * @throws MailboxException
      */
     public boolean isWriteable(MailboxSession session) throws MailboxException 
{
@@ -513,7 +507,7 @@ public class StoreMessageManager implements 
org.apache.james.mailbox.MessageMana
             recent = new ArrayList<>();
             break;
         }
-        MailboxACL resolvedAcl = getResolvedMailboxACL(mailboxSession);
+        MailboxACL resolvedAcl = 
storeRightManager.getResolvedMailboxACL(mailbox, mailboxSession);
         return new MailboxMetaData(recent, permanentFlags, uidValidity, 
uidNext, highestModSeq, messageCount, unseenCount, firstUnseen, 
isWriteable(mailboxSession), isModSeqPermanent(mailboxSession), resolvedAcl);
     }
 
@@ -793,36 +787,6 @@ public class StoreMessageManager implements 
org.apache.james.mailbox.MessageMana
         return messageMapper.findFirstUnseenMessageUid(getMailboxEntity());
     }
 
-    /**
-     * Applies the global ACL (if there are any) to the mailbox ACL.
-     * 
-     * @param mailboxSession
-     * @return the ACL of the present mailbox merged with the global ACL (if
-     *         there are any).
-     * @throws UnsupportedRightException
-     */
-    protected MailboxACL getResolvedMailboxACL(MailboxSession mailboxSession) 
throws UnsupportedRightException {
-        return StoreRightManager.filteredForSession(mailbox, mailbox.getACL(), 
mailboxSession);
-    }
-
-    /**
-     * ACL is sensible information and as such we should expose as few 
information as possible
-     * to users. This method allows to filter a {@link MailboxACL} in order to 
present it to
-     * the connected user.
-     */
-    @VisibleForTesting static MailboxACL filteredForSession(Mailbox mailbox, 
MailboxACL acl, MailboxSession mailboxSession) throws UnsupportedRightException 
{
-        if (mailboxSession.getUser().isSameUser(mailbox.getUser())) {
-            return acl;
-        }
-        MailboxACL.EntryKey userAsKey = 
MailboxACL.EntryKey.createUserEntryKey(mailboxSession.getUser().getUserName());
-        Rfc4314Rights rights = acl.getEntries().getOrDefault(userAsKey, new 
Rfc4314Rights());
-        if (rights.contains(MailboxACL.Right.Administer)) {
-            return acl;
-        }
-        return new MailboxACL(ImmutableMap.of(userAsKey, rights));
-    }
-
-
     @Override
     public MailboxId getId() {
         return mailbox.getMailboxId();

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..ea03bc1
--- /dev/null
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java
@@ -0,0 +1,161 @@
+/****************************************************************
+ * 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.store;
+
+import javax.inject.Inject;
+import javax.mail.Flags;
+
+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.exception.MailboxException;
+import org.apache.james.mailbox.exception.UnsupportedRightException;
+import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxACL.ACLCommand;
+import org.apache.james.mailbox.model.MailboxACL.EntryKey;
+import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
+import org.apache.james.mailbox.model.MailboxACL.Right;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.store.mail.MailboxMapper;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.transaction.Mapper;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ImmutableMap;
+
+public class StoreRightManager implements RightManager {
+
+    private final MailboxSessionMapperFactory mailboxSessionMapperFactory;
+    private final MailboxACLResolver aclResolver;
+    private final GroupMembershipResolver groupMembershipResolver;
+
+    @Inject
+    public StoreRightManager(MailboxSessionMapperFactory 
mailboxSessionMapperFactory,
+                             MailboxACLResolver aclResolver,
+                             GroupMembershipResolver groupMembershipResolver) {
+        this.mailboxSessionMapperFactory = mailboxSessionMapperFactory;
+        this.aclResolver = aclResolver;
+        this.groupMembershipResolver = groupMembershipResolver;
+    }
+
+    @Override
+    public boolean hasRight(MailboxPath mailboxPath, Right right, 
MailboxSession session) throws MailboxException {
+        MailboxMapper mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
+        Mailbox mailbox = mapper.findMailboxByPath(mailboxPath);
+        return hasRight(mailbox, right, session);
+    }
+
+    public boolean hasRight(Mailbox mailbox, Right right, MailboxSession 
session) throws MailboxException {
+        MailboxSession.User user = session.getUser();
+        String userName = user != null ? user.getUserName() : null;
+        return aclResolver.hasRight(userName, groupMembershipResolver, right, 
mailbox.getACL(), mailbox.getUser(), new 
GroupFolderResolver(session).isGroupFolder(mailbox));
+    }
+
+    @Override
+    public Rfc4314Rights myRights(MailboxPath mailboxPath, MailboxSession 
session) throws MailboxException {
+        MailboxMapper mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
+        Mailbox mailbox = mapper.findMailboxByPath(mailboxPath);
+        return myRights(session, mailbox);
+    }
+
+    @Override
+    public Rfc4314Rights myRights(MailboxId mailboxId, MailboxSession session) 
throws MailboxException {
+        MailboxMapper mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
+        Mailbox mailbox = mapper.findMailboxById(mailboxId);
+        return myRights(session, mailbox);
+    }
+
+    @Override
+    public Rfc4314Rights[] listRigths(MailboxPath mailboxPath, EntryKey key, 
MailboxSession session) throws MailboxException {
+        MailboxMapper mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
+        Mailbox mailbox = mapper.findMailboxByPath(mailboxPath);
+        return aclResolver.listRights(key, groupMembershipResolver, 
mailbox.getUser(), new GroupFolderResolver(session).isGroupFolder(mailbox));
+    }
+
+    @Override
+    public void applyRightsCommand(MailboxPath mailboxPath, ACLCommand 
mailboxACLCommand, MailboxSession session) throws MailboxException {
+        MailboxMapper mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
+        Mailbox mailbox = mapper.findMailboxByPath(mailboxPath);
+        mapper.execute(Mapper.toTransaction(() -> mapper.updateACL(mailbox, 
mailboxACLCommand)));
+    }
+
+    @Override
+    public void setRights(MailboxPath mailboxPath, MailboxACL mailboxACL, 
MailboxSession session) throws MailboxException {
+        MailboxMapper mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
+        Mailbox mailbox = mapper.findMailboxByPath(mailboxPath);
+        mapper.execute(Mapper.toTransaction(() -> mapper.setACL(mailbox, 
mailboxACL)));
+    }
+
+    public boolean isReadWrite(MailboxSession session, Mailbox mailbox, Flags 
sharedPermanentFlags) throws UnsupportedRightException {
+        return aclResolver.isReadWrite(myRights(session, mailbox), 
sharedPermanentFlags);
+    }
+
+    @Override
+    public void setRights(MailboxId mailboxId, MailboxACL mailboxACL, 
MailboxSession session) throws MailboxException {
+        MailboxMapper mapper = 
mailboxSessionMapperFactory.getMailboxMapper(session);
+        Mailbox mailbox = mapper.findMailboxById(mailboxId);
+        setRights(mailbox.generateAssociatedPath(), mailboxACL, session);
+    }
+
+    /**
+     * Applies the global ACL (if there are any) to the mailbox ACL.
+     *
+     * @param mailboxSession
+     * @return the ACL of the present mailbox merged with the global ACL (if
+     *         there are any).
+     * @throws UnsupportedRightException
+     */
+    public MailboxACL getResolvedMailboxACL(Mailbox mailbox, MailboxSession 
mailboxSession) throws UnsupportedRightException {
+        MailboxACL acl = aclResolver.applyGlobalACL(
+            mailbox.getACL(),
+            new GroupFolderResolver(mailboxSession).isGroupFolder(mailbox));
+
+        return filteredForSession(mailbox, acl, mailboxSession);
+    }
+
+    /**
+     * ACL is sensible information and as such we should expose as few 
information as possible
+     * to users. This method allows to filter a {@link MailboxACL} in order to 
present it to
+     * the connected user.
+     */
+    @VisibleForTesting
+    static MailboxACL filteredForSession(Mailbox mailbox, MailboxACL acl, 
MailboxSession mailboxSession) throws UnsupportedRightException {
+        if (mailboxSession.getUser().isSameUser(mailbox.getUser())) {
+            return acl;
+        }
+        MailboxACL.EntryKey userAsKey = 
MailboxACL.EntryKey.createUserEntryKey(mailboxSession.getUser().getUserName());
+        Rfc4314Rights rights = acl.getEntries().getOrDefault(userAsKey, new 
Rfc4314Rights());
+        if (rights.contains(MailboxACL.Right.Administer)) {
+            return acl;
+        }
+        return new MailboxACL(ImmutableMap.of(userAsKey, rights));
+    }
+
+    private Rfc4314Rights myRights(MailboxSession session, Mailbox mailbox) 
throws UnsupportedRightException {
+        MailboxSession.User user = session.getUser();
+        if (user != null) {
+            return aclResolver.resolveRights(user.getUserName(), 
groupMembershipResolver, mailbox.getACL(), mailbox.getUser(), new 
GroupFolderResolver(session).isGroupFolder(mailbox));
+        } else {
+            return MailboxACL.NO_RIGHTS;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
index a517fa5..ffc4b94 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
@@ -100,8 +100,14 @@ public class StoreMailboxManagerAnnotationTest {
                 return transaction.run();
             });
 
-        storeMailboxManager = spy(new 
StoreMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, 
aclResolver, groupMembershipResolver, 
-                messageParser, messageIdFactory, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE));
+        StoreRightManager storeRightManager = new 
StoreRightManager(mailboxSessionMapperFactory, aclResolver,
+                                                                    
groupMembershipResolver);
+
+        storeMailboxManager = spy(new 
StoreMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator,
+                                                          messageParser, 
messageIdFactory,
+                                                          
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX,
+                                                          
MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE,
+                                                          storeRightManager));
         storeMailboxManager.init();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
----------------------------------------------------------------------
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 2e2b8fb..8c9a76d 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
@@ -73,9 +73,9 @@ public class StoreMailboxManagerTest {
         FakeAuthenticator authenticator = new FakeAuthenticator();
         authenticator.addUser(CURRENT_USER, CURRENT_USER_PASSWORD);
         authenticator.addUser(ADMIN, ADMIN_PASSWORD);
+        StoreRightManager storeRightManager = new 
StoreRightManager(mockedMapperFactory, new UnionMailboxACLResolver(), new 
SimpleGroupMembershipResolver());
         storeMailboxManager = new StoreMailboxManager(mockedMapperFactory, 
authenticator, FakeAuthorizator.forUserAndAdmin(ADMIN, CURRENT_USER),
-                new JVMMailboxPathLocker(), new UnionMailboxACLResolver(), new 
SimpleGroupMembershipResolver(), 
-                new MessageParser(), messageIdFactory);
+                new JVMMailboxPathLocker(), new MessageParser(), 
messageIdFactory, storeRightManager);
         storeMailboxManager.init();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
deleted file mode 100644
index 54daae9..0000000
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
+++ /dev/null
@@ -1,68 +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.store;
-
-import static org.apache.james.mailbox.fixture.MailboxFixture.ALICE;
-import static org.apache.james.mailbox.fixture.MailboxFixture.BOB;
-import static org.apache.james.mailbox.fixture.MailboxFixture.CEDRIC;
-import static org.apache.james.mailbox.fixture.MailboxFixture.INBOX_ALICE;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.apache.james.mailbox.exception.UnsupportedRightException;
-import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.MailboxACL;
-import org.apache.james.mailbox.model.MailboxACL.Right;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.junit.Test;
-
-public class StoreMessageManagerTest {
-
-    public static final long UID_VALIDITY = 3421l;
-
-    @Test
-    public void filteredForSessionShouldBeIdentityWhenOwner() throws 
UnsupportedRightException {
-        MailboxACL acl = new MailboxACL()
-            .apply(MailboxACL.command().rights(Right.Read, 
Right.Write).forUser(BOB).asAddition())
-            .apply(MailboxACL.command().rights(Right.Read, Right.Write, 
Right.Administer).forUser(CEDRIC).asAddition());
-        MailboxACL actual = StoreMessageManager.filteredForSession(
-            new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new 
MockMailboxSession(ALICE));
-        assertThat(actual).isEqualTo(acl);
-    }
-
-    @Test
-    public void filteredForSessionShouldBeIdentityWhenAdmin() throws 
UnsupportedRightException {
-        MailboxACL acl = new MailboxACL()
-            .apply(MailboxACL.command().rights(Right.Read, 
Right.Write).forUser(BOB).asAddition())
-            .apply(MailboxACL.command().rights(Right.Read, Right.Write, 
Right.Administer).forUser(CEDRIC).asAddition());
-        MailboxACL actual = StoreMessageManager.filteredForSession(
-            new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new 
MockMailboxSession(CEDRIC));
-        assertThat(actual).isEqualTo(acl);
-    }
-
-    @Test
-    public void 
filteredForSessionShouldContainOnlyLoggedUserWhenReadWriteAccess() throws 
UnsupportedRightException {
-        MailboxACL acl = new MailboxACL()
-            .apply(MailboxACL.command().rights(Right.Read, 
Right.Write).forUser(BOB).asAddition())
-            .apply(MailboxACL.command().rights(Right.Read, Right.Write, 
Right.Administer).forUser(CEDRIC).asAddition());
-        MailboxACL actual = StoreMessageManager.filteredForSession(
-            new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new 
MockMailboxSession(BOB));
-        
assertThat(actual.getEntries()).containsKey(MailboxACL.EntryKey.createUserEntryKey(BOB));
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..09f57fc
--- /dev/null
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
@@ -0,0 +1,68 @@
+/****************************************************************
+ * 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.store;
+
+import static org.apache.james.mailbox.fixture.MailboxFixture.ALICE;
+import static org.apache.james.mailbox.fixture.MailboxFixture.BOB;
+import static org.apache.james.mailbox.fixture.MailboxFixture.CEDRIC;
+import static org.apache.james.mailbox.fixture.MailboxFixture.INBOX_ALICE;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.james.mailbox.exception.UnsupportedRightException;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxACL.Right;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
+import org.junit.Test;
+
+public class StoreRightManagerTest {
+
+    public static final long UID_VALIDITY = 3421l;
+
+    @Test
+    public void filteredForSessionShouldBeIdentityWhenOwner() throws 
UnsupportedRightException {
+        MailboxACL acl = new MailboxACL()
+            .apply(MailboxACL.command().rights(Right.Read, 
Right.Write).forUser(BOB).asAddition())
+            .apply(MailboxACL.command().rights(Right.Read, Right.Write, 
Right.Administer).forUser(CEDRIC).asAddition());
+        MailboxACL actual = StoreRightManager.filteredForSession(
+            new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new 
MockMailboxSession(ALICE));
+        assertThat(actual).isEqualTo(acl);
+    }
+
+    @Test
+    public void filteredForSessionShouldBeIdentityWhenAdmin() throws 
UnsupportedRightException {
+        MailboxACL acl = new MailboxACL()
+            .apply(MailboxACL.command().rights(Right.Read, 
Right.Write).forUser(BOB).asAddition())
+            .apply(MailboxACL.command().rights(Right.Read, Right.Write, 
Right.Administer).forUser(CEDRIC).asAddition());
+        MailboxACL actual = StoreRightManager.filteredForSession(
+            new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new 
MockMailboxSession(CEDRIC));
+        assertThat(actual).isEqualTo(acl);
+    }
+
+    @Test
+    public void 
filteredForSessionShouldContainOnlyLoggedUserWhenReadWriteAccess() throws 
UnsupportedRightException {
+        MailboxACL acl = new MailboxACL()
+            .apply(MailboxACL.command().rights(Right.Read, 
Right.Write).forUser(BOB).asAddition())
+            .apply(MailboxACL.command().rights(Right.Read, Right.Write, 
Right.Administer).forUser(CEDRIC).asAddition());
+        MailboxACL actual = StoreRightManager.filteredForSession(
+            new SimpleMailbox(INBOX_ALICE, UID_VALIDITY), acl, new 
MockMailboxSession(BOB));
+        
assertThat(actual.getEntries()).containsKey(MailboxACL.EntryKey.createUserEntryKey(BOB));
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
 
b/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
index 0a0aa30..89d9462 100644
--- 
a/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
+++ 
b/mailbox/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
@@ -39,6 +39,7 @@ import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.junit.Before;
@@ -156,18 +157,17 @@ public class MailboxCopierTest {
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
-
+        InMemoryMailboxSessionMapperFactory mapperFactory = new 
InMemoryMailboxSessionMapperFactory();
+        StoreRightManager storeRightManager = new 
StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver);
         return new StoreMailboxManager(
-            new InMemoryMailboxSessionMapperFactory(),
+            mapperFactory,
             (userid, passwd) -> AUTHENTIC,
             (userId, otherUserId) -> Authorizator.AuthorizationState.NOT_ADMIN,
-            aclResolver,
-            groupMembershipResolver,
             messageParser,
             new DefaultMessageId.Factory(),
             MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX,
-            MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE
-            );
+            MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE,
+            storeRightManager);
     
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
 
b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
index dcdd8f4..12a854a 100644
--- 
a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
@@ -55,6 +55,7 @@ import 
org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.inmemory.InMemoryMessageId;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -113,8 +114,11 @@ public class ElasticSearchHostSystem extends 
JamesImapHostSystem {
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
-        mailboxManager = new StoreMailboxManager(factory, authenticator, 
authorizator, aclResolver, groupMembershipResolver, messageParser,
-            messageIdFactory, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE);
+        StoreRightManager storeRightManager = new StoreRightManager(factory, 
aclResolver, groupMembershipResolver);
+
+        mailboxManager = new StoreMailboxManager(factory, authenticator, 
authorizator, messageParser,
+                                                 messageIdFactory, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX,
+                                                 
MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, storeRightManager);
         mailboxManager.setMessageSearchIndex(searchIndex);
 
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
 
b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
index bd26353..54b8ccc 100644
--- 
a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
@@ -41,6 +41,7 @@ import org.apache.james.mailbox.hbase.HBaseMailboxManager;
 import org.apache.james.mailbox.hbase.HBaseMailboxSessionMapperFactory;
 import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider;
 import org.apache.james.mailbox.hbase.mail.HBaseUidProvider;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -101,9 +102,10 @@ public class HBaseHostSystem extends JamesImapHostSystem {
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
-        
-        mailboxManager = new HBaseMailboxManager(mapperFactory, authenticator, 
authorizator, aclResolver, groupMembershipResolver,
-                messageParser, messageIdFactory);
+
+        StoreRightManager storeRightManager = new 
StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver);
+        mailboxManager = new HBaseMailboxManager(mapperFactory, authenticator, 
authorizator, messageParser,
+                                                 messageIdFactory, 
storeRightManager);
         mailboxManager.init();
 
         SubscriptionManager subscriptionManager = new 
StoreSubscriptionManager(mapperFactory);

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
 
b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
index 4504737..56451ee 100644
--- 
a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
@@ -36,6 +36,7 @@ import 
org.apache.james.mailbox.inmemory.quota.InMemoryCurrentQuotaManager;
 import org.apache.james.mailbox.inmemory.quota.InMemoryPerUserMaxQuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
@@ -70,8 +71,9 @@ public class InMemoryHostSystem extends JamesImapHostSystem {
         MessageParser messageParser = new MessageParser();
 
         InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new 
InMemoryMailboxSessionMapperFactory();
+        StoreRightManager storeRightManager = new 
StoreRightManager(mailboxSessionMapperFactory, aclResolver, 
groupMembershipResolver);
         mailboxManager = new 
InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator,
-                new JVMMailboxPathLocker(), aclResolver, 
groupMembershipResolver, messageParser, new InMemoryMessageId.Factory());
+                new JVMMailboxPathLocker(), messageParser, new 
InMemoryMessageId.Factory(), storeRightManager);
         QuotaRootResolver quotaRootResolver = new 
DefaultQuotaRootResolver(mailboxManager.getMapperFactory());
 
         perUserMaxQuotaManager = new InMemoryPerUserMaxQuotaManager();

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
 
b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
index cc4629f..eb3f7d0 100644
--- 
a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
@@ -42,6 +42,7 @@ import org.apache.james.mailbox.jcr.JCRUtils;
 import org.apache.james.mailbox.jcr.mail.JCRModSeqProvider;
 import org.apache.james.mailbox.jcr.mail.JCRUidProvider;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
@@ -91,8 +92,9 @@ public class JCRHostSystem extends JamesImapHostSystem {
             GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
             MessageParser messageParser = new MessageParser();
 
-            mailboxManager = new JCRMailboxManager(mf, authenticator, 
authorizator, aclResolver, groupMembershipResolver, messageParser,
-                    new DefaultMessageId.Factory());
+            StoreRightManager storeRightManager = new StoreRightManager(mf, 
aclResolver, groupMembershipResolver);
+            mailboxManager = new JCRMailboxManager(mf, authenticator, 
authorizator, messageParser,
+                    new DefaultMessageId.Factory(), storeRightManager);
             mailboxManager.init();
 
             final ImapProcessor defaultImapProcessorFactory = 

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
----------------------------------------------------------------------
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 cb43a65..1dbfbab 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
@@ -47,6 +47,7 @@ import 
org.apache.james.mailbox.jpa.quota.JPAPerUserMaxQuotaManager;
 import org.apache.james.mailbox.jpa.quota.JpaCurrentQuotaManager;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
@@ -93,7 +94,12 @@ public class JPAHostSystem extends JamesImapHostSystem {
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
-        mailboxManager = new OpenJPAMailboxManager(mapperFactory, 
authenticator, authorizator, locker, false, aclResolver, 
groupMembershipResolver, messageParser, new DefaultMessageId.Factory(), 
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE);
+        StoreRightManager storeRightManager = new 
StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver);
+        boolean useStreaming = false;
+        mailboxManager = new OpenJPAMailboxManager(mapperFactory, 
authenticator, authorizator, locker, useStreaming,
+                                                   messageParser, new 
DefaultMessageId.Factory(),
+                                                   
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX,
+                                                   
MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, storeRightManager);
 
         DefaultQuotaRootResolver quotaRootResolver = new 
DefaultQuotaRootResolver(mapperFactory);
         JpaCurrentQuotaManager currentQuotaManager = new 
JpaCurrentQuotaManager(entityManagerFactory);

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
----------------------------------------------------------------------
diff --git 
a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
 
b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
index cef5b5a..794a163 100644
--- 
a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
+++ 
b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
@@ -51,6 +51,7 @@ import 
org.apache.james.mailbox.lucene.search.LuceneMessageSearchIndex;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
@@ -116,7 +117,13 @@ public class LuceneSearchHostSystem extends 
JamesImapHostSystem {
             GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
             MessageParser messageParser = new MessageParser();
 
-            mailboxManager = new OpenJPAMailboxManager(factory, authenticator, 
authorizator, locker, false, aclResolver, groupMembershipResolver, 
messageParser, messageIdFactory, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE);
+            StoreRightManager storeRightManager = new 
StoreRightManager(factory, aclResolver, groupMembershipResolver);
+            boolean useStreaming = false;
+            mailboxManager = new OpenJPAMailboxManager(factory, authenticator, 
authorizator, locker, useStreaming,
+                                                       messageParser, 
messageIdFactory,
+                                                       
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX,
+                                                       
MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE,
+                                                       storeRightManager);
 
             LuceneMessageSearchIndex searchIndex = new 
LuceneMessageSearchIndex(factory, mailboxIdFactory, fsDirectory, 
messageIdFactory);
             searchIndex.setEnableSuffixMatch(true);

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
----------------------------------------------------------------------
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 87375a3..f39ab06 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
@@ -35,6 +35,7 @@ import 
org.apache.james.mailbox.maildir.MaildirMailboxSessionMapperFactory;
 import org.apache.james.mailbox.maildir.MaildirStore;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -69,8 +70,9 @@ public class MaildirHostSystem extends JamesImapHostSystem {
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
 
-        mailboxManager = new StoreMailboxManager(mailboxSessionMapperFactory, 
authenticator, authorizator, locker, aclResolver,
-                groupMembershipResolver, messageParser, new 
DefaultMessageId.Factory());
+        StoreRightManager storeRightManager = new 
StoreRightManager(mailboxSessionMapperFactory, aclResolver, 
groupMembershipResolver);
+        mailboxManager = new StoreMailboxManager(mailboxSessionMapperFactory, 
authenticator, authorizator, locker,
+                messageParser, new DefaultMessageId.Factory(), 
storeRightManager);
         mailboxManager.init();
 
         final ImapProcessor defaultImapProcessorFactory = 

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
 
b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
index 5448922..bf80ffb 100644
--- 
a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
+++ 
b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
@@ -39,6 +39,7 @@ import org.apache.james.mailbox.store.FakeAuthenticator;
 import org.apache.james.mailbox.store.FakeAuthorizator;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -63,15 +64,19 @@ public class MailboxManagementTest {
     @Before
     public void setUp() throws Exception {
         inMemoryMapperFactory = new InMemoryMailboxSessionMapperFactory();
+        StoreRightManager storeRightManager = new 
StoreRightManager(inMemoryMapperFactory,
+                                                                    new 
UnionMailboxACLResolver(),
+                                                                    new 
SimpleGroupMembershipResolver());
+
         StoreMailboxManager mailboxManager = new StoreMailboxManager(
             inMemoryMapperFactory,
             new FakeAuthenticator(),
             FakeAuthorizator.defaultReject(),
             new JVMMailboxPathLocker(),
-            new UnionMailboxACLResolver(),
-            new SimpleGroupMembershipResolver(),
             new MessageParser(),
-            new DefaultMessageId.Factory());
+            new DefaultMessageId.Factory(),
+            storeRightManager);
+
         mailboxManager.init();
         mailboxManagerManagement = new MailboxManagerManagement();
         mailboxManagerManagement.setMailboxManager(mailboxManager);

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
 
b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
index 21afe44..ac46f78 100644
--- 
a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
+++ 
b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
@@ -37,6 +37,7 @@ import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.store.FakeAuthenticator;
 import org.apache.james.mailbox.store.FakeAuthorizator;
 import org.apache.james.mailbox.store.NoMailboxPathLocker;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
@@ -59,9 +60,11 @@ public class IsOverQuotaTest {
     @Before
     public void setUp() throws Exception {
         InMemoryMailboxSessionMapperFactory factory = new 
InMemoryMailboxSessionMapperFactory();
+        StoreRightManager storeRightManager = new StoreRightManager(factory, 
new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver());
         mailboxManager = new InMemoryMailboxManager(factory, new 
FakeAuthenticator(), FakeAuthorizator.defaultReject(),
-            new NoMailboxPathLocker(), new UnionMailboxACLResolver(), new 
SimpleGroupMembershipResolver(), new MessageParser(),
-            new InMemoryMessageId.Factory());
+            new NoMailboxPathLocker(), new MessageParser(),
+            new InMemoryMessageId.Factory(),
+            storeRightManager);
 
         quotaRootResolver = new DefaultQuotaRootResolver(factory);
         maxQuotaManager = new InMemoryPerUserMaxQuotaManager();

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
 
b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
index 5d7cd74..1fc9a50 100644
--- 
a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
+++ 
b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
@@ -52,6 +52,7 @@ import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.pop3server.netty.POP3Server;
@@ -720,6 +721,7 @@ public class POP3ServerTest {
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
+        StoreRightManager storeRightManager = new StoreRightManager(factory, 
aclResolver, groupMembershipResolver);
         mailboxManager = new StoreMailboxManager(factory, (userid, passwd) -> {
             try {
                 return usersRepository.test(userid, passwd.toString());
@@ -728,12 +730,11 @@ public class POP3ServerTest {
                 return false;
             }
         }, (userId, otherUserId) -> Authorizator.AuthorizationState.NOT_ADMIN,
-            aclResolver,
-            groupMembershipResolver,
             messageParser,
             new DefaultMessageId.Factory(),
             MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX,
-            MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE);
+            MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE,
+            storeRightManager);
         mailboxManager.init();
 
         protocolHandlerChain.put("mailboxmanager", MailboxManager.class, 
mailboxManager);


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

Reply via email to