Repository: james-project
Updated Branches:
  refs/heads/master 27f1e48d4 -> 36b0ef6e8


JAMES-1888: MessageIdManager, persist and delete must be attached to 
MailboxSession


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

Branch: refs/heads/master
Commit: 36b0ef6e89e3eea5941322450ebff623e4028c19
Parents: 81832ae
Author: Quynh Nguyen <qngu...@linagora.com>
Authored: Tue Dec 20 17:16:47 2016 +0700
Committer: Quynh Nguyen <qngu...@linagora.com>
Committed: Wed Dec 21 09:08:18 2016 +0700

----------------------------------------------------------------------
 .../mailbox/manager/MailboxManagerFixture.java  |  34 +++++
 .../CassandraMessageIdManagerTestSystem.java    |  33 ++---
 .../inmemory/InMemoryMessageIdManager.java      |  21 +--
 .../InMemoryMessageIdManagerTestSystem.java     |  31 +++--
 .../MessageIdManagerTestSystemProvider.java     |  44 +-----
 .../mailbox/store/StoreMessageIdManager.java    |   9 +-
 .../mailbox/store/StoreMessageManager.java      |   4 +-
 .../AbstractMessageIdManagerSideEffectTest.java |  35 ++---
 .../AbstractMessageIdManagerStorageTest.java    | 136 ++++++++-----------
 .../store/MessageIdManagerTestSystem.java       |  35 +----
 .../StoreMessageIdManagerSideEffectTest.java    |   4 -
 .../store/StoreMessageIdManagerTestSystem.java  |  19 ++-
 .../store/TestMailboxSessionMapperFactory.java  |  26 +++-
 .../apache/mailet/base/MailAddressFixture.java  |   1 -
 14 files changed, 202 insertions(+), 230 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/api/src/test/java/org/apache/james/mailbox/manager/MailboxManagerFixture.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/MailboxManagerFixture.java
 
