JAMES-2186 MessageManager and MailboxManager should rely on RightManager

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/571b3b82
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/571b3b82
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/571b3b82

Branch: refs/heads/master
Commit: 571b3b82d4ed7936b6121fc0d513e4d4e6f6a15b
Parents: 010f4ef
Author: Antoine Duprat <[email protected]>
Authored: Fri Oct 20 16:50:50 2017 +0200
Committer: Raphael Ouazana <[email protected]>
Committed: Wed Oct 25 17:40:11 2017 +0200

----------------------------------------------------------------------
 .../cassandra/CassandraMailboxManager.java      |  25 ++-
 .../cassandra/CassandraMessageManager.java      |  10 +-
 .../CassandraMailboxManagerProvider.java        |   6 +-
 .../ElasticSearchIntegrationTest.java           |   8 +-
 .../mailbox/hbase/HBaseMailboxManager.java      |  31 ++--
 .../mailbox/hbase/HBaseMessageManager.java      |  23 ++-
 .../resources/META-INF/spring/mailbox-hbase.xml |   3 +-
 .../hbase/HBaseMailboxManagerStressTest.java    |   7 +-
 .../mailbox/hbase/HBaseMailboxManagerTest.java  |   7 +-
 .../james/mailbox/jcr/JCRMailboxManager.java    |  31 ++--
 .../james/mailbox/jcr/JCRMessageManager.java    |  23 ++-
 .../resources/META-INF/spring/mailbox-jcr.xml   |   3 +-
 .../mailbox/jcr/JCRMailboxManagerProvider.java  |   6 +-
 .../james/mailbox/jpa/JPAMailboxManager.java    |  30 ++--
 .../james/mailbox/jpa/JPAMessageManager.java    |  24 +--
 .../jpa/openjpa/OpenJPAMailboxManager.java      |  72 +++++----
 .../jpa/openjpa/OpenJPAMessageManager.java      |  33 ++--
 .../resources/META-INF/spring/mailbox-jpa.xml   |   8 +-
 .../mailbox/jpa/JpaMailboxManagerProvider.java  |   6 +-
 .../search/LuceneMessageSearchIndexTest.java    |   9 +-
 .../META-INF/spring/mailbox-maildir.xml         |  11 +-
 .../maildir/MaildirMailboxManagerProvider.java  |   6 +-
 .../inmemory/InMemoryMailboxManager.java        |  29 ++--
 .../inmemory/InMemoryMessageManager.java        |  21 ++-
 .../META-INF/spring/mailbox-memory.xml          |  11 +-
 .../inmemory/MemoryMailboxManagerProvider.java  |   4 +-
 .../InMemoryMailboxManagerAttachmentTest.java   |   9 +-
 .../manager/InMemoryIntegrationResources.java   |   7 +-
 .../search/SimpleMessageSearchIndexTest.java    |  10 +-
 .../META-INF/spring/spring-mailbox.xml          |   7 +
 .../mailbox/store/StoreMessageManager.java      |  40 +----
 .../james/mailbox/store/StoreRightManager.java  | 161 +++++++++++++++++++
 .../StoreMailboxManagerAnnotationTest.java      |  10 +-
 .../mailbox/store/StoreMailboxManagerTest.java  |   4 +-
 .../mailbox/store/StoreMessageManagerTest.java  |  68 --------
 .../mailbox/store/StoreRightManagerTest.java    |  68 ++++++++
 .../james/mailbox/copier/MailboxCopierTest.java |  12 +-
 .../host/ElasticSearchHostSystem.java           |   8 +-
 .../imapmailbox/hbase/host/HBaseHostSystem.java |   8 +-
 .../inmemory/host/InMemoryHostSystem.java       |   4 +-
 .../mpt/imapmailbox/jcr/host/JCRHostSystem.java |   6 +-
 .../mpt/imapmailbox/jpa/host/JPAHostSystem.java |   8 +-
 .../host/LuceneSearchHostSystem.java            |   9 +-
 .../maildir/host/MaildirHostSystem.java         |   6 +-
 .../adapter/mailbox/MailboxManagementTest.java  |  11 +-
 .../transport/matchers/IsOverQuotaTest.java     |   7 +-
 .../apache/james/pop3server/POP3ServerTest.java |   7 +-
 47 files changed, 584 insertions(+), 333 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
index 57cfc9c..448c9d9 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
@@ -26,8 +26,6 @@ import javax.inject.Inject;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-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.MailboxException;
@@ -39,6 +37,7 @@ import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreMessageManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -61,14 +60,13 @@ public class CassandraMailboxManager extends 
StoreMailboxManager {
             authenticator,
             authorizator,
             locker,
-            new UnionMailboxACLResolver(),
-            new SimpleGroupMembershipResolver(),
             messageParser,
             messageIdFactory,
             MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX,
             MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE,
             mailboxEventDispatcher,
-            delegatingMailboxListener);
+            delegatingMailboxListener,
+            new StoreRightManager(mapperFactory, new 
UnionMailboxACLResolver(), new SimpleGroupMembershipResolver()));
         this.locker = locker;
         this.mapperFactory = mapperFactory;
     }
@@ -79,26 +77,24 @@ public class CassandraMailboxManager extends 
StoreMailboxManager {
             authenticator,
             authorizator,
             locker,
-            new UnionMailboxACLResolver(),
-            new SimpleGroupMembershipResolver(),
             messageParser,
-            messageIdFactory);
+            messageIdFactory,
+            new StoreRightManager(mapperFactory, new 
UnionMailboxACLResolver(), new SimpleGroupMembershipResolver()));
         this.locker = locker;
         this.mapperFactory = mapperFactory;
     }
 
     public CassandraMailboxManager(CassandraMailboxSessionMapperFactory 
mapperFactory, Authenticator authenticator,  Authorizator authorizator,
-            MailboxPathLocker locker, MailboxACLResolver aclResolver, 
GroupMembershipResolver groupMembershipResolver, MessageParser messageParser,
-            MessageId.Factory messageIdFactory, int limitOfAnnotations, int 
limitAnnotationSize) {
+            MailboxPathLocker locker, MessageParser messageParser,
+            MessageId.Factory messageIdFactory, int limitOfAnnotations, int 
limitAnnotationSize, StoreRightManager storeRightManager) {
         super(mapperFactory,
             authenticator,
             authorizator,
-            aclResolver,
-            groupMembershipResolver,
             messageParser,
             messageIdFactory,
             limitOfAnnotations,
-            limitAnnotationSize);
+            limitAnnotationSize,
+            storeRightManager);
         this.locker = locker;
         this.mapperFactory = mapperFactory;
     }
@@ -138,7 +134,8 @@ public class CassandraMailboxManager extends 
StoreMailboxManager {
             getMessageParser(),
             getMessageIdFactory(),
             getBatchSizes(),
-            getImmutableMailboxMessageFactory());
+            getImmutableMailboxMessageFactory(),
+            getStoreRightManager());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
index 523cad8..31e7c17 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
@@ -25,8 +25,6 @@ import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
-import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageId;
@@ -35,6 +33,7 @@ import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.store.BatchSizes;
 import org.apache.james.mailbox.store.ImmutableMailboxMessage;
 import org.apache.james.mailbox.store.StoreMessageManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
