MAILBOX-312 Remove InMemory MessageIdManager

Rely on StoreMessageIdManager instead.


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

Branch: refs/heads/master
Commit: 7f0d94f579857f7598d05ca12e0e38def06a15a6
Parents: 8a5ea2e
Author: benwa <btell...@linagora.com>
Authored: Tue Oct 17 14:49:49 2017 +0700
Committer: Matthieu Baechler <matth...@apache.org>
Committed: Wed Oct 18 14:17:53 2017 +0200

----------------------------------------------------------------------
 .../mailbox/manager/IntegrationResources.java   |  14 +-
 .../ElasticSearchIntegrationTest.java           |  18 +-
 .../search/LuceneMessageSearchIndexTest.java    |  17 +-
 .../InMemoryMailboxSessionMapperFactory.java    |   6 +-
 .../inmemory/InMemoryMessageIdManager.java      | 199 -------------------
 .../InMemoryCombinationManagerTest.java         |   3 +-
 .../InMemoryMessageIdManagerStorageTest.java    |   3 +-
 .../InMemoryMessageIdManagerTestSystem.java     |  29 ++-
 .../MessageIdManagerTestSystemProvider.java     |  51 +----
 .../MessageManagerTestSystemProvider.java       |  47 +----
 .../manager/InMemoryIntegrationResources.java   |  26 ++-
 .../search/SimpleMessageSearchIndexTest.java    |  20 +-
 .../modules/mailbox/MemoryMailboxModule.java    |   6 +-
 .../jmap/methods/GetMessagesMethodTest.java     |   7 +-
 .../jmap/send/PostDequeueDecoratorTest.java     |   4 +-
 .../protocols/webadmin/webadmin-mailbox/pom.xml |   6 +
 .../routes/UserMailboxesRoutesTest.java         |  22 +-
 17 files changed, 125 insertions(+), 353 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/api/src/test/java/org/apache/james/mailbox/manager/IntegrationResources.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/IntegrationResources.java
 
b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/IntegrationResources.java
index ff70bc7..a76acaf 100644
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/IntegrationResources.java
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/IntegrationResources.java
@@ -21,28 +21,28 @@ package org.apache.james.mailbox.manager;
 
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MessageIdManager;
-import org.apache.james.mailbox.quota.MaxQuotaManager;
-import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.quota.MaxQuotaManager;
+import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 
 /**
  * Provides empty resources for integration tests.
  */
-public interface IntegrationResources {
+public interface IntegrationResources<T extends MailboxManager> {
 
-    MailboxManager createMailboxManager(GroupMembershipResolver 
groupMembershipResolver) throws MailboxException;
+    T createMailboxManager(GroupMembershipResolver groupMembershipResolver) 
throws MailboxException;
 
-    QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, 
MailboxManager mailboxManager) throws Exception;
+    QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, T 
mailboxManager) throws Exception;
 
     MaxQuotaManager createMaxQuotaManager() throws Exception;
 
-    QuotaRootResolver createQuotaRootResolver(MailboxManager mailboxManager) 
throws Exception;
+    QuotaRootResolver createQuotaRootResolver(T mailboxManager) throws 
Exception;
 
     GroupMembershipResolver createGroupMembershipResolver() throws Exception;
 