b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/MailboxManagerFixture.java
new file mode 100644
index 0000000..516e578
--- /dev/null
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/MailboxManagerFixture.java
@@ -0,0 +1,34 @@
+/****************************************************************
+ * 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.manager;
+
+import org.apache.james.mailbox.model.MailboxPath;
+
+public class MailboxManagerFixture {
+    public static final String PRIVATE_NAMESPACE = "#private";
+
+    public static final String USER = "user";
+    public static final String OTHER_USER = "otheruser";
+
+    public static final MailboxPath MAILBOX_PATH1 = new 
MailboxPath(PRIVATE_NAMESPACE, USER, "INBOX");
+    public static final MailboxPath MAILBOX_PATH2 = new 
MailboxPath(PRIVATE_NAMESPACE, USER, "OUTBOX");
+    public static final MailboxPath MAILBOX_PATH3 = new 
MailboxPath(PRIVATE_NAMESPACE, USER, "SENT");
+    public static final MailboxPath MAILBOX_PATH4 = new 
MailboxPath(PRIVATE_NAMESPACE, OTHER_USER, "INBOX");
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
index fcbdca3..b5faa01 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
@@ -44,7 +44,7 @@ import 
org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
-import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
@@ -54,12 +54,10 @@ import 
org.apache.james.mailbox.store.MessageIdManagerTestSystem;
 import org.apache.james.mailbox.store.NoMailboxPathLocker;
 import org.apache.james.mailbox.store.StoreMessageIdManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
-import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 
@@ -101,39 +99,32 @@ public class CassandraMessageIdManagerTestSystem extends 
MessageIdManagerTestSys
             new CassandraMessageId.Factory(),
             quotaManager,
             new DefaultQuotaRootResolver(mapperFactory));
-        SimpleMailbox mailbox1 = new SimpleMailbox(new MailboxPath("#private", 
"user", "INBOX"), UID_VALIDITY, CassandraId.timeBased());
-        SimpleMailbox mailbox2 = new SimpleMailbox(new MailboxPath("#private", 
"user", "OUTBOX"), UID_VALIDITY, CassandraId.timeBased());
-        SimpleMailbox mailbox3 = new SimpleMailbox(new MailboxPath("#private", 
"user", "SENT"), UID_VALIDITY, CassandraId.timeBased());
-        SimpleMailbox mailbox4 = new SimpleMailbox(new MailboxPath("#public", 
"otheruser", "INBOX"), UID_VALIDITY, CassandraId.timeBased());
-        MockMailboxSession mailboxSession = new MockMailboxSession("user");
-        MailboxMapper mailboxMapper = 
mapperFactory.getMailboxMapper(mailboxSession);
-        mailboxMapper.save(mailbox1);
-        mailboxMapper.save(mailbox2);
-        mailboxMapper.save(mailbox3);
-        mailboxMapper.save(mailbox4);
 
         CassandraMailboxManager cassandraMailboxManager = new 
CassandraMailboxManager(mapperFactory, mock(Authenticator.class), new 
NoMailboxPathLocker(), new MessageParser(), messageIdFactory);
         cassandraMailboxManager.init();
 
-        return new CassandraMessageIdManagerTestSystem(messageIdManager, 
mailboxSession, mailbox1, mailbox2, mailbox3, mailbox4,
-            messageIdFactory, mapperFactory, mailboxSession, 
cassandraMailboxManager);
+        return new CassandraMessageIdManagerTestSystem(messageIdManager, 
messageIdFactory, mapperFactory, cassandraMailboxManager);
     }
 
     private final CassandraMessageId.Factory messageIdFactory;
     private final CassandraMailboxSessionMapperFactory mapperFactory;
-    private final MailboxSession mailboxSession;
     private final CassandraMailboxManager cassandraMailboxManager;
 
-    public CassandraMessageIdManagerTestSystem(MessageIdManager 
messageIdManager, MailboxSession session, Mailbox mailbox1, Mailbox mailbox2, 
Mailbox mailbox3, Mailbox mailbox4, CassandraMessageId.Factory 
messageIdFactory, CassandraMailboxSessionMapperFactory mapperFactory, 
MailboxSession mailboxSession, CassandraMailboxManager cassandraMailboxManager) 
{
-        super(messageIdManager, session, mailbox1, mailbox2, mailbox3, 
mailbox4);
+    public CassandraMessageIdManagerTestSystem(MessageIdManager 
messageIdManager, CassandraMessageId.Factory messageIdFactory, 
CassandraMailboxSessionMapperFactory mapperFactory, CassandraMailboxManager 
cassandraMailboxManager) {
+        super(messageIdManager);
         this.messageIdFactory = messageIdFactory;
         this.mapperFactory = mapperFactory;
-        this.mailboxSession = mailboxSession;
         this.cassandraMailboxManager = cassandraMailboxManager;
     }
 
     @Override
-    public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags) 
{
+    public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession 
session) throws MailboxException {
+        cassandraMailboxManager.createMailbox(mailboxPath, session);
+        return 
mapperFactory.getMailboxMapper(session).findMailboxByPath(mailboxPath);
+    }
+
+    @Override
+    public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, 
MailboxSession mailboxSession) {
         try {
             CassandraMessageId messageId = messageIdFactory.generate();
             Mailbox mailbox = 
mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
@@ -150,7 +141,7 @@ public class CassandraMessageIdManagerTestSystem extends 
MessageIdManagerTestSys
     }
 
     @Override
-    public void deleteMailbox(MailboxId mailboxId) {
+    public void deleteMailbox(MailboxId mailboxId, MailboxSession 
mailboxSession) {
         try {
             Mailbox mailbox = 
mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
             cassandraMailboxManager.deleteMailbox(new 
MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName()), 
mailboxSession);

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/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
index b10b599..4d40e1b 100644
--- 
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
@@ -27,7 +27,6 @@ import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MailboxSession.SessionType;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
@@ -202,18 +201,22 @@ public class InMemoryMessageIdManager implements 
MessageIdManager {
         });
     }
 
-    private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, 
final MessageId messageId, FetchGroup fetchGroup, MailboxSession 
mailboxSession) throws MailboxException {
+    private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, 
MessageId messageId, FetchGroup fetchGroup, MailboxSession mailboxSession) 
throws MailboxException {
         return FluentIterable.from(retrieveAllMessages(mailboxId, fetchGroup, 
mailboxSession))
-            .filter(new Predicate<MessageResult>() {
-
-                @Override
-                public boolean apply(MessageResult messageResult) {
-                    return messageResult.getMessageId().equals(messageId);
-                }
-            })
+            .filter(filterByMessageId(messageId))
             .first();
     }
 
+    private Predicate<MessageResult> filterByMessageId(final MessageId 
messageId) {
+        return new Predicate<MessageResult>() {
+
+            @Override
+            public boolean apply(MessageResult messageResult) {
+                return 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/36b0ef6e/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 466d698..649f6cb 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
@@ -30,10 +30,12 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 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.MailboxQuery;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
@@ -44,24 +46,29 @@ public class InMemoryMessageIdManagerTestSystem extends 
MessageIdManagerTestSyst
 
     private static final MessageId FIRST_MESSAGE_ID = InMemoryMessageId.of(1);
     private static final long ONE_HUNDRED = 100;
+    private static final int UID_VALIDITY = 1024;
 
     private final MailboxManager mailboxManager;
-    private final MailboxSession mailboxSession;
     private Optional<MessageId> lastMessageIdUsed;
 
-    public InMemoryMessageIdManagerTestSystem(MailboxManager mailboxManager, 
MailboxSession mailboxSession, 
-            Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox 
mailbox4) {
-        super(new InMemoryMessageIdManager(mailboxManager), mailboxSession, 
mailbox1, mailbox2, mailbox3, mailbox4);
+    public InMemoryMessageIdManagerTestSystem(MailboxManager mailboxManager) {
+        super(new InMemoryMessageIdManager(mailboxManager));
         this.mailboxManager = mailboxManager;
-        this.mailboxSession = mailboxSession;
         this.lastMessageIdUsed = Optional.absent();
     }
 
     @Override
-    public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags) 
{
+    public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession 
mailboxSession) throws MailboxException {
+        mailboxManager.createMailbox(mailboxPath, mailboxSession);
+        MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, 
mailboxSession);
+        return new SimpleMailbox(mailboxPath, UID_VALIDITY, 
messageManager.getId());
+    }
+
+    @Override
+    public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, 
MailboxSession session) {
         try {
-            MessageManager messageManager = 
mailboxManager.getMailbox(mailboxId, mailboxSession);
-            MessageId messageId = messageManager.appendMessage(new 
ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), 
mailboxSession, false, flags)
+            MessageManager messageManager = 
mailboxManager.getMailbox(mailboxId, session);
+            MessageId messageId = messageManager.appendMessage(new 
ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), 
session, false, flags)
                     .getMessageId();
             lastMessageIdUsed = Optional.of(messageId);
             return messageId;
@@ -76,18 +83,18 @@ public class InMemoryMessageIdManagerTestSystem extends 
MessageIdManagerTestSyst
     }
 
     @Override
-    public void deleteMailbox(final MailboxId mailboxId) {
+    public void deleteMailbox(final MailboxId mailboxId, MailboxSession 
session) {
         try {
-            Optional<MailboxMetaData> mailbox = retrieveMailbox(mailboxId);
+            Optional<MailboxMetaData> mailbox = retrieveMailbox(mailboxId, 
session);
             if (mailbox.isPresent()) {
-                mailboxManager.deleteMailbox(mailbox.get().getPath(), 
mailboxSession);
+                mailboxManager.deleteMailbox(mailbox.get().getPath(), session);
             }
         } catch (MailboxException e) {
             Throwables.propagate(e);
         }
     }
 
-    private Optional<MailboxMetaData> retrieveMailbox(final MailboxId 
mailboxId) throws MailboxException {
+    private Optional<MailboxMetaData> retrieveMailbox(final MailboxId 
mailboxId, MailboxSession mailboxSession) throws MailboxException {
         MailboxQuery userMailboxesQuery = 
MailboxQuery.builder(mailboxSession).expression("*").build();
         return FluentIterable.from(mailboxManager.search(userMailboxesQuery, 
mailboxSession))
             .filter(new Predicate<MailboxMetaData>() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/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 206c0d3..35736fe 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,22 +18,16 @@
  ****************************************************************/
 package org.apache.james.mailbox.inmemory;
 
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageManager;
 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.BadCredentialsException;
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.manager.MailboxManagerFixture;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.FakeAuthenticator;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Throwables;
 