@@ -54,9 +53,10 @@ public class CassandraMessageManager extends 
StoreMessageManager {
     public CassandraMessageManager(CassandraMailboxSessionMapperFactory 
mapperFactory, MessageSearchIndex index,
                                    MailboxEventDispatcher dispatcher, 
MailboxPathLocker locker, Mailbox mailbox, QuotaManager quotaManager,
                                    QuotaRootResolver quotaRootResolver, 
MessageParser messageParser, MessageId.Factory messageIdFactory,
-                                   BatchSizes batchSizes, 
ImmutableMailboxMessage.Factory immutableMailboxMessageFactory) throws 
MailboxException {
-        super(mapperFactory, index, dispatcher, locker, mailbox, new 
UnionMailboxACLResolver(), 
-                new SimpleGroupMembershipResolver(), quotaManager, 
quotaRootResolver, messageParser, messageIdFactory, batchSizes, 
immutableMailboxMessageFactory);
+                                   BatchSizes batchSizes, 
ImmutableMailboxMessage.Factory immutableMailboxMessageFactory,
+                                   StoreRightManager storeRightManager) throws 
MailboxException {
+        super(mapperFactory, index, dispatcher, locker, mailbox,
+            quotaManager, quotaRootResolver, messageParser, messageIdFactory, 
batchSizes, immutableMailboxMessageFactory, storeRightManager);
 
         this.mapperFactory = mapperFactory;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
----------------------------------------------------------------------
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 745d675..bc23445 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
@@ -29,6 +29,7 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
 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 com.datastax.driver.core.Session;
@@ -49,11 +50,12 @@ public class CassandraMailboxManagerProvider {
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
+        StoreRightManager storeRightManager = new 
StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver);
 
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
-        CassandraMailboxManager manager = new 
CassandraMailboxManager(mapperFactory, noAuthenticator, noAuthorizator, new 
NoMailboxPathLocker(), aclResolver, groupMembershipResolver,
-            messageParser, messageIdFactory, LIMIT_ANNOTATIONS, 
LIMIT_ANNOTATION_SIZE);
+        CassandraMailboxManager manager = new 
CassandraMailboxManager(mapperFactory, noAuthenticator, noAuthorizator, new 
NoMailboxPathLocker(),
+            messageParser, messageIdFactory, LIMIT_ANNOTATIONS, 
LIMIT_ANNOTATION_SIZE, storeRightManager);
         try {
             manager.init();
         } catch (MailboxException e) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
 
b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
index 0b0013c..bb6adb8 100644
--- 
a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
+++ 
b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
@@ -55,6 +55,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;
@@ -118,6 +119,7 @@ public class ElasticSearchIntegrationTest extends 
AbstractMessageSearchIndexTest
 
         MailboxSessionMapperFactory mapperFactory = new 
InMemoryMailboxSessionMapperFactory();
         InMemoryMessageId.Factory messageIdFactory = new 
InMemoryMessageId.Factory();
+        StoreRightManager storeRightManager = new 
StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new 
SimpleGroupMembershipResolver());
         messageSearchIndex = new 
ElasticSearchListeningMessageSearchIndex(mapperFactory,
             new ElasticSearchIndexer(client,
                 new DeleteByQueryPerformer(client,
@@ -134,10 +136,9 @@ public class ElasticSearchIntegrationTest extends 
AbstractMessageSearchIndexTest
             new FakeAuthenticator(),
             FakeAuthorizator.defaultReject(),
             new JVMMailboxPathLocker(),
-            new UnionMailboxACLResolver(),
-            new SimpleGroupMembershipResolver(),
             new MessageParser(),
-            messageIdFactory);
+            messageIdFactory,
+            storeRightManager);
         DefaultDelegatingMailboxListener delegatingListener = new 
DefaultDelegatingMailboxListener();
         MailboxEventDispatcher mailboxEventDispatcher = new 
MailboxEventDispatcher(delegatingListener);
         storeMailboxManager.setDelegatingMailboxListener(delegatingListener);
@@ -149,7 +150,6 @@ public class ElasticSearchIntegrationTest extends 
AbstractMessageSearchIndexTest
             messageIdFactory,
             new NoQuotaManager(),
             new DefaultQuotaRootResolver(mapperFactory));
-
         storeMailboxManager.setMessageSearchIndex(messageSearchIndex);
         storeMailboxManager.init();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
 
b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
index 72889f1..be5d4d9 100644
--- 
a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
+++ 
b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
@@ -22,8 +22,6 @@ import java.util.EnumSet;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-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.hbase.mail.HBaseMailboxMapper;
 import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
@@ -34,6 +32,7 @@ import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreMessageManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.transaction.Mapper;
@@ -44,16 +43,23 @@ import org.apache.james.mailbox.store.transaction.Mapper;
  */
 public class HBaseMailboxManager extends StoreMailboxManager {
 
-    public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, Authorizator authorizator,
-            MailboxPathLocker locker, MailboxACLResolver aclResolver, 
GroupMembershipResolver groupMembershipResolver, 
-            MessageParser messageParser, MessageId.Factory messageIdFactory) {
-        super(mapperFactory, authenticator, authorizator, locker, aclResolver, 
groupMembershipResolver, messageParser, messageIdFactory);
+    public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory,
+                               Authenticator authenticator,
+                               Authorizator authorizator,
+                               MailboxPathLocker locker,
+                               MessageParser messageParser,
+                               MessageId.Factory messageIdFactory,
+                               StoreRightManager storeRightManager) {
+        super(mapperFactory, authenticator, authorizator, locker, 
messageParser, messageIdFactory, storeRightManager);
     }
 
-    public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, Authorizator authorizator,
-            MailboxACLResolver aclResolver, GroupMembershipResolver 
groupMembershipResolver, 
-            MessageParser messageParser, MessageId.Factory messageIdFactory) {
-        super(mapperFactory, authenticator, authorizator, new 
JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, 
messageIdFactory);
+    public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory,
+                               Authenticator authenticator,
+                               Authorizator authorizator,
+                               MessageParser messageParser,
+                               MessageId.Factory messageIdFactory,
+                               StoreRightManager storeRightManager) {
+        super(mapperFactory, authenticator, authorizator, new 
JVMMailboxPathLocker(), messageParser, messageIdFactory, storeRightManager);
     }
 
     @Override
@@ -87,13 +93,12 @@ public class HBaseMailboxManager extends 
StoreMailboxManager {
             getEventDispatcher(),
             getLocker(),
             mailboxRow,
-            getAclResolver(),
-            getGroupMembershipResolver(),
             getQuotaManager(),
             getQuotaRootResolver(),
             getMessageParser(),
             getMessageIdFactory(),
             getBatchSizes(),
-            getImmutableMailboxMessageFactory());
+            getImmutableMailboxMessageFactory(),
+            getStoreRightManager());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java
 
b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java
index 0b1c054..076aa21 100644
--- 
a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java
+++ 
b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java
@@ -22,8 +22,6 @@ import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-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.model.MessageId;
 import org.apache.james.mailbox.quota.QuotaManager;