-    MessageIdManager createMessageIdManager(MailboxManager mailboxManager);
+    MessageIdManager createMessageIdManager(T mailboxManager);
     
     /**
      * Init you will want to perform before tests

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/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 6efcaa7..4f4ca72 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
@@ -46,7 +46,6 @@ import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.inmemory.InMemoryMessageId;
-import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -55,7 +54,12 @@ 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.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.StoreMessageIdManager;
+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;
+import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.NoQuotaManager;
 import org.apache.james.mailbox.store.search.AbstractMessageSearchIndexTest;
 import org.apache.james.mailbox.tika.TikaConfiguration;
 import org.apache.james.mailbox.tika.TikaContainer;
@@ -134,7 +138,17 @@ public class ElasticSearchIntegrationTest extends 
AbstractMessageSearchIndexTest
             new SimpleGroupMembershipResolver(),
             new MessageParser(),
             messageIdFactory);
-        messageIdManager = new InMemoryMessageIdManager(storeMailboxManager);
+        DefaultDelegatingMailboxListener delegatingListener = new 
DefaultDelegatingMailboxListener();
+        MailboxEventDispatcher mailboxEventDispatcher = new 
MailboxEventDispatcher(delegatingListener);
+        storeMailboxManager.setDelegatingMailboxListener(delegatingListener);
+
+        messageIdManager = new StoreMessageIdManager(
+            storeMailboxManager.getMapperFactory(),
+            mailboxEventDispatcher,
+            messageIdFactory,
+            new NoQuotaManager(),
+            new DefaultQuotaRootResolver(mapperFactory));
+
         storeMailboxManager.setMessageSearchIndex(messageSearchIndex);
         storeMailboxManager.init();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/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 a7e4834..4da19c5 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
@@ -25,13 +25,17 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
-import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager;
 import org.apache.james.mailbox.model.TestMessageId;
 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.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.StoreMessageIdManager;
+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;
+import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.NoQuotaManager;
 import org.apache.james.mailbox.store.search.AbstractMessageSearchIndexTest;
 import org.apache.lucene.store.RAMDirectory;
 import org.junit.Ignore;
@@ -55,7 +59,16 @@ public class LuceneMessageSearchIndexTest extends 
AbstractMessageSearchIndexTest
             new SimpleGroupMembershipResolver(),
             new MessageParser(),
             messageIdFactory);
-        messageIdManager = new InMemoryMessageIdManager(storeMailboxManager);
+        DefaultDelegatingMailboxListener delegatingListener = new 
DefaultDelegatingMailboxListener();
+        MailboxEventDispatcher mailboxEventDispatcher = new 
MailboxEventDispatcher(delegatingListener);
+        storeMailboxManager.setDelegatingMailboxListener(delegatingListener);
+
+        messageIdManager = new StoreMessageIdManager(
+            storeMailboxManager.getMapperFactory(),
+            mailboxEventDispatcher,
+            messageIdFactory,
+            new NoQuotaManager(),
+            new DefaultQuotaRootResolver(mapperFactory));
         messageSearchIndex = new LuceneMessageSearchIndex(mapperFactory, new 
InMemoryId.Factory(), new RAMDirectory(), messageIdFactory);
         storeMailboxManager.setMessageSearchIndex(messageSearchIndex);
         storeMailboxManager.init();

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
index eb6a010..80b7a68 100644
--- 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
+++ 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
@@ -24,6 +24,7 @@ import 
org.apache.james.mailbox.exception.SubscriptionException;
 import org.apache.james.mailbox.inmemory.mail.InMemoryAnnotationMapper;
 import org.apache.james.mailbox.inmemory.mail.InMemoryAttachmentMapper;
 import org.apache.james.mailbox.inmemory.mail.InMemoryMailboxMapper;
+import org.apache.james.mailbox.inmemory.mail.InMemoryMessageIdMapper;
 import org.apache.james.mailbox.inmemory.mail.InMemoryMessageMapper;
 import org.apache.james.mailbox.inmemory.mail.InMemoryModSeqProvider;
 import org.apache.james.mailbox.inmemory.mail.InMemoryUidProvider;
@@ -42,6 +43,7 @@ public class InMemoryMailboxSessionMapperFactory extends 
MailboxSessionMapperFac
 
     private final MailboxMapper mailboxMapper;
     private final InMemoryMessageMapper messageMapper;
+    private final InMemoryMessageIdMapper messageIdMapper;
     private final SubscriptionMapper subscriptionMapper;
     private final AttachmentMapper attachmentMapper;
     private final AnnotationMapper annotationMapper;
@@ -53,6 +55,8 @@ public class InMemoryMailboxSessionMapperFactory extends 
MailboxSessionMapperFac
         uidProvider = new InMemoryUidProvider();
         modSeqProvider = new InMemoryModSeqProvider();
         messageMapper = new InMemoryMessageMapper(null, uidProvider, 
modSeqProvider);
+        messageIdMapper = new InMemoryMessageIdMapper(mailboxMapper, 
messageMapper);
+
         subscriptionMapper = new InMemorySubscriptionMapper();
         attachmentMapper = new InMemoryAttachmentMapper();
         annotationMapper = new InMemoryAnnotationMapper();
@@ -70,7 +74,7 @@ public class InMemoryMailboxSessionMapperFactory extends 
MailboxSessionMapperFac
 
     @Override
     public MessageIdMapper createMessageIdMapper(MailboxSession session) {
-        return null;
+        return messageIdMapper;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
deleted file mode 100644
index 68f4b57..0000000
--- 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java
+++ /dev/null
@@ -1,199 +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.inmemory;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import javax.inject.Inject;
-import javax.mail.Flags;
-
-import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageIdManager;
-import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.exception.MailboxNotFoundException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
-import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.MailboxMetaData;
-import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.MessageRange;
-import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup;
-import org.apache.james.mailbox.model.search.MailboxQuery;
-import org.apache.james.util.OptionalUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.github.fge.lambdas.Throwing;
-import com.github.steveash.guavate.Guavate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
-import com.google.common.collect.Sets.SetView;
-
-public class InMemoryMessageIdManager implements MessageIdManager {
-
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(InMemoryMessageIdManager.class);
-    private final MailboxManager mailboxManager;
-
-    @Inject
-    public InMemoryMessageIdManager(MailboxManager mailboxManager) {
-        this.mailboxManager = mailboxManager;
-    }
-
-    @Override
-    public void setFlags(Flags newState, FlagsUpdateMode flagsUpdateMode, 
MessageId messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession) 
throws MailboxException {
-        for (MailboxId mailboxId: mailboxIds) {
-            Optional<MessageResult> message = findMessageWithId(mailboxId, 
messageId, FetchGroupImpl.MINIMAL, mailboxSession);
-            if (message.isPresent()) {
-                mailboxManager.getMailbox(mailboxId, mailboxSession)
-                    .setFlags(newState, flagsUpdateMode, 
message.get().getUid().toRange(), mailboxSession);
-            }
-        }
-    }
-
-    @Override
-    public Set<MessageId> accessibleMessages(Collection<MessageId> messageIds, 
MailboxSession mailboxSession) throws MailboxException {
-        return getUsersMailboxIds(mailboxSession)
-            .stream()
-            .flatMap(Throwing.function(mailboxId -> 
retrieveMailboxMessages(mailboxId, messageIds, FetchGroupImpl.MINIMAL, 
mailboxSession)))
-            .map(MessageResult::getMessageId)
-            .collect(Guavate.toImmutableSet());
-    }
-
-
-    @Override
-    public List<MessageResult> getMessages(List<MessageId> messages, 
FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
-        return getUsersMailboxIds(mailboxSession)
-            .stream()
-            .flatMap(Throwing.function(mailboxId -> 
retrieveMailboxMessages(mailboxId, messages, FetchGroupImpl.MINIMAL, 
mailboxSession)))
-            .collect(Guavate.toImmutableList());
-    }
-
-    @Override
-    public void delete(MessageId messageId, List<MailboxId> mailboxIds, 
MailboxSession mailboxSession) throws MailboxException {
-        for (MailboxId mailboxId: mailboxIds) {
-            Optional<MessageResult> maybeMessage = 
findMessageWithId(mailboxId, messageId, FetchGroupImpl.MINIMAL, mailboxSession);
-            if (maybeMessage.isPresent()) {
-                MessageRange range = maybeMessage.get().getUid().toRange();
-                MessageManager messageManager = 
mailboxManager.getMailbox(mailboxId, mailboxSession);
-                messageManager.setFlags(new Flags(Flags.Flag.DELETED), 
FlagsUpdateMode.ADD, range, mailboxSession);
-                messageManager.expunge(range, mailboxSession);
-            }
-        }
-    }
-
-    @Override
-    public void setInMailboxes(MessageId messageId, List<MailboxId> 
mailboxIds, MailboxSession mailboxSession) throws MailboxException {
-        List<MessageResult> messages = 
getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, 
mailboxSession);
-
-        filterOnMailboxSession(mailboxIds, mailboxSession);
-
-        if (!messages.isEmpty()) {
-            ImmutableSet<MailboxId> currentMailboxes = messages.stream()
-                .map(MessageResult::getMailboxId)
-                .collect(Guavate.toImmutableSet());
-
-            HashSet<MailboxId> targetMailboxes = Sets.newHashSet(mailboxIds);
-            List<MailboxId> mailboxesToRemove = 
ImmutableList.copyOf(Sets.difference(currentMailboxes, targetMailboxes));
-            SetView<MailboxId> mailboxesToAdd = 
Sets.difference(targetMailboxes, currentMailboxes);
-
-            MessageResult referenceMessage = Iterables.getLast(messages);
-            for (MailboxId mailboxId: mailboxesToAdd) {
-                MessageRange messageRange = 
referenceMessage.getUid().toRange();
-                mailboxManager.copyMessages(messageRange, 
referenceMessage.getMailboxId(), mailboxId, mailboxSession);
-                mailboxManager.getMailbox(mailboxId, mailboxSession)
-                    .setFlags(referenceMessage.getFlags(), 
FlagsUpdateMode.REPLACE, messageRange, mailboxSession);
-            }
-
-            for (MessageResult message: messages) {
-                delete(message.getMessageId(), mailboxesToRemove, 
mailboxSession);
-            }
-        }
-    }
-
-    private List<MailboxId> getUsersMailboxIds(MailboxSession mailboxSession) 
throws MailboxException {
-        return mailboxManager.search(userMailboxes(mailboxSession), 
mailboxSession)
-            .stream()
-            .map(MailboxMetaData::getId)
-            .collect(Guavate.toImmutableList());
-    }
-
-    private MailboxQuery userMailboxes(MailboxSession mailboxSession) {
-        return MailboxQuery.privateMailboxesBuilder(mailboxSession)
-                .matchesAllMailboxNames()
-                .build();
-    }
-
-    private Stream<MessageResult> retrieveMailboxMessages(MailboxId mailboxId, 
Collection<MessageId> messages, FetchGroup fetchGroup, MailboxSession 
mailboxSession) {
-        return messages.stream()
-            .map(Throwing.function(messageId -> findMessageWithId(mailboxId, 
messageId, fetchGroup, mailboxSession)))
-            .flatMap(OptionalUtils::toStream);
-    }
-
-    private void filterOnMailboxSession(List<MailboxId> mailboxIds, 
MailboxSession mailboxSession) throws MailboxNotFoundException {
-        Optional<MailboxId> mailboxForbidden = mailboxIds.stream()
-            .filter(findMailboxBelongsToAnotherSession(mailboxSession))
-            .findAny();
-
-        if (mailboxForbidden.isPresent()) {
-            LOGGER.info("Mailbox with Id " + mailboxForbidden.get() + " does 
not belong to " + mailboxSession.getUser().getUserName());
-            throw new MailboxNotFoundException(mailboxForbidden.get());
-        }
-    }
-
-    private Predicate<MailboxId> 
findMailboxBelongsToAnotherSession(MailboxSession mailboxSession) {
-        return input -> {
-            try {
-                MailboxPath currentMailbox = mailboxManager.getMailbox(input, 
mailboxSession).getMailboxPath();
-                return 
!mailboxSession.getUser().isSameUser(currentMailbox.getUser());
-            } catch (MailboxException e) {
-                return true;
-            }
-        };
-    }
-
-    private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, 
MessageId messageId, FetchGroup fetchGroup, MailboxSession mailboxSession) 
throws MailboxException {
-        return retrieveAllMessages(mailboxId, fetchGroup, mailboxSession)
-            .stream()
-            .filter(filterByMessageId(messageId))
-            .findFirst();
-    }
-
-    private Predicate<MessageResult> filterByMessageId(MessageId messageId) {
-        return messageResult -> messageResult.getMessageId().equals(messageId);
-    }
-
-    private ImmutableList<MessageResult> retrieveAllMessages(MailboxId 
mailboxId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws 
MailboxException {
-        MessageManager messageManager = mailboxManager.getMailbox(mailboxId, 
mailboxSession);
-        return 
ImmutableList.copyOf(messageManager.getMessages(MessageRange.all(), fetchGroup, 
mailboxSession));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
index 0a63c02..75ceb4c 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailbox.inmemory;
 
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.AbstractCombinationManagerTest;
 import org.apache.james.mailbox.store.CombinationManagerTestSystem;
 import org.junit.Before;
@@ -30,7 +31,7 @@ public class InMemoryCombinationManagerTest extends 
AbstractCombinationManagerTe
     }
     
     @Override
-    public CombinationManagerTestSystem createTestingData() {
+    public CombinationManagerTestSystem createTestingData() throws 
MailboxException {
         return MessageIdManagerTestSystemProvider.createManagersTestingData();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
index b9aa92b..d9d6ddf 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailbox.inmemory;
 
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.AbstractMessageIdManagerStorageTest;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
 import org.junit.Before;
@@ -30,7 +31,7 @@ public class InMemoryMessageIdManagerStorageTest extends 
AbstractMessageIdManage
     }
     
     @Override
-    protected MessageIdManagerTestSystem createTestingData() {
+    protected MessageIdManagerTestSystem createTestingData() throws 
MailboxException {
         return MessageIdManagerTestSystemProvider.createTestingData();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
index dd0e66b..01073e8 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
@@ -26,16 +26,19 @@ import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.search.MailboxQuery;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
+import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 
@@ -44,6 +47,14 @@ import com.google.common.base.Throwables;
 
 public class InMemoryMessageIdManagerTestSystem extends 
MessageIdManagerTestSystem {
 
+    public static InMemoryMessageIdManagerTestSystem create() throws 
MailboxException {
+        InMemoryIntegrationResources inMemoryIntegrationResources = new 
InMemoryIntegrationResources();
+        StoreMailboxManager mailboxManager = 
inMemoryIntegrationResources.createMailboxManager(new 
SimpleGroupMembershipResolver());
+        return new InMemoryMessageIdManagerTestSystem(
+            
inMemoryIntegrationResources.createMessageIdManager(mailboxManager),
+            mailboxManager);
+    }
+
     private static final MessageId FIRST_MESSAGE_ID = InMemoryMessageId.of(1);
     private static final long ONE_HUNDRED = 100;
     private static final int UID_VALIDITY = 1024;
@@ -52,8 +63,8 @@ public class InMemoryMessageIdManagerTestSystem extends 
MessageIdManagerTestSyst
     private final MailboxManager mailboxManager;
     private Optional<MessageId> lastMessageIdUsed;
 
-    public InMemoryMessageIdManagerTestSystem(MailboxManager mailboxManager) {
-        super(new InMemoryMessageIdManager(mailboxManager));
+    private InMemoryMessageIdManagerTestSystem(MessageIdManager 
messageIdManager, MailboxManager mailboxManager) {
+        super(messageIdManager);
         this.mailboxManager = mailboxManager;
         this.lastMessageIdUsed = Optional.empty();
     }
@@ -95,18 +106,6 @@ public class InMemoryMessageIdManagerTestSystem extends 
MessageIdManagerTestSyst
         }
     }
 
-
-    @Override
-    public void addRights(MailboxId mailboxId, MailboxACL.Rfc4314Rights 
rights, String targetUser, MailboxSession session) throws MailboxException {
-        MessageManager mailbox = mailboxManager.getMailbox(mailboxId, session);
-        mailboxManager.applyRightsCommand(mailbox.getMailboxPath(),
-            MailboxACL.command()
-                .rights(rights)
-                .forUser(targetUser)
-                .asAddition(),
-            session);
-    }
-
     private Optional<MailboxMetaData> retrieveMailbox(MailboxId mailboxId, 
MailboxSession mailboxSession) throws MailboxException {
         MailboxQuery userMailboxesQuery = 
MailboxQuery.privateMailboxesBuilder(mailboxSession)
             .matchesAllMailboxNames()

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
index e2ffe1f..b4123bc 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java
@@ -18,56 +18,25 @@
  ****************************************************************/
 package org.apache.james.mailbox.inmemory;
 