@@ -41,39 +35,11 @@ public class MessageIdManagerTestSystemProvider {
 
     private static final int LIMIT_ANNOTATIONS = 3;
     private static final int LIMIT_ANNOTATION_SIZE = 30;
-    private static final int UID_VALIDITY = 1024;
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(InMemoryMessageIdManagerStorageTest.class);
-    private static final String USER = "user";
-    private static final String OTHER_USER = "otheruser";
+
     private static final String PASSWORD = "password";
 
     public static MessageIdManagerTestSystem createTestingData() {
-        InMemoryMailboxManager mailboxManager = createMailboxManager();
-
-        MailboxSession mailboxSession = createMailboxSession(mailboxManager);
-        MailboxPath mailboxPath = new MailboxPath("#private", USER, "INBOX");
-        SimpleMailbox mailbox1 = createMailbox(mailboxManager, mailboxPath, 
mailboxSession);
-        MailboxPath mailboxPath2 = new MailboxPath("#private", USER, 
"mailbox2");
-        SimpleMailbox mailbox2 = createMailbox(mailboxManager, mailboxPath2, 
mailboxSession);
-        MailboxPath mailboxPath3 = new MailboxPath("#private", USER, 
"mailbox3");
-        SimpleMailbox mailbox3 = createMailbox(mailboxManager, mailboxPath3, 
mailboxSession);
-        MailboxPath mailboxPath4 = new MailboxPath("#public", OTHER_USER, 
"mailbox4");
-        SimpleMailbox mailbox4 = createMailbox(mailboxManager, mailboxPath4, 
mailboxSession);
-        return new InMemoryMessageIdManagerTestSystem(mailboxManager, 
mailboxSession, mailbox1, mailbox2, mailbox3, mailbox4);
-    }
-
-    private static MailboxSession createMailboxSession(InMemoryMailboxManager 
mailboxManager) {
-        return mailboxManager.createSystemSession(USER, LOGGER);
-    }
-
-    private static SimpleMailbox createMailbox(InMemoryMailboxManager 
mailboxManager, MailboxPath mailboxPath, MailboxSession mailboxSession) {
-        try {
-            mailboxManager.createMailbox(mailboxPath, mailboxSession);
-            MessageManager messageManager = 
mailboxManager.getMailbox(mailboxPath, mailboxSession);
-            return new SimpleMailbox(mailboxPath, UID_VALIDITY, 
messageManager.getId());
-        } catch (MailboxException e) {
-            throw Throwables.propagate(e);
-        }
+        return new InMemoryMessageIdManagerTestSystem(createMailboxManager());
     }
 
     private static InMemoryMailboxManager createMailboxManager() {
@@ -84,8 +50,8 @@ public class MessageIdManagerTestSystemProvider {
         InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new 
InMemoryMailboxSessionMapperFactory();
         MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
         FakeAuthenticator authenticator = new FakeAuthenticator();
-        authenticator.addUser(USER, PASSWORD);
-        authenticator.addUser(OTHER_USER, PASSWORD);
+        authenticator.addUser(MailboxManagerFixture.USER, PASSWORD);
+        authenticator.addUser(MailboxManagerFixture.OTHER_USER, PASSWORD);
         InMemoryMailboxManager mailboxManager = new 
InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator, 
                 aclResolver, groupMembershipResolver, messageParser, 
messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index fcbc10a..6f436a1 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -31,7 +31,6 @@ import javax.mail.Flags;
 import javax.mail.internet.SharedInputStream;
 
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MailboxSession.SessionType;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
@@ -274,12 +273,12 @@ public class StoreMessageIdManager implements 
MessageIdManager {
     }
 
     private void allowOnMailboxSession(List<MailboxId> mailboxIds, 
MailboxSession mailboxSession, MailboxMapper mailboxMapper) throws 
MailboxNotFoundException {
-        boolean isForbidden = FluentIterable.from(mailboxIds)
+        Optional<MailboxId> mailboxForbidden = FluentIterable.from(mailboxIds)
             .firstMatch(isMailboxOfOtherUser(mailboxSession, mailboxMapper))
-            .isPresent();
+            .or(Optional.<MailboxId>absent());
 
-        if (isForbidden) {
-            throw new MailboxNotFoundException("Mailbox does not belong to 
session: ");
+        if (mailboxForbidden.isPresent()) {
+            throw new MailboxNotFoundException("Mailbox with Id " + 
mailboxForbidden.get() + " does not belong to session");
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 452d877..4a394d3 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -41,7 +41,6 @@ import org.apache.commons.io.input.TeeInputStream;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MailboxSession.SessionType;
 import org.apache.james.mailbox.MailboxSession.User;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
@@ -456,8 +455,7 @@ public class StoreMessageManager implements 
org.apache.james.mailbox.MessageMana
      * @throws MailboxException
      */
     public boolean isWriteable(MailboxSession session) throws MailboxException 
{
-        return session.getType() == SessionType.System
-            || aclResolver.isReadWrite(myRights(session), 
getSharedPermanentFlags(session));
+        return aclResolver.isReadWrite(myRights(session), 
getSharedPermanentFlags(session));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 957d51d..ccf3aae 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -40,6 +40,7 @@ import 
org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.OverQuotaException;
+import org.apache.james.mailbox.manager.MailboxManagerFixture;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.FetchGroupImpl;
 import org.apache.james.mailbox.model.MailboxId;
@@ -63,7 +64,6 @@ import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 
 public abstract class AbstractMessageIdManagerSideEffectTest {
-
     private static final Quota OVER_QUOTA = QuotaImpl.quota(102, 100);
     private static final MessageUid messageUid1 = MessageUid.of(111);
 
@@ -91,9 +91,10 @@ public abstract class AbstractMessageIdManagerSideEffectTest 
{
         session = new MockMailboxSession("user");
         testingData = createTestSystem(quotaManager, dispatcher);
         messageIdManager = testingData.getMessageIdManager();
-        mailbox1 = testingData.getMailbox1();
-        mailbox2 = testingData.getMailbox2();
-        mailbox3 = testingData.getMailbox3();
+
+        mailbox1 = 
testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH1, session);
+        mailbox2 = 
testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH2, session);
+        mailbox3 = 
testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH3, session);
     }
 
     @After
@@ -104,7 +105,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     @Test
     public void deleteShouldCallEventDispatcher() throws Exception {
         givenUnlimitedQuota();
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         reset(dispatcher);
 
         MessageResult messageResult = 
messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session).get(0);
@@ -119,7 +120,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     @Test
     public void 
deleteShouldNotCallEventDispatcherWhenMessageIsInWrongMailbox() throws 
Exception {
         givenUnlimitedQuota();
-        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), 
messageUid1, FLAGS, session);
         reset(dispatcher);
 
         messageIdManager.delete(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -130,7 +131,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     @Test
     public void 
setInMailboxesShouldNotCallDispatcherWhenMessageAlreadyInMailbox() throws 
Exception {
         givenUnlimitedQuota();
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         reset(dispatcher);
 
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -141,7 +142,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     @Test
     public void setInMailboxesShouldCallDispatcher() throws Exception {
         givenUnlimitedQuota();
-        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), 
messageUid1, FLAGS, session);
         reset(dispatcher);
 
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
@@ -159,7 +160,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     @Test
     public void setInMailboxesShouldCallDispatcherWithMultipleMailboxes() 
throws Exception {
         givenUnlimitedQuota();
-        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), 
messageUid1, FLAGS, session);
         reset(dispatcher);
 
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId(), 
mailbox3.getMailboxId()), session);
@@ -183,7 +184,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
 
     @Test
     public void setInMailboxesShouldThrowExceptionWhenOverQuota() throws 
Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         reset(dispatcher);
         
when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(QuotaImpl.unlimited());
         
when(quotaManager.getMessageQuota(any(QuotaRoot.class))).thenReturn(OVER_QUOTA);
@@ -197,7 +198,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     @Test
     public void 
setInMailboxesShouldCallDispatchForOnlyAddedAndRemovedMailboxes() throws 
Exception {
         givenUnlimitedQuota();
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
         reset(dispatcher);
 
@@ -214,7 +215,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     public void setFlagsShouldNotDispatchWhenFlagAlreadySet() throws Exception 
{
         givenUnlimitedQuota();
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), 
messageUid1, newFlags);
+        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), 
messageUid1, newFlags, session);
         reset(dispatcher);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId, 
ImmutableList.of(mailbox2.getMailboxId()), session);
@@ -226,7 +227,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     public void setFlagsShouldNotDispatchWhenMessageAlreadyInMailbox() throws 
Exception {
         givenUnlimitedQuota();
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, newFlags);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, newFlags, session);
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox2.getMailboxId()), session);
         reset(dispatcher);
 