@@ -32,6 +30,7 @@ import org.apache.james.mailbox.store.BatchSizes;
 import org.apache.james.mailbox.store.ImmutableMailboxMessage;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.StoreMessageManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -43,12 +42,20 @@ import 
org.apache.james.mailbox.store.search.MessageSearchIndex;
  */
 public class HBaseMessageManager extends StoreMessageManager {
 
-    public HBaseMessageManager(MailboxSessionMapperFactory mapperFactory, 
MessageSearchIndex index,
-            MailboxEventDispatcher dispatcher, MailboxPathLocker locker, 
Mailbox mailbox, MailboxACLResolver aclResolver,
-            GroupMembershipResolver groupMembershipResolver, QuotaManager 
quotaManager, 
-            QuotaRootResolver quotaRootResolver, MessageParser messageParser, 
MessageId.Factory messageIdFactory, BatchSizes batchSizes, 
ImmutableMailboxMessage.Factory immutableMailboxMessageFactory) throws 
MailboxException {
-        super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, 
groupMembershipResolver, quotaManager, 
-                quotaRootResolver, messageParser, messageIdFactory, 
batchSizes, immutableMailboxMessageFactory);
+    public HBaseMessageManager(MailboxSessionMapperFactory mapperFactory,
+                               MessageSearchIndex index,
+                               MailboxEventDispatcher dispatcher,
+                               MailboxPathLocker locker,
+                               Mailbox mailbox,
+                               QuotaManager quotaManager,
+                               QuotaRootResolver quotaRootResolver,
+                               MessageParser messageParser,
+                               MessageId.Factory messageIdFactory,
+                               BatchSizes batchSizes,
+                               ImmutableMailboxMessage.Factory 
immutableMailboxMessageFactory,
+                               StoreRightManager storeRightManager) throws 
MailboxException {
+        super(mapperFactory, index, dispatcher, locker, mailbox, quotaManager,
+                quotaRootResolver, messageParser, messageIdFactory, 
batchSizes, immutableMailboxMessageFactory, storeRightManager);
 
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/hbase/src/main/resources/META-INF/spring/mailbox-hbase.xml
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/main/resources/META-INF/spring/mailbox-hbase.xml 
b/mailbox/hbase/src/main/resources/META-INF/spring/mailbox-hbase.xml
index 315a1b5..426ae6b 100644
--- a/mailbox/hbase/src/main/resources/META-INF/spring/mailbox-hbase.xml
+++ b/mailbox/hbase/src/main/resources/META-INF/spring/mailbox-hbase.xml
@@ -42,8 +42,7 @@
         <constructor-arg index="1" ref="authenticator"/>
         <constructor-arg index="2" ref="authorizator"/>
         <constructor-arg index="3" ref="hbase-locker"/>
-        <constructor-arg index="4" ref="aclResolver"/>
-        <constructor-arg index="5" ref="groupMembershipResolver"/>
+        <constructor-arg index="4" ref="storeRightManager"/>
         <property name="quotaManager" ref="quotaManager"/>
         <property name="maxQuotaManager" ref="maxQuotaManager"/>
         <property name="quotaRootResolver" ref="quotaRootResolver"/>

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerStressTest.java
 
b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerStressTest.java
index b90ab27..4fb2025 100644
--- 
a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerStressTest.java
+++ 
b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerStressTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.hbase.mail.HBaseUidProvider;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
+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.After;
@@ -61,16 +62,16 @@ public class HBaseMailboxManagerStressTest extends 
MailboxManagerStressTest {
         MessageId.Factory messageIdFactory = new DefaultMessageId.Factory();
         HBaseMailboxSessionMapperFactory mapperFactory = new 
HBaseMailboxSessionMapperFactory(CLUSTER.getConf(),
             uidProvider, modSeqProvider, messageIdFactory);
+        StoreRightManager storeRightManager = new 
StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new 
SimpleGroupMembershipResolver());
 
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
         HBaseMailboxManager manager = new HBaseMailboxManager(mapperFactory,
             noAuthenticator,
             noAuthorizator,
-            new UnionMailboxACLResolver(),
-            new SimpleGroupMembershipResolver(),
             new MessageParser(),
-            messageIdFactory
+            messageIdFactory,
+            storeRightManager
         );
 
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
 
b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
index 2bbaac5..f6f8ad2 100644
--- 
a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
+++ 
b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.hbase.mail.HBaseUidProvider;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
+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.After;
@@ -61,16 +62,16 @@ public class HBaseMailboxManagerTest extends 
MailboxManagerTest {
         MessageId.Factory messageIdFactory = new DefaultMessageId.Factory();
         HBaseMailboxSessionMapperFactory mapperFactory = new 
HBaseMailboxSessionMapperFactory(CLUSTER.getConf(),
             uidProvider, modSeqProvider, messageIdFactory);
+        StoreRightManager storeRightManager = new 
StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new 
SimpleGroupMembershipResolver());
 
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
         HBaseMailboxManager manager = new HBaseMailboxManager(mapperFactory,
             noAuthenticator,
             noAuthorizator,
-            new UnionMailboxACLResolver(),
-            new SimpleGroupMembershipResolver(),
             new MessageParser(),
-            messageIdFactory
+            messageIdFactory,
+            storeRightManager
         );
 
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java 
b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
index 7ab1b4f..fb13206 100644
--- 
a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
+++ 
b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
@@ -22,8 +22,6 @@ import java.util.EnumSet;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-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.jcr.mail.model.JCRMailbox;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -33,6 +31,7 @@ import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreMessageManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 
@@ -42,16 +41,23 @@ import 
org.apache.james.mailbox.store.mail.model.impl.MessageParser;
  */
 public class JCRMailboxManager extends StoreMailboxManager implements 
JCRImapConstants {
 
-    public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, Authorizator authorizator,
-            MailboxACLResolver aclResolver, GroupMembershipResolver 
groupMembershipResolver, 
-            MessageParser messageParser, MessageId.Factory messageIdFactory) {
-           this(mapperFactory, authenticator, authorizator, new 
JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, 
messageIdFactory);
+    public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory,
+                             Authenticator authenticator,
+                             Authorizator authorizator,
+                             MessageParser messageParser,
+                             MessageId.Factory messageIdFactory,
+                             StoreRightManager storeRightManager) {
+           this(mapperFactory, authenticator, authorizator, new 
JVMMailboxPathLocker(), messageParser, messageIdFactory, storeRightManager);
     }
 
-    public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, Authorizator authorizator,
-            MailboxPathLocker locker, MailboxACLResolver aclResolver, 
GroupMembershipResolver groupMembershipResolver, 
-            MessageParser messageParser, MessageId.Factory messageIdFactory) {
-        super(mapperFactory, authenticator, authorizator, locker, aclResolver, 
groupMembershipResolver, messageParser, messageIdFactory);
+    public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory,
+                             Authenticator authenticator,
+                             Authorizator authorizator,
+                             MailboxPathLocker locker,
+                             MessageParser messageParser,
+                             MessageId.Factory messageIdFactory,
+                             StoreRightManager storeRightManager) {
+        super(mapperFactory, authenticator, authorizator, locker, 
messageParser, messageIdFactory, storeRightManager);
     }
 
     @Override
@@ -66,14 +72,13 @@ public class JCRMailboxManager extends StoreMailboxManager 
implements JCRImapCon
             getEventDispatcher(),
             getLocker(),
             (JCRMailbox) mailboxEntity,
-            getAclResolver(),
-            getGroupMembershipResolver(),
             getQuotaManager(),
             getQuotaRootResolver(),
             getMessageParser(),
             getMessageIdFactory(),
             getBatchSizes(),
-            getImmutableMailboxMessageFactory());
+            getImmutableMailboxMessageFactory(),
+            getStoreRightManager());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java 
b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
index 08b4688..46e81a9 100644
--- 
a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
+++ 
b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
@@ -26,8 +26,6 @@ import javax.mail.internet.SharedInputStream;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-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.jcr.mail.model.JCRMailbox;
 import org.apache.james.mailbox.jcr.mail.model.JCRMailboxMessage;