-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;
-import org.apache.james.mailbox.fixture.MailboxFixture;
-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.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.store.CombinationManagerTestSystem;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
-import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-
-import com.google.common.base.Throwables;
+import org.apache.james.mailbox.store.StoreMailboxManager;
 
 public class MessageIdManagerTestSystemProvider {
 
-    private static final int LIMIT_ANNOTATIONS = 3;
-    private static final int LIMIT_ANNOTATION_SIZE = 30;
-
-    private static final String PASSWORD = "password";
-
-    public static MessageIdManagerTestSystem createTestingData() {
-        return new InMemoryMessageIdManagerTestSystem(createMailboxManager());
+    public static MessageIdManagerTestSystem createTestingData() throws 
MailboxException {
+        return InMemoryMessageIdManagerTestSystem.create();
     }
 
-    public static CombinationManagerTestSystem createManagersTestingData() {
-        InMemoryMailboxManager mailboxManager = createMailboxManager();
-        return new InMemoryCombinationManagerTestSystem(mailboxManager, new 
InMemoryMessageIdManager(mailboxManager));
-    }
+    public static CombinationManagerTestSystem createManagersTestingData() 
throws MailboxException {
+        InMemoryIntegrationResources inMemoryIntegrationResources = new 
InMemoryIntegrationResources();
+        StoreMailboxManager mailboxManager = 
inMemoryIntegrationResources.createMailboxManager(new 
SimpleGroupMembershipResolver());
 
-    private static InMemoryMailboxManager createMailboxManager() {
-        MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
-        GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
-        MessageParser messageParser = new MessageParser();
-
-        InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new 
InMemoryMailboxSessionMapperFactory();
-        MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
-        FakeAuthenticator authenticator = new FakeAuthenticator();
-        FakeAuthorizator authorizator = FakeAuthorizator.defaultReject();
-        authenticator.addUser(MailboxFixture.USER, PASSWORD);
-        authenticator.addUser(MailboxFixture.OTHER_USER, PASSWORD);
-        InMemoryMailboxManager mailboxManager = new 
InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator,
-                aclResolver, groupMembershipResolver, messageParser, 
messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
-
-        try {
-            mailboxManager.init();
-        } catch (MailboxException e) {
-            Throwables.propagate(e);
-        }
-        return mailboxManager;
+        return new InMemoryCombinationManagerTestSystem(mailboxManager,
+            
inMemoryIntegrationResources.createMessageIdManager(mailboxManager));
     }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java
index 3776033..a7e1d16 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java
@@ -18,56 +18,19 @@
  ****************************************************************/
 package org.apache.james.mailbox.inmemory;
 
-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;
-import org.apache.james.mailbox.fixture.MailboxFixture;
-import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.store.CombinationManagerTestSystem;
-import org.apache.james.mailbox.store.FakeAuthenticator;
-import org.apache.james.mailbox.store.FakeAuthorizator;
+import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.store.MessageManagerTestSystem;
-import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-
-import com.google.common.base.Throwables;
+import org.apache.james.mailbox.store.StoreMailboxManager;
 
 public class MessageManagerTestSystemProvider {
 
-    private static final int LIMIT_ANNOTATIONS = 3;
-    private static final int LIMIT_ANNOTATION_SIZE = 30;
-
-    private static final String PASSWORD = "password";
 
     public static MessageManagerTestSystem createTestSystem() throws 
MailboxException {
-        return new InMemoryMessageManagerTestSystem(createMailboxManager());
-    }
-
-    public static CombinationManagerTestSystem createManagersTestingData() {
-        InMemoryMailboxManager mailboxManager = createMailboxManager();
-        return new InMemoryCombinationManagerTestSystem(mailboxManager, new 
InMemoryMessageIdManager(mailboxManager));
-    }
-
-    private static InMemoryMailboxManager createMailboxManager() {
-        MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
-        GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
-        MessageParser messageParser = new MessageParser();
-
-        InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new 
InMemoryMailboxSessionMapperFactory();
-        MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
-        FakeAuthenticator authenticator = new FakeAuthenticator();
-        FakeAuthorizator authorizator = FakeAuthorizator.defaultReject();
-        authenticator.addUser(MailboxFixture.USER, PASSWORD);
-        authenticator.addUser(MailboxFixture.OTHER_USER, PASSWORD);
-        InMemoryMailboxManager mailboxManager = new 
InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator,
-                aclResolver, groupMembershipResolver, messageParser, 
messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
+        InMemoryIntegrationResources inMemoryIntegrationResources = new 
InMemoryIntegrationResources();
+        StoreMailboxManager mailboxManager = 
inMemoryIntegrationResources.createMailboxManager(new 
SimpleGroupMembershipResolver());
 
-        try {
-            mailboxManager.init();
-        } catch (MailboxException e) {
-            Throwables.propagate(e);
-        }
-        return mailboxManager;
+        return new InMemoryMessageManagerTestSystem(mailboxManager);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/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 73084e7..f8a8e56 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
@@ -19,7 +19,6 @@
 
 package org.apache.james.mailbox.inmemory.manager;
 
-import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
@@ -28,7 +27,6 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.inmemory.InMemoryMessageId;
-import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager;
 import org.apache.james.mailbox.inmemory.quota.InMemoryCurrentQuotaManager;
 import org.apache.james.mailbox.inmemory.quota.InMemoryPerUserMaxQuotaManager;
 import org.apache.james.mailbox.manager.IntegrationResources;
@@ -40,19 +38,20 @@ 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.StoreMailboxManager;
+import org.apache.james.mailbox.store.StoreMessageIdManager;
 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;
 import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
 import org.apache.james.mailbox.store.quota.StoreQuotaManager;
 
-public class InMemoryIntegrationResources implements IntegrationResources {
+public class InMemoryIntegrationResources implements 
IntegrationResources<StoreMailboxManager> {
 
     private SimpleGroupMembershipResolver groupMembershipResolver;
     private DefaultQuotaRootResolver quotaRootResolver;
 
     @Override
-    public MailboxManager createMailboxManager(GroupMembershipResolver 
groupMembershipResolver) throws MailboxException {
+    public StoreMailboxManager createMailboxManager(GroupMembershipResolver 
groupMembershipResolver) throws MailboxException {
         FakeAuthenticator fakeAuthenticator = new FakeAuthenticator();
         fakeAuthenticator.addUser(ManagerTestResources.USER, 
ManagerTestResources.USER_PASS);
         fakeAuthenticator.addUser(ManagerTestResources.OTHER_USER, 
ManagerTestResources.OTHER_USER_PASS);
@@ -71,24 +70,29 @@ public class InMemoryIntegrationResources implements 
IntegrationResources {
     }
 
     @Override
-    public MessageIdManager createMessageIdManager(MailboxManager 
mailboxManager) {
-        return new InMemoryMessageIdManager(mailboxManager);
+    public MessageIdManager createMessageIdManager(StoreMailboxManager 
mailboxManager) {
+        return new StoreMessageIdManager(
+            mailboxManager.getMapperFactory(),
+            mailboxManager.getEventDispatcher(),
+            new InMemoryMessageId.Factory(),
+            mailboxManager.getQuotaManager(),
+            mailboxManager.getQuotaRootResolver());
     }
     
     @Override
-    public QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, 
MailboxManager mailboxManager) throws Exception {
+    public QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, 
StoreMailboxManager mailboxManager) throws Exception {
 
         QuotaRootResolver quotaRootResolver =  
createQuotaRootResolver(mailboxManager);
 
         InMemoryCurrentQuotaManager currentQuotaManager = new 
InMemoryCurrentQuotaManager(
-            new 
CurrentQuotaCalculator(((StoreMailboxManager)mailboxManager).getMapperFactory(),
 quotaRootResolver),
+            new CurrentQuotaCalculator(mailboxManager.getMapperFactory(), 
quotaRootResolver),
             mailboxManager
         );
 
         ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new 
ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver);
         StoreQuotaManager quotaManager = new 
StoreQuotaManager(currentQuotaManager, maxQuotaManager);
         quotaManager.setCalculateWhenUnlimited(false);
-        ((StoreMailboxManager) mailboxManager).setQuotaManager(quotaManager);
+        mailboxManager.setQuotaManager(quotaManager);
         mailboxManager.addGlobalListener(listeningCurrentQuotaUpdater, null);
         return quotaManager;
     }
@@ -105,9 +109,9 @@ public class InMemoryIntegrationResources implements 
IntegrationResources {
     }
 
     @Override
-    public DefaultQuotaRootResolver createQuotaRootResolver(MailboxManager 
mailboxManager) throws Exception {
+    public DefaultQuotaRootResolver 
createQuotaRootResolver(StoreMailboxManager mailboxManager) throws Exception {
         if (quotaRootResolver == null) {
-            quotaRootResolver = new 
DefaultQuotaRootResolver(((StoreMailboxManager) 
mailboxManager).getMapperFactory());
+            quotaRootResolver = new 
DefaultQuotaRootResolver(mailboxManager.getMapperFactory());
         }
         return quotaRootResolver;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/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 8cba950..358119c 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
@@ -25,12 +25,16 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.inmemory.InMemoryMessageId;
-import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager;
 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.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.StoreMessageIdManager;
+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;
+import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.NoQuotaManager;
 import org.junit.Ignore;
 
 public class SimpleMessageSearchIndexTest extends 
AbstractMessageSearchIndexTest {
@@ -43,6 +47,7 @@ public class SimpleMessageSearchIndexTest extends 
AbstractMessageSearchIndexTest
     protected void initializeMailboxManager() throws Exception {
         MailboxSessionMapperFactory mapperFactory = new 
InMemoryMailboxSessionMapperFactory();
         messageSearchIndex = new SimpleMessageSearchIndex(mapperFactory, 
mapperFactory, new PDFTextExtractor());
+        InMemoryMessageId.Factory messageIdFactory = new 
InMemoryMessageId.Factory();
         storeMailboxManager = new InMemoryMailboxManager(
             mapperFactory,
             new FakeAuthenticator(),
@@ -51,8 +56,17 @@ public class SimpleMessageSearchIndexTest extends 
AbstractMessageSearchIndexTest
             new UnionMailboxACLResolver(),
             new SimpleGroupMembershipResolver(),
             new MessageParser(),
-            new InMemoryMessageId.Factory());
-        messageIdManager = new InMemoryMessageIdManager(storeMailboxManager);
+            messageIdFactory);
+        DefaultDelegatingMailboxListener delegatingListener = new 
DefaultDelegatingMailboxListener();
+        MailboxEventDispatcher mailboxEventDispatcher = new 
MailboxEventDispatcher(new DefaultDelegatingMailboxListener());
+        storeMailboxManager.setDelegatingMailboxListener(delegatingListener);
+
+        messageIdManager = new StoreMessageIdManager(
+            storeMailboxManager.getMapperFactory(),
+            mailboxEventDispatcher,
+            messageIdFactory,
+            new NoQuotaManager(),
+            new DefaultQuotaRootResolver(mapperFactory));
         storeMailboxManager.setMessageSearchIndex(messageSearchIndex);
         storeMailboxManager.init();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
 
b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
index a786be9..301190c 100644
--- 
a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
+++ 
b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
@@ -39,7 +39,6 @@ import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.inmemory.InMemoryMessageId;
-import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager;
 import org.apache.james.mailbox.inmemory.JsoupTextExtractor;
 import org.apache.james.mailbox.inmemory.mail.InMemoryModSeqProvider;
 import org.apache.james.mailbox.inmemory.mail.InMemoryUidProvider;
@@ -53,6 +52,7 @@ import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.StoreAttachmentManager;
 import org.apache.james.mailbox.store.StoreBlobManager;
+import org.apache.james.mailbox.store.StoreMessageIdManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
@@ -98,7 +98,7 @@ public class MemoryMailboxModule extends AbstractModule {
         bind(Authenticator.class).to(UserRepositoryAuthenticator.class);
         bind(Authorizator.class).to(UserRepositoryAuthorizator.class);
         bind(MailboxManager.class).to(InMemoryMailboxManager.class);
-        bind(MessageIdManager.class).to(InMemoryMessageIdManager.class);
+        bind(MessageIdManager.class).to(StoreMessageIdManager.class);
         bind(MailboxACLResolver.class).to(UnionMailboxACLResolver.class);
         
bind(GroupMembershipResolver.class).to(SimpleGroupMembershipResolver.class);
         bind(AttachmentManager.class).to(StoreAttachmentManager.class);
@@ -118,7 +118,7 @@ public class MemoryMailboxModule extends AbstractModule {
         bind(UnionMailboxACLResolver.class).in(Scopes.SINGLETON);
         bind(SimpleGroupMembershipResolver.class).in(Scopes.SINGLETON);
         bind(InMemoryMessageId.Factory.class).in(Scopes.SINGLETON);
-        bind(InMemoryMessageIdManager.class).in(Scopes.SINGLETON);
+        bind(StoreMessageIdManager.class).in(Scopes.SINGLETON);
         bind(MailboxEventDispatcher.class).in(Scopes.SINGLETON);
         bind(StoreAttachmentManager.class).in(Scopes.SINGLETON);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
index 36e4348..e79878b 100644
--- 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
+++ 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
@@ -48,13 +48,11 @@ import org.apache.james.jmap.utils.HtmlTextExtractor;
 import org.apache.james.jmap.utils.JsoupHtmlTextExtractor;
 import org.apache.james.mailbox.BlobManager;
 import org.apache.james.mailbox.FlagsBuilder;
-import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.BlobId;
@@ -62,6 +60,7 @@ import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.metrics.logger.DefaultMetricFactory;
 import org.apache.james.util.mime.MessageContentExtractor;
 import org.assertj.core.api.Condition;
@@ -119,7 +118,7 @@ public class GetMessagesMethodTest {
     
     private static final User ROBERT = new User("robert", "secret");
 
-    private MailboxManager mailboxManager;
+    private StoreMailboxManager mailboxManager;
     private GetMessagesMethod testee;
 
     private MailboxSession session;
@@ -453,7 +452,7 @@ public class GetMessagesMethodTest {
             + "HEADer2: Header2Content\r\n"
             + "Subject: message 1 subject\r\n\r\nmy 
message").getBytes(Charsets.UTF_8));
         ComposedMessageId message1 = inbox.appendMessage(message1Content, now, 
session, false, null);
-        MessageIdManager messageIdManager = new 
InMemoryMessageIdManager(mailboxManager);
+
         MailboxId customMailboxId = 
mailboxManager.getMailbox(customMailboxPath, session).getId();
         messageIdManager.setInMailboxes(message1.getMessageId(),
             ImmutableList.of(message1.getMailboxId(), customMailboxId),

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
index ffaad17..7e5bff9 100644
--- 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
+++ 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
@@ -35,7 +35,6 @@ import javax.mail.Flags;
 import org.apache.james.jmap.DefaultMailboxes;
 import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException;
 import org.apache.james.jmap.utils.SystemMailboxesProviderImpl;
-import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager;
@@ -51,6 +50,7 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MessageResultIterator;
+import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.queue.api.MailQueue;
 import org.apache.james.queue.api.MailQueue.MailQueueItem;
 import org.apache.mailet.Mail;
@@ -68,7 +68,7 @@ public class PostDequeueDecoratorTest {
     private static final MailboxPath OUTBOX_MAILBOX_PATH = 
MailboxPath.forUser(USERNAME, OUTBOX);
     private static final MailboxPath SENT_MAILBOX_PATH = 
MailboxPath.forUser(USERNAME, SENT);
     
-    private MailboxManager mailboxManager;
+    private StoreMailboxManager mailboxManager;
     private MailQueueItem mockedMailQueueItem;
     private Mail mail;
     private PostDequeueDecorator testee;

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/server/protocols/webadmin/webadmin-mailbox/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/pom.xml 
b/server/protocols/webadmin/webadmin-mailbox/pom.xml
index 96d5eee..6c543f8 100644
--- a/server/protocols/webadmin/webadmin-mailbox/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailbox/pom.xml
@@ -50,6 +50,12 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>apache-james-mailbox-memory</artifactId>
+            <scope>test</scope>
+            <type>test-jar</type>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>james-server-data-api</artifactId>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
 
b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index 943a159..1119083 100644
--- 
a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ 
b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -38,23 +38,16 @@ import java.util.Map;
 
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
-import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxExistsException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.inmemory.InMemoryId;
-import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
-import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
+import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.search.MailboxQuery;
-import org.apache.james.mailbox.store.FakeAuthorizator;
-import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.SimpleMailboxMetaData;
-import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
-import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.metrics.logger.DefaultMetricFactory;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.webadmin.WebAdminServer;
@@ -111,18 +104,9 @@ public class UserMailboxesRoutesTest {
 
         @Before
         public void setUp() throws Exception {
-            MessageId.Factory messageIdFactory = new 
DefaultMessageId.Factory();
-            InMemoryMailboxManager mailboxManager = new 
InMemoryMailboxManager(new InMemoryMailboxSessionMapperFactory(),
-                (userid, passwd) -> true,
-                FakeAuthorizator.defaultReject(),
-                new JVMMailboxPathLocker(),
-                new UnionMailboxACLResolver(),
-                new SimpleGroupMembershipResolver(),
-                new MessageParser(),
-                messageIdFactory);
-            mailboxManager.init();
+            InMemoryIntegrationResources inMemoryIntegrationResources = new 
InMemoryIntegrationResources();
 
-            createServer(mailboxManager);
+            createServer(inMemoryIntegrationResources.createMailboxManager(new 
SimpleGroupMembershipResolver()));
         }
 
         @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to