@@ -239,7 +240,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     public void setFlagsShouldNotDispatchWhenMessageDoesNotBelongToMailbox() 
throws Exception {
         givenUnlimitedQuota();
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         reset(dispatcher);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId, 
ImmutableList.of(mailbox2.getMailboxId()), session);
@@ -251,7 +252,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     public void setFlagsShouldNotDispatchWhenEmptyMailboxes() throws Exception 
{
         givenUnlimitedQuota();
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         reset(dispatcher);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.<MailboxId>of(), 
session);
@@ -263,7 +264,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     public void setFlagsShouldDispatchWhenMessageBelongsToAllMailboxes() 
throws Exception {
         givenUnlimitedQuota();
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
         reset(dispatcher);
 
@@ -276,7 +277,7 @@ public abstract class 
AbstractMessageIdManagerSideEffectTest {
     @Test
     public void setFlagsShouldDispatchWhenMessageBelongsToTheMailboxes() 
throws Exception {
         givenUnlimitedQuota();
-        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), 
messageUid1, FLAGS, session);
         reset(dispatcher);
 
         Flags newFlags = new Flags(Flags.Flag.SEEN);

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
index b8c8565..97d35fe 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
+import org.apache.james.mailbox.manager.MailboxManagerFixture;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.FetchGroupImpl;
 import org.apache.james.mailbox.model.MailboxId;
@@ -54,8 +55,8 @@ import com.google.common.collect.ImmutableMap;
 public abstract class AbstractMessageIdManagerStorageTest {
     public static final Flags FLAGS = new Flags();
 
-    private static final MailboxSession OTHER_USER = new 
MockMailboxSession("otheruser");
     private static final MailboxSession SYSTEM_USER = new 
MockMailboxSession("systemuser", SessionType.System);
+
     private static final MessageUid messageUid1 = MessageUid.of(111);
     private static final MessageUid messageUid2 = MessageUid.of(222);
 
@@ -93,6 +94,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     private Mailbox mailbox3;
     private Mailbox mailbox4;
     private MailboxSession session;
+    private MailboxSession otherSession;
 
     @Rule
     public ExpectedException expectedException = ExpectedException.none();
@@ -101,14 +103,15 @@ public abstract class AbstractMessageIdManagerStorageTest 
{
 
     @Before
     public void setUp() throws Exception {
+        session = new MockMailboxSession(MailboxManagerFixture.USER);
+        otherSession = new 
MockMailboxSession(MailboxManagerFixture.OTHER_USER);
         testingData = createTestingData();
         messageIdManager = testingData.getMessageIdManager();
-        mailbox1 = testingData.getMailbox1();
-        mailbox2 = testingData.getMailbox2();
-        mailbox3 = testingData.getMailbox3();
-        mailbox4 = testingData.getMailbox4();
 
-        session = new MockMailboxSession("user");
+        mailbox1 = 
testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH1, session);
+        mailbox2 = 
testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH2, session);
+        mailbox3 = 
testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH3, session);
+        mailbox4 = 
testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH4, otherSession);
     }
 
     @After