@@ -39,6 +37,7 @@ import org.apache.james.mailbox.store.BatchSizes;
 import org.apache.james.mailbox.store.ImmutableMailboxMessage;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.StoreMessageManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -51,13 +50,21 @@ import 
org.apache.james.mailbox.store.search.MessageSearchIndex;
  */
 public class JCRMessageManager extends StoreMessageManager {
 
-    public JCRMessageManager(MailboxSessionMapperFactory mapperFactory, 
MessageSearchIndex index, 
-            final MailboxEventDispatcher dispatcher, MailboxPathLocker locker, 
JCRMailbox mailbox, 
-            MailboxACLResolver aclResolver, GroupMembershipResolver 
groupMembershipResolver, 
-            QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, 
MessageParser messageParser, MessageId.Factory messageIdFactory, BatchSizes 
batchSizes, ImmutableMailboxMessage.Factory immutableMailboxMessageFactory)
+    public JCRMessageManager(MailboxSessionMapperFactory mapperFactory,
+                             MessageSearchIndex index,
+                             MailboxEventDispatcher dispatcher,
+                             MailboxPathLocker locker,
+                             JCRMailbox mailbox,
+                             QuotaManager quotaManager,
+                             QuotaRootResolver quotaRootResolver,
+                             MessageParser messageParser,
+                             MessageId.Factory messageIdFactory,
+                             BatchSizes batchSizes,
+                             ImmutableMailboxMessage.Factory 
immutableMailboxMessageFactory,
+                             StoreRightManager storeRightManager)
                     throws MailboxException {
-        super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, 
groupMembershipResolver, quotaManager, 
-                quotaRootResolver, messageParser, messageIdFactory, 
batchSizes, immutableMailboxMessageFactory);
+        super(mapperFactory, index, dispatcher, locker, mailbox, quotaManager,
+                quotaRootResolver, messageParser, messageIdFactory, 
batchSizes, immutableMailboxMessageFactory, storeRightManager);
     }
 
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/jcr/src/main/resources/META-INF/spring/mailbox-jcr.xml
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/main/resources/META-INF/spring/mailbox-jcr.xml 
b/mailbox/jcr/src/main/resources/META-INF/spring/mailbox-jcr.xml
index ccc7451..4aff1cb 100644
--- a/mailbox/jcr/src/main/resources/META-INF/spring/mailbox-jcr.xml
+++ b/mailbox/jcr/src/main/resources/META-INF/spring/mailbox-jcr.xml
@@ -32,8 +32,7 @@
         <constructor-arg index="1" ref="authenticator"/>
         <constructor-arg index="2" ref="authorizator"/>
         <constructor-arg index="3" ref="jcr-locker"/>
-        <constructor-arg index="4" ref="aclResolver"/>
-        <constructor-arg index="5" ref="groupMembershipResolver"/>
+        <constructor-arg index="4" ref="storeRightManager"/>
         <property name="quotaManager" ref="quotaManager"/>
         <property name="quotaRootResolver" ref="quotaRootResolver"/>
         <property name="quotaUpdater" ref="quotaUpdater"/>

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerProvider.java
 
b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerProvider.java
index e043676..09ed47a 100644
--- 
a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerProvider.java
+++ 
b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerProvider.java
@@ -31,6 +31,7 @@ import org.apache.james.mailbox.jcr.mail.JCRUidProvider;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
 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.xml.sax.InputSource;