@@ -147,31 +150,23 @@ public abstract class AbstractMessageIdManagerStorageTest 
{
 
     @Test
     public void getMessagesShouldReturnStoredResults() throws Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session))
             .hasSize(1);
     }
 
     @Test
-    public void getMessageShouldReturnMessageBelongToUser() throws Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+    public void getMessageShouldReturnOnlyMessageBelongingToCurrentUser() 
throws Exception {
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session)).hasSize(1);
-        assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, OTHER_USER)).isEmpty();
-    }
-
-    @Test
-    public void getMessageShouldReturnAllWithSystemSession() throws Exception {
-        MessageId messageId = testingData.persist(mailbox4.getMailboxId(), 
messageUid1, FLAGS);
-
-        assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session)).isEmpty();;
-        assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, SYSTEM_USER)).hasSize(1);
+        assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, otherSession)).isEmpty();
     }
 
     @Test
     public void setInMailboxesShouldSetMessageInBothMailboxes() throws 
Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
 
@@ -181,7 +176,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
     @Test
     public void setInMailboxesShouldNotDuplicateMessageIfSameMailbox() throws 
Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), session);
 
@@ -191,8 +186,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
     @Test
     public void setInMailboxesShouldSetHighestUidInNewMailbox() throws 
Exception {
-        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
-        MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), 
messageUid2, FLAGS);
+        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
+        MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), 
messageUid2, FLAGS, session);
 
         messageIdManager.setInMailboxes(messageId2, 
ImmutableList.of(mailbox1.getMailboxId()), session);
 
@@ -211,8 +206,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
     @Test
     public void setInMailboxesShouldSetHighestModSeqInNewMailbox() throws 
Exception {
-        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
-        MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), 
messageUid2, FLAGS);
+        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
+        MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), 
messageUid2, FLAGS, session);
 
         messageIdManager.setInMailboxes(messageId2, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
 
@@ -231,7 +226,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
     @Test
     public void setInMailboxesShouldNotChangeUidAndModSeqInOriginalMailbox() 
throws Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         MessageResult messageResult1 = 
messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session).get(0);
         MessageUid messageUid1 = messageResult1.getUid();
         long modSeq1 = messageResult1.getModSeq();
@@ -252,7 +247,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
     @Test
     public void setInMailboxesShouldAddAndRemoveMailboxes() throws Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox3.getMailboxId()), session);
 
@@ -266,7 +261,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     @Test
     public void setInMailboxesShouldReplaceFlagsOfMessageInAddedMailboxes() 
throws Exception {
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
 
@@ -284,23 +279,23 @@ public abstract class AbstractMessageIdManagerStorageTest 
{
     public void 
setInMailboxesShouldThrowExceptionWhenSetInMailboxesInAnotherSession() throws 
Exception {
         expectedException.expect(MailboxNotFoundException.class);
 
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
-        messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), OTHER_USER);
+        messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), 
otherSession);
     }
 
     @Test
     public void 
setInMailboxesShouldThrowExceptionWhenOneMailboxDoesNotBelongToMailboxSession() 
throws Exception {
         expectedException.expect(MailboxNotFoundException.class);
 
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox4.getMailboxId()), session);
     }
 
     @Test
     public void setInMailboxesShouldIgnoreMessagesBelongingToOtherUsers() 
throws Exception {
-        MessageId messageId = testingData.persist(mailbox4.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox4.getMailboxId(), 
messageUid1, FLAGS, otherSession);
 
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), session);
 
@@ -308,18 +303,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
     }
 
     @Test
-    public void setInMailboxesShouldSetMessageWhenSystemSession() throws 
Exception {
-        MessageId messageId = testingData.persist(mailbox4.getMailboxId(), 
messageUid1, FLAGS);
-
-        messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
-
-        assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session)).hasSize(1);
-        assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, SYSTEM_USER)).hasSize(1);
-    }
-
-    @Test
     public void deleteMessageShouldRemoveMessageFromMailbox() throws Exception 
{
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         messageIdManager.delete(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), session);
 
@@ -328,7 +313,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
     @Test
     public void deleteMessageShouldRemoveMessageOnlyFromMailbox() throws 
Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
 
         messageIdManager.delete(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), session);
@@ -340,7 +325,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
     @Test
     public void deleteMessageShouldNotRemoveMessageOnAnotherMailbox() throws 
Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         messageIdManager.delete(messageId, 
ImmutableList.of(mailbox2.getMailboxId()), session);
 
@@ -353,24 +338,25 @@ public abstract class AbstractMessageIdManagerStorageTest 
{
     public void deleteMessageShouldThrowExceptionWhenDeletingOnOtherSession() 
throws Exception {
         expectedException.expect(MailboxNotFoundException.class);
 
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
-        messageIdManager.delete(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), OTHER_USER);
+        messageIdManager.delete(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), otherSession);
     }
 
     @Test
-    public void deleteMessageShouldWorkWhenDeletingOnSystemSession() throws 
Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+    public void deleteMessageShouldThrowExceptionWhenDeletingOnSystemSession() 
throws Exception {
+        expectedException.expect(MailboxNotFoundException.class);
 
-        messageIdManager.delete(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
-        assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session)).isEmpty();
+        messageIdManager.delete(messageId, 
ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
     }
 
     @Test
     public void 
deleteMessageShouldThrowExceptionWhenOneMailboxDoesNotBelongToUser() throws 
Exception {
         expectedException.expect(MailboxNotFoundException.class);
-        MessageId messageId = testingData.persist(mailbox4.getMailboxId(), 
messageUid1, FLAGS);
+
+        MessageId messageId = testingData.persist(mailbox4.getMailboxId(), 
messageUid1, FLAGS, otherSession);
 
         messageIdManager.delete(messageId, 
ImmutableList.of(mailbox4.getMailboxId()), session);
     }
@@ -378,7 +364,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     @Test
     public void setFlagsShouldUpdateFlags() throws Exception {
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId, 
ImmutableList.of(mailbox1.getMailboxId()), session);
 
@@ -389,7 +375,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     @Test
     public void setFlagsShouldNotChangeTheUid() throws Exception {
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         MessageResult messageResult1 = 
messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session).get(0);
         MessageUid messageUid1 = messageResult1.getUid();
@@ -405,7 +391,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     @Test
     public void setFlagsShouldChangeTheModSeq() throws Exception {
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         MessageResult messageResult1 = 
messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session).get(0);
         long modSeq1 = messageResult1.getModSeq();
@@ -421,7 +407,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     @Test
     public void setFlagsShouldChangeFlagsInAllMailboxes() throws Exception {
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
@@ -439,8 +425,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
     @Test
     public void setFlagsShouldNotChangeFlagsOfAnotherMessageInSameMailbox() 
throws Exception {
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
-        MessageId messageId2 = testingData.persist(mailbox1.getMailboxId(), 
messageUid2, FLAGS);
+        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
+        MessageId messageId2 = testingData.persist(mailbox1.getMailboxId(), 
messageUid2, FLAGS, session);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId2, 
ImmutableList.of(mailbox1.getMailboxId()), session);
         
@@ -456,7 +442,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     @Test
     public void setFlagsShouldNotChangeFlagsWhenEmptyMailboxes() throws 
Exception {
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.<MailboxId>of(), 
session);
 
@@ -472,7 +458,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     @Test
     public void 
setFlagsShouldNotChangeFlagsWhenMessageDoesNotBelongToTheMailboxes() throws 
Exception {
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId1, 
ImmutableList.of(mailbox2.getMailboxId()), session);
 
@@ -488,8 +474,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
     @Test
     public void setFlagsShouldChangeFlagsWhenMessageBelongsToTheMailboxes() 
throws Exception {
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
-        MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), 
messageUid2, FLAGS);
+        MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
+        MessageId messageId2 = testingData.persist(mailbox2.getMailboxId(), 
messageUid2, FLAGS, session);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId1, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
 
@@ -512,32 +498,26 @@ public abstract class AbstractMessageIdManagerStorageTest 
{
         expectedException.expect(MailboxNotFoundException.class);
 
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
-        messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId, 
ImmutableList.of(mailbox1.getMailboxId()), OTHER_USER);
+        messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId, 
ImmutableList.of(mailbox1.getMailboxId()), otherSession);
     }
 
     @Test
-    public void setFlagsShouldShouldWorkWhenSetFlagsOnSystemSession() throws 
Exception {
+    public void setFlagsShouldThrowExceptionWhenSetFlagsOnSystemSession() 
throws Exception {
+        expectedException.expect(MailboxNotFoundException.class);
+
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId, 
ImmutableList.of(mailbox1.getMailboxId()), SYSTEM_USER);
-
-        List<Flags> flags = FluentIterable
-            .from(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session))
-            .transform(getFlags())
-            .toList();
-
-        assertThat(flags).hasSize(1);
-        assertThat(flags.get(0)).isEqualTo(newFlags);
     }
 
     @Test
     public void 