@@ -64,8 +65,9 @@ public class JCRMailboxManagerProvider {
 
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
-        JCRMailboxManager manager = new JCRMailboxManager(mf, noAuthenticator, 
noAuthorizator, locker, aclResolver, groupMembershipResolver,
-            messageParser, new DefaultMessageId.Factory());
+        StoreRightManager storeRightManager = new StoreRightManager(mf, 
aclResolver, groupMembershipResolver);
+        JCRMailboxManager manager = new JCRMailboxManager(mf, noAuthenticator, 
noAuthorizator, locker,
+            messageParser, new DefaultMessageId.Factory(), storeRightManager);
 
         try {
             manager.init();

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
index a3d4f16..2c61935 100644
--- 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
+++ 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
@@ -22,8 +22,6 @@ import java.util.EnumSet;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-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.jpa.mail.JPAMailboxMapper;
 import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
@@ -32,6 +30,7 @@ import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.Authenticator;
 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.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.transaction.Mapper;
@@ -42,18 +41,27 @@ import org.apache.james.mailbox.store.transaction.Mapper;
 public abstract class JPAMailboxManager extends StoreMailboxManager {
     
     public JPAMailboxManager(JPAMailboxSessionMapperFactory 
mailboxSessionMapperFactory,
-            Authenticator authenticator, Authorizator authorizator, 
MailboxPathLocker locker, MailboxACLResolver aclResolver, 
-            GroupMembershipResolver groupMembershipResolver, MessageParser 
messageParser, MessageId.Factory messageIdFactory) {
-        super(mailboxSessionMapperFactory, authenticator, authorizator, 
locker, aclResolver, groupMembershipResolver,
-            messageParser, messageIdFactory);
+                             Authenticator authenticator,
+                             Authorizator authorizator,
+                             MailboxPathLocker locker,
+                             MessageParser messageParser,
+                             MessageId.Factory messageIdFactory,
+                             StoreRightManager storeRightManager) {
+        super(mailboxSessionMapperFactory, authenticator, authorizator, locker,
+            messageParser, messageIdFactory, storeRightManager);
     }
 
     public JPAMailboxManager(JPAMailboxSessionMapperFactory 
mailboxSessionMapperFactory,
-                             Authenticator authenticator, Authorizator 
authorizator, MailboxPathLocker locker, MailboxACLResolver aclResolver,
-                             GroupMembershipResolver groupMembershipResolver, 
MessageParser messageParser, MessageId.Factory messageIdFactory,
-                             int limitAnnotation, int limitAnnotationSize) {
-        super(mailboxSessionMapperFactory, authenticator, authorizator, 
locker, aclResolver, groupMembershipResolver,
-            messageParser, messageIdFactory, limitAnnotation, 
limitAnnotationSize);
+                             Authenticator authenticator,
+                             Authorizator authorizator,
+                             MailboxPathLocker locker,
+                             MessageParser messageParser,
+                             MessageId.Factory messageIdFactory,
+                             int limitAnnotation,
+                             int limitAnnotationSize,
+                             StoreRightManager storeRightManager) {
+        super(mailboxSessionMapperFactory, authenticator, authorizator, locker,
+            messageParser, messageIdFactory, limitAnnotation, 
limitAnnotationSize, storeRightManager);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
index ee023ac..f5faca7 100644
--- 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
+++ 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
@@ -26,8 +26,6 @@ import javax.mail.internet.SharedInputStream;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-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.jpa.mail.model.JPAMailbox;
 import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAMailboxMessage;
@@ -39,6 +37,7 @@ import org.apache.james.mailbox.store.BatchSizes;
 import org.apache.james.mailbox.store.ImmutableMailboxMessage;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.StoreMessageManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
@@ -51,14 +50,21 @@ import 
org.apache.james.mailbox.store.search.MessageSearchIndex;
  */
 public class JPAMessageManager extends StoreMessageManager {
     
-    public JPAMessageManager(MailboxSessionMapperFactory mapperFactory, 
MessageSearchIndex index, 
-                       final MailboxEventDispatcher dispatcher, 
MailboxPathLocker locker, 
-                       final Mailbox mailbox, MailboxACLResolver aclResolver, 
-                       GroupMembershipResolver groupMembershipResolver, 
QuotaManager quotaManager,
-                QuotaRootResolver quotaRootResolver, MessageParser 
messageParser, MessageId.Factory messageIdFactory, BatchSizes batchSizes, 
ImmutableMailboxMessage.Factory immutableMailboxMessageFactory) throws 
MailboxException {
+    public JPAMessageManager(MailboxSessionMapperFactory mapperFactory,
+                             MessageSearchIndex index,
+                             final MailboxEventDispatcher dispatcher,
+                             MailboxPathLocker locker,
+                             final Mailbox mailbox,
+                             QuotaManager quotaManager,
+                             QuotaRootResolver quotaRootResolver,
+                             MessageParser messageParser,
+                             MessageId.Factory messageIdFactory,
+                             BatchSizes batchSizes,
+                             ImmutableMailboxMessage.Factory 
immutableMailboxMessageFactory,
+                             StoreRightManager storeRightManager) throws 
MailboxException {
        
-        super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, 
groupMembershipResolver,
-            quotaManager, quotaRootResolver, messageParser, messageIdFactory, 
batchSizes, immutableMailboxMessageFactory);
+        super(mapperFactory, index, dispatcher, locker, mailbox,
+            quotaManager, quotaRootResolver, messageParser, messageIdFactory, 
batchSizes, immutableMailboxMessageFactory, storeRightManager);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
index 7944ec4..52dc140 100644
--- 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
+++ 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
@@ -24,8 +24,6 @@ import javax.inject.Inject;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-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.jpa.JPAMailboxManager;
 import org.apache.james.mailbox.jpa.JPAMailboxSessionMapperFactory;
@@ -37,6 +35,7 @@ import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.StoreMessageManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 
@@ -48,12 +47,18 @@ public class OpenJPAMailboxManager extends 
JPAMailboxManager {
 
     private final AdvancedFeature feature;
 
-    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, Authorizator authorizator,
-            MailboxPathLocker locker, boolean useStreaming, MailboxACLResolver 
aclResolver, 
-            GroupMembershipResolver groupMembershipResolver, MessageParser 
messageParser, MessageId.Factory messageIdFactory,
-            int annotationLimit, int annotationLimitSize) {
-        super(mapperFactory, authenticator, authorizator, locker, aclResolver, 
groupMembershipResolver, messageParser,
-            messageIdFactory, annotationLimit, annotationLimitSize);
+    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory,
+                                 Authenticator authenticator,
+                                 Authorizator authorizator,
+                                 MailboxPathLocker locker,
+                                 boolean useStreaming,
+                                 MessageParser messageParser,
+                                 MessageId.Factory messageIdFactory,
+                                 int annotationLimit,
+                                 int annotationLimitSize,
+                                 StoreRightManager storeRightManager) {
+        super(mapperFactory, authenticator, authorizator, locker, 
messageParser,
+            messageIdFactory, annotationLimit, annotationLimitSize, 
storeRightManager);
         if (useStreaming) {
             feature = AdvancedFeature.Streaming;
         } else {
@@ -61,11 +66,16 @@ public class OpenJPAMailboxManager extends 
JPAMailboxManager {
         }
     }
 
-    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, Authorizator authorizator,
-            MailboxPathLocker locker,  String encryptPass, MailboxACLResolver 
aclResolver, 
-            GroupMembershipResolver groupMembershipResolver, MessageParser 
messageParser, MessageId.Factory messageIdFactory) {
-        super(mapperFactory, authenticator, authorizator, locker, aclResolver, 
groupMembershipResolver, messageParser,
-            messageIdFactory);
+    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory,
+                                 Authenticator authenticator,
+                                 Authorizator authorizator,
+                                 MailboxPathLocker locker,
+                                 String encryptPass,
+                                 MessageParser messageParser,
+                                 MessageId.Factory messageIdFactory,
+                                 StoreRightManager storeRightManager) {
+        super(mapperFactory, authenticator, authorizator, locker, 
messageParser,
+            messageIdFactory, storeRightManager);
         if (encryptPass != null) {
             EncryptDecryptHelper.init(encryptPass);
             feature = AdvancedFeature.Encryption;
@@ -75,20 +85,27 @@ public class OpenJPAMailboxManager extends 
JPAMailboxManager {
     }
     
     @Inject
-    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, Authorizator authorizator,
-            MailboxACLResolver aclResolver, GroupMembershipResolver 
groupMembershipResolver, 
-            MessageParser messageParser, MessageId.Factory messageIdFactory) {
-        this(mapperFactory, authenticator, authorizator, new 
JVMMailboxPathLocker(), false, aclResolver,
-            groupMembershipResolver, messageParser, messageIdFactory, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX,
-            MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE);
+    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory,
+                                 Authenticator authenticator,
+                                 Authorizator authorizator,
+                                 MessageParser messageParser,
+                                 MessageId.Factory messageIdFactory,
+                                 StoreRightManager storeRightManager) {
+        this(mapperFactory, authenticator, authorizator, new 
JVMMailboxPathLocker(), false,
+            messageParser, messageIdFactory, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX,
+            MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, storeRightManager);
     }
 
-    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory, 
Authenticator authenticator, Authorizator authorizator,
-                                 MailboxACLResolver aclResolver, 
GroupMembershipResolver groupMembershipResolver,
-                                 MessageParser messageParser, 
MessageId.Factory messageIdFactory, int annotationLimit,
-                                 int annotationLimitSize) {
-        this(mapperFactory, authenticator, authorizator, new 
JVMMailboxPathLocker(), false, aclResolver,
-            groupMembershipResolver, messageParser, messageIdFactory, 
annotationLimit, annotationLimitSize);
+    public OpenJPAMailboxManager(JPAMailboxSessionMapperFactory mapperFactory,
+                                 Authenticator authenticator,
+                                 Authorizator authorizator,
+                                 MessageParser messageParser,
+                                 MessageId.Factory messageIdFactory,
+                                 int annotationLimit,
+                                 int annotationLimitSize,
+                                 StoreRightManager storeRightManager) {
+        this(mapperFactory, authenticator, authorizator, new 
JVMMailboxPathLocker(), false,
+            messageParser, messageIdFactory, annotationLimit, 
annotationLimitSize, storeRightManager);
     }
 
     @Override
@@ -99,13 +116,12 @@ public class OpenJPAMailboxManager extends 
JPAMailboxManager {
             getLocker(),
             mailboxRow,
             feature,
-            getAclResolver(),
-            getGroupMembershipResolver(),
             getQuotaManager(),
             getQuotaRootResolver(),
             getMessageParser(),
             getMessageIdFactory(),
             getBatchSizes(),
-            getImmutableMailboxMessageFactory());
+            getImmutableMailboxMessageFactory(),
+            getStoreRightManager());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
index ca545d5..e02ce9e 100644
--- 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
+++ 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
@@ -26,8 +26,6 @@ import javax.mail.Flags;
 import javax.mail.internet.SharedInputStream;
 
 import org.apache.james.mailbox.MailboxPathLocker;
-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.jpa.JPAMessageManager;
 import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
@@ -40,6 +38,7 @@ import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.store.BatchSizes;
 import org.apache.james.mailbox.store.ImmutableMailboxMessage;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
@@ -61,23 +60,25 @@ public class OpenJPAMessageManager extends 
JPAMessageManager {
     }
     
     public OpenJPAMessageManager(MailboxSessionMapperFactory mapperFactory, 
-               MessageSearchIndex index,MailboxEventDispatcher dispatcher, 
-               MailboxPathLocker locker, Mailbox mailbox, MailboxACLResolver 
aclResolver, 
-               GroupMembershipResolver groupMembershipResolver,
-            QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, 
MessageParser messageParser,
-            MessageId.Factory messageIdFactory, BatchSizes batchSizes, 
ImmutableMailboxMessage.Factory immutableMailboxMessageFactory) throws 
MailboxException {
-        this(mapperFactory, index, dispatcher, locker,  mailbox, 
AdvancedFeature.None, aclResolver, 
-                groupMembershipResolver, quotaManager, quotaRootResolver, 
messageParser, messageIdFactory, batchSizes, immutableMailboxMessageFactory);
+                                 MessageSearchIndex 
index,MailboxEventDispatcher dispatcher,
+                                 MailboxPathLocker locker, Mailbox mailbox,
+                                 QuotaManager quotaManager, QuotaRootResolver 
quotaRootResolver, MessageParser messageParser,
+                                 MessageId.Factory messageIdFactory, 
BatchSizes batchSizes,
+                                 ImmutableMailboxMessage.Factory 
immutableMailboxMessageFactory,
+                                 StoreRightManager storeRightManager) throws 
MailboxException {
+        this(mapperFactory, index, dispatcher, locker,  mailbox, 
AdvancedFeature.None,
+                quotaManager, quotaRootResolver, messageParser, 
messageIdFactory, batchSizes, immutableMailboxMessageFactory, 
storeRightManager);
     }
 
-    public OpenJPAMessageManager(MailboxSessionMapperFactory mapperFactory, 
-               MessageSearchIndex index, MailboxEventDispatcher dispatcher, 
-               MailboxPathLocker locker, Mailbox mailbox, AdvancedFeature f, 
-               MailboxACLResolver aclResolver, GroupMembershipResolver 
groupMembershipResolver,
-            QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, 
MessageParser messageParser,
-            MessageId.Factory messageIdFactory, BatchSizes batchSizes, 
ImmutableMailboxMessage.Factory immutableMailboxMessageFactory) throws 
MailboxException {
+    public OpenJPAMessageManager(MailboxSessionMapperFactory mapperFactory,
+                                 MessageSearchIndex index, 
MailboxEventDispatcher dispatcher,
+                                 MailboxPathLocker locker, Mailbox mailbox, 
AdvancedFeature f,
+                                 QuotaManager quotaManager, QuotaRootResolver 
quotaRootResolver, MessageParser messageParser,
+                                 MessageId.Factory messageIdFactory, 
BatchSizes batchSizes,
+                                 ImmutableMailboxMessage.Factory 
immutableMailboxMessageFactory, StoreRightManager storeRightManager) throws 
MailboxException {
        
-        super(mapperFactory,  index, dispatcher, locker, mailbox, aclResolver, 
groupMembershipResolver, quotaManager, quotaRootResolver, messageParser, 
messageIdFactory, batchSizes, immutableMailboxMessageFactory);
+        super(mapperFactory,  index, dispatcher, locker, mailbox, 
quotaManager, quotaRootResolver,
+            messageParser, messageIdFactory, batchSizes, 
immutableMailboxMessageFactory, storeRightManager);
         this.feature = f;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml 
b/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
index f8d4dd0..86d3966 100644
--- a/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
+++ b/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
@@ -31,14 +31,14 @@
 
     <bean id="jpa-mailboxIdFactory" 
class="org.apache.james.mailbox.jpa.JPAId.Factory" />
 
+
     <bean id="jpa-mailboxmanager" 
class="org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager" 
init-method="init">
         <constructor-arg index="0" ref="jpa-sessionMapperFactory"/>
         <constructor-arg index="1" ref="authenticator"/>
         <constructor-arg index="2" ref="authorizator"/>
-        <constructor-arg index="3" ref="aclResolver"/>
-        <constructor-arg index="4" ref="groupMembershipResolver"/>
-        <constructor-arg index="5" ref="messageParser"/>
-        <constructor-arg index="6" ref="messageIdFactory"/>
+        <constructor-arg index="3" ref="messageParser"/>
+        <constructor-arg index="4" ref="messageIdFactory"/>
+        <constructor-arg index="5" ref="storeRightManager" />
         <property name="quotaManager" ref="quotaManager"/>
         <property name="quotaRootResolver" ref="quotaRootResolver"/>
         <property name="quotaUpdater" ref="quotaUpdater"/>

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
----------------------------------------------------------------------
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 a96995a..a9a0180 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
@@ -33,6 +33,7 @@ import 
org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
 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;
 
@@ -54,9 +55,10 @@ public class JpaMailboxManagerProvider {
 
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
+        StoreRightManager storeRightManager = new StoreRightManager(mf, 
aclResolver, groupMembershipResolver);
         OpenJPAMailboxManager openJPAMailboxManager = new 
OpenJPAMailboxManager(mf, noAuthenticator, noAuthorizator,
-            aclResolver, groupMembershipResolver, messageParser, new 
DefaultMessageId.Factory(), LIMIT_ANNOTATIONS,
-            LIMIT_ANNOTATION_SIZE);
+            messageParser, new DefaultMessageId.Factory(), LIMIT_ANNOTATIONS,
+            LIMIT_ANNOTATION_SIZE, storeRightManager);
 
         try {
             openJPAMailboxManager.init();

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
 
b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
index a60994b..c66bd57 100644
--- 
a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
+++ 
b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
@@ -31,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;
@@ -50,15 +51,17 @@ public class LuceneMessageSearchIndexTest extends 
AbstractMessageSearchIndexTest
     protected void initializeMailboxManager() throws Exception {
         TestMessageId.Factory messageIdFactory = new TestMessageId.Factory();
         MailboxSessionMapperFactory mapperFactory = new 
InMemoryMailboxSessionMapperFactory();
+        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(delegatingListener);
         storeMailboxManager.setDelegatingMailboxListener(delegatingListener);

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
----------------------------------------------------------------------
diff --git 
a/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml 
b/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
index b943781..ebbdd03 100644
--- a/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
+++ b/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
@@ -39,12 +39,11 @@
         <constructor-arg index="1" ref="authenticator"/>
         <constructor-arg index="2" ref="authorizator"/>
         <constructor-arg index="3" ref="maildir-locker"/>
-        <constructor-arg index="4" ref="aclResolver"/>
-        <constructor-arg index="5" ref="groupMembershipResolver"/>
-        <constructor-arg index="6" ref="messageParser"/>
-        <constructor-arg index="7" ref="messageIdFactory" />
-        <constructor-arg index="8" ref="dispatcher" />
-        <constructor-arg index="9" ref="delegating-listener" />
+        <constructor-arg index="4" ref="messageParser"/>
+        <constructor-arg index="5" ref="messageIdFactory" />
+        <constructor-arg index="6" ref="dispatcher" />
+        <constructor-arg index="7" ref="delegating-listener" />
+        <constructor-arg index="8" ref="storeRightManager" />
 <!--         <property name="messageSearchIndex" ref="lazyIndex"/> -->
         <property name="quotaManager" ref="quotaManager"/>
         <property name="quotaRootResolver" ref="quotaRootResolver"/>

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
----------------------------------------------------------------------
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 cfe91bb..e36e020 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
@@ -30,6 +30,7 @@ import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
 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.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.junit.rules.TemporaryFolder;
@@ -42,11 +43,12 @@ public class MaildirMailboxManagerProvider {
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
         GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();
+        StoreRightManager storeRightManager = new StoreRightManager(mf, 
aclResolver, groupMembershipResolver);
 
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
-        StoreMailboxManager manager = new StoreMailboxManager(mf, 
noAuthenticator, noAuthorizator, new JVMMailboxPathLocker(), aclResolver,
-            groupMembershipResolver, messageParser, new 
DefaultMessageId.Factory());
+        StoreMailboxManager manager = new StoreMailboxManager(mf, 
noAuthenticator, noAuthorizator, new JVMMailboxPathLocker(),
+            messageParser, new DefaultMessageId.Factory(), storeRightManager);
         manager.init();
 
         return manager;

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
index 9aca010..99dffd2 100644
--- 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
+++ 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
@@ -25,8 +25,6 @@ import javax.inject.Inject;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-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.model.MailboxConstants;
 import org.apache.james.mailbox.model.MessageId;
@@ -35,6 +33,7 @@ import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreMessageManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -45,24 +44,23 @@ public class InMemoryMailboxManager extends 
StoreMailboxManager {
 
     @Inject
     public InMemoryMailboxManager(MailboxSessionMapperFactory 
mailboxSessionMapperFactory, Authenticator authenticator, Authorizator 
authorizator,
-            MailboxPathLocker locker, MailboxACLResolver aclResolver, 
GroupMembershipResolver groupMembershipResolver,
-            MessageParser messageParser, MessageId.Factory messageIdFactory, 
MailboxEventDispatcher dispatcher,
-            DelegatingMailboxListener delegatingMailboxListener) {
-        super(mailboxSessionMapperFactory, authenticator, authorizator, 
locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory,
+                                  MailboxPathLocker locker, MessageParser 
messageParser, MessageId.Factory messageIdFactory, MailboxEventDispatcher 
dispatcher,
+                                  DelegatingMailboxListener 
delegatingMailboxListener, StoreRightManager storeRightManager) {
+        super(mailboxSessionMapperFactory, authenticator, authorizator, 
locker, messageParser, messageIdFactory,
             MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE, dispatcher,
-            delegatingMailboxListener);
+            delegatingMailboxListener, storeRightManager);
     }
 
     public InMemoryMailboxManager(MailboxSessionMapperFactory 
mailboxSessionMapperFactory, Authenticator authenticator, Authorizator 
authorizator,
-                                  MailboxPathLocker locker, MailboxACLResolver 
aclResolver, GroupMembershipResolver groupMembershipResolver,
-                                  MessageParser messageParser, 
MessageId.Factory messageIdFactory) {
-        super(mailboxSessionMapperFactory, authenticator, authorizator, 
locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory);
+                                  MailboxPathLocker locker, MessageParser 
messageParser, MessageId.Factory messageIdFactory, StoreRightManager 
storeRightManager) {
+        super(mailboxSessionMapperFactory, authenticator, authorizator, 
locker, messageParser, messageIdFactory, storeRightManager);
     }
 
     public InMemoryMailboxManager(MailboxSessionMapperFactory 
mailboxSessionMapperFactory, Authenticator authenticator,  Authorizator 
authorizator,
-            MailboxACLResolver aclResolver, GroupMembershipResolver 
groupMembershipResolver, MessageParser messageParser,
-            MessageId.Factory messageIdFactory, int limitOfAnnotations, int 
limitAnnotationSize) {
-        super(mailboxSessionMapperFactory, authenticator, authorizator, 
aclResolver, groupMembershipResolver, messageParser, messageIdFactory, 
limitOfAnnotations, limitAnnotationSize);
+                                  MessageParser messageParser, 
MessageId.Factory messageIdFactory,
+                                  int limitOfAnnotations, int 
limitAnnotationSize,
+                                  StoreRightManager storeRightManager) {
+        super(mailboxSessionMapperFactory, authenticator, authorizator, 
messageParser, messageIdFactory, limitOfAnnotations, limitAnnotationSize, 
storeRightManager);
     }
 
     @Override
@@ -92,13 +90,12 @@ public class InMemoryMailboxManager extends 
StoreMailboxManager {
             getEventDispatcher(),
             getLocker(),
             mailbox,
-            getAclResolver(),
-            getGroupMembershipResolver(),
             getQuotaManager(),
             getQuotaRootResolver(),
             getMessageParser(),
             getMessageIdFactory(),
             getBatchSizes(),
-            getImmutableMailboxMessageFactory());
+            getImmutableMailboxMessageFactory(),
+            getStoreRightManager());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
index 6732816..21b9479 100644
--- 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
+++ 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
@@ -6,8 +6,6 @@ import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-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.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageId;
@@ -17,6 +15,7 @@ import org.apache.james.mailbox.store.BatchSizes;
 import org.apache.james.mailbox.store.ImmutableMailboxMessage;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.StoreMessageManager;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
@@ -29,10 +28,20 @@ public class InMemoryMessageManager extends 
StoreMessageManager {
 
     private InMemoryMailboxSessionMapperFactory mapperFactory;
 
-    public InMemoryMessageManager(MailboxSessionMapperFactory mapperFactory, 
MessageSearchIndex index, MailboxEventDispatcher dispatcher,
-                                  MailboxPathLocker locker, Mailbox mailbox, 
MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
-                                  QuotaManager quotaManager, QuotaRootResolver 
quotaRootResolver, MessageParser messageParser, MessageId.Factory 
messageIdFactory, BatchSizes batchSizes, ImmutableMailboxMessage.Factory 
immutableMailboxMessageFactory) throws MailboxException {
-        super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, 
groupMembershipResolver, quotaManager, quotaRootResolver, messageParser, 
messageIdFactory, batchSizes, immutableMailboxMessageFactory);
+    public InMemoryMessageManager(MailboxSessionMapperFactory mapperFactory,
+                                  MessageSearchIndex index,
+                                  MailboxEventDispatcher dispatcher,
+                                  MailboxPathLocker locker,
+                                  Mailbox mailbox,
+                                  QuotaManager quotaManager,
+                                  QuotaRootResolver quotaRootResolver,
+                                  MessageParser messageParser,
+                                  MessageId.Factory messageIdFactory,
+                                  BatchSizes batchSizes,
+                                  ImmutableMailboxMessage.Factory 
immutableMailboxMessageFactory,
+                                  StoreRightManager storeRightManager) throws 
MailboxException {
+        super(mapperFactory, index, dispatcher, locker, mailbox, quotaManager, 
quotaRootResolver,
+            messageParser, messageIdFactory, batchSizes, 
immutableMailboxMessageFactory, storeRightManager);
         this.mapperFactory = (InMemoryMailboxSessionMapperFactory) 
mapperFactory;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml 
b/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
index d75ced9..0e3d011 100644
--- a/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
+++ b/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
@@ -36,12 +36,11 @@
         <constructor-arg index="1" ref="authenticator"/>
         <constructor-arg index="2" ref="authorizator"/>
         <constructor-arg index="3" ref="memory-locker"/>
-        <constructor-arg index="4" ref="aclResolver"/>
-        <constructor-arg index="5" ref="groupMembershipResolver"/>
-        <constructor-arg index="6" ref="messageParser"/>
-        <constructor-arg index="7" ref="messageIdFactory" />
-        <constructor-arg index="8" ref="dispatcher" />
-        <constructor-arg index="9" ref="delegating-listener" />
+        <constructor-arg index="4" ref="messageParser"/>
+        <constructor-arg index="5" ref="messageIdFactory" />
+        <constructor-arg index="6" ref="dispatcher" />
+        <constructor-arg index="7" ref="delegating-listener" />
+        <constructor-arg index="8" ref="storeRightManager" />
 <!--         <property name="messageSearchIndex" ref="lazyIndex"/> -->
         <property name="quotaManager" ref="quotaManager"/>
         <property name="quotaRootResolver" ref="quotaRootResolver"/>

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerProvider.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerProvider.java
index 5cb7e2f..7438442 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerProvider.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerProvider.java
@@ -28,6 +28,7 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.FakeAuthenticator;
 import org.apache.james.mailbox.store.FakeAuthorizator;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 
 import com.google.common.base.Throwables;
@@ -42,9 +43,10 @@ public class MemoryMailboxManagerProvider {
         MessageParser messageParser = new MessageParser();
 
         InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new 
InMemoryMailboxSessionMapperFactory();
+        StoreRightManager storeRightManager = new 
StoreRightManager(mailboxSessionMapperFactory, aclResolver, 
groupMembershipResolver);
         MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
         InMemoryMailboxManager mailboxManager = new 
InMemoryMailboxManager(mailboxSessionMapperFactory, new FakeAuthenticator(), 
FakeAuthorizator.defaultReject(),
-            aclResolver, groupMembershipResolver, messageParser, 
messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
+            messageParser, messageIdFactory, LIMIT_ANNOTATIONS, 
LIMIT_ANNOTATION_SIZE, storeRightManager);
 
         try {
             mailboxManager.init();

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
index d67f276..92bc78d 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.when;
 import java.io.InputStream;
 
 import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
@@ -36,6 +37,7 @@ import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.NoMailboxPathLocker;
+import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.junit.Before;
@@ -53,14 +55,17 @@ public class InMemoryMailboxManagerAttachmentTest extends 
AbstractMailboxManager
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
         MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
+        GroupMembershipResolver groupMembershipResolver = null;
+        UnionMailboxACLResolver aclResolver = new UnionMailboxACLResolver();
+        StoreRightManager storeRightManager = new 
StoreRightManager(mailboxSessionMapperFactory, aclResolver, 
groupMembershipResolver);
         mailboxManager = new 
InMemoryMailboxManager(mailboxSessionMapperFactory, noAuthenticator, 
noAuthorizator, new NoMailboxPathLocker(), 
-                new UnionMailboxACLResolver(), null, new MessageParser(), 
messageIdFactory);
+                new MessageParser(), messageIdFactory, storeRightManager);
         mailboxManager.init();
         MessageParser failingMessageParser = mock(MessageParser.class);
         when(failingMessageParser.retrieveAttachments(any(InputStream.class)))
             .thenThrow(new RuntimeException("Message parser set to fail"));
         parseFailingMailboxManager = new 
InMemoryMailboxManager(mailboxSessionMapperFactory, noAuthenticator, 
noAuthorizator, new NoMailboxPathLocker(),
-                new UnionMailboxACLResolver(), null, failingMessageParser, 
messageIdFactory);
+            failingMessageParser, messageIdFactory, storeRightManager);
         parseFailingMailboxManager.init();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/571b3b82/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
----------------------------------------------------------------------
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 07e592f..f560727 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
@@ -39,6 +39,7 @@ import org.apache.james.mailbox.store.FakeAuthorizator;
 import org.apache.james.mailbox.store.NoMailboxPathLocker;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreMessageIdManager;
+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;
@@ -56,15 +57,15 @@ public class InMemoryIntegrationResources implements 
IntegrationResources<StoreM
         fakeAuthenticator.addUser(ManagerTestResources.USER, 
ManagerTestResources.USER_PASS);
         fakeAuthenticator.addUser(ManagerTestResources.OTHER_USER, 
ManagerTestResources.OTHER_USER_PASS);
         InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new 
InMemoryMailboxSessionMapperFactory();
+        StoreRightManager storeRightManager = new 
StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), 
groupMembershipResolver);
         final StoreMailboxManager manager = new InMemoryMailboxManager(
             mailboxSessionMapperFactory,
             fakeAuthenticator,
             FakeAuthorizator.defaultReject(),
             new NoMailboxPathLocker(),
-            new UnionMailboxACLResolver(),
-            groupMembershipResolver,
             new MessageParser(),
-            new InMemoryMessageId.Factory());
+            new InMemoryMessageId.Factory(),
+            storeRightManager);
         manager.init();
         return manager;
     }


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

Reply via email to