setFlagsShouldThrowExceptionWhenMailboxDoesNotBelongToMailboxSession() throws 
Exception {
         expectedException.expect(MailboxNotFoundException.class);
         Flags newFlags = new Flags(Flags.Flag.SEEN);
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
         messageIdManager.setFlags(newFlags, 
MessageManager.FlagsUpdateMode.ADD, messageId, 
ImmutableList.of(mailbox1.getMailboxId(), mailbox4.getMailboxId()), session);
 
@@ -545,19 +525,19 @@ public abstract class AbstractMessageIdManagerStorageTest 
{
 
     @Test
     public void getMessageShouldBeEmptyWhenMessageHasNoMoreMailboxes() throws 
Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
 
-        testingData.deleteMailbox(mailbox1.getMailboxId());
+        testingData.deleteMailbox(mailbox1.getMailboxId(), session);
 
         assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session)).isEmpty();
     }
 
     @Test
     public void setInMailboxesShouldPreserveMessageFromOneMailboxDeletion() 
throws Exception {
-        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS);
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), 
messageUid1, FLAGS, session);
         messageIdManager.setInMailboxes(messageId, 
ImmutableList.of(mailbox2.getMailboxId()), session);
 
-        testingData.deleteMailbox(mailbox1.getMailboxId());
+        testingData.deleteMailbox(mailbox1.getMailboxId(), session);
 
         List<MessageResult> messageResults = 
messageIdManager.getMessages(ImmutableList.of(messageId), 
FetchGroupImpl.MINIMAL, session);
         assertThat(messageResults).hasSize(1);

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
index 06f1a1e..eeae592 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
@@ -24,48 +24,25 @@ import javax.mail.Flags;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.exception.MailboxException;
 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.mail.model.Mailbox;
 
 public abstract class MessageIdManagerTestSystem {
 
     private final MessageIdManager messageIdManager;
-    private final MailboxSession session;
-    private final Mailbox mailbox1;
-    private final Mailbox mailbox2;
-    private final Mailbox mailbox3;
-    private final Mailbox mailbox4;
 
-    public MessageIdManagerTestSystem(MessageIdManager messageIdManager, 
MailboxSession session, 
-            Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox 
mailbox4) {
+    public MessageIdManagerTestSystem(MessageIdManager messageIdManager) {
         this.messageIdManager = messageIdManager;
-        this.session = session;
-        this.mailbox1 = mailbox1;
-        this.mailbox2 = mailbox2;
-        this.mailbox3 = mailbox3;
-        this.mailbox4 = mailbox4;
     }
 
     public MessageIdManager getMessageIdManager() {
         return messageIdManager;
     }
 
-    public Mailbox getMailbox1() {
-        return mailbox1;
-    }
-
-    public Mailbox getMailbox2() {
-        return mailbox2;
-    }
-
-    public Mailbox getMailbox3() {
-        return mailbox3;
-    }
-
-    public Mailbox getMailbox4() {
-        return mailbox4;
-    }
+    public abstract Mailbox createMailbox(MailboxPath mailboxPath, 
MailboxSession session) throws MailboxException;
 
     /**
      * Should take care of find returning the MailboxMessage
@@ -77,11 +54,11 @@ public abstract class MessageIdManagerTestSystem {
      * @param flags
      * @return the id of persisted message
      */
-    public abstract MessageId persist(MailboxId mailboxId, MessageUid uid, 
Flags flags);
+    public abstract MessageId persist(MailboxId mailboxId, MessageUid uid, 
Flags flags, MailboxSession session);
 
     public abstract MessageId createNotUsedMessageId();
 
-    public abstract void deleteMailbox(MailboxId mailboxId);
+    public abstract void deleteMailbox(MailboxId mailboxId, MailboxSession 
session);
 
     public abstract void clean();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
index bfc0f93..d4445e9 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
@@ -38,10 +38,6 @@ public class StoreMessageIdManagerSideEffectTest extends 
AbstractMessageIdManage
             quotaManager, new 
DefaultQuotaRootResolver(testMailboxSessionMapperFactory));
 
         return new StoreMessageIdManagerTestSystem(messageIdManager,
-            testMailboxSessionMapperFactory.getMailbox1(),
-            testMailboxSessionMapperFactory.getMailbox2(),
-            testMailboxSessionMapperFactory.getMailbox3(),
-            testMailboxSessionMapperFactory.getMailbox4(),
             messageIdFactory,
             testMailboxSessionMapperFactory);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
index 5c2d84e..7c0c1fa 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
@@ -35,6 +35,7 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 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.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
@@ -42,26 +43,30 @@ import 
org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import com.google.common.base.Throwables;
 
 public class StoreMessageIdManagerTestSystem extends 
MessageIdManagerTestSystem {
-    private static final MailboxSession EMPTY_MAILBOX_SESSION = new 
MockMailboxSession("user", SessionType.System);
+    private static final MailboxSession DEFAULT_MAILBOX_SESSION = new 
MockMailboxSession("user", SessionType.System);
     private static final long MOD_SEQ = 18;
     private static final ByteArrayInputStream ARRAY_INPUT_STREAM = new 
ByteArrayInputStream("".getBytes());
 
     private final MessageId.Factory messageIdFactory;
     private final TestMailboxSessionMapperFactory mapperFactory;
 
-    public StoreMessageIdManagerTestSystem(MessageIdManager messageIdManager, 
Mailbox mailbox1, Mailbox mailbox2, Mailbox mailbox3, Mailbox mailbox4,
-                                           MessageId.Factory messageIdFactory, 
TestMailboxSessionMapperFactory mapperFactory) {
-        super(messageIdManager, EMPTY_MAILBOX_SESSION, mailbox1, mailbox2, 
mailbox3, mailbox4);
+    public StoreMessageIdManagerTestSystem(MessageIdManager messageIdManager, 
MessageId.Factory messageIdFactory, TestMailboxSessionMapperFactory 
mapperFactory) {
+        super(messageIdManager);
 
         this.messageIdFactory = messageIdFactory;
         this.mapperFactory = mapperFactory;
     }
 
     @Override
-    public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags) 
{
+    public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession 
session) throws MailboxException{
+        return 
mapperFactory.createMailboxMapper(session).findMailboxByPath(mailboxPath);
+    }
+
+    @Override
+    public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, 
MailboxSession session) {
         MessageId messageId = messageIdFactory.generate();
         try {
-            mapperFactory.createMessageIdMapper(EMPTY_MAILBOX_SESSION)
+            mapperFactory.createMessageIdMapper(DEFAULT_MAILBOX_SESSION)
                 .save(createMessage(mailboxId, flags, messageId, uid));
             return messageId;
         } catch (MailboxException e) {
@@ -70,7 +75,7 @@ public class StoreMessageIdManagerTestSystem extends 
MessageIdManagerTestSystem
     }
 
     @Override
-    public void deleteMailbox(MailboxId mailboxId) {
+    public void deleteMailbox(MailboxId mailboxId, MailboxSession 
mailboxSession) {
         throw new NotImplementedException();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
index 9e8e236..e90e982 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.SubscriptionException;
+import org.apache.james.mailbox.manager.MailboxManagerFixture;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -70,15 +71,18 @@ public class TestMailboxSessionMapperFactory extends 
MailboxSessionMapperFactory
     private final SimpleMailbox mailbox2;
     private final SimpleMailbox mailbox3;
     private final SimpleMailbox mailbox4;
+
     private final List<MailboxMessage> messages = new 
ArrayList<MailboxMessage>();
     private final MailboxMapper mailboxMapper;
     private final MessageIdMapper messageIdMapper;
 
     public TestMailboxSessionMapperFactory() {
-        mailbox1 = new SimpleMailbox(new MailboxPath("#private", "user", 
"INBOX"), UID_VALIDITY, TestId.of(36));
-        mailbox2 = new SimpleMailbox(new MailboxPath("#private", "user", 
"OUTBOX"), UID_VALIDITY, TestId.of(46));
-        mailbox3 = new SimpleMailbox(new MailboxPath("#private", "user", 
"SENT"), UID_VALIDITY, TestId.of(56));
-        mailbox4 = new SimpleMailbox(new MailboxPath("#public", "otheruser", 
"INBOX"), UID_VALIDITY, TestId.of(66));
+
+
+        mailbox1 = new SimpleMailbox(MailboxManagerFixture.MAILBOX_PATH1, 
UID_VALIDITY, TestId.of(36));
+        mailbox2 = new SimpleMailbox(MailboxManagerFixture.MAILBOX_PATH2, 
UID_VALIDITY, TestId.of(46));
+        mailbox3 = new SimpleMailbox(MailboxManagerFixture.MAILBOX_PATH3, 
UID_VALIDITY, TestId.of(56));
+        mailbox4 = new SimpleMailbox(MailboxManagerFixture.MAILBOX_PATH4, 
UID_VALIDITY, TestId.of(66));
 
         mailboxMapper = new MailboxMapper() {
             @Override
@@ -94,7 +98,19 @@ public class TestMailboxSessionMapperFactory extends 
MailboxSessionMapperFactory
 
             @Override
             public Mailbox findMailboxByPath(MailboxPath mailboxName) throws 
MailboxException {
-                throw new NotImplementedException();
+                if (mailboxName.equals(MailboxManagerFixture.MAILBOX_PATH1)) {
+                    return mailbox1;
+                }
+                if (mailboxName.equals(MailboxManagerFixture.MAILBOX_PATH2)) {
+                    return mailbox2;
+                }
+                if (mailboxName.equals(MailboxManagerFixture.MAILBOX_PATH3)) {
+                    return mailbox3;
+                }
+                throw new IllegalArgumentException("Unknown mailbox : " + 
mailboxName + " must be one of "
+                    + MailboxManagerFixture.MAILBOX_PATH1 + " "
+                    + MailboxManagerFixture.MAILBOX_PATH2 + " "
+                    + MailboxManagerFixture.MAILBOX_PATH3);
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/36b0ef6e/mailet/base/src/test/java/org/apache/mailet/base/MailAddressFixture.java
----------------------------------------------------------------------
diff --git 
a/mailet/base/src/test/java/org/apache/mailet/base/MailAddressFixture.java 
b/mailet/base/src/test/java/org/apache/mailet/base/MailAddressFixture.java
index d3ffb36..ca1725d 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/MailAddressFixture.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/MailAddressFixture.java
@@ -26,7 +26,6 @@ import org.apache.mailet.MailAddress;
 import com.google.common.base.Throwables;
 
 public class MailAddressFixture {
-
     public static final String JAMES_LOCAL = "localhost";
     public static final String JAMES_APACHE_ORG = "james.apache.org";
     public static final String JAMES2_APACHE_ORG = "james2.apache.org";


---------------------------------------------------------------------
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