You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/10/04 09:28:24 UTC

[01/29] james-project git commit: JAMES-2169 MailboxProbe.createMailbox should return a MailboxId

Repository: james-project
Updated Branches:
  refs/heads/master 651a03db6 -> 10da4351c


JAMES-2169 MailboxProbe.createMailbox should return a MailboxId


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

Branch: refs/heads/master
Commit: f5f12d24d6c6ad781a6074a2f94d99cce51fcc57
Parents: 55b8709
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Sep 27 12:03:18 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Tue Oct 3 09:23:47 2017 +0700

----------------------------------------------------------------------
 .../org/apache/james/mailbox/store/probe/MailboxProbe.java    | 3 ++-
 .../java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java | 5 +++--
 .../main/java/org/apache/james/modules/MailboxProbeImpl.java  | 6 ++++--
 .../james/adapter/mailbox/MailboxManagerManagement.java       | 7 +++++--
 .../james/adapter/mailbox/MailboxManagerManagementMBean.java  | 5 +++--
 5 files changed, 17 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/f5f12d24/mailbox/store/src/main/java/org/apache/james/mailbox/store/probe/MailboxProbe.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/probe/MailboxProbe.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/probe/MailboxProbe.java
index b96671e..7b29962 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/probe/MailboxProbe.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/probe/MailboxProbe.java
@@ -27,12 +27,13 @@ import javax.mail.Flags;
 
 import org.apache.james.mailbox.exception.MailboxException;
 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.store.mail.model.Mailbox;
 
 public interface MailboxProbe {
 
-    void createMailbox(String namespace, String user, String name);
+    MailboxId createMailbox(String namespace, String user, String name);
 
     Mailbox getMailbox(String namespace, String user, String name);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f5f12d24/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java
----------------------------------------------------------------------
diff --git a/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java b/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java
index ebc1f0e..5a92492 100644
--- a/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java
+++ b/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxMailboxProbe.java
@@ -33,6 +33,7 @@ import org.apache.james.adapter.mailbox.MailboxManagerManagementMBean;
 import org.apache.james.adapter.mailbox.ReIndexerManagementMBean;
 import org.apache.james.mailbox.exception.MailboxException;
 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.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.probe.MailboxProbe;
@@ -70,8 +71,8 @@ public class JmxMailboxProbe implements MailboxProbe, JmxProbe {
     }
 
     @Override
-    public void createMailbox(String namespace, String user, String name) {
-        mailboxManagerManagement.createMailbox(namespace, user, name);
+    public MailboxId createMailbox(String namespace, String user, String name) {
+        return mailboxManagerManagement.createMailbox(namespace, user, name);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/f5f12d24/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
index b2462ee..1bf0252 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
@@ -37,6 +37,7 @@ import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxConstants;
+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;
@@ -63,12 +64,13 @@ public class MailboxProbeImpl implements GuiceProbe, MailboxProbe {
     }
 
     @Override
-    public void createMailbox(String namespace, String user, String name) {
+    public MailboxId createMailbox(String namespace, String user, String name) {
         MailboxSession mailboxSession = null;
         try {
             mailboxSession = mailboxManager.createSystemSession(user);
             mailboxManager.startProcessingRequest(mailboxSession);
-            mailboxManager.createMailbox(new MailboxPath(namespace, user, name), mailboxSession);
+            return mailboxManager.createMailbox(new MailboxPath(namespace, user, name), mailboxSession)
+                    .orElseThrow(() -> new MailboxException("mailbox name is probably empty"));
         } catch (MailboxException e) {
             throw Throwables.propagate(e);
         } finally {

http://git-wip-us.apache.org/repos/asf/james-project/blob/f5f12d24/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
index 11caf4b..8242c08 100644
--- a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
+++ b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
@@ -37,6 +37,7 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxConstants;
+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;
@@ -130,7 +131,7 @@ public class MailboxManagerManagement extends StandardMBean implements MailboxMa
     }
 
     @Override
-    public void createMailbox(String namespace, String user, String name) {
+    public MailboxId createMailbox(String namespace, String user, String name) {
         checkMailboxArguments(namespace, user, name);
         MailboxSession session = null;
         MailboxPath mailboxPath = new MailboxPath(namespace, user, name);
@@ -142,9 +143,11 @@ public class MailboxManagerManagement extends StandardMBean implements MailboxMa
                      .build()) {
             session = mailboxManager.createSystemSession(user);
             mailboxManager.startProcessingRequest(session);
-            mailboxManager.createMailbox(mailboxPath, session);
+            return mailboxManager.createMailbox(mailboxPath, session)
+                .orElseThrow(() -> new MailboxException("mailbox name is probably empty"));
         } catch (Exception e) {
             LOGGER.error("Unable to create mailbox", e);
+            throw Throwables.propagate(e);
         } finally {
             closeSession(session);
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f5f12d24/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagementMBean.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagementMBean.java b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagementMBean.java
index 9485075..ca96dca 100644
--- a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagementMBean.java
+++ b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagementMBean.java
@@ -20,6 +20,8 @@ package org.apache.james.adapter.mailbox;
 
 import java.util.List;
 
+import org.apache.james.mailbox.model.MailboxId;
+
 /**
  * JMX MBean for Mailbox management
  */
@@ -43,12 +45,11 @@ public interface MailboxManagerManagementMBean {
 
     /**
      * Create a mailbox
-     *
      * @param namespace Namespace of the created mailbox
      * @param user User of the created mailbox
      * @param name Name of the created mailbox
      */
-    void createMailbox(String namespace,String user, String name);
+    MailboxId createMailbox(String namespace, String user, String name);
 
     /**
      * Delete the given mailbox


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


[24/29] james-project git commit: JAMES-2169 Rename confusing optional method

Posted by bt...@apache.org.
JAMES-2169 Rename confusing optional method


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

Branch: refs/heads/master
Commit: 0f69859558a31a944cbfef96908bae408ea80b0f
Parents: b5c3096
Author: benwa <bt...@linagora.com>
Authored: Tue Oct 3 10:08:10 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:24:38 2017 +0700

----------------------------------------------------------------------
 .../james/mailbox/cassandra/mail/CassandraBlobsDAO.java      | 2 +-
 .../james/mailbox/cassandra/mail/CassandraMailboxMapper.java | 2 +-
 .../james/mailbox/cassandra/mail/CassandraMessageMapper.java | 2 +-
 .../src/main/java/org/apache/james/util/OptionalUtils.java   | 2 +-
 .../test/java/org/apache/james/util/OptionalUtilsTest.java   | 8 ++++----
 .../java/org/apache/james/jmap/model/mailbox/Rights.java     | 2 +-
 6 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/0f698595/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
index b96e5c4..7cd3718 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
@@ -168,7 +168,7 @@ public class CassandraBlobsDAO {
 
     private byte[] concatenateDataParts(Stream<BlobPart> blobParts) {
         ImmutableList<byte[]> parts = blobParts
-            .map(blobPart -> OptionalUtils.peekOnEmpty(
+            .map(blobPart -> OptionalUtils.executeIfEmpty(
                 blobPart.row,
                 () -> LOGGER.warn("Missing blob part for blobId {} and position {}", blobPart.blobId, blobPart.position)))
             .flatMap(OptionalUtils::toStream)

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f698595/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index d9d5c10..f1e37b5 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -141,7 +141,7 @@ public class CassandraMailboxMapper implements MailboxMapper {
 
     private CompletableFuture<Optional<SimpleMailbox>> retrieveMailbox(CassandraMailboxPathDAO.CassandraIdAndPath idAndPath) {
         return retrieveMailbox(idAndPath.getCassandraId())
-            .thenApply(optional -> OptionalUtils.peekOnEmpty(optional,
+            .thenApply(optional -> OptionalUtils.executeIfEmpty(optional,
                 () -> LOGGER.warn("Could not retrieve mailbox {} with path {} in mailbox table.", idAndPath.getCassandraId(), idAndPath.getMailboxPath())));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f698595/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
index cf38640..697b523 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
@@ -226,7 +226,7 @@ public class CassandraMessageMapper implements MessageMapper {
 
     private CompletableFuture<Optional<ComposedMessageIdWithMetaData>> retrieveComposedId(CassandraId mailboxId, MessageUid uid) {
         return messageIdDAO.retrieve(mailboxId, uid)
-            .thenApply(optional -> OptionalUtils.peekOnEmpty(optional,
+            .thenApply(optional -> OptionalUtils.executeIfEmpty(optional,
                 () -> LOGGER.warn("Could not retrieve message {} {}", mailboxId, uid)));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f698595/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java b/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
index 66628ba..000feb8 100644
--- a/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
+++ b/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
@@ -28,7 +28,7 @@ public class OptionalUtils {
         void perform();
     }
 
-    public static <T> Optional<T> peekOnEmpty(Optional<T> optional, Operation operation) {
+    public static <T> Optional<T> executeIfEmpty(Optional<T> optional, Operation operation) {
         if (!optional.isPresent()) {
             operation.perform();
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f698595/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java b/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
index a270469..80a8684 100644
--- a/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
+++ b/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
@@ -36,7 +36,7 @@ public class OptionalUtilsTest {
 
     @Test
     public void ifEmptyShouldPreserveValueOfEmptyOptionals() {
-        Optional<Object> expected = OptionalUtils.peekOnEmpty(Optional.empty(), () -> { });
+        Optional<Object> expected = OptionalUtils.executeIfEmpty(Optional.empty(), () -> { });
 
         assertThat(expected).isEmpty();
     }
@@ -44,7 +44,7 @@ public class OptionalUtilsTest {
     @Test
     public void ifEmptyShouldPreserveValueOfPresentOptionals() {
         String value = "value";
-        Optional<String> expected = OptionalUtils.peekOnEmpty(Optional.of(value), () -> { });
+        Optional<String> expected = OptionalUtils.executeIfEmpty(Optional.of(value), () -> { });
 
         assertThat(expected).contains(value);
     }
@@ -53,7 +53,7 @@ public class OptionalUtilsTest {
     public void ifEmptyShouldPerformOperationIfEmpty() {
         AtomicInteger operationCounter = new AtomicInteger(0);
 
-        OptionalUtils.peekOnEmpty(Optional.empty(), operationCounter::incrementAndGet);
+        OptionalUtils.executeIfEmpty(Optional.empty(), operationCounter::incrementAndGet);
 
         assertThat(operationCounter.get()).isEqualTo(1);
     }
@@ -62,7 +62,7 @@ public class OptionalUtilsTest {
     public void ifEmptyShouldNotPerformOperationIfPresent() {
         AtomicInteger operationCounter = new AtomicInteger(0);
 
-        OptionalUtils.peekOnEmpty(Optional.of("value"), operationCounter::incrementAndGet);
+        OptionalUtils.executeIfEmpty(Optional.of("value"), operationCounter::incrementAndGet);
 
         assertThat(operationCounter.get()).isEqualTo(0);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f698595/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Rights.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Rights.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Rights.java
index 99c0e79..38ce0b3 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Rights.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Rights.java
@@ -71,7 +71,7 @@ public class Rights {
         }
 
         public static Optional<Right> forRight(MailboxACL.Right right) {
-            return OptionalUtils.peekOnEmpty(
+            return OptionalUtils.executeIfEmpty(
                 Arrays.stream(values())
                     .filter(jmapRight -> jmapRight.right == right)
                     .findAny(),


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


[25/29] james-project git commit: JAMES-2169 Use MailboxPath::forUser more widely

Posted by bt...@apache.org.
JAMES-2169 Use MailboxPath::forUser more widely


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

Branch: refs/heads/master
Commit: a7ffeb39d9156449e1da47df6efe217238032048
Parents: 0f69859
Author: benwa <bt...@linagora.com>
Authored: Tue Oct 3 13:12:08 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:24:46 2017 +0700

----------------------------------------------------------------------
 .../apache/james/mpt/imapmailbox/suite/AuthenticatedState.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a7ffeb39/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
index dd364e8..8a2d075 100644
--- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
@@ -412,14 +412,14 @@ public abstract class AuthenticatedState extends BasicImapCommands {
     @Test
     public void listShouldNotListMailboxWithOtherNamspaceUS() throws Exception {
         Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
-        system.createMailbox(MailboxPath.forUser(USER, "Other"));
+        system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
         simpleScriptedTestProtocol.run("ListMailboxes");
     }
 
     @Test
     public void listShouldNotListMailboxWithOtherNamspaceITALY() throws Exception {
         Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
-        system.createMailbox(MailboxPath.forUser(USER, "Other"));
+        system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
         simpleScriptedTestProtocol
             .withLocale(Locale.ITALY)
             .run("ListMailboxes");
@@ -428,7 +428,7 @@ public abstract class AuthenticatedState extends BasicImapCommands {
     @Test
     public void listShouldNotListMailboxWithOtherNamspaceKOREA() throws Exception {
         Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
-        system.createMailbox(MailboxPath.forUser(USER, "Other"));
+        system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
         simpleScriptedTestProtocol
             .withLocale(Locale.KOREA)
             .run("ListMailboxes");


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


[26/29] james-project git commit: JAMES-2169 Improve slightly MailboxManagementTest

Posted by bt...@apache.org.
JAMES-2169 Improve slightly MailboxManagementTest


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

Branch: refs/heads/master
Commit: 7e2062bd3419c5f0378ca8ec76cfd73b4ab5ca64
Parents: dbaadbd
Author: benwa <bt...@linagora.com>
Authored: Tue Oct 3 18:52:17 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:24:50 2017 +0700

----------------------------------------------------------------------
 .../apache/james/adapter/mailbox/MailboxManagementTest.java  | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/7e2062bd/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
index b5e6204..5448922 100644
--- a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
+++ b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
@@ -157,6 +157,14 @@ public class MailboxManagementTest {
         assertThatThrownBy(() -> mailboxManagerManagement.createMailbox(MailboxConstants.USER_NAMESPACE, USER, "name"))
             .isInstanceOf(RuntimeException.class)
             .hasCauseInstanceOf(MailboxExistsException.class);
+    }
+
+    @Test
+    public void createMailboxShouldNotCreateAdditionalMailboxesIfMailboxAlreadyExists() throws Exception {
+        MailboxPath path = MailboxPath.forUser(USER, "name");
+        Mailbox mailbox = new SimpleMailbox(path, UID_VALIDITY);
+        inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);
+
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox);
     }
 


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


[17/29] james-project git commit: JAMES-2169 Use MailboxPath::forUser more widely

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/SetMailboxesMethodStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
index 6e7ee4c..59fef05 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
@@ -33,7 +33,6 @@ import org.apache.http.HttpResponse;
 import org.apache.http.client.fluent.Request;
 import org.apache.http.entity.ContentType;
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
@@ -66,7 +65,7 @@ public class SetMailboxesMethodStepdefs {
     @Given("^mailbox \"([^\"]*)\" with (\\d+) messages$")
     public void mailboxWithMessages(String mailboxName, int messageCount) throws Throwable {
         mainStepdefs.mailboxProbe.createMailbox("#private", userStepdefs.lastConnectedUser, mailboxName);
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, mailboxName);
+        MailboxPath mailboxPath = MailboxPath.forUser(userStepdefs.lastConnectedUser, mailboxName);
         IntStream
             .range(0, messageCount)
             .forEach(Throwing.intConsumer(i -> appendMessage(mailboxPath, i)));

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProviderImpl.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProviderImpl.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProviderImpl.java
index d17dd84..043d808 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProviderImpl.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProviderImpl.java
@@ -29,7 +29,6 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MailboxQuery;
@@ -50,7 +49,7 @@ public class SystemMailboxesProviderImpl implements SystemMailboxesProvider {
 
     @Override
     public Stream<MessageManager> getMailboxByRole(Role aRole, MailboxSession session) throws MailboxException {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, session.getUser().getUserName(), aRole.getDefaultMailbox());
+        MailboxPath mailboxPath = MailboxPath.forUser(session.getUser().getUserName(), aRole.getDefaultMailbox());
         try {
             return Stream.of(mailboxManager.getMailbox(mailboxPath, session));
         } catch (MailboxNotFoundException e) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterTest.java
index e706d27..6700202 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterTest.java
@@ -27,7 +27,6 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.metrics.api.NoopMetricFactory;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
@@ -59,7 +58,7 @@ public class DefaultMailboxesProvisioningFilterTest {
         assertThat(mailboxManager.list(session))
             .containsOnlyElementsOf(DefaultMailboxes.DEFAULT_MAILBOXES
                 .stream()
-                .map(mailboxName -> new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, mailboxName))
+                .map(mailboxName -> MailboxPath.forUser(USERNAME, mailboxName))
                 .collect(Guavate.toImmutableList()));
     }
 
@@ -76,7 +75,7 @@ public class DefaultMailboxesProvisioningFilterTest {
         assertThat(mailboxManager.list(session))
             .containsOnlyElementsOf(DefaultMailboxes.DEFAULT_MAILBOXES
                 .stream()
-                .map(mailboxName -> new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, mailboxName))
+                .map(mailboxName -> MailboxPath.forUser(USERNAME, mailboxName))
                 .collect(Guavate.toImmutableList()));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
index 7c5d380..9f6c4ce 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
@@ -119,7 +119,7 @@ public class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnMailboxesWhenAvailable() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath("#private", USERNAME, "name");
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, "name");
         MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME);
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
         MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, mailboxSession);
@@ -143,8 +143,8 @@ public class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnOnlyMailboxesOfCurrentUserWhenAvailable() throws Exception {
-        MailboxPath mailboxPathToReturn = new MailboxPath("#private", USERNAME, "mailboxToReturn");
-        MailboxPath mailboxPathtoSkip = new MailboxPath("#private", USERNAME2, "mailboxToSkip");
+        MailboxPath mailboxPathToReturn = MailboxPath.forUser(USERNAME, "mailboxToReturn");
+        MailboxPath mailboxPathtoSkip = MailboxPath.forUser(USERNAME2, "mailboxToSkip");
         MailboxSession userSession = mailboxManager.createSystemSession(USERNAME);
         MailboxSession user2Session = mailboxManager.createSystemSession(USERNAME2);
         mailboxManager.createMailbox(mailboxPathToReturn, userSession);
@@ -168,7 +168,7 @@ public class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldReturnInboxWithSortOrder10() throws Exception {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME);
-        MailboxPath mailboxPath = new MailboxPath("#private", USERNAME, "INBOX");
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, "INBOX");
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
 
         GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
@@ -189,7 +189,7 @@ public class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldReturnSortOrder1000OnUnknownFolder() throws Exception {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME);
-        MailboxPath mailboxPath = new MailboxPath("#private", USERNAME, "unknown");
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, "unknown");
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
 
         GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
@@ -210,7 +210,7 @@ public class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldReturnInboxWithSortOrder10OnDifferenceCase() throws Exception {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME);
-        MailboxPath mailboxPath = new MailboxPath("#private", USERNAME, "InBoX");
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, "InBoX");
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
 
         GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
@@ -231,14 +231,14 @@ public class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldReturnMailboxesWithSortOrder() throws Exception {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "INBOX"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "ARCHIVE"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "DRAFTS"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "OUTBOX"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "SENT"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "TRASH"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "SPAM"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "TEMPLATES"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "INBOX"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "ARCHIVE"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "DRAFTS"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "OUTBOX"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "SENT"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "TRASH"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "SPAM"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "TEMPLATES"), mailboxSession);
 
         GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
                 .build();
@@ -265,7 +265,7 @@ public class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnEmptyMailboxByDefault() throws MailboxException {
-        MailboxPath mailboxPath = new MailboxPath("#private", USERNAME, "name");
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, "name");
         MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME);
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
 
@@ -286,7 +286,7 @@ public class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnCorrectTotalMessagesCount() throws MailboxException {
-        MailboxPath mailboxPath = new MailboxPath("#private", USERNAME, "name");
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, "name");
         MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME);
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
         MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, mailboxSession);
@@ -310,7 +310,7 @@ public class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnCorrectUnreadMessagesCount() throws MailboxException {
-        MailboxPath mailboxPath = new MailboxPath("#private", USERNAME, "name");
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, "name");
         MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME);
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
         MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, mailboxSession);
@@ -338,15 +338,15 @@ public class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldReturnMailboxesWithRoles() throws Exception {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "INBOX"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "ARCHIVE"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "DRAFTS"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "OUTBOX"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "SENT"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "TRASH"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "SPAM"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "TEMPLATES"), mailboxSession);
-        mailboxManager.createMailbox(new MailboxPath("#private", USERNAME, "WITHOUT ROLE"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "INBOX"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "ARCHIVE"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "DRAFTS"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "OUTBOX"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "SENT"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "TRASH"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "SPAM"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "TEMPLATES"), mailboxSession);
+        mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, "WITHOUT ROLE"), mailboxSession);
         
         GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
                 .build();

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
index 8f15c63..c1b9f00 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
@@ -89,7 +89,6 @@ public class SetMessagesCreationProcessorTest {
     private static final InMemoryId OUTBOX_ID = InMemoryId.of(12345);
     private static final String DRAFTS = "drafts";
     private static final InMemoryId DRAFTS_ID = InMemoryId.of(12);
-    private static final String NAMESPACE = "#private";
 
     private final CreationMessage.Builder creationMessageBuilder = CreationMessage.builder()
             .from(DraftEmailer.builder().name("alice").email("alice@example.com").build())
@@ -142,14 +141,14 @@ public class SetMessagesCreationProcessorTest {
         
         outbox = mock(MessageManager.class);
         when(outbox.getId()).thenReturn(OUTBOX_ID);
-        when(outbox.getMailboxPath()).thenReturn(new MailboxPath(NAMESPACE, USER, OUTBOX));
+        when(outbox.getMailboxPath()).thenReturn(MailboxPath.forUser(USER, OUTBOX));
         
         when(outbox.appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), any(Boolean.class), any(Flags.class)))
             .thenReturn(new ComposedMessageId(OUTBOX_ID, TestMessageId.of(23), MessageUid.of(1)));
 
         drafts = mock(MessageManager.class);
         when(drafts.getId()).thenReturn(DRAFTS_ID);
-        when(drafts.getMailboxPath()).thenReturn(new MailboxPath(NAMESPACE, USER, DRAFTS));
+        when(drafts.getMailboxPath()).thenReturn(MailboxPath.forUser(USER, DRAFTS));
         optionalOutbox = Optional.of(outbox);
         optionalDrafts = Optional.of(drafts);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
index e363522..ba53de7 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
@@ -65,7 +65,7 @@ public class MailboxFactoryTest {
 
     @Test
     public void mailboxFromMailboxIdShouldReturnPresentWhenExists() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath("#private", user, "myBox");
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "myBox");
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
         MailboxId mailboxId = mailboxManager.getMailbox(mailboxPath, mailboxSession).getId();
 
@@ -81,7 +81,7 @@ public class MailboxFactoryTest {
     @Test
     public void getNameShouldReturnMailboxNameWhenRootMailbox() throws Exception {
         String expected = "mailbox";
-        MailboxPath mailboxPath = new MailboxPath("#private", user, expected);
+        MailboxPath mailboxPath = MailboxPath.forUser(user, expected);
 
         String name = sut.getName(mailboxPath, mailboxSession);
         assertThat(name).isEqualTo(expected);
@@ -90,7 +90,7 @@ public class MailboxFactoryTest {
     @Test
     public void getNameShouldReturnMailboxNameWhenChildMailbox() throws Exception {
         String expected = "mailbox";
-        MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox." + expected);
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "inbox." + expected);
 
         String name = sut.getName(mailboxPath, mailboxSession);
         assertThat(name).isEqualTo(expected);
@@ -99,7 +99,7 @@ public class MailboxFactoryTest {
     @Test
     public void getNameShouldReturnMailboxNameWhenChildOfChildMailbox() throws Exception {
         String expected = "mailbox";
-        MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.children." + expected);
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "inbox.children." + expected);
 
         String name = sut.getName(mailboxPath, mailboxSession);
         assertThat(name).isEqualTo(expected);
@@ -107,7 +107,7 @@ public class MailboxFactoryTest {
 
     @Test
     public void getParentIdFromMailboxPathShouldReturNullWhenRootMailbox() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath("#private", user, "mailbox");
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "mailbox");
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
 
         Optional<MailboxId> id = sut.getParentIdFromMailboxPath(mailboxPath, Optional.empty(), mailboxSession);
@@ -116,11 +116,11 @@ public class MailboxFactoryTest {
 
     @Test
     public void getParentIdFromMailboxPathShouldReturnParentIdWhenChildMailbox() throws Exception {
-        MailboxPath parentMailboxPath = new MailboxPath("#private", user, "inbox");
+        MailboxPath parentMailboxPath = MailboxPath.forUser(user, "inbox");
         mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
         MailboxId parentId = mailboxManager.getMailbox(parentMailboxPath, mailboxSession).getId();
 
-        MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.mailbox");
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "inbox.mailbox");
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
 
         Optional<MailboxId> id = sut.getParentIdFromMailboxPath(mailboxPath, Optional.empty(), mailboxSession);
@@ -129,10 +129,10 @@ public class MailboxFactoryTest {
 
     @Test
     public void getParentIdFromMailboxPathShouldReturnParentIdWhenChildOfChildMailbox() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.children.mailbox");
-        mailboxManager.createMailbox(new MailboxPath("#private", user, "inbox"), mailboxSession);
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "inbox.children.mailbox");
+        mailboxManager.createMailbox(MailboxPath.forUser(user, "inbox"), mailboxSession);
 
-        MailboxPath parentMailboxPath = new MailboxPath("#private", user, "inbox.children");
+        MailboxPath parentMailboxPath = MailboxPath.forUser(user, "inbox.children");
         mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
         MailboxId parentId = mailboxManager.getMailbox(parentMailboxPath, mailboxSession).getId();
 
@@ -144,10 +144,10 @@ public class MailboxFactoryTest {
 
     @Test
     public void getParentIdFromMailboxPathShouldWorkWhenUserMailboxesProvided() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.children.mailbox");
-        mailboxManager.createMailbox(new MailboxPath("#private", user, "inbox"), mailboxSession);
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "inbox.children.mailbox");
+        mailboxManager.createMailbox(MailboxPath.forUser(user, "inbox"), mailboxSession);
 
-        MailboxPath parentMailboxPath = new MailboxPath("#private", user, "inbox.children");
+        MailboxPath parentMailboxPath = MailboxPath.forUser(user, "inbox.children");
         mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
         MailboxId parentId = mailboxManager.getMailbox(parentMailboxPath, mailboxSession).getId();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/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 53f14d7..ffaad17 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
@@ -46,7 +46,6 @@ import org.apache.james.mailbox.inmemory.InMemoryMessageId;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.FetchGroupImpl;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
@@ -66,8 +65,8 @@ public class PostDequeueDecoratorTest {
     private static final String SENT = DefaultMailboxes.SENT;
     private static final String USERNAME = "username@domain.tld";
     private static final MessageUid UID = MessageUid.of(1);
-    private static final MailboxPath OUTBOX_MAILBOX_PATH = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, OUTBOX);
-    private static final MailboxPath SENT_MAILBOX_PATH = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, SENT);
+    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 MailQueueItem mockedMailQueueItem;

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
index 8de3308..1d162d1 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
@@ -46,7 +46,7 @@ public class MailboxUtilsTest {
     }
     @Test
     public void hasChildrenShouldReturnFalseWhenNoChild() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath("#private", user, "myBox");
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "myBox");
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
         MailboxId mailboxId = mailboxManager.getMailbox(mailboxPath, mailboxSession).getId();
 
@@ -55,11 +55,11 @@ public class MailboxUtilsTest {
 
     @Test
     public void hasChildrenShouldReturnTrueWhenHasAChild() throws Exception {
-        MailboxPath parentMailboxPath = new MailboxPath("#private", user, "inbox");
+        MailboxPath parentMailboxPath = MailboxPath.forUser(user, "inbox");
         mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
         MailboxId parentId = mailboxManager.getMailbox(parentMailboxPath, mailboxSession).getId();
 
-        MailboxPath mailboxPath = new MailboxPath("#private", user, "inbox.myBox");
+        MailboxPath mailboxPath = MailboxPath.forUser(user, "inbox.myBox");
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
 
         assertThat(sut.hasChildren(parentId, mailboxSession)).isTrue();

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
index e9b48df..5d7cd74 100644
--- a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
+++ b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
@@ -213,7 +213,7 @@ public class POP3ServerTest {
         assertEquals("Found unexpected messages", 0, list.length);
 
         pop3Client.disconnect();
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, "foo", "INBOX");
+        MailboxPath mailboxPath = MailboxPath.forUser("foo", "INBOX");
         MailboxSession session = mailboxManager.login("foo", "bar");
         if (!mailboxManager.mailboxExists(mailboxPath, session)) {
             mailboxManager.createMailbox(mailboxPath, session);
@@ -298,7 +298,7 @@ public class POP3ServerTest {
 
         usersRepository.addUser("foo2", "bar2");
 
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, "foo2", "INBOX");
+        MailboxPath mailboxPath = MailboxPath.forUser("foo2", "INBOX");
         MailboxSession session = mailboxManager.login("foo2", "bar2");
 
         if (!mailboxManager.mailboxExists(mailboxPath, session)) {
@@ -387,7 +387,7 @@ public class POP3ServerTest {
 
         usersRepository.addUser("foo2", "bar2");
 
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, "foo2", "INBOX");
+        MailboxPath mailboxPath = MailboxPath.forUser("foo2", "INBOX");
         MailboxSession session = mailboxManager.login("foo2", "bar2");
 
         if (!mailboxManager.mailboxExists(mailboxPath, session)) {
@@ -437,7 +437,7 @@ public class POP3ServerTest {
 
         usersRepository.addUser("foo2", "bar2");
 
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, "foo2", "INBOX");
+        MailboxPath mailboxPath = MailboxPath.forUser("foo2", "INBOX");
         MailboxSession session = mailboxManager.login("foo2", "bar2");
 
         if (!mailboxManager.mailboxExists(mailboxPath, session)) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/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 c62dcd6..8b9e3fd 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
@@ -608,7 +608,7 @@ public class UserMailboxesRoutesTest {
                 .thenReturn(
                         ImmutableList.of(
                                 new SimpleMailboxMetaData(
-                                        new MailboxPath("#private", USERNAME, MAILBOX_NAME), mailboxId, '.')));
+                                        MailboxPath.forUser(USERNAME, MAILBOX_NAME), mailboxId, '.')));
             doThrow(new RuntimeException()).when(mailboxManager).deleteMailbox(any(), any());
 
             when()
@@ -633,7 +633,7 @@ public class UserMailboxesRoutesTest {
             when(mailboxManager.search(any(MailboxQuery.class), any()))
                 .thenReturn(
                         ImmutableList.of(
-                                new SimpleMailboxMetaData(new MailboxPath("#private", USERNAME, MAILBOX_NAME), mailboxId, '.')));
+                                new SimpleMailboxMetaData(MailboxPath.forUser(USERNAME, MAILBOX_NAME), mailboxId, '.')));
             doThrow(new MailboxException()).when(mailboxManager).deleteMailbox(any(), any());
 
             when()
@@ -689,7 +689,7 @@ public class UserMailboxesRoutesTest {
             when(mailboxManager.search(any(MailboxQuery.class), any()))
                 .thenReturn(
                         ImmutableList.of(
-                                new SimpleMailboxMetaData(new MailboxPath("#private", USERNAME, "any"), mailboxId, '.')));
+                                new SimpleMailboxMetaData(MailboxPath.forUser(USERNAME, "any"), mailboxId, '.')));
             doThrow(new RuntimeException()).when(mailboxManager).deleteMailbox(any(), any());
 
             when()
@@ -703,7 +703,7 @@ public class UserMailboxesRoutesTest {
             MailboxId mailboxId = InMemoryId.of(12);
             when(mailboxManager.search(any(MailboxQuery.class), any()))
                 .thenReturn(
-                        ImmutableList.of(new SimpleMailboxMetaData(new MailboxPath("#private", USERNAME, "any"), mailboxId, '.')));
+                        ImmutableList.of(new SimpleMailboxMetaData(MailboxPath.forUser(USERNAME, "any"), mailboxId, '.')));
             doThrow(new MailboxNotFoundException("any")).when(mailboxManager).deleteMailbox(any(), any());
 
             when()
@@ -717,7 +717,7 @@ public class UserMailboxesRoutesTest {
             MailboxId mailboxId = InMemoryId.of(12);
             when(mailboxManager.search(any(MailboxQuery.class), any()))
                 .thenReturn(
-                        ImmutableList.of(new SimpleMailboxMetaData(new MailboxPath("#private", USERNAME, "any"), mailboxId, '.')));
+                        ImmutableList.of(new SimpleMailboxMetaData(MailboxPath.forUser(USERNAME, "any"), mailboxId, '.')));
             doThrow(new MailboxException()).when(mailboxManager).deleteMailbox(any(), any());
 
             when()


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


[12/29] james-project git commit: JAMES-2169 introduce MailboxACL.command() to ease ACLCommand usage

Posted by bt...@apache.org.
JAMES-2169 introduce MailboxACL.command() to ease ACLCommand usage


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

Branch: refs/heads/master
Commit: d5bb0b4e07fac875142f5171a99323c935adb39f
Parents: af0aab6
Author: Matthieu Baechler <ma...@apache.org>
Authored: Fri Sep 29 16:14:01 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:19:58 2017 +0700

----------------------------------------------------------------------
 .../apache/james/mailbox/model/MailboxACL.java  | 81 ++++++++++++++++++-
 .../james/mailbox/model/MailboxACLTest.java     |  2 +-
 .../cassandra/mail/CassandraACLMapperTest.java  | 23 +++---
 .../store/mail/model/MailboxMapperACLTest.java  | 84 +++++---------------
 .../imap/processor/DeleteACLProcessor.java      |  7 +-
 .../james/imap/processor/SetACLProcessor.java   |  3 +-
 .../imap/processor/DeleteACLProcessorTest.java  |  2 +-
 .../imap/processor/SetACLProcessorTest.java     |  2 +-
 .../org/apache/james/modules/ACLProbeImpl.java  |  8 +-
 9 files changed, 123 insertions(+), 89 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d5bb0b4e/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
index a831302..569eeae 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
@@ -52,6 +52,10 @@ import com.google.common.collect.ImmutableMap;
  */
 public class MailboxACL {
 
+    public static ACLCommand.Builder command() {
+        return new ACLCommand.Builder();
+    }
+
     private static EnumSet<Right> copyOf(Collection<Right> collection) {
         if (collection.isEmpty()) {
             return EnumSet.noneOf(Right.class);
@@ -503,11 +507,85 @@ public class MailboxACL {
 
 
     public static class ACLCommand {
+
+        public static class Builder {
+
+            private EntryKey key;
+            private EditMode editMode;
+            private Rfc4314Rights rights;
+
+            private Builder() {
+            }
+
+            public Builder forUser(String user) {
+                key = EntryKey.createUser(user);
+                return this;
+            }
+
+            public Builder forGroup(String group) {
+                key = EntryKey.createGroup(group);
+                return this;
+            }
+
+
+            public Builder key(EntryKey key) {
+                this.key = key;
+                return this;
+            }
+
+            public Builder rights(Rfc4314Rights rights) {
+                this.rights = rights;
+                return this;
+            }
+
+            public Builder rights(Right... rights) throws UnsupportedRightException {
+                this.rights =
+                    Optional.ofNullable(this.rights)
+                        .orElse(new Rfc4314Rights())
+                        .union(new Rfc4314Rights(rights));
+                return this;
+            }
+
+            public Builder noRights() {
+                this.rights = new Rfc4314Rights();
+                return this;
+            }
+
+
+            public Builder mode(EditMode mode) {
+                editMode = mode;
+                return this;
+            }
+
+            public ACLCommand asReplacement() {
+                editMode = EditMode.REPLACE;
+                return build();
+            }
+
+            public ACLCommand asAddition() {
+                editMode = EditMode.ADD;
+                return build();
+            }
+
+            public ACLCommand asRemoval() {
+                editMode = EditMode.REMOVE;
+                return build();
+            }
+
+            public ACLCommand build() {
+                Preconditions.checkState(key != null);
+                Preconditions.checkState(editMode != null);
+                Preconditions.checkState(rights != null);
+                return new ACLCommand(key, editMode, rights);
+            }
+
+        }
+
         private final EntryKey key;
         private final EditMode editMode;
         private final Rfc4314Rights rights;
 
-        public ACLCommand(EntryKey key, EditMode editMode, Rfc4314Rights rights) {
+        private ACLCommand(EntryKey key, EditMode editMode, Rfc4314Rights rights) {
             this.key = key;
             this.editMode = editMode;
             this.rights = rights;
@@ -744,6 +822,7 @@ public class MailboxACL {
                     .collect(Guavate.toImmutableMap(Pair::getKey, Pair::getValue)));
         } else {
             return Optional.ofNullable(replacement)
+                .filter(rights -> !rights.isEmpty())
                 .map(replacementValue ->  new MailboxACL(
                     ImmutableMap.<EntryKey, Rfc4314Rights>builder()
                         .putAll(entries)

http://git-wip-us.apache.org/repos/asf/james-project/blob/d5bb0b4e/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
index 16734d5..7bbb4eb 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxACLTest.java
@@ -220,7 +220,7 @@ public class MailboxACLTest {
     @Test
     public void applyShouldNotThrowWhenRemovingANonExistingEntry() throws Exception{
         assertThat(MailboxACL.EMPTY
-            .apply(new MailboxACL.ACLCommand(EntryKey.createUser("bob"), MailboxACL.EditMode.REPLACE, null)))
+            .apply(MailboxACL.command().forUser("bob").noRights().asReplacement()))
             .isEqualTo(MailboxACL.EMPTY);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d5bb0b4e/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
index 063651c..bc5a7e7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
@@ -38,6 +38,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
@@ -89,7 +90,7 @@ public class CassandraACLMapperTest {
         MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
 
         cassandraACLMapper.updateACL(MAILBOX_ID,
-            new MailboxACL.ACLCommand(key, MailboxACL.EditMode.ADD, rights));
+            MailboxACL.command().key(key).rights(rights).asAddition());
 
         assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join())
             .isEqualTo(new MailboxACL().union(key, rights));
@@ -100,9 +101,9 @@ public class CassandraACLMapperTest {
         MailboxACL.EntryKey keyBob = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
         MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
 
-        cassandraACLMapper.updateACL(MAILBOX_ID, new MailboxACL.ACLCommand(keyBob, MailboxACL.EditMode.ADD, rights));
+        cassandraACLMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(keyBob).rights(rights).asAddition());
         MailboxACL.EntryKey keyAlice = new MailboxACL.EntryKey("alice", MailboxACL.NameType.user, false);
-        cassandraACLMapper.updateACL(MAILBOX_ID, new MailboxACL.ACLCommand(keyAlice, MailboxACL.EditMode.ADD, rights));
+        cassandraACLMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(keyAlice).rights(rights).asAddition());
 
         assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join())
             .isEqualTo(new MailboxACL().union(keyBob, rights).union(keyAlice, rights));
@@ -113,8 +114,8 @@ public class CassandraACLMapperTest {
         MailboxACL.EntryKey key = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
         MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
 
-        cassandraACLMapper.updateACL(MAILBOX_ID, new MailboxACL.ACLCommand(key, MailboxACL.EditMode.ADD, rights));
-        cassandraACLMapper.updateACL(MAILBOX_ID, new MailboxACL.ACLCommand(key, MailboxACL.EditMode.REMOVE, rights));
+        cassandraACLMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(key).rights(rights).asAddition());
+        cassandraACLMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(key).rights(rights).asRemoval());
 
         assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(MailboxACL.EMPTY);
     }
@@ -124,8 +125,8 @@ public class CassandraACLMapperTest {
         MailboxACL.EntryKey key = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
         MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
 
-        cassandraACLMapper.updateACL(MAILBOX_ID, new MailboxACL.ACLCommand(key, MailboxACL.EditMode.ADD, rights));
-        cassandraACLMapper.updateACL(MAILBOX_ID, new MailboxACL.ACLCommand(key, MailboxACL.EditMode.REPLACE, null));
+        cassandraACLMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(key).rights(rights).asAddition());
+        cassandraACLMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(key).noRights().asReplacement());
 
         assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(MailboxACL.EMPTY);
     }
@@ -135,7 +136,7 @@ public class CassandraACLMapperTest {
         MailboxACL.EntryKey key = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
         MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
 
-        cassandraACLMapper.updateACL(MAILBOX_ID, new MailboxACL.ACLCommand(key, MailboxACL.EditMode.REPLACE, rights));
+        cassandraACLMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(key).rights(rights).asReplacement());
 
         assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(new MailboxACL().union(key, rights));
     }
@@ -150,7 +151,7 @@ public class CassandraACLMapperTest {
         MailboxACL.EntryKey key = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
         MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
 
-        cassandraACLMapper.updateACL(MAILBOX_ID, new MailboxACL.ACLCommand(key, MailboxACL.EditMode.ADD, rights));
+        cassandraACLMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(key).rights(rights).asAddition());
 
         assertThat(cassandraACLMapper.getACL(MAILBOX_ID).join()).isEqualTo(new MailboxACL().union(key, rights));
     }
@@ -174,7 +175,7 @@ public class CassandraACLMapperTest {
         CountDownLatch countDownLatch = new CountDownLatch(2);
         MailboxACL.EntryKey keyBenwa = new MailboxACL.EntryKey("benwa", MailboxACL.NameType.user, false);
         MailboxACL.Rfc4314Rights rights = new MailboxACL.Rfc4314Rights(MailboxACL.Right.Read);
-        cassandraACLMapper.updateACL(MAILBOX_ID, new MailboxACL.ACLCommand(keyBenwa, MailboxACL.EditMode.ADD, rights));
+        cassandraACLMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(keyBenwa).rights(rights).asAddition());
 
         MailboxACL.EntryKey keyBob = new MailboxACL.EntryKey("bob", MailboxACL.NameType.user, false);
         MailboxACL.EntryKey keyAlice = new MailboxACL.EntryKey("alice", MailboxACL.NameType.user, false);
@@ -200,7 +201,7 @@ public class CassandraACLMapperTest {
                 CassandraConfiguration.DEFAULT_CONFIGURATION,
                 runnable);
             try {
-                aclMapper.updateACL(MAILBOX_ID, new MailboxACL.ACLCommand(key, MailboxACL.EditMode.ADD, rights));
+                aclMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(key).rights(rights).asAddition());
             } catch (MailboxException exception) {
                 throw Throwables.propagate(exception);
             }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d5bb0b4e/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
index adf7dba..321fd75 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
@@ -76,10 +76,7 @@ public abstract class MailboxMapperACLTest {
     public void updateAclShouldSaveAclWhenReplace() throws MailboxException {
         EntryKey key = new EntryKey("user", NameType.user, NEGATIVE);
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REPLACE,
-                rights));
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(rights).asReplacement());
 
         assertThat(
             mailboxMapper.findMailboxById(benwaInboxMailbox.getMailboxId())
@@ -94,14 +91,9 @@ public abstract class MailboxMapperACLTest {
         EntryKey key = new EntryKey("user", NameType.user, NEGATIVE);
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
         Rfc4314Rights newRights = new Rfc4314Rights(Right.WriteSeenFlag, Right.CreateMailbox, Right.Administer, Right.PerformExpunge, Right.DeleteMessages);
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REPLACE,
-                rights));
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REPLACE,
-                newRights));
+
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(rights).asReplacement());
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(newRights).asReplacement());
 
         assertThat(
             mailboxMapper.findMailboxById(benwaInboxMailbox.getMailboxId())
@@ -117,14 +109,8 @@ public abstract class MailboxMapperACLTest {
         EntryKey key2 = new EntryKey("user", NameType.user, POSITIVE);
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
         Rfc4314Rights newRights = new Rfc4314Rights(Right.WriteSeenFlag, Right.CreateMailbox, Right.Administer, Right.PerformExpunge, Right.DeleteMessages);
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key1,
-                MailboxACL.EditMode.REPLACE,
-                rights));
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key2,
-                MailboxACL.EditMode.REPLACE,
-                newRights));
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key1).rights(rights).asReplacement());
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key2).rights(newRights).asReplacement());
 
         assertThat(
             mailboxMapper.findMailboxById(benwaInboxMailbox.getMailboxId())
@@ -141,14 +127,8 @@ public abstract class MailboxMapperACLTest {
         EntryKey key2 = new EntryKey("user", NameType.group, NEGATIVE);
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
         Rfc4314Rights newRights = new Rfc4314Rights(Right.WriteSeenFlag, Right.CreateMailbox, Right.Administer, Right.PerformExpunge, Right.DeleteMessages);
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key1,
-                MailboxACL.EditMode.REPLACE,
-                rights));
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key2,
-                MailboxACL.EditMode.REPLACE,
-                newRights));
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key1).rights(rights).asReplacement());
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key2).rights(newRights).asReplacement());
 
         assertThat(
             mailboxMapper.findMailboxById(benwaInboxMailbox.getMailboxId())
@@ -164,14 +144,8 @@ public abstract class MailboxMapperACLTest {
         EntryKey key = new EntryKey("user", NameType.user, NEGATIVE);
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
         Rfc4314Rights newRights = new Rfc4314Rights();
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REPLACE,
-                rights));
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REPLACE,
-                newRights));
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(rights).asReplacement());
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(newRights).asReplacement());
 
         assertThat(
             mailboxMapper.findMailboxById(benwaInboxMailbox.getMailboxId())
@@ -186,14 +160,8 @@ public abstract class MailboxMapperACLTest {
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
         Rfc4314Rights newRights = new Rfc4314Rights(Right.WriteSeenFlag, Right.CreateMailbox, Right.Administer, Right.PerformExpunge, Right.DeleteMessages);
         Rfc4314Rights bothRights = new Rfc4314Rights(Right.Administer, Right.WriteSeenFlag, Right.PerformExpunge, Right.Write, Right.CreateMailbox, Right.DeleteMessages);
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REPLACE,
-                rights));
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.ADD,
-                newRights));
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(rights).asReplacement());
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(newRights).asAddition());
 
         assertThat(
             mailboxMapper.findMailboxById(benwaInboxMailbox.getMailboxId())
@@ -209,14 +177,8 @@ public abstract class MailboxMapperACLTest {
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
         Rfc4314Rights removedRights = new Rfc4314Rights(Right.WriteSeenFlag, Right.PerformExpunge);
         Rfc4314Rights finalRights = new Rfc4314Rights(Right.Administer, Right.Write);
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REPLACE,
-                rights));
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REMOVE,
-                removedRights));
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(rights).asReplacement());
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(removedRights).asRemoval());
 
         assertThat(
             mailboxMapper.findMailboxById(benwaInboxMailbox.getMailboxId())
@@ -232,14 +194,8 @@ public abstract class MailboxMapperACLTest {
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
         Rfc4314Rights removedRights = new Rfc4314Rights(Right.WriteSeenFlag, Right.PerformExpunge, Right.Lookup);
         Rfc4314Rights finalRights = new Rfc4314Rights(Right.Administer, Right.Write);
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REPLACE,
-                rights));
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REMOVE,
-                removedRights));
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(rights).asReplacement());
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(removedRights).asRemoval());
 
         assertThat(
             mailboxMapper.findMailboxById(benwaInboxMailbox.getMailboxId())
@@ -254,12 +210,8 @@ public abstract class MailboxMapperACLTest {
         EntryKey key = new EntryKey("user", NameType.user, NEGATIVE);
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
         Rfc4314Rights newRights = new Rfc4314Rights(Right.WriteSeenFlag, Right.CreateMailbox, Right.Administer, Right.PerformExpunge, Right.DeleteMessages);
-        mailboxMapper.updateACL(benwaInboxMailbox,
-            new MailboxACL.ACLCommand(key,
-                MailboxACL.EditMode.REPLACE,
-                rights));
-        mailboxMapper.setACL(benwaInboxMailbox,
-            new MailboxACL(ImmutableMap.of(key, newRights)));
+        mailboxMapper.updateACL(benwaInboxMailbox, MailboxACL.command().key(key).rights(rights).asReplacement());
+        mailboxMapper.setACL(benwaInboxMailbox, new MailboxACL(ImmutableMap.of(key, newRights)));
 
         assertThat(
             mailboxMapper.findMailboxById(benwaInboxMailbox.getMailboxId())

http://git-wip-us.apache.org/repos/asf/james-project/blob/d5bb0b4e/protocols/imap/src/main/java/org/apache/james/imap/processor/DeleteACLProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/DeleteACLProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/DeleteACLProcessor.java
index 36286f1..0394a05 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/DeleteACLProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/DeleteACLProcessor.java
@@ -112,8 +112,11 @@ public class DeleteACLProcessor extends AbstractMailboxProcessor<DeleteACLReques
                 // Note that Section 6 recommends additional identifier’s verification
                 // steps.
 
-                mailboxManager.applyRightsCommand(mailboxPath,
-                    new MailboxACL.ACLCommand(key, EditMode.REPLACE, null), mailboxSession);
+                mailboxManager.applyRightsCommand(
+                    mailboxPath,
+                    MailboxACL.command().key(key).noRights().asReplacement(),
+                    mailboxSession
+                );
 
                 okComplete(command, tag, responder);
                 // FIXME should we send unsolicited responses here?

http://git-wip-us.apache.org/repos/asf/james-project/blob/d5bb0b4e/protocols/imap/src/main/java/org/apache/james/imap/processor/SetACLProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/SetACLProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/SetACLProcessor.java
index f03c6f6..eb22c1d 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/SetACLProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/SetACLProcessor.java
@@ -130,7 +130,8 @@ public class SetACLProcessor extends AbstractMailboxProcessor<SetACLRequest> imp
                 // steps.
 
                 mailboxManager.applyRightsCommand(mailboxPath,
-                    new MailboxACL.ACLCommand(key, editMode, mailboxAclRights), mailboxSession);
+                    MailboxACL.command().key(key).mode(editMode).rights(mailboxAclRights).build(),
+                    mailboxSession);
 
                 okComplete(command, tag, responder);
                 // FIXME should we send unsolicited responses here?

http://git-wip-us.apache.org/repos/asf/james-project/blob/d5bb0b4e/protocols/imap/src/test/java/org/apache/james/imap/processor/DeleteACLProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/DeleteACLProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/DeleteACLProcessorTest.java
index b6c79cb..73f3bf3 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/DeleteACLProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/DeleteACLProcessorTest.java
@@ -199,7 +199,7 @@ public class DeleteACLProcessorTest {
         expectations.allowing(mailboxManagerStub).hasRight(expectations.with(path), expectations.with(Expectations.equal(MailboxACL.Right.Administer)), expectations.with(Expectations.same(mailboxSessionStub)));
         expectations.will(Expectations.returnValue(true));
         
-        expectations.allowing(mailboxManagerStub).applyRightsCommand(expectations.with(path), expectations.with(new MailboxACL.ACLCommand(user1Key, EditMode.REPLACE, null)), expectations.with(mailboxSessionStub));
+        expectations.allowing(mailboxManagerStub).applyRightsCommand(expectations.with(path), expectations.with(MailboxACL.command().key(user1Key).noRights().asReplacement()), expectations.with(mailboxSessionStub));
 
         expectations.allowing(metaDataStub).getACL();
         expectations.will(Expectations.returnValue(acl));

http://git-wip-us.apache.org/repos/asf/james-project/blob/d5bb0b4e/protocols/imap/src/test/java/org/apache/james/imap/processor/SetACLProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/SetACLProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/SetACLProcessorTest.java
index ab4d8e8..b09a8ae 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/SetACLProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/SetACLProcessorTest.java
@@ -229,7 +229,7 @@ public class SetACLProcessorTest {
         expectations.allowing(mailboxManagerStub).hasRight(expectations.with(path), expectations.with(Expectations.equal(MailboxACL.Right.Administer)), expectations.with(Expectations.same(mailboxSessionStub)));
         expectations.will(Expectations.returnValue(true));
         
-        expectations.allowing(mailboxManagerStub).applyRightsCommand(expectations.with(path), expectations.with(Expectations.equal(new MailboxACL.ACLCommand(user1Key, editMode, setRights))), expectations.with(mailboxSessionStub));
+        expectations.allowing(mailboxManagerStub).applyRightsCommand(expectations.with(path), expectations.with(Expectations.equal(MailboxACL.command().key(user1Key).mode(editMode).rights(setRights).build())), expectations.with(mailboxSessionStub));
 
         expectations.allowing(metaDataStub).getACL();
         expectations.will(Expectations.returnValue(acl));

http://git-wip-us.apache.org/repos/asf/james-project/blob/d5bb0b4e/server/container/guice/mailbox/src/main/java/org/apache/james/modules/ACLProbeImpl.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/ACLProbeImpl.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/ACLProbeImpl.java
index a25c4d9..0435e37 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/ACLProbeImpl.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/ACLProbeImpl.java
@@ -24,9 +24,8 @@ import javax.inject.Inject;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxACL.ACLCommand;
-import org.apache.james.mailbox.model.MailboxACL.EditMode;
-import org.apache.james.mailbox.model.MailboxACL.EntryKey;
 import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.probe.ACLProbe;
@@ -44,8 +43,7 @@ public class ACLProbeImpl implements GuiceProbe, ACLProbe {
     public void replaceRights(MailboxPath mailboxPath, String targetUser, Rfc4314Rights rights) throws MailboxException {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(mailboxPath.getUser());
 
-        EntryKey key = EntryKey.createUser(targetUser);
-        ACLCommand mailboxACLCommand = new ACLCommand(key, EditMode.REPLACE, rights);
-        mailboxManager.applyRightsCommand(mailboxPath, mailboxACLCommand, mailboxSession);
+        ACLCommand command = MailboxACL.command().forUser(targetUser).rights(rights).asReplacement();
+        mailboxManager.applyRightsCommand(mailboxPath, command, mailboxSession);
     }
 }
\ No newline at end of file


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


[27/29] james-project git commit: JAMES-2169 Fix typo

Posted by bt...@apache.org.
JAMES-2169 Fix typo


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

Branch: refs/heads/master
Commit: dbaadbd64d3c2aeb686b544949d15f246b1054df
Parents: a7ffeb3
Author: benwa <bt...@linagora.com>
Authored: Tue Oct 3 18:50:20 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:24:50 2017 +0700

----------------------------------------------------------------------
 .../apache/james/mpt/imapmailbox/suite/AuthenticatedState.java | 6 +++---
 .../apache/james/adapter/mailbox/MailboxManagementTest.java    | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/dbaadbd6/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
index 8a2d075..d2b2f2b 100644
--- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
@@ -410,14 +410,14 @@ public abstract class AuthenticatedState extends BasicImapCommands {
     }
 
     @Test
-    public void listShouldNotListMailboxWithOtherNamspaceUS() throws Exception {
+    public void listShouldNotListMailboxWithOtherNamespaceUS() throws Exception {
         Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
         system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
         simpleScriptedTestProtocol.run("ListMailboxes");
     }
 
     @Test
-    public void listShouldNotListMailboxWithOtherNamspaceITALY() throws Exception {
+    public void listShouldNotListMailboxWithOtherNamespaceITALY() throws Exception {
         Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
         system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
         simpleScriptedTestProtocol
@@ -426,7 +426,7 @@ public abstract class AuthenticatedState extends BasicImapCommands {
     }
 
     @Test
-    public void listShouldNotListMailboxWithOtherNamspaceKOREA() throws Exception {
+    public void listShouldNotListMailboxWithOtherNamespaceKOREA() throws Exception {
         Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
         system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
         simpleScriptedTestProtocol

http://git-wip-us.apache.org/repos/asf/james-project/blob/dbaadbd6/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
index 4c4f130..b5e6204 100644
--- a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
+++ b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
@@ -149,7 +149,7 @@ public class MailboxManagementTest {
     }
 
     @Test
-    public void createMailboxShouldThrowIfMailboxAlreadyExist() throws Exception {
+    public void createMailboxShouldThrowIfMailboxAlreadyExists() throws Exception {
         MailboxPath path = MailboxPath.forUser(USER, "name");
         Mailbox mailbox = new SimpleMailbox(path, UID_VALIDITY);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);


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


[14/29] james-project git commit: JAMES-2169 Various JMAP integration testing improvements

Posted by bt...@apache.org.
JAMES-2169 Various JMAP integration testing improvements


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

Branch: refs/heads/master
Commit: 0f5a0f2640fe309046045874c719afd7d840fea6
Parents: 5edd32a
Author: benwa <bt...@linagora.com>
Authored: Mon Oct 2 09:49:58 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:20:55 2017 +0700

----------------------------------------------------------------------
 .../integration/GetMessageListMethodTest.java   |  41 +-
 .../integration/SetMailboxesMethodTest.java     | 468 ++++++++-----------
 .../integration/SetMessagesMethodTest.java      |  31 +-
 .../integration/cucumber/DownloadStepdefs.java  |  11 +-
 .../cucumber/GetMessagesMethodStepdefs.java     |  12 +-
 .../integration/cucumber/MainStepdefs.java      |   8 +
 .../cucumber/SetMailboxesMethodStepdefs.java    |  13 +-
 .../integration/cucumber/UserStepdefs.java      |   8 +-
 8 files changed, 239 insertions(+), 353 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/0f5a0f26/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
index 65e734c..dea3316 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
@@ -48,7 +48,6 @@ import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.probe.MailboxProbe;
 import org.apache.james.mime4j.dom.Message;
 import org.apache.james.mime4j.dom.MessageWriter;
@@ -126,17 +125,15 @@ public abstract class GetMessageListMethodTest {
 
     @Test
     public void getMessageListShouldNotDuplicateMessagesInSeveralMailboxes() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
-        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        Mailbox mailbox2 = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
+        MailboxId mailboxId2 = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
 
         ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         await();
 
-        jmapServer.getProbe(JmapGuiceProbe.class).setInMailboxes(message.getMessageId(), username, mailbox.getMailboxId(), mailbox2.getMailboxId());
+        jmapServer.getProbe(JmapGuiceProbe.class).setInMailboxes(message.getMessageId(), username, mailboxId, mailboxId2);
 
         given()
             .header("Authorization", accessToken.serialize())
@@ -624,13 +621,11 @@ public abstract class GetMessageListMethodTest {
 
     @Test
     public void getMessageListShouldFilterMessagesWhenInMailboxesFilterMatches() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
         ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
         await();
 
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox").getMailboxId();
-        
         given()
             .header("Authorization", accessToken.serialize())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId.serialize() + "\"]}}, \"#0\"]]")
@@ -644,16 +639,13 @@ public abstract class GetMessageListMethodTest {
 
     @Test
     public void getMessageListShouldFilterMessagesWhenMultipleInMailboxesFilterMatches() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
         ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
+        MailboxId mailboxId2 = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
         await();
 
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox").getMailboxId();
-        MailboxId mailboxId2 = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2").getMailboxId();
-
         given()
             .header("Authorization", accessToken.serialize())
             .body(String.format("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"%s\", \"%s\"]}}, \"#0\"]]", mailboxId.serialize(), mailboxId2.serialize()))
@@ -667,12 +659,10 @@ public abstract class GetMessageListMethodTest {
 
     @Test
     public void getMessageListShouldFilterMessagesWhenNotInMailboxesFilterMatches() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
         mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox").getMailboxId();
 
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
         await();
         
         given()
@@ -688,15 +678,13 @@ public abstract class GetMessageListMethodTest {
 
     @Test
     public void getMessageListShouldFilterMessagesWhenNotInMailboxesFilterMatchesTwice() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
         mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox").getMailboxId();
 
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
+        MailboxId mailbox2Id = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
         mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox2"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        MailboxId mailbox2Id = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2").getMailboxId();
         await();
 
         given()
@@ -712,10 +700,9 @@ public abstract class GetMessageListMethodTest {
 
     @Test
     public void getMessageListShouldFilterMessagesWhenIdenticalNotInMailboxesAndInmailboxesFilterMatch() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
         mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox").getMailboxId();
         await();
 
         given()
@@ -735,8 +722,7 @@ public abstract class GetMessageListMethodTest {
         ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
-        MailboxId mailbox2Id = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2").getMailboxId();
+        MailboxId mailbox2Id = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
         await();
 
         given()
@@ -772,9 +758,8 @@ public abstract class GetMessageListMethodTest {
 
     @Test
     public void getMessageListShouldFilterMessagesWhenInMailboxesFilterDoesntMatches() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "emptyMailbox");
-        MailboxId emptyMailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "emptyMailbox").getMailboxId();
-        
+        MailboxId emptyMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "emptyMailbox");
+
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
         mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f5a0f26/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
index cc48707..56fae73 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
@@ -86,14 +86,13 @@ public abstract class SetMailboxesMethodTest {
     private String username;
     private GuiceJamesServer jmapServer;
     private MailboxProbe mailboxProbe;
-    private DataProbe dataProbe;
-    
+
     @Before
     public void setup() throws Throwable {
         jmapServer = createJmapServer();
         jmapServer.start();
         mailboxProbe = jmapServer.getProbe(MailboxProbeImpl.class);
-        dataProbe = jmapServer.getProbe(DataProbeImpl.class);
+        DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
         
         RestAssured.requestSpecification = new RequestSpecBuilder()
                 .setContentType(ContentType.JSON)
@@ -155,22 +154,19 @@ public abstract class SetMailboxesMethodTest {
             .body(ARGUMENTS + ".notCreated", aMapWithSize(1))
             .body(ARGUMENTS + ".notCreated", hasEntry(equalTo("create-id01"), Matchers.allOf(
                     hasEntry(equalTo("type"), equalTo("invalidArguments")),
-                    hasEntry(equalTo("description"), equalTo("The mailbox name length is too long")))
-            ));
+                    hasEntry(equalTo("description"), equalTo("The mailbox name length is too long")))));
     }
 
     @Test
     public void setMailboxesShouldNotUpdateMailboxWhenOverLimitName() {
         String overLimitName = StringUtils.repeat("a", MAILBOX_NAME_LENGTH_64K);
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"name\" : \"" + overLimitName + "\"" +
                 "        }" +
                 "      }" +
@@ -178,19 +174,19 @@ public abstract class SetMailboxesMethodTest {
                 "    \"#0\"" +
                 "  ]" +
                 "]";
+
         given()
             .header("Authorization", accessToken.serialize())
             .body(requestBody)
-            .when()
+        .when()
             .post("/jmap")
-            .then()
+        .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
             .body(ARGUMENTS + ".notUpdated", aMapWithSize(1))
-            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId), Matchers.allOf(
+            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId.serialize()), Matchers.allOf(
                     hasEntry(equalTo("type"), equalTo("invalidArguments")),
-                    hasEntry(equalTo("description"), equalTo("The mailbox name length is too long")))
-            ));
+                    hasEntry(equalTo("description"), equalTo("The mailbox name length is too long")))));
     }
 
     @Test
@@ -213,9 +209,9 @@ public abstract class SetMailboxesMethodTest {
         given()
             .header("Authorization", accessToken.serialize())
             .body(requestBody)
-            .when()
+        .when()
             .post("/jmap")
-            .then()
+        .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
             .body(ARGUMENTS + ".created", hasKey("create-id01"));
@@ -224,15 +220,13 @@ public abstract class SetMailboxesMethodTest {
     @Test
     public void setMailboxesShouldUpdateMailboxWhenOverLimitName() throws Exception {
         String overLimitName = StringUtils.repeat("a", MAILBOX_NAME_LENGTH_64K);
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"name\" : \"" + overLimitName + "\"" +
                 "        }" +
                 "      }" +
@@ -243,14 +237,14 @@ public abstract class SetMailboxesMethodTest {
         given()
             .header("Authorization", accessToken.serialize())
             .body(requestBody)
-            .when()
+        .when()
             .post("/jmap")
-            .then()
+        .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".updated", contains(mailboxId));
+            .body(ARGUMENTS + ".updated", contains(mailboxId.serialize()));
 
-        assertThat(jmapServer.getProbe(MailboxProbeImpl.class).listSubscriptions(username)).containsOnly(overLimitName);
+        assertThat(mailboxProbe.listSubscriptions(username)).containsOnly(overLimitName);
     }
 
     @Test
@@ -279,12 +273,12 @@ public abstract class SetMailboxesMethodTest {
             .body(NAME, equalTo("mailboxesSet"))
             .body(ARGUMENTS + ".created", hasKey("create-id01"));
 
-        assertThat(jmapServer.getProbe(MailboxProbeImpl.class).listSubscriptions(username)).containsOnly("foo");
+        assertThat(mailboxProbe.listSubscriptions(username)).containsOnly("foo");
     }
 
     @Test
     public void userShouldBeSubscribedOnCreatedMailboxWhenCreateChildOfInboxMailbox() throws Exception {
-        MailboxId inboxId = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, MailboxConstants.INBOX).getMailboxId();
+        MailboxId inboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, MailboxConstants.INBOX).getMailboxId();
 
         String requestBody =
             "[" +
@@ -307,23 +301,21 @@ public abstract class SetMailboxesMethodTest {
         .when()
             .post("/jmap");
 
-        assertThat(jmapServer.getProbe(MailboxProbeImpl.class).listSubscriptions(username)).containsOnly(DefaultMailboxes.INBOX + ".foo");
+        assertThat(mailboxProbe.listSubscriptions(username)).containsOnly(DefaultMailboxes.INBOX + ".foo");
     }
 
     @Test
     public void subscriptionUserShouldBeChangedWhenUpdateMailbox() throws Exception {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "root");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "root");
 
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
 
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"name\" : \"mySecondBox\"" +
                 "        }" +
                 "      }" +
@@ -336,7 +328,7 @@ public abstract class SetMailboxesMethodTest {
             .body(requestBody)
             .post("/jmap");
 
-        assertThat(jmapServer.getProbe(MailboxProbeImpl.class).listSubscriptions(username)).containsOnly("mySecondBox");
+        assertThat(mailboxProbe.listSubscriptions(username)).containsOnly("mySecondBox");
     }
 
     @Test
@@ -365,7 +357,7 @@ public abstract class SetMailboxesMethodTest {
             .body(NAME, equalTo("mailboxesSet"))
             .body(ARGUMENTS + ".created", hasKey("create-id01"));
 
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "foo");
+        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "foo");
         String mailboxId = mailbox.getMailboxId().serialize();
 
         requestBody =
@@ -387,18 +379,17 @@ public abstract class SetMailboxesMethodTest {
             .body(requestBody)
             .post("/jmap");
 
-        assertThat(jmapServer.getProbe(MailboxProbeImpl.class).listSubscriptions(username)).containsOnly("mySecondBox");
+        assertThat(mailboxProbe.listSubscriptions(username)).containsOnly("mySecondBox");
     }
 
     @Test
     public void subscriptionUserShouldBeDeletedWhenDestroyMailbox() throws Exception {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
-                "      \"destroy\": [\"" + mailbox.getMailboxId().serialize() + "\"]" +
+                "      \"destroy\": [\"" + mailboxId.serialize() + "\"]" +
                 "    }," +
                 "    \"#0\"" +
                 "  ]" +
@@ -412,7 +403,7 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200);
 
-        assertThat(jmapServer.getProbe(MailboxProbeImpl.class).listSubscriptions(username)).isEmpty();
+        assertThat(mailboxProbe.listSubscriptions(username)).isEmpty();
     }
 
     @Test
@@ -441,7 +432,7 @@ public abstract class SetMailboxesMethodTest {
             .body(NAME, equalTo("mailboxesSet"))
             .body(ARGUMENTS + ".created", hasKey("create-id01"));
 
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "foo");
+        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "foo");
 
         requestBody =
             "[" +
@@ -461,7 +452,7 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200);
 
-        assertThat(jmapServer.getProbe(MailboxProbeImpl.class).listSubscriptions(username)).isEmpty();
+        assertThat(mailboxProbe.listSubscriptions(username)).isEmpty();
     }
 
     @Test
@@ -624,7 +615,7 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldCreateMailboxWhenChildOfInboxMailbox() {
-        MailboxId inboxId = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, MailboxConstants.INBOX).getMailboxId();
+        MailboxId inboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, MailboxConstants.INBOX).getMailboxId();
 
         String requestBody =
             "[" +
@@ -765,7 +756,7 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldReturnNotCreatedWhenMailboxAlreadyExists() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
@@ -867,14 +858,12 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldReturnDestroyedMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
-                "      \"destroy\": [\"" + mailboxId + "\"]" +
+                "      \"destroy\": [\"" + mailboxId.serialize() + "\"]" +
                 "    }," +
                 "    \"#0\"" +
                 "  ]" +
@@ -888,18 +877,17 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".destroyed", contains(mailboxId));
+            .body(ARGUMENTS + ".destroyed", contains(mailboxId.serialize()));
     }
 
     @Test
     public void setMailboxesShouldDestroyMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
-                "      \"destroy\": [\"" + mailbox.getMailboxId().serialize() + "\"]" +
+                "      \"destroy\": [\"" + mailboxId.serialize() + "\"]" +
                 "    }," +
                 "    \"#0\"" +
                 "  ]" +
@@ -953,15 +941,13 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldReturnNotDestroyedWhenMailboxHasChild() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox.child");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox.child");
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
-                "      \"destroy\": [\"" + mailboxId + "\"]" +
+                "      \"destroy\": [\"" + mailboxId.serialize() + "\"]" +
                 "    }," +
                 "    \"#0\"" +
                 "  ]" +
@@ -976,14 +962,14 @@ public abstract class SetMailboxesMethodTest {
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
             .body(ARGUMENTS + ".notDestroyed", aMapWithSize(1))
-            .body(ARGUMENTS + ".notDestroyed", hasEntry(equalTo(mailboxId), Matchers.allOf(
+            .body(ARGUMENTS + ".notDestroyed", hasEntry(equalTo(mailboxId.serialize()), Matchers.allOf(
                     hasEntry(equalTo("type"), equalTo("mailboxHasChild")),
-                    hasEntry(equalTo("description"), equalTo("The mailbox '" + mailboxId + "' has a child.")))));
+                    hasEntry(equalTo("description"), equalTo("The mailbox '" + mailboxId.serialize() + "' has a child.")))));
     }
 
     @Test
     public void setMailboxesShouldReturnNotDestroyedWhenSystemMailbox() {
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, MailboxConstants.INBOX);
+        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, MailboxConstants.INBOX);
         String mailboxId = mailbox.getMailboxId().serialize();
         String requestBody =
             "[" +
@@ -1011,17 +997,13 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldReturnDestroyedWhenParentThenChildMailboxes() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "parent");
-        Mailbox parentMailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "parent");
-        String parentMailboxId = parentMailbox.getMailboxId().serialize();
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "parent.child");
-        Mailbox childMailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "parent.child");
-        String childMailboxId = childMailbox.getMailboxId().serialize();
+        MailboxId parentMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "parent");
+        MailboxId childMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "parent.child");
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
-                "      \"destroy\": [\"" + parentMailboxId + "\",\"" + childMailboxId + "\"]" +
+                "      \"destroy\": [\"" + parentMailboxId.serialize() + "\",\"" + childMailboxId.serialize() + "\"]" +
                 "    }," +
                 "    \"#0\"" +
                 "  ]" +
@@ -1035,22 +1017,18 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".destroyed", containsInAnyOrder(parentMailboxId, childMailboxId));
+            .body(ARGUMENTS + ".destroyed", containsInAnyOrder(parentMailboxId.serialize(), childMailboxId.serialize()));
     }
 
     @Test
     public void setMailboxesShouldReturnDestroyedWhenChildThenParentMailboxes() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "parent");
-        Mailbox parentMailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "parent");
-        String parentMailboxId = parentMailbox.getMailboxId().serialize();
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "parent.child");
-        Mailbox childMailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "parent.child");
-        String childMailboxId = childMailbox.getMailboxId().serialize();
+        MailboxId parentMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "parent");
+        MailboxId childMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "parent.child");
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
-                "      \"destroy\": [\"" + childMailboxId + "\",\"" + parentMailboxId + "\"]" +
+                "      \"destroy\": [\"" + childMailboxId.serialize() + "\",\"" + parentMailboxId.serialize() + "\"]" +
                 "    }," +
                 "    \"#0\"" +
                 "  ]" +
@@ -1064,12 +1042,11 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".destroyed", containsInAnyOrder(parentMailboxId, childMailboxId));
+            .body(ARGUMENTS + ".destroyed", containsInAnyOrder(parentMailboxId.serialize(), childMailboxId.serialize()));
     }
 
     private MailboxId getRemovedMailboxId() {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved");
-        MailboxId removedId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved").getMailboxId();
+        MailboxId removedId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved");
         mailboxProbe.deleteMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved");
         return removedId;
     }
@@ -1106,15 +1083,13 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldReturnUpdatedMailboxIdWhenNoUpdateAskedOnExistingMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "        }" +
                     "      }" +
                     "    }," +
@@ -1130,20 +1105,18 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".updated", contains(mailboxId));
+            .body(ARGUMENTS + ".updated", contains(mailboxId.serialize()));
     }
 
     @Test
     public void setMailboxesShouldReturnUpdatedWhenNameUpdateAskedOnExistingMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"name\" : \"myRenamedBox\"" +
                     "        }" +
                     "      }" +
@@ -1160,20 +1133,18 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".updated", contains(mailboxId));
+            .body(ARGUMENTS + ".updated", contains(mailboxId.serialize()));
     }
 
     @Test
     public void updateShouldReturnOkWhenClearingSharedWith() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
             "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"sharedWith\" : {}" +
                 "        }" +
                 "      }" +
@@ -1190,35 +1161,35 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".updated", contains(mailboxId));
+            .body(ARGUMENTS + ".updated", contains(mailboxId.serialize()));
     }
 
     @Test
     public void updateShouldReturnOkWhenSettingNewACL() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
-
-        given()
-            .header("Authorization", accessToken.serialize())
-            .body("[" +
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
+        String requestBody =
+            "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"sharedWith\" : {\"user\": [\"a\", \"w\"]}" +
                 "        }" +
                 "      }" +
                 "    }," +
                 "    \"#0\"" +
                 "  ]" +
-                "]")
+                "]";
+
+        given()
+            .header("Authorization", accessToken.serialize())
+            .body(requestBody)
         .when()
             .post("/jmap")
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".updated", contains(mailboxId));
+            .body(ARGUMENTS + ".updated", contains(mailboxId.serialize()));
     }
 
     @Test
@@ -1312,29 +1283,29 @@ public abstract class SetMailboxesMethodTest {
     public void updateShouldApplyWhenSettingNewACL() {
         String myBox = "myBox";
         String user = "user";
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, myBox);
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
-
-        with()
-            .header("Authorization", accessToken.serialize())
-            .body("[" +
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, myBox);
+        String requestBody =
+            "[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"sharedWith\" : {\"" + user + "\": [\"a\", \"w\"]}" +
                 "        }" +
                 "      }" +
                 "    }," +
                 "    \"#0\"" +
                 "  ]" +
-                "]")
+                "]";
+
+        with()
+            .header("Authorization", accessToken.serialize())
+            .body(requestBody)
             .post("/jmap");
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -1348,9 +1319,7 @@ public abstract class SetMailboxesMethodTest {
     public void updateShouldModifyStoredDataWhenUpdatingACL() {
         String myBox = "myBox";
         String user = "user";
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, myBox);
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, myBox);
 
         with()
             .header("Authorization", accessToken.serialize())
@@ -1358,7 +1327,7 @@ public abstract class SetMailboxesMethodTest {
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"sharedWith\" : {\"" + user + "\": [\"a\", \"w\"]}" +
                 "        }" +
                 "      }" +
@@ -1374,7 +1343,7 @@ public abstract class SetMailboxesMethodTest {
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"sharedWith\" : {\"" + user + "\": [\"a\", \"t\"]}" +
                 "        }" +
                 "      }" +
@@ -1386,7 +1355,7 @@ public abstract class SetMailboxesMethodTest {
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -1400,9 +1369,7 @@ public abstract class SetMailboxesMethodTest {
     public void updateShouldClearStoredDataWhenDeleteACL() {
         String myBox = "myBox";
         String user = "user";
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, myBox);
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, myBox);
 
         with()
             .header("Authorization", accessToken.serialize())
@@ -1410,7 +1377,7 @@ public abstract class SetMailboxesMethodTest {
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"sharedWith\" : {\"" + user + "\": [\"a\", \"w\"]}" +
                 "        }" +
                 "      }" +
@@ -1426,7 +1393,7 @@ public abstract class SetMailboxesMethodTest {
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"sharedWith\" : {}" +
                 "        }" +
                 "      }" +
@@ -1438,7 +1405,7 @@ public abstract class SetMailboxesMethodTest {
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -1453,9 +1420,7 @@ public abstract class SetMailboxesMethodTest {
         String myBox = "myBox";
         String user1 = "user1";
         String user2 = "user2";
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, myBox);
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, myBox);
 
         with()
             .header("Authorization", accessToken.serialize())
@@ -1463,7 +1428,7 @@ public abstract class SetMailboxesMethodTest {
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"sharedWith\" : {\"" + user1 + "\": [\"a\", \"w\"]}" +
                 "        }" +
                 "      }" +
@@ -1479,7 +1444,7 @@ public abstract class SetMailboxesMethodTest {
                 "  [ \"setMailboxes\"," +
                 "    {" +
                 "      \"update\": {" +
-                "        \"" + mailboxId + "\" : {" +
+                "        \"" + mailboxId.serialize() + "\" : {" +
                 "          \"sharedWith\" : {\"" + user2 + "\": [\"a\", \"w\"]}" +
                 "        }" +
                 "      }" +
@@ -1491,7 +1456,7 @@ public abstract class SetMailboxesMethodTest {
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -1503,15 +1468,13 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldUpdateMailboxNameWhenNameUpdateAskedOnExistingMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"name\" : \"myRenamedBox\"" +
                     "        }" +
                     "      }" +
@@ -1527,7 +1490,7 @@ public abstract class SetMailboxesMethodTest {
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -1539,21 +1502,19 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldReturnMailboxIdWhenMovingToAnotherParentMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe
+            .createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
 
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myChosenParentBox");
-        Mailbox chosenMailboxParent = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myChosenParentBox");
-        String chosenMailboxParentId = chosenMailboxParent.getMailboxId().serialize();
+        MailboxId chosenMailboxParentId = mailboxProbe
+            .createMailbox(MailboxConstants.USER_NAMESPACE, username, "myChosenParentBox");
         
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
-                    "          \"parentId\" : \"" + chosenMailboxParentId + "\"" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
+                    "          \"parentId\" : \"" + chosenMailboxParentId.serialize() + "\"" +
                     "        }" +
                     "      }" +
                     "    }," +
@@ -1569,26 +1530,24 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".updated", contains(mailboxId));
+            .body(ARGUMENTS + ".updated", contains(mailboxId.serialize()));
     }
 
     @Test
     public void setMailboxesShouldUpdateMailboxParentIdWhenMovingToAnotherParentMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
-        
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        Mailbox newParentMailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        String newParentMailboxId = newParentMailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe
+            .createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
+
+        MailboxId newParentMailboxId = mailboxProbe
+            .createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
-                    "          \"parentId\" : \"" + newParentMailboxId + "\"" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
+                    "          \"parentId\" : \"" + newParentMailboxId.serialize() + "\"" +
                     "        }" +
                     "      }" +
                     "    }," +
@@ -1603,35 +1562,34 @@ public abstract class SetMailboxesMethodTest {
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxes"))
             .body(ARGUMENTS + ".list", hasSize(1))
-            .body(ARGUMENTS + ".list[0].parentId", equalTo(newParentMailboxId));
+            .body(ARGUMENTS + ".list[0].parentId", equalTo(newParentMailboxId.serialize()));
     }
 
     @Test
     public void setMailboxesShouldReturnMailboxIdWhenParentIdUpdateAskedOnExistingMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
+        mailboxProbe
+            .createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
 
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
-        
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        Mailbox newParentMailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        String newParentMailboxId = newParentMailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe
+            .createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
+
+        MailboxId newParentMailboxId = mailboxProbe
+            .createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
-                    "          \"parentId\" : \"" + newParentMailboxId + "\"" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
+                    "          \"parentId\" : \"" + newParentMailboxId.serialize() + "\"" +
                     "        }" +
                     "      }" +
                     "    }," +
@@ -1647,28 +1605,24 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".updated", contains(mailboxId));
+            .body(ARGUMENTS + ".updated", contains(mailboxId.serialize()));
     }
 
     @Test
     public void setMailboxesShouldUpdateMailboxParentIdWhenParentIdUpdateAskedOnExistingMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
 
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
-        
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        Mailbox newParentMailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        String newParentMailboxId = newParentMailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
+
+        MailboxId newParentMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
-                    "          \"parentId\" : \"" + newParentMailboxId + "\"" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
+                    "          \"parentId\" : \"" + newParentMailboxId.serialize() + "\"" +
                     "        }" +
                     "      }" +
                     "    }," +
@@ -1683,30 +1637,28 @@ public abstract class SetMailboxesMethodTest {
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxes"))
             .body(ARGUMENTS + ".list", hasSize(1))
-            .body(ARGUMENTS + ".list[0].parentId", equalTo(newParentMailboxId));
+            .body(ARGUMENTS + ".list[0].parentId", equalTo(newParentMailboxId.serialize()));
     }
 
     @Test
     public void setMailboxesShouldReturnMailboxIdWhenParentIdUpdateAskedAsOrphanForExistingMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
 
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"parentId\" : null" +
                     "        }" +
                     "      }" +
@@ -1723,23 +1675,21 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".updated", contains(mailboxId));
+            .body(ARGUMENTS + ".updated", contains(mailboxId.serialize()));
     }
 
     @Test
     public void setMailboxesShouldUpdateParentIdWhenAskedAsOrphanForExistingMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
 
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"parentId\" : null" +
                     "        }" +
                     "      }" +
@@ -1755,7 +1705,7 @@ public abstract class SetMailboxesMethodTest {
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -1767,24 +1717,18 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldReturnMailboxIdWhenNameAndParentIdUpdateForExistingMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        Mailbox newParentMailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        String newParentMailboxId = newParentMailbox.getMailboxId().serialize();
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
+        MailboxId newParentMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"name\" : \"myRenamedBox\", " +
-                    "          \"parentId\" : \"" + newParentMailboxId + "\"" +
+                    "          \"parentId\" : \"" + newParentMailboxId.serialize() + "\"" +
                     "        }" +
                     "      }" +
                     "    }," +
@@ -1800,29 +1744,23 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".updated", contains(mailboxId));
+            .body(ARGUMENTS + ".updated", contains(mailboxId.serialize()));
     }
 
     @Test
     public void setMailboxesShoulUpdateMailboxIAndParentIddWhenBothUpdatedForExistingMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        Mailbox newParentMailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        String newParentMailboxId = newParentMailbox.getMailboxId().serialize();
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myPreviousParentBox.myBox");
+        MailboxId newParentMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"name\" : \"myRenamedBox\", " +
-                    "          \"parentId\" : \"" + newParentMailboxId + "\"" +
+                    "          \"parentId\" : \"" + newParentMailboxId.serialize() + "\"" +
                     "        }" +
                     "      }" +
                     "    }," +
@@ -1837,28 +1775,26 @@ public abstract class SetMailboxesMethodTest {
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxes"))
             .body(ARGUMENTS + ".list", hasSize(1))
-            .body(ARGUMENTS + ".list[0].parentId",equalTo(newParentMailboxId))
+            .body(ARGUMENTS + ".list[0].parentId",equalTo(newParentMailboxId.serialize()))
             .body(ARGUMENTS + ".list[0].name",equalTo("myRenamedBox"));
     }
 
     @Test
     public void setMailboxesShouldReturnNotUpdatedWhenNameContainsPathDelimiter() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"name\" : \"my.Box\"" +
                     "        }" +
                     "      }" +
@@ -1875,23 +1811,21 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId), Matchers.allOf(
+            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId.serialize()), Matchers.allOf(
                     hasEntry(equalTo("type"), equalTo("invalidArguments")),
                     hasEntry(equalTo("description"), equalTo("The mailbox 'my.Box' contains an illegal character: '.'"))))); 
     }
 
     @Test
     public void setMailboxesShouldReturnNotUpdatedWhenNewParentDoesntExist() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
         String badParentId = getRemovedMailboxId().serialize();
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"parentId\" : \"" + badParentId + "\"" +
                     "        }" +
                     "      }" +
@@ -1908,24 +1842,19 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId), Matchers.allOf(
+            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId.serialize()), Matchers.allOf(
                     hasEntry(equalTo("type"), equalTo("notFound")),
                     hasEntry(equalTo("description"), containsString(badParentId)))));
     }
 
     @Test
     public void setMailboxesShouldReturnNotUpdatedWhenUpdatingParentIdOfAParentMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "root");
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "root");
 
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox.child");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox.child");
+        MailboxId newParentMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
 
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        Mailbox newParentMailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myNewParentBox");
-        String newParentMailboxId = newParentMailbox.getMailboxId().serialize();
 
 
         String requestBody =
@@ -1933,8 +1862,8 @@ public abstract class SetMailboxesMethodTest {
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
-                    "          \"parentId\" : \"" + newParentMailboxId + "\"" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
+                    "          \"parentId\" : \"" + newParentMailboxId.serialize() + "\"" +
                     "        }" +
                     "      }" +
                     "    }," +
@@ -1950,25 +1879,23 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId), Matchers.allOf(
+            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId.serialize()), Matchers.allOf(
                     hasEntry(equalTo("type"), equalTo("invalidArguments")),
                     hasEntry(equalTo("description"), equalTo("Cannot update a parent mailbox."))))); 
     }
 
     @Test
     public void setMailboxesShouldReturnNotUpdatedWhenRenamingAMailboxToAnAlreadyExistingMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
 
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "mySecondBox");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mySecondBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"name\" : \"mySecondBox\"" +
                     "        }" +
                     "      }" +
@@ -1985,25 +1912,22 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId), Matchers.allOf(
+            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId.serialize()), Matchers.allOf(
                     hasEntry(equalTo("type"), equalTo("invalidArguments")),
                     hasEntry(equalTo("description"), equalTo("Cannot rename a mailbox to an already existing mailbox."))))); 
     }
 
     @Test
     public void setMailboxesShouldReturnUpdatedWhenRenamingAChildMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "root");
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "root");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"name\" : \"mySecondBox\"" +
                     "        }" +
                     "      }" +
@@ -2020,23 +1944,20 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".updated", contains(mailboxId));
+            .body(ARGUMENTS + ".updated", contains(mailboxId.serialize()));
     }
 
     @Test
     public void setMailboxesShouldUpdateMailboxNameWhenRenamingAChildMailbox() {
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "root");
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
-        String mailboxId = mailbox.getMailboxId().serialize();
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "root");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "root.myBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxId + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"name\" : \"mySecondBox\"" +
                     "        }" +
                     "      }" +
@@ -2052,7 +1973,7 @@ public abstract class SetMailboxesMethodTest {
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -2064,8 +1985,7 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldReturnNotUpdatedWhenRenamingSystemMailbox() {
-
-        Mailbox mailbox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, MailboxConstants.INBOX);
+        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, MailboxConstants.INBOX);
         String mailboxId = mailbox.getMailboxId().serialize();
 
         String requestBody =
@@ -2097,17 +2017,14 @@ public abstract class SetMailboxesMethodTest {
 
     @Test
     public void setMailboxesShouldReturnNotUpdatedWhenRenameToSystemMailboxName() {
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        Mailbox mailboxMyBox = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
-        String mailboxIdMyBox = mailboxMyBox.getMailboxId().serialize();
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myBox");
 
         String requestBody =
                 "[" +
                     "  [ \"setMailboxes\"," +
                     "    {" +
                     "      \"update\": {" +
-                    "        \"" + mailboxIdMyBox + "\" : {" +
+                    "        \"" + mailboxId.serialize() + "\" : {" +
                     "          \"name\" : \"outbox\"" +
                     "        }" +
                     "      }" +
@@ -2124,32 +2041,25 @@ public abstract class SetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxesSet"))
-            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxIdMyBox), Matchers.allOf(
+            .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxId.serialize()), Matchers.allOf(
                     hasEntry(equalTo("type"), equalTo("invalidArguments")),
                     hasEntry(equalTo("description"), equalTo("The mailbox 'outbox' is a system mailbox.")))));
     }
 
     @Test
     public void setMailboxesShouldReturnNotUpdatedErrorWhenMovingMailboxTriggersNameConflict() {
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "A");
-        Mailbox mailboxRootA = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "A");
-        String mailboxRootAId = mailboxRootA.getMailboxId().serialize();
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "A.B");
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "A.C");
-
-        jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, "A.B.C");
-        Mailbox mailboxChildToMoveC = jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, username, "A.B.C");
-        String mailboxChildToMoveCId = mailboxChildToMoveC.getMailboxId().serialize();
+        MailboxId mailboxRootAId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "A");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "A.B");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "A.C");
+        MailboxId mailboxChildToMoveCId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "A.B.C");
 
         String requestBody =
               "[" +
                   "  [ \"setMailboxes\"," +
                   "    {" +
                   "      \"update\": {" +
-                  "        \"" + mailboxChildToMoveCId + "\" : {" +
-                  "          \"parentId\" : \"" + mailboxRootAId + "\"" +
+                  "        \"" + mailboxChildToMoveCId.serialize() + "\" : {" +
+                  "          \"parentId\" : \"" + mailboxRootAId.serialize() + "\"" +
                   "        }" +
                   "      }" +
                   "    }," +
@@ -2165,7 +2075,7 @@ public abstract class SetMailboxesMethodTest {
       .then()
           .statusCode(200)
           .body(NAME, equalTo("mailboxesSet"))
-          .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxChildToMoveCId), Matchers.allOf(
+          .body(ARGUMENTS + ".notUpdated", hasEntry(equalTo(mailboxChildToMoveCId.serialize()), Matchers.allOf(
                   hasEntry(equalTo("type"), equalTo("invalidArguments")),
                   hasEntry(equalTo("description"), equalTo("Cannot rename a mailbox to an already existing mailbox.")))));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f5a0f26/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index 06e2cec..ebed0a4 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -67,11 +67,11 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxConstants;
+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.MessageResult;
 import org.apache.james.mailbox.store.event.EventFactory;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.probe.MailboxProbe;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
@@ -1956,8 +1956,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void setMessagesWhenSavingToRegularMailboxShouldNotSendMessage() throws Exception {
         String sender = USERNAME;
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, sender, "regular");
-        Mailbox regularMailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, sender, "regular");
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, sender, "regular");
         String recipientAddress = "recipient" + "@" + USERS_DOMAIN;
         String recipientPassword = "password";
         dataProbe.addUser(recipientAddress, recipientPassword);
@@ -1975,7 +1974,7 @@ public abstract class SetMessagesMethodTest {
             "        \"cc\": [{ \"name\": \"ALICE\"}]," +
             "        \"subject\": \"Thank you for joining example.com!\"," +
             "        \"textBody\": \"Hello someone, and thank you for joining example.com!\"," +
-            "        \"mailboxIds\": [\"" + regularMailbox.getMailboxId().serialize() + "\"]" +
+            "        \"mailboxIds\": [\"" + mailboxId.serialize() + "\"]" +
             "      }}" +
             "    }," +
             "    \"#0\"" +
@@ -2108,9 +2107,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void mailboxIdsShouldBeInDestinationWhenUsingForMove() throws Exception {
         String newMailboxName = "heartFolder";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        Mailbox heartFolder = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        String heartFolderId = heartFolder.getMailboxId().serialize();
+        String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
@@ -2154,9 +2151,7 @@ public abstract class SetMessagesMethodTest {
     public void mailboxIdsShouldBeInDestinationWhenUsingForMoveWithoutTrashFolder() throws Exception {
         mailboxProbe.deleteMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, DefaultMailboxes.TRASH);
         String newMailboxName = "heartFolder";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        Mailbox heartFolder = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        String heartFolderId = heartFolder.getMailboxId().serialize();
+        String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
@@ -2198,9 +2193,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void mailboxIdsShouldNotBeAnymoreInSourceWhenUsingForMove() throws Exception {
         String newMailboxName = "heartFolder";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        Mailbox heartFolder = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        String heartFolderId = heartFolder.getMailboxId().serialize();
+        String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
@@ -2243,9 +2236,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void mailboxIdsShouldBeInBothMailboxWhenUsingForCopy() throws Exception {
         String newMailboxName = "heartFolder";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        Mailbox heartFolder = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        String heartFolderId = heartFolder.getMailboxId().serialize();
+        String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
@@ -2402,9 +2393,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void updateShouldNotReturnErrorWithFlagsAndMailboxUpdate() throws Exception {
         String newMailboxName = "heartFolder";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        Mailbox heartFolder = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        String heartFolderId = heartFolder.getMailboxId().serialize();
+        String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
@@ -2437,9 +2426,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void updateShouldWorkWithFlagsAndMailboxUpdate() throws Exception {
         String newMailboxName = "heartFolder";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        Mailbox heartFolder = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName);
-        String heartFolderId = heartFolder.getMailboxId().serialize();
+        String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),


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


[10/29] james-project git commit: JAMES-2169 enhance development experience by adding logs on failure

Posted by bt...@apache.org.
JAMES-2169 enhance development experience by adding logs on failure


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

Branch: refs/heads/master
Commit: af0aab6b05194ee6c2be10be4aff45c9545f1b1f
Parents: 5266435
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Sep 27 19:21:32 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:19:58 2017 +0700

----------------------------------------------------------------------
 .../james/jmap/methods/integration/GetMailboxesMethodTest.java      | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/af0aab6b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index 46ee024..1a9f568 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -100,6 +100,7 @@ public abstract class GetMailboxesMethodTest {
                 .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(Charsets.UTF_8)))
                 .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
                 .build();
+        RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
 
         String domain = "domain.tld";
         alice = "alice@" + domain;


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


[21/29] james-project git commit: JAMES-2169 Improve MailboxACL.EntryKey create* static methods wording

Posted by bt...@apache.org.
JAMES-2169 Improve MailboxACL.EntryKey create* static methods wording


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

Branch: refs/heads/master
Commit: 2f97ab96f89ad810f439ba7ef3503e2e7382cf7d
Parents: f15ff20
Author: benwa <bt...@linagora.com>
Authored: Tue Oct 3 09:30:09 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:24:11 2017 +0700

----------------------------------------------------------------------
 .../java/org/apache/james/mailbox/model/MailboxACL.java | 12 ++++++------
 .../james/mailbox/acl/UnionMailboxACLResolverTest.java  | 12 ++++++------
 .../apache/james/mailbox/store/StoreMessageManager.java |  2 +-
 .../james/mailbox/store/AbstractMessageManagerTest.java |  9 ++-------
 .../james/mailbox/store/StoreMessageManagerTest.java    |  2 +-
 .../org/apache/james/jmap/model/mailbox/Rights.java     |  2 +-
 .../org/apache/james/jmap/model/mailbox/RightsTest.java |  8 ++++----
 7 files changed, 21 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2f97ab96/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
index d87d85e..e414ebc 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
@@ -352,19 +352,19 @@ public class MailboxACL {
      *
      */
     public static class EntryKey {
-        public static EntryKey createGroup(String name) {
+        public static EntryKey createGroupEntryKey(String name) {
             return new EntryKey(name, NameType.group, false);
         }
 
-        public static EntryKey createGroup(String name, boolean negative) {
+        public static EntryKey createGroupEntryKey(String name, boolean negative) {
             return new EntryKey(name, NameType.group, negative);
         }
 
-        public static EntryKey createUser(String name) {
+        public static EntryKey createUserEntryKey(String name) {
             return new EntryKey(name, NameType.user, false);
         }
 
-        public static EntryKey createUser(String name, boolean negative) {
+        public static EntryKey createUserEntryKey(String name, boolean negative) {
             return new EntryKey(name, NameType.user, negative);
         }
 
@@ -518,12 +518,12 @@ public class MailboxACL {
             }
 
             public Builder forUser(String user) {
-                key = EntryKey.createUser(user);
+                key = EntryKey.createUserEntryKey(user);
                 return this;
             }
 
             public Builder forGroup(String group) {
-                key = EntryKey.createGroup(group);
+                key = EntryKey.createGroupEntryKey(group);
                 return this;
             }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/2f97ab96/mailbox/api/src/test/java/org/apache/james/mailbox/acl/UnionMailboxACLResolverTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/acl/UnionMailboxACLResolverTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/acl/UnionMailboxACLResolverTest.java
index d8ed71b..245be05 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/acl/UnionMailboxACLResolverTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/acl/UnionMailboxACLResolverTest.java
@@ -64,10 +64,10 @@ public class UnionMailboxACLResolverTest {
 
     @Before
     public void setUp() throws Exception {
-        user1Key = EntryKey.createUser(USER_1);
-        user2Key = EntryKey.createUser(USER_2);
-        group1Key = EntryKey.createGroup(GROUP_1);
-        group2Key = EntryKey.createGroup(GROUP_2);
+        user1Key = EntryKey.createUserEntryKey(USER_1);
+        user2Key = EntryKey.createUserEntryKey(USER_2);
+        group1Key = EntryKey.createGroupEntryKey(GROUP_1);
+        group2Key = EntryKey.createGroupEntryKey(GROUP_2);
 
         MailboxACL acl = new MailboxACL(new Entry(MailboxACL.AUTHENTICATED_KEY, MailboxACL.FULL_RIGHTS));
         authenticatedReadListWriteGlobal = new UnionMailboxACLResolver(acl, acl);
@@ -84,10 +84,10 @@ public class UnionMailboxACLResolverTest {
         groupMembershipResolver.addMembership(GROUP_2, USER_2);
 
         user1Read = new MailboxACL(new Entry(user1Key, Rfc4314Rights.fromSerializedRfc4314Rights("r")));
-        user1ReadNegative = new MailboxACL(new Entry(EntryKey.createUser(USER_1, true), Rfc4314Rights.fromSerializedRfc4314Rights("r")));
+        user1ReadNegative = new MailboxACL(new Entry(EntryKey.createUserEntryKey(USER_1, true), Rfc4314Rights.fromSerializedRfc4314Rights("r")));
 
         group1Read = new MailboxACL(new Entry(group1Key, Rfc4314Rights.fromSerializedRfc4314Rights("r")));
-        group1ReadNegative = new MailboxACL(new Entry(EntryKey.createGroup(GROUP_1, true), Rfc4314Rights.fromSerializedRfc4314Rights("r")));
+        group1ReadNegative = new MailboxACL(new Entry(EntryKey.createGroupEntryKey(GROUP_1, true), Rfc4314Rights.fromSerializedRfc4314Rights("r")));
 
         anybodyRead = new MailboxACL(new Entry(MailboxACL.ANYBODY_KEY, Rfc4314Rights.fromSerializedRfc4314Rights("r")));
         anybodyReadNegative = new MailboxACL(new Entry(MailboxACL.ANYBODY_NEGATIVE_KEY, Rfc4314Rights.fromSerializedRfc4314Rights("r")));

http://git-wip-us.apache.org/repos/asf/james-project/blob/2f97ab96/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 7966e38..d903f3d 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
@@ -826,7 +826,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
         if (mailboxSession.getUser().isSameUser(mailbox.getUser())) {
             return acl;
         }
-        MailboxACL.EntryKey userAsKey = MailboxACL.EntryKey.createUser(mailboxSession.getUser().getUserName());
+        MailboxACL.EntryKey userAsKey = MailboxACL.EntryKey.createUserEntryKey(mailboxSession.getUser().getUserName());
         Rfc4314Rights rights = acl.getEntries().getOrDefault(userAsKey, new Rfc4314Rights());
         if (rights.contains(MailboxACL.Right.Administer)) {
             return acl;

http://git-wip-us.apache.org/repos/asf/james-project/blob/2f97ab96/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageManagerTest.java
index d85d342..43ac287 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageManagerTest.java
@@ -25,17 +25,12 @@ import static org.apache.james.mailbox.fixture.MailboxFixture.THIRD_USER;
 import static org.apache.james.mailbox.fixture.MailboxFixture.USER;
 import static org.assertj.core.api.Assertions.assertThat;
 
-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.MessageManager;
-import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.fixture.MailboxFixture;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.MailboxACL;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.junit.Test;
 
 public abstract class AbstractMessageManagerTest {
@@ -68,7 +63,7 @@ public abstract class AbstractMessageManagerTest {
         MessageManager messageManager = mailboxManager.getMailbox(MAILBOX_PATH1, session);
 
         MessageManager.MetaData actual = messageManager.getMetaData(NO_RESET_RECENT, session, MessageManager.MetaData.FetchGroup.NO_COUNT);
-        assertThat(actual.getACL().getEntries()).containsKeys(MailboxACL.EntryKey.createUser(OTHER_USER), MailboxACL.EntryKey.createUser(THIRD_USER));
+        assertThat(actual.getACL().getEntries()).containsKeys(MailboxACL.EntryKey.createUserEntryKey(OTHER_USER), MailboxACL.EntryKey.createUserEntryKey(THIRD_USER));
     }
 
     @Test
@@ -78,7 +73,7 @@ public abstract class AbstractMessageManagerTest {
         MessageManager messageManager = mailboxManager.getMailbox(MAILBOX_PATH1, session);
 
         MessageManager.MetaData actual = messageManager.getMetaData(NO_RESET_RECENT, otherSession, MessageManager.MetaData.FetchGroup.NO_COUNT);
-        assertThat(actual.getACL().getEntries()).containsOnlyKeys(MailboxACL.EntryKey.createUser(OTHER_USER));
+        assertThat(actual.getACL().getEntries()).containsOnlyKeys(MailboxACL.EntryKey.createUserEntryKey(OTHER_USER));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2f97ab96/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
index 9172412..a32c27c 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
@@ -63,6 +63,6 @@ public class StoreMessageManagerTest {
             .apply(MailboxACL.command().rights(Right.Read, Right.Write, Right.Administer).forUser(THIRD_USER).asAddition());
         MailboxACL actual = StoreMessageManager.filteredForSession(
             new SimpleMailbox(MAILBOX_PATH1, UID_VALIDITY), acl, new MockMailboxSession(OTHER_USER));
-        assertThat(actual.getEntries()).containsKey(MailboxACL.EntryKey.createUser(OTHER_USER));
+        assertThat(actual.getEntries()).containsKey(MailboxACL.EntryKey.createUserEntryKey(OTHER_USER));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/2f97ab96/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Rights.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Rights.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Rights.java
index bd27bd0..99c0e79 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Rights.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Rights.java
@@ -208,7 +208,7 @@ public class Rights {
             .stream()
             .map(entry -> new MailboxACL(
                 ImmutableMap.of(
-                    EntryKey.createUser(entry.getKey().value),
+                    EntryKey.createUserEntryKey(entry.getKey().value),
                     toMailboxAclRights(entry.getValue()))))
             .reduce(MailboxACL.EMPTY, union);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2f97ab96/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/RightsTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/RightsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/RightsTest.java
index dae6130..a427144 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/RightsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/RightsTest.java
@@ -101,7 +101,7 @@ public class RightsTest {
     @Test
     public void fromACLShouldFilterOutGroups() throws Exception {
         MailboxACL acl = new MailboxACL(ImmutableMap.of(
-            EntryKey.createGroup("group"), Rfc4314Rights.fromSerializedRfc4314Rights("aet")));
+            EntryKey.createGroupEntryKey("group"), Rfc4314Rights.fromSerializedRfc4314Rights("aet")));
 
         assertThat(Rights.fromACL(acl))
             .isEqualTo(Rights.EMPTY);
@@ -110,7 +110,7 @@ public class RightsTest {
     @Test
     public void fromACLShouldFilterNegatedUsers() throws Exception {
         MailboxACL acl = new MailboxACL(ImmutableMap.of(
-            EntryKey.createUser("user", NEGATIVE), Rfc4314Rights.fromSerializedRfc4314Rights("aet")));
+            EntryKey.createUserEntryKey("user", NEGATIVE), Rfc4314Rights.fromSerializedRfc4314Rights("aet")));
 
         assertThat(Rights.fromACL(acl))
             .isEqualTo(Rights.EMPTY);
@@ -119,7 +119,7 @@ public class RightsTest {
     @Test
     public void fromACLShouldAcceptUsers() throws Exception {
         MailboxACL acl = new MailboxACL(ImmutableMap.of(
-            EntryKey.createUser("user"), Rfc4314Rights.fromSerializedRfc4314Rights("aet")));
+            EntryKey.createUserEntryKey("user"), Rfc4314Rights.fromSerializedRfc4314Rights("aet")));
 
         assertThat(Rights.fromACL(acl))
             .isEqualTo(Rights.builder()
@@ -130,7 +130,7 @@ public class RightsTest {
     @Test
     public void fromACLShouldFilterOutUnknownRights() throws Exception {
         MailboxACL acl = new MailboxACL(ImmutableMap.of(
-            EntryKey.createUser("user"), Rfc4314Rights.fromSerializedRfc4314Rights("aetpk")));
+            EntryKey.createUserEntryKey("user"), Rfc4314Rights.fromSerializedRfc4314Rights("aetpk")));
 
         assertThat(Rights.fromACL(acl))
             .isEqualTo(Rights.builder()


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


[16/29] james-project git commit: JAMES-2169 first simple sharing test case, missing sharedWith filtering for now

Posted by bt...@apache.org.
JAMES-2169 first simple sharing test case, missing sharedWith filtering for now


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

Branch: refs/heads/master
Commit: 3bb0259a01bdc2cb79afe7f6b95fcbf9ce636e67
Parents: 282030d
Author: Matthieu Baechler <ma...@apache.org>
Authored: Mon Oct 2 17:21:29 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:24:05 2017 +0700

----------------------------------------------------------------------
 .../jmap/methods/integration/GetMailboxesMethodTest.java     | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3bb0259a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index a8a434e..82a6f01 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -107,14 +107,14 @@ public abstract class GetMailboxesMethodTest {
 
         String domain = "domain.tld";
         alice = "alice@" + domain;
+        String alicePassword = "aliceSecret";
         bob = "bob@" + domain;
         cedric = "cedric@" + domain;
-        String password = "password";
         DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(domain);
-        dataProbe.addUser(alice, password);
-        dataProbe.addUser(bob, password);
-        accessToken = HttpJmapAuthentication.authenticateJamesUser(baseUri(), alice, password);
+        dataProbe.addUser(alice, alicePassword);
+        dataProbe.addUser(bob, "bobSecret");
+        accessToken = HttpJmapAuthentication.authenticateJamesUser(baseUri(), alice, alicePassword);
     }
 
     private URIBuilder baseUri() {


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


[05/29] james-project git commit: JAMES-2169 Introduce MailboxPath::forUser to simplify MailboxPath handling

Posted by bt...@apache.org.
JAMES-2169 Introduce MailboxPath::forUser to simplify MailboxPath handling


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

Branch: refs/heads/master
Commit: 8a1c4c7f66f8193804fa10ce14acc220dfa8ed98
Parents: 2a23a97
Author: benwa <bt...@linagora.com>
Authored: Mon Oct 2 10:21:41 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:19:50 2017 +0700

----------------------------------------------------------------------
 .../apache/james/mailbox/model/MailboxPath.java | 75 +++++++++++---------
 1 file changed, 41 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/8a1c4c7f/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java
index 0f538ae..1da70bc 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java
@@ -30,6 +30,47 @@ import com.google.common.collect.ImmutableList;
  * The path to a mailbox.
  */
 public class MailboxPath {
+    /**
+     * Return a {@link MailboxPath} which represent the INBOX of the given
+     * session
+     *
+     * @param session
+     * @return inbox
+     */
+    public static MailboxPath inbox(MailboxSession session) {
+        return new MailboxPath(session.getPersonalSpace(), session.getUser().getUserName(), MailboxConstants.INBOX);
+    }
+
+    /**
+     * Create a {@link MailboxPath} by parsing the given full mailboxname (which included the namespace)
+     *
+     * @param session
+     * @param fullmailboxname
+     * @return path
+     */
+    public static MailboxPath parse(MailboxSession session, String fullmailboxname) {
+        char delimiter = session.getPathDelimiter();
+        int i = fullmailboxname.indexOf(delimiter);
+        String namespace = fullmailboxname.substring(0, i);
+        String mailbox = fullmailboxname.substring(i + 1, fullmailboxname.length());
+        String username = null;
+        if (namespace == null || namespace.trim().equals("")) {
+            namespace = MailboxConstants.USER_NAMESPACE;
+        }
+        if (namespace.equals(session.getPersonalSpace())) {
+            username = session.getUser().getUserName();
+        }
+        return new MailboxPath(namespace, username, mailbox);
+
+    }
+
+    /**
+     * Create a {@link MailboxPath} in the prive namespace of the specified user
+     */
+    public static MailboxPath forUser(String username, String mailboxName) {
+        return new MailboxPath(MailboxConstants.USER_NAMESPACE, username, mailboxName);
+
+    }
 
     private String namespace;
     private String user;
@@ -195,38 +236,4 @@ public class MailboxPath {
         return namespace + delimiter + name;
     }
 
-    /**
-     * Return a {@link MailboxPath} which represent the INBOX of the given
-     * session
-     * 
-     * @param session
-     * @return inbox
-     */
-    public static MailboxPath inbox(MailboxSession session) {
-        return new MailboxPath(session.getPersonalSpace(), session.getUser().getUserName(), MailboxConstants.INBOX);
-    }
-    
-    /**
-     * Create a {@link MailboxPath} by parsing the given full mailboxname (which included the namespace)
-     * 
-     * @param session
-     * @param fullmailboxname
-     * @return path
-     */
-    public static MailboxPath parse(MailboxSession session, String fullmailboxname) {
-        char delimiter = session.getPathDelimiter();
-        int i = fullmailboxname.indexOf(delimiter);
-        String namespace = fullmailboxname.substring(0, i);
-        String mailbox = fullmailboxname.substring(i + 1, fullmailboxname.length());
-        String username = null;
-        if (namespace == null || namespace.trim().equals("")) {
-            namespace = MailboxConstants.USER_NAMESPACE;
-        } 
-        if (namespace.equals(session.getPersonalSpace())) {
-            username = session.getUser().getUserName();
-        }
-        return new MailboxPath(namespace, username, mailbox);
-
-    }
-
 }


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


[02/29] james-project git commit: JAMES-2169 rename username to alice before adding a new user

Posted by bt...@apache.org.
JAMES-2169 rename username to alice before adding a new user


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

Branch: refs/heads/master
Commit: 55b8709cc00ce36c4589c1055da7263cef2e5243
Parents: 651a03d
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Sep 27 11:28:20 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Tue Oct 3 09:23:47 2017 +0700

----------------------------------------------------------------------
 .../integration/GetMailboxesMethodTest.java     | 78 ++++++++++----------
 1 file changed, 39 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/55b8709c/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index c9136f3..478e4b7 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -81,7 +81,7 @@ public abstract class GetMailboxesMethodTest {
     protected abstract GuiceJamesServer createJmapServer();
 
     private AccessToken accessToken;
-    private String username;
+    private String alice;
     private GuiceJamesServer jmapServer;
     private MailboxProbe mailboxProbe;
     private ACLProbe aclProbe;
@@ -101,12 +101,12 @@ public abstract class GetMailboxesMethodTest {
                 .build();
 
         String domain = "domain.tld";
-        username = "username@" + domain;
+        alice = "alice@" + domain;
         String password = "password";
         DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(domain);
-        dataProbe.addUser(username, password);
-        accessToken = HttpJmapAuthentication.authenticateJamesUser(baseUri(), username, password);
+        dataProbe.addUser(alice, password);
+        accessToken = HttpJmapAuthentication.authenticateJamesUser(baseUri(), alice, password);
     }
 
     private URIBuilder baseUri() {
@@ -138,10 +138,10 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnEmptyWhenIdsDoesntMatch() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "name");
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved");
-        String removedId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved").getMailboxId().serialize();
-        mailboxProbe.deleteMailbox(MailboxConstants.USER_NAMESPACE, username, "quicklyRemoved");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "quicklyRemoved");
+        String removedId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, "quicklyRemoved").getMailboxId().serialize();
+        mailboxProbe.deleteMailbox(MailboxConstants.USER_NAMESPACE, alice, "quicklyRemoved");
 
         given()
             .header("Authorization", accessToken.serialize())
@@ -169,11 +169,11 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnMailboxesWhenIdsMatch() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.INBOX);
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myMailbox");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "myMailbox");
 
-        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.INBOX);
-        Mailbox mailbox2 = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "myMailbox");
+        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
+        Mailbox mailbox2 = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, "myMailbox");
 
         String mailboxId = mailbox.getMailboxId().serialize();
         String mailboxId2 = mailbox2.getMailboxId().serialize();
@@ -193,10 +193,10 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnOnlyMatchingMailboxesWhenIdsGiven() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.INBOX);
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myMailbox");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "myMailbox");
 
-        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.INBOX);
+        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
 
         String mailboxId = mailbox.getMailboxId().serialize();
 
@@ -214,7 +214,7 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnEmptyWhenIdsIsEmpty() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.INBOX);
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
 
         given()
             .header("Authorization", accessToken.serialize())
@@ -229,8 +229,8 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnAllMailboxesWhenIdsIsNull() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myMailbox");
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "myMailbox2");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "myMailbox");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "myMailbox2");
 
         List<String> expectedMailboxes = ImmutableList.<String> builder()
                 .addAll(DefaultMailboxes.DEFAULT_MAILBOXES)
@@ -253,10 +253,10 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldReturnSharedWithProperty() throws Exception {
         String mailboxName = "myMailbox";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, mailboxName);
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
         String targetUser1 = "toUser1@domain.com";
         String targetUser2 = "toUser2@domain.com";
-        Mailbox myMailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, mailboxName);
+        Mailbox myMailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
         aclProbe.replaceRights(myMailbox.generateAssociatedPath(), targetUser1, new Rfc4314Rights(Right.Read, Right.Administer));
         aclProbe.replaceRights(myMailbox.generateAssociatedPath(), targetUser2, new Rfc4314Rights(Right.Read, Right.Lookup));
 
@@ -276,8 +276,8 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void getMailboxShouldReturnEmptySharedWithWhenNoDelegation() throws Exception {
         String mailboxName = "myMailbox";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, mailboxName);
-        Mailbox myMailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, mailboxName);
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
+        Mailbox myMailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
 
         given()
             .header("Authorization", accessToken.serialize())
@@ -294,9 +294,9 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void nonHandledRightsShouldBeFilteredOut() throws Exception {
         String mailboxName = "myMailbox";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, mailboxName);
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
         String targetUser1 = "toUser1@domain.com";
-        Mailbox myMailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, mailboxName);
+        Mailbox myMailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
         aclProbe.replaceRights(myMailbox.generateAssociatedPath(), targetUser1, new Rfc4314Rights(Right.Read, Right.Post));
 
         given()
@@ -367,9 +367,9 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnMailboxesWhenAvailable() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "name");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name");
 
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "name"),
+        mailboxProbe.appendMessage(alice, new MailboxPath(MailboxConstants.USER_NAMESPACE, alice, "name"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         given()
@@ -385,12 +385,12 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnMailboxPropertiesWhenAvailable() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "name");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name");
 
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "name"),
+        mailboxProbe.appendMessage(alice, new MailboxPath(MailboxConstants.USER_NAMESPACE, alice, "name"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "name").getMailboxId();
+        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, "name").getMailboxId();
         given()
             .header("Authorization", accessToken.serialize())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
@@ -417,9 +417,9 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnFilteredMailboxesPropertiesWhenRequestContainsFilterProperties() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "name");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name");
 
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, "name").getMailboxId();
+        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, "name").getMailboxId();
         given()
             .header("Authorization", accessToken.serialize())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"], \"properties\" : [\"unreadMessages\", \"sortOrder\"]}, \"#0\"]]")
@@ -447,7 +447,7 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnIdWhenRequestContainsEmptyPropertyListFilter() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "name");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name");
 
         given()
             .header("Authorization", accessToken.serialize())
@@ -463,7 +463,7 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldIgnoreUnknownPropertiesWhenRequestContainsUnknownPropertyListFilter() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "name");
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name");
 
         given()
             .header("Authorization", accessToken.serialize())
@@ -479,11 +479,11 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnMailboxesWithSortOrder() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.INBOX);
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.TRASH);
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.TRASH);
 
-        MailboxId inboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.INBOX).getMailboxId();
-        MailboxId trashId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.TRASH).getMailboxId();
+        MailboxId inboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX).getMailboxId();
+        MailboxId trashId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.TRASH).getMailboxId();
         given()
             .header("Authorization", accessToken.serialize())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + inboxId.serialize() + "\", \"" + trashId.serialize() + "\"]}, \"#0\"]]")
@@ -501,9 +501,9 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnMailboxesWithRolesInLowerCase() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.OUTBOX);
+        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.OUTBOX);
 
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, username, DefaultMailboxes.OUTBOX).getMailboxId();
+        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.OUTBOX).getMailboxId();
         given()
             .header("Authorization", accessToken.serialize())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")


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


[13/29] james-project git commit: JAMES-2169 Various JMAP integration testing improvements

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/0f5a0f26/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/DownloadStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/DownloadStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/DownloadStepdefs.java
index c872e53..d619806 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/DownloadStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/DownloadStepdefs.java
@@ -46,7 +46,6 @@ import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mime4j.codec.DecoderUtil;
-import org.apache.james.modules.MailboxProbeImpl;
 
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Charsets;
@@ -96,7 +95,7 @@ public class DownloadStepdefs {
     public void appendMessageToMailbox(String user, String mailbox, String messageId) throws Throwable {
         MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user, mailbox);
 
-        ComposedMessageId composedMessageId = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(user, mailboxPath,
+        ComposedMessageId composedMessageId = mainStepdefs.mailboxProbe.appendMessage(user, mailboxPath,
             ClassLoader.getSystemResourceAsStream("eml/oneAttachment.eml"), new Date(), false, new Flags());
 
         inputToMessageId.put(messageId, composedMessageId.getMessageId());
@@ -106,7 +105,7 @@ public class DownloadStepdefs {
     public void appendMessageWithAttachmentToMailbox(String user, String mailbox, String messageId, String attachmentId) throws Throwable {
         MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user, mailbox);
 
-        mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(user, mailboxPath,
+        mainStepdefs.mailboxProbe.appendMessage(user, mailboxPath,
                 ClassLoader.getSystemResourceAsStream("eml/oneAttachment.eml"), new Date(), false, new Flags());
         
         attachmentsByMessageId.put(messageId, attachmentId);
@@ -117,7 +116,7 @@ public class DownloadStepdefs {
     public void appendMessageWithInlinedAttachmentToMailbox(String user, String mailbox, String messageId, String attachmentId) throws Throwable {
         MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user, mailbox);
 
-        mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(user, mailboxPath,
+        mainStepdefs.mailboxProbe.appendMessage(user, mailboxPath,
                 ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, new Flags());
         
         attachmentsByMessageId.put(messageId, attachmentId);
@@ -127,7 +126,7 @@ public class DownloadStepdefs {
     public void appendMessageWithSameInlinedAttachmentsToMailbox(String user, String mailbox, String messageName, String attachmentId) throws Throwable {
         MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user, mailbox);
 
-        mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(user, mailboxPath,
+        mainStepdefs.mailboxProbe.appendMessage(user, mailboxPath,
             ClassLoader.getSystemResourceAsStream("eml/sameInlinedImages.eml"), new Date(), false, new Flags());
 
         attachmentsByMessageId.put(messageName, attachmentId);
@@ -342,7 +341,7 @@ public class DownloadStepdefs {
 
     @When("^\"([^\"]*)\" delete mailbox \"([^\"]*)\"$")
     public void deleteMailboxButNotAttachment(String username, String mailboxName) throws Exception {
-        mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).deleteMailbox(MailboxConstants.USER_NAMESPACE, username, mailboxName);
+        mainStepdefs.mailboxProbe.deleteMailbox(MailboxConstants.USER_NAMESPACE, username, mailboxName);
     }
 
     @Then("^the user should be authorized$")

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f5a0f26/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
index f7adb27..1c3da93 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
@@ -104,8 +104,8 @@ public class GetMessagesMethodStepdefs {
     @Given("^the user has a message \"([^\"]*)\" in \"([^\"]*)\" and \"([^\"]*)\" mailboxes with subject \"([^\"]*)\", content \"([^\"]*)\"$")
     public void appendMessageInTwoMailboxes(String messageName, String mailbox1, String mailbox2, String subject, String content) throws Exception {
         MessageId id = appendMessage(mailbox1, ContentType.noContentType(), subject, content, NO_HEADERS);
-        MailboxId mailboxId1 = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, mailbox1).getMailboxId();
-        MailboxId mailboxId2 = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).getMailbox(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, mailbox2).getMailboxId();
+        MailboxId mailboxId1 = mainStepdefs.mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, mailbox1).getMailboxId();
+        MailboxId mailboxId2 = mainStepdefs.mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, mailbox2).getMailboxId();
 
         mainStepdefs.jmapServer.getProbe(JmapGuiceProbe.class).setInMailboxes(id, userStepdefs.lastConnectedUser, mailboxId1, mailboxId2);
         messageIdsByName.put(messageName, id);
@@ -138,7 +138,7 @@ public class GetMessagesMethodStepdefs {
     @Given("^the user has a message \"([^\"]*)\" in \"([^\"]*)\" mailbox, composed of a multipart with inlined text part and inlined html part$")
     public void appendMessageFromFileInlinedMultipart(String messageName, String mailbox) throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        MessageId id = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(userStepdefs.lastConnectedUser,
+        MessageId id = mainStepdefs.mailboxProbe.appendMessage(userStepdefs.lastConnectedUser,
                     new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, mailbox),
                     ClassLoader.getSystemResourceAsStream("eml/inlinedMultipart.eml"),
                     Date.from(dateTime.toInstant()), false, new Flags())
@@ -148,7 +148,7 @@ public class GetMessagesMethodStepdefs {
 
     private MessageId appendMessage(String mailbox, ContentType contentType, String subject, String content, Optional<Map<String, String>> headers) throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        return mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(userStepdefs.lastConnectedUser,
+        return mainStepdefs.mailboxProbe.appendMessage(userStepdefs.lastConnectedUser,
                 new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, mailbox),
                 new ByteArrayInputStream(message(contentType, subject, content, headers).getBytes(Charsets.UTF_8)),
                 Date.from(dateTime.toInstant()), false, new Flags()).getMessageId();
@@ -258,7 +258,7 @@ public class GetMessagesMethodStepdefs {
     private void appendMessage(String messageName, Flags flags) throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         boolean isRecent = flags.contains(Flags.Flag.RECENT);
-        MessageId id = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(userStepdefs.lastConnectedUser,
+        MessageId id = mainStepdefs.mailboxProbe.appendMessage(userStepdefs.lastConnectedUser,
                 new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, DefaultMailboxes.INBOX),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()),
                 Date.from(dateTime.toInstant()), isRecent, flags)
@@ -268,7 +268,7 @@ public class GetMessagesMethodStepdefs {
 
     private void appendMessage(String messageName, String emlFileName) throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        MessageId id = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(userStepdefs.lastConnectedUser,
+        MessageId id = mainStepdefs.mailboxProbe.appendMessage(userStepdefs.lastConnectedUser,
             new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, DefaultMailboxes.INBOX),
                 ClassLoader.getSystemResourceAsStream(emlFileName),
                 Date.from(dateTime.toInstant()), false, new Flags())

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f5a0f26/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/MainStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/MainStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/MainStepdefs.java
index c2286f2..e360d71 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/MainStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/MainStepdefs.java
@@ -22,6 +22,10 @@ package org.apache.james.jmap.methods.integration.cucumber;
 import org.apache.http.client.utils.URIBuilder;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.store.probe.MailboxProbe;
+import org.apache.james.modules.MailboxProbeImpl;
+import org.apache.james.probe.DataProbe;
+import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.JmapGuiceProbe;
 
 import com.google.common.base.Charsets;
@@ -32,11 +36,15 @@ import cucumber.runtime.java.guice.ScenarioScoped;
 public class MainStepdefs {
 
     public GuiceJamesServer jmapServer;
+    public DataProbe dataProbe;
+    public MailboxProbe mailboxProbe;
     public Runnable awaitMethod = () -> {};
     public MessageId.Factory messageIdFactory;
     
     public void init() throws Exception {
         jmapServer.start();
+        dataProbe = jmapServer.getProbe(DataProbeImpl.class);
+        mailboxProbe = jmapServer.getProbe(MailboxProbeImpl.class);
     }
     
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f5a0f26/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/SetMailboxesMethodStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
index 39b7e3f..6e7ee4c 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
@@ -36,7 +36,6 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.modules.MailboxProbeImpl;
 
 import com.github.fge.lambdas.Throwing;
 import com.jayway.awaitility.Awaitility;
@@ -66,7 +65,7 @@ public class SetMailboxesMethodStepdefs {
 
     @Given("^mailbox \"([^\"]*)\" with (\\d+) messages$")
     public void mailboxWithMessages(String mailboxName, int messageCount) throws Throwable {
-        mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).createMailbox("#private", userStepdefs.lastConnectedUser, mailboxName);
+        mainStepdefs.mailboxProbe.createMailbox("#private", userStepdefs.lastConnectedUser, mailboxName);
         MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, mailboxName);
         IntStream
             .range(0, messageCount)
@@ -77,14 +76,14 @@ public class SetMailboxesMethodStepdefs {
     private void appendMessage(MailboxPath mailboxPath, int i) throws MailboxException {
         String content = "Subject: test" + i + "\r\n\r\n"
                 + "testBody" + i;
-        mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).appendMessage(userStepdefs.lastConnectedUser, mailboxPath,
+        mainStepdefs.mailboxProbe.appendMessage(userStepdefs.lastConnectedUser, mailboxPath,
                 new ByteArrayInputStream(content.getBytes()), new Date(), false, new Flags());
     }
 
     @When("^renaming mailbox \"([^\"]*)\" to \"([^\"]*)\"")
     public void renamingMailbox(String actualMailboxName, String newMailboxName) throws Throwable {
         String username = userStepdefs.lastConnectedUser;
-        Mailbox mailbox = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).getMailbox("#private", userStepdefs.lastConnectedUser, actualMailboxName);
+        Mailbox mailbox = mainStepdefs.mailboxProbe.getMailbox("#private", userStepdefs.lastConnectedUser, actualMailboxName);
         String mailboxId = mailbox.getMailboxId().serialize();
         String requestBody =
                 "[" +
@@ -109,9 +108,9 @@ public class SetMailboxesMethodStepdefs {
     @When("^moving mailbox \"([^\"]*)\" to \"([^\"]*)\"$")
     public void movingMailbox(String actualMailboxPath, String newParentMailboxPath) throws Throwable {
         String username = userStepdefs.lastConnectedUser;
-        Mailbox mailbox = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).getMailbox("#private", username, actualMailboxPath);
+        Mailbox mailbox = mainStepdefs.mailboxProbe.getMailbox("#private", username, actualMailboxPath);
         String mailboxId = mailbox.getMailboxId().serialize();
-        Mailbox parent = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).getMailbox("#private", username, newParentMailboxPath);
+        Mailbox parent = mainStepdefs.mailboxProbe.getMailbox("#private", username, newParentMailboxPath);
         String parentId = parent.getMailboxId().serialize();
 
         String requestBody =
@@ -139,7 +138,7 @@ public class SetMailboxesMethodStepdefs {
     public void mailboxContainsMessages(String mailboxName, int messageCount) throws Throwable {
         Duration slowPacedPollInterval = Duration.FIVE_HUNDRED_MILLISECONDS;
         String username = userStepdefs.lastConnectedUser;
-        Mailbox mailbox = mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).getMailbox("#private", username, mailboxName);
+        Mailbox mailbox = mainStepdefs.mailboxProbe.getMailbox("#private", username, mailboxName);
         String mailboxId = mailbox.getMailboxId().serialize();
 
         Awaitility.await().atMost(Duration.FIVE_SECONDS).pollDelay(slowPacedPollInterval).pollInterval(slowPacedPollInterval).until(() -> {

http://git-wip-us.apache.org/repos/asf/james-project/blob/0f5a0f26/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/UserStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/UserStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/UserStepdefs.java
index fb0aff4..0316f80 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/UserStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/UserStepdefs.java
@@ -30,8 +30,6 @@ import javax.inject.Inject;
 import org.apache.james.jmap.HttpJmapAuthentication;
 import org.apache.james.jmap.api.access.AccessToken;
 import org.apache.james.mailbox.model.MailboxConstants;
-import org.apache.james.modules.MailboxProbeImpl;
-import org.apache.james.utils.DataProbeImpl;
 
 import com.github.fge.lambdas.Throwing;
 import com.google.common.base.Charsets;
@@ -62,7 +60,7 @@ public class UserStepdefs {
 
     @Given("^a domain named \"([^\"]*)\"$")
     public void createDomain(String domain) throws Exception {
-        mainStepdefs.jmapServer.getProbe(DataProbeImpl.class).addDomain(domain);
+        mainStepdefs.dataProbe.addDomain(domain);
         domains.add(domain);
     }
 
@@ -80,7 +78,7 @@ public class UserStepdefs {
     @Given("^a user \"([^\"]*)\"$")
     public void createUser(String username) throws Exception {
         String password = generatePassword(username);
-        mainStepdefs.jmapServer.getProbe(DataProbeImpl.class).addUser(username, password);
+        mainStepdefs.dataProbe.addUser(username, password);
         passwordByUser.put(username, password);
     }
 
@@ -92,7 +90,7 @@ public class UserStepdefs {
     
     @Given("^\"([^\"]*)\" has a mailbox \"([^\"]*)\"$")
     public void createMailbox(String username, String mailbox) throws Throwable {
-        mainStepdefs.jmapServer.getProbe(MailboxProbeImpl.class).createMailbox(MailboxConstants.USER_NAMESPACE, username, mailbox);
+        mainStepdefs.mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, mailbox);
     }
 
     


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


[18/29] james-project git commit: JAMES-2169 Use MailboxPath::forUser more widely

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
index dea3316..789d4f7 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
@@ -128,7 +128,7 @@ public abstract class GetMessageListMethodTest {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
         MailboxId mailboxId2 = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
 
-        ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         await();
@@ -150,9 +150,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListSetFlaggedFilterShouldResultFlaggedMessages() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.FLAGGED));
 
         await();
@@ -174,9 +174,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListUnsetFlaggedFilterShouldReturnNotFlaggedMessages() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.FLAGGED));
 
         await();
@@ -198,9 +198,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListReadFilterShouldReturnOnlyReadMessages() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotRead = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotRead = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageRead = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageRead = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.SEEN));
 
         await();
@@ -222,9 +222,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListUnreadFilterShouldReturnOnlyUnreadMessages() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotRead = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotRead = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageRead = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageRead = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.SEEN));
 
         await();
@@ -246,9 +246,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListSetDraftFilterShouldReturnOnlyDraftMessages() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotDraft = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotDraft = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageDraft = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageDraft = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.DRAFT));
 
         await();
@@ -270,9 +270,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListUnsetDraftFilterShouldReturnOnlyNonDraftMessages() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotDraft = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotDraft = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageDraft = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageDraft = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.DRAFT));
 
         await();
@@ -294,9 +294,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListSetAnsweredFilterShouldReturnOnlyAnsweredMessages() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotAnswered = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotAnswered = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageAnswered = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageAnswered = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.ANSWERED));
 
         await();
@@ -318,9 +318,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListUnsetAnsweredFilterShouldReturnOnlyNotAnsweredMessages() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotAnswered = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotAnswered = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageAnswered = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageAnswered = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.ANSWERED));
 
         await();
@@ -342,13 +342,13 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListANDOperatorShouldReturnMessagesWhichMatchAllConditions() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotSeenNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotSeenNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageNotSeenFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotSeenFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.FLAGGED));
-        ComposedMessageId messageSeenNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageSeenNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, new Flags(Flags.Flag.SEEN));
-        ComposedMessageId messageSeenFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageSeenFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, FlagsBuilder.builder().add(Flags.Flag.SEEN, Flags.Flag.FLAGGED).build());
 
         await();
@@ -372,13 +372,13 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListOROperatorShouldReturnMessagesWhichMatchOneOfAllConditions() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotSeenNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotSeenNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageNotSeenFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotSeenFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.FLAGGED));
-        ComposedMessageId messageSeenNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageSeenNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, new Flags(Flags.Flag.SEEN));
-        ComposedMessageId messageSeenFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageSeenFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, FlagsBuilder.builder().add(Flags.Flag.SEEN, Flags.Flag.FLAGGED).build());
 
         await();
@@ -402,13 +402,13 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListNOTOperatorShouldReturnMessagesWhichNotMatchAnyCondition() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotSeenNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotSeenNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageNotSeenFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotSeenFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.FLAGGED));
-        ComposedMessageId messageSeenNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageSeenNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, new Flags(Flags.Flag.SEEN));
-        ComposedMessageId messageSeenFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageSeenFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, FlagsBuilder.builder().add(Flags.Flag.SEEN, Flags.Flag.FLAGGED).build());
 
         await();
@@ -432,13 +432,13 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListNestedOperatorsShouldReturnMessagesWhichMatchConditions() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotSeenNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotSeenNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageNotSeenFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotSeenFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags(Flags.Flag.FLAGGED));
-        ComposedMessageId messageSeenNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageSeenNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, new Flags(Flags.Flag.SEEN));
-        ComposedMessageId messageSeenFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageSeenFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, FlagsBuilder.builder().add(Flags.Flag.SEEN, Flags.Flag.FLAGGED).build());
 
         await();
@@ -491,11 +491,11 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListShouldSupportHasAttachmentSetToTrue() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags());
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, new Flags());
         await();
 
@@ -514,11 +514,11 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListShouldSupportHasAttachmentSetToFalse() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags());
-        ComposedMessageId message3 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message3 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, new Flags());
         await();
 
@@ -549,9 +549,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListShouldReturnAllMessagesWhenSingleMailboxNoParameters() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
         await();
 
@@ -569,11 +569,11 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldReturnAllMessagesWhenMultipleMailboxesAndNoParameters() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox2"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox2"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
         await();
 
@@ -595,16 +595,16 @@ public abstract class GetMessageListMethodTest {
         dataProbe.addUser(otherUser, password);
 
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox2"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox2"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
         await();
 
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, otherUser, "mailbox");
-        mailboxProbe.appendMessage(otherUser, new MailboxPath(MailboxConstants.USER_NAMESPACE, otherUser, "mailbox"),
+        mailboxProbe.appendMessage(otherUser, MailboxPath.forUser(otherUser, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
         await();
 
@@ -622,7 +622,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldFilterMessagesWhenInMailboxesFilterMatches() throws Exception {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
         await();
 
@@ -640,7 +640,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldFilterMessagesWhenMultipleInMailboxesFilterMatches() throws Exception {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         MailboxId mailboxId2 = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
@@ -660,7 +660,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldFilterMessagesWhenNotInMailboxesFilterMatches() throws Exception {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         await();
@@ -679,11 +679,11 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldFilterMessagesWhenNotInMailboxesFilterMatchesTwice() throws Exception {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         MailboxId mailbox2Id = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox2"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox2"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
         await();
 
@@ -701,7 +701,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldFilterMessagesWhenIdenticalNotInMailboxesAndInmailboxesFilterMatch() throws Exception {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
         await();
 
@@ -719,7 +719,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldNotFilterMessagesWhenNotInMailboxesFilterDoesNotMatch() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         MailboxId mailbox2Id = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
@@ -739,7 +739,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldNotFilterMessagesWhenEmptyNotInMailboxesFilter() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox2");
@@ -761,7 +761,7 @@ public abstract class GetMessageListMethodTest {
         MailboxId emptyMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "emptyMailbox");
 
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
         await();
 
@@ -778,7 +778,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldFilterMessagesWhenTextFilterDoesntMatches() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
         await();
 
@@ -795,7 +795,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldNotFilterMessagesWhenTextFilterMatchesBody() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
-        ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 ClassLoader.getSystemResourceAsStream("eml/twoAttachments.eml"), new Date(), false, new Flags());
         await();
 
@@ -828,7 +828,7 @@ public abstract class GetMessageListMethodTest {
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         MessageWriter writer = new DefaultMessageWriter();
         writer.writeMessage(message, outputStream);
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream(outputStream.toByteArray()), new Date(), false, new Flags());
         await();
 
@@ -861,7 +861,7 @@ public abstract class GetMessageListMethodTest {
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         MessageWriter writer = new DefaultMessageWriter();
         writer.writeMessage(message, outputStream);
-        ComposedMessageId composedMessageId = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId composedMessageId = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream(outputStream.toByteArray()), new Date(), false, new Flags());
         await();
 
@@ -880,9 +880,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -902,10 +902,10 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.parse("Wed, 28 Jun 17 09:23:01 +0200", ImapDateTimeFormatter.rfc5322());
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
         LocalDate date2 = LocalDate.parse("Tue, 27 Jun 2017 09:23:01 +0200", ImapDateTimeFormatter.rfc5322());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date2), false, new Flags());
         await();
 
@@ -925,9 +925,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 14:54:59 +0200\r\nSubject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -947,9 +947,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: a subject\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 14:54:59 +0200\r\nSubject: b subject\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -969,9 +969,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: a subject\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 14:54:59 +0200\r\nSubject: b subject\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -991,9 +991,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: subject\r\nFrom: bbb\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 14:54:59 +0200\r\nSubject: subject\r\nFrom: aaa\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1013,9 +1013,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: subject\r\nFrom: aaa\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 14:54:59 +0200\r\nSubject: subject\r\nFrom: bbb\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1035,9 +1035,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: subject\r\nTo: bbb\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 14:54:59 +0200\r\nSubject: subject\r\nTo: aaa\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1057,9 +1057,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: subject\r\nTo: aaa\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 14:54:59 +0200\r\nSubject: subject\r\nTo: bbb\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1080,9 +1080,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: subject\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 14:54:59 +0200\r\nSubject: subject\r\n\r\ntestmail bigger".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1102,9 +1102,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: subject\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 14:54:59 +0200\r\nSubject: subject\r\n\r\ntestmail bigger".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1124,11 +1124,11 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: test\r\n\r\ntestmail really bigger".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 14:54:59 +0200\r\nSubject: test\r\n\r\ntestmail smaller".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message3 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message3 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 15:54:59 +0200\r\nSubject: test\r\n\r\ntestmail really bigger".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
 
         await();
@@ -1149,11 +1149,11 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: test\r\n\r\ntestmail really bigger".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 13:54:59 +0200\r\nSubject: test\r\n\r\ntestmail smaller".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message3 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message3 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Date: Fri, 02 Jun 2017 15:54:59 +0200\r\nSubject: test\r\n\r\ntestmail really bigger".getBytes()), convertToDate(date), false, new Flags());
 
         await();
@@ -1174,9 +1174,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1196,9 +1196,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1242,9 +1242,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1264,9 +1264,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1286,11 +1286,11 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(2)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test3\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1310,9 +1310,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1332,9 +1332,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1354,13 +1354,13 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
-        ComposedMessageId message3 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message3 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test3\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test4\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
         await();
 
@@ -1380,7 +1380,7 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
         await();
 
@@ -1408,7 +1408,7 @@ public abstract class GetMessageListMethodTest {
             + "\r\n"
             + "Hello <b>someone</b>, and thank you for joining example.com!";
         LocalDate date = LocalDate.now();
-        mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream(mailContent.getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
         await();
 
@@ -1431,9 +1431,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListHasKeywordFilterShouldReturnMessagesWithKeywords() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags(Flags.Flag.FLAGGED));
 
         await();
@@ -1460,9 +1460,9 @@ public abstract class GetMessageListMethodTest {
             .add(FORWARDED)
             .build();
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, flags);
 
         await();
@@ -1484,9 +1484,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListNotKeywordFilterShouldReturnMessagesWithoutKeywords() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags(Flags.Flag.FLAGGED));
 
         await();
@@ -1513,9 +1513,9 @@ public abstract class GetMessageListMethodTest {
             .add(FORWARDED)
             .build();
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, flags);
 
         await();
@@ -1542,9 +1542,9 @@ public abstract class GetMessageListMethodTest {
             .add(Flags.Flag.DRAFT)
             .build();
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags(Flags.Flag.FLAGGED));
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, flags);
 
         await();
@@ -1565,9 +1565,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListHasKeywordAndNotKeywordFilterShouldReturnMessagesWithAndWithoutKeywords() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags(Flags.Flag.FLAGGED));
 
         await();
@@ -1589,9 +1589,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListHasKeywordShouldIgnoreDeleted() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags(Flags.Flag.DELETED));
 
         await();
@@ -1612,9 +1612,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListHasKeywordShouldIgnoreRecent() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags(Flags.Flag.RECENT));
 
         await();
@@ -1635,9 +1635,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListNotKeywordShouldIgnoreDeleted() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags(Flags.Flag.DELETED));
 
         await();
@@ -1658,9 +1658,9 @@ public abstract class GetMessageListMethodTest {
     public void getMessageListNotKeywordShouldIgnoreRecent() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
-        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageNotFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
-        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId messageFlagged = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags(Flags.Flag.RECENT));
 
         await();
@@ -1682,9 +1682,9 @@ public abstract class GetMessageListMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username, "mailbox");
 
         LocalDate date = LocalDate.now();
-        ComposedMessageId message1 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message1 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), convertToDate(date.plusDays(1)), false, new Flags());
-        ComposedMessageId message2 = mailboxProbe.appendMessage(username, new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "mailbox"),
+        ComposedMessageId message2 = mailboxProbe.appendMessage(username, MailboxPath.forUser(username, "mailbox"),
             new ByteArrayInputStream("Subject: test2\r\n\r\ntestmail".getBytes()), convertToDate(date), false, new Flags());
 
         await();

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index ebed0a4..1bc5731 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -118,7 +118,7 @@ public abstract class SetMessagesMethodTest {
     private static final String USERS_DOMAIN = "domain.tld";
     private static final String USERNAME = "username@" + USERS_DOMAIN;
     private static final String PASSWORD = "password";
-    private static final MailboxPath USER_MAILBOX = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, "mailbox");
+    private static final MailboxPath USER_MAILBOX = MailboxPath.forUser(USERNAME, "mailbox");
     private static final String NOT_UPDATED = ARGUMENTS + ".notUpdated";
 
     private ConditionFactory calmlyAwait;
@@ -1330,7 +1330,7 @@ public abstract class SetMessagesMethodTest {
             return false;
         }
         EventFactory.AddedImpl added = (EventFactory.AddedImpl) event;
-        return added.getMailboxPath().equals(new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, DefaultMailboxes.OUTBOX))
+        return added.getMailboxPath().equals(MailboxPath.forUser(USERNAME, DefaultMailboxes.OUTBOX))
             && added.getUids().size() == 1
             && added.getMetaData(added.getUids().get(0)).getMessageId().serialize().equals(messageId);
     }
@@ -2077,7 +2077,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void mailboxIdsShouldReturnUpdatedWhenNoChange() throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();
@@ -2110,7 +2110,7 @@ public abstract class SetMessagesMethodTest {
         String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();
@@ -2154,7 +2154,7 @@ public abstract class SetMessagesMethodTest {
         String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();
@@ -2196,7 +2196,7 @@ public abstract class SetMessagesMethodTest {
         String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();
@@ -2239,7 +2239,7 @@ public abstract class SetMessagesMethodTest {
         String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();
@@ -2279,7 +2279,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void mailboxIdsShouldBeInOriginalMailboxWhenNoChange() throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();
@@ -2319,7 +2319,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void mailboxIdsShouldReturnErrorWhenMovingToADeletedMailbox() throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, "any");
@@ -2358,7 +2358,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void mailboxIdsShouldReturnErrorWhenSetToEmpty() throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();
@@ -2396,7 +2396,7 @@ public abstract class SetMessagesMethodTest {
         String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();
@@ -2429,7 +2429,7 @@ public abstract class SetMessagesMethodTest {
         String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();
@@ -2472,7 +2472,7 @@ public abstract class SetMessagesMethodTest {
         String trashId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, DefaultMailboxes.TRASH).getMailboxId().serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();
@@ -2508,7 +2508,7 @@ public abstract class SetMessagesMethodTest {
         String trashId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, DefaultMailboxes.TRASH).getMailboxId().serialize();
 
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, MailboxConstants.INBOX),
+        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
             new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
 
         String messageToMoveId = message.getMessageId().serialize();

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/DownloadStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/DownloadStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/DownloadStepdefs.java
index d619806..48e0615 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/DownloadStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/DownloadStepdefs.java
@@ -93,7 +93,7 @@ public class DownloadStepdefs {
 
     @Given("^\"([^\"]*)\" mailbox \"([^\"]*)\" contains a message \"([^\"]*)\"$")
     public void appendMessageToMailbox(String user, String mailbox, String messageId) throws Throwable {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user, mailbox);
+        MailboxPath mailboxPath = MailboxPath.forUser(user, mailbox);
 
         ComposedMessageId composedMessageId = mainStepdefs.mailboxProbe.appendMessage(user, mailboxPath,
             ClassLoader.getSystemResourceAsStream("eml/oneAttachment.eml"), new Date(), false, new Flags());
@@ -103,7 +103,7 @@ public class DownloadStepdefs {
 
     @Given("^\"([^\"]*)\" mailbox \"([^\"]*)\" contains a message \"([^\"]*)\" with an attachment \"([^\"]*)\"$")
     public void appendMessageWithAttachmentToMailbox(String user, String mailbox, String messageId, String attachmentId) throws Throwable {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user, mailbox);
+        MailboxPath mailboxPath = MailboxPath.forUser(user, mailbox);
 
         mainStepdefs.mailboxProbe.appendMessage(user, mailboxPath,
                 ClassLoader.getSystemResourceAsStream("eml/oneAttachment.eml"), new Date(), false, new Flags());
@@ -114,7 +114,7 @@ public class DownloadStepdefs {
 
     @Given("^\"([^\"]*)\" mailbox \"([^\"]*)\" contains a message \"([^\"]*)\" with an inlined attachment \"([^\"]*)\"$")
     public void appendMessageWithInlinedAttachmentToMailbox(String user, String mailbox, String messageId, String attachmentId) throws Throwable {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user, mailbox);
+        MailboxPath mailboxPath = MailboxPath.forUser(user, mailbox);
 
         mainStepdefs.mailboxProbe.appendMessage(user, mailboxPath,
                 ClassLoader.getSystemResourceAsStream("eml/oneInlinedImage.eml"), new Date(), false, new Flags());
@@ -124,7 +124,7 @@ public class DownloadStepdefs {
 
     @Given("^\"([^\"]*)\" mailbox \"([^\"]*)\" contains a message \"([^\"]*)\" with multiple same inlined attachments \"([^\"]*)\"$")
     public void appendMessageWithSameInlinedAttachmentsToMailbox(String user, String mailbox, String messageName, String attachmentId) throws Throwable {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user, mailbox);
+        MailboxPath mailboxPath = MailboxPath.forUser(user, mailbox);
 
         mainStepdefs.mailboxProbe.appendMessage(user, mailboxPath,
             ClassLoader.getSystemResourceAsStream("eml/sameInlinedImages.eml"), new Date(), false, new Flags());

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
index 1c3da93..05657a2 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
@@ -139,7 +139,7 @@ public class GetMessagesMethodStepdefs {
     public void appendMessageFromFileInlinedMultipart(String messageName, String mailbox) throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         MessageId id = mainStepdefs.mailboxProbe.appendMessage(userStepdefs.lastConnectedUser,
-                    new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, mailbox),
+                    MailboxPath.forUser(userStepdefs.lastConnectedUser, mailbox),
                     ClassLoader.getSystemResourceAsStream("eml/inlinedMultipart.eml"),
                     Date.from(dateTime.toInstant()), false, new Flags())
                 .getMessageId();
@@ -149,7 +149,7 @@ public class GetMessagesMethodStepdefs {
     private MessageId appendMessage(String mailbox, ContentType contentType, String subject, String content, Optional<Map<String, String>> headers) throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         return mainStepdefs.mailboxProbe.appendMessage(userStepdefs.lastConnectedUser,
-                new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, mailbox),
+                MailboxPath.forUser(userStepdefs.lastConnectedUser, mailbox),
                 new ByteArrayInputStream(message(contentType, subject, content, headers).getBytes(Charsets.UTF_8)),
                 Date.from(dateTime.toInstant()), false, new Flags()).getMessageId();
     }
@@ -259,7 +259,7 @@ public class GetMessagesMethodStepdefs {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         boolean isRecent = flags.contains(Flags.Flag.RECENT);
         MessageId id = mainStepdefs.mailboxProbe.appendMessage(userStepdefs.lastConnectedUser,
-                new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, DefaultMailboxes.INBOX),
+                MailboxPath.forUser(userStepdefs.lastConnectedUser, DefaultMailboxes.INBOX),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()),
                 Date.from(dateTime.toInstant()), isRecent, flags)
                 .getMessageId();
@@ -269,7 +269,7 @@ public class GetMessagesMethodStepdefs {
     private void appendMessage(String messageName, String emlFileName) throws Exception {
         ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
         MessageId id = mainStepdefs.mailboxProbe.appendMessage(userStepdefs.lastConnectedUser,
-            new MailboxPath(MailboxConstants.USER_NAMESPACE, userStepdefs.lastConnectedUser, DefaultMailboxes.INBOX),
+            MailboxPath.forUser(userStepdefs.lastConnectedUser, DefaultMailboxes.INBOX),
                 ClassLoader.getSystemResourceAsStream(emlFileName),
                 Date.from(dateTime.toInstant()), false, new Flags())
                     .getMessageId();


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


[07/29] james-project git commit: JAMES-2169 implement Mailbox.sharedWith filtering based on user rights

Posted by bt...@apache.org.
JAMES-2169 implement Mailbox.sharedWith filtering based on user rights


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

Branch: refs/heads/master
Commit: 5edd32af4096b430eaf92c5c2ca47bb12fc687e0
Parents: d75d565
Author: Matthieu Baechler <ma...@apache.org>
Authored: Fri Sep 29 17:20:38 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:19:58 2017 +0700

----------------------------------------------------------------------
 .../apache/james/mailbox/MessageManager.java    |   3 +-
 .../apache/james/mailbox/model/MailboxACL.java  |   1 -
 .../james/mailbox/fixture/MailboxFixture.java   |   3 +-
 .../inmemory/InMemoryMessageManagerTest.java    |  38 +++++++
 .../InMemoryMessageManagerTestSystem.java       | 110 +++++++++++++++++++
 .../MessageManagerTestSystemProvider.java       |  73 ++++++++++++
 .../mailbox/store/StoreMessageManager.java      |  30 +++--
 .../store/AbstractMessageManagerTest.java       |  84 ++++++++++++++
 .../mailbox/store/MessageManagerTestSystem.java |  64 +++++++++++
 .../mailbox/store/StoreMailboxManagerTest.java  |   6 +-
 .../mailbox/store/StoreMessageManagerTest.java  |  68 ++++++++++++
 .../integration/GetMailboxesMethodTest.java     |  17 ++-
 12 files changed, 482 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
index edad736..ee152d6 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
@@ -184,8 +184,7 @@ public interface MessageManager {
      *            context, not null
      * @param fetchGroup
      *            describes which optional data should be returned
-     * @return meta data, not null
-     * @throws MailboxException
+     * @return metadata view filtered for the session's user, not null
      */
     MetaData getMetaData(boolean resetRecent, MailboxSession mailboxSession, MessageManager.MetaData.FetchGroup fetchGroup) throws MailboxException;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
index 569eeae..d87d85e 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
@@ -527,7 +527,6 @@ public class MailboxACL {
                 return this;
             }
 
-
             public Builder key(EntryKey key) {
                 this.key = key;
                 return this;

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java b/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
index 645a04a..90d2095 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
@@ -26,7 +26,8 @@ public class MailboxFixture {
 
     public static final String USER = "user";
     public static final String OTHER_USER = "otheruser";
-    
+    public static final String THIRD_USER = "thirdUser";
+
     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");

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTest.java
new file mode 100644
index 0000000..2422cff
--- /dev/null
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTest.java
@@ -0,0 +1,38 @@
+/****************************************************************
+ * 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 org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.store.AbstractMessageManagerTest;
+import org.apache.james.mailbox.store.MessageManagerTestSystem;
+import org.junit.Before;
+
+public class InMemoryMessageManagerTest extends AbstractMessageManagerTest {
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
+    @Override
+    protected MessageManagerTestSystem createTestSystem() throws MailboxException {
+        return MessageManagerTestSystemProvider.createTestSystem();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
new file mode 100644
index 0000000..0e9d9d2
--- /dev/null
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
@@ -0,0 +1,110 @@
+/****************************************************************
+ * 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.io.ByteArrayInputStream;
+import java.util.Date;
+import java.util.Optional;
+
+import javax.mail.Flags;
+
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
+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.MessageManagerTestSystem;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Throwables;
+
+public class InMemoryMessageManagerTestSystem extends MessageManagerTestSystem {
+
+    private static final MessageId FIRST_MESSAGE_ID = InMemoryMessageId.of(1);
+    private static final long ONE_HUNDRED = 100;
+    private static final int UID_VALIDITY = 1024;
+    public static final byte[] CONTENT = "Subject: test\r\n\r\ntestmail".getBytes(Charsets.UTF_8);
+
+    private final MailboxManager mailboxManager;
+    private Optional<MessageId> lastMessageIdUsed;
+
+    public InMemoryMessageManagerTestSystem(MailboxManager mailboxManager) throws MailboxException {
+        super(mailboxManager);
+        this.mailboxManager = mailboxManager;
+        this.lastMessageIdUsed = Optional.empty();
+    }
+
+    @Override
+    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, session);
+            MessageId messageId = messageManager.appendMessage(new ByteArrayInputStream(CONTENT), new Date(), session, false, flags)
+                    .getMessageId();
+            lastMessageIdUsed = Optional.of(messageId);
+            return messageId;
+        } catch (MailboxException e) {
+            throw Throwables.propagate(e);
+        }
+    }
+
+    @Override
+    public MessageId createNotUsedMessageId() {
+        return InMemoryMessageId.of(Long.valueOf(lastMessageIdUsed.orElse(FIRST_MESSAGE_ID).serialize()) + ONE_HUNDRED);
+    }
+
+    @Override
+    public void deleteMailbox(final MailboxId mailboxId, MailboxSession session) {
+        try {
+            Optional<MailboxMetaData> mailbox = retrieveMailbox(mailboxId, session);
+            if (mailbox.isPresent()) {
+                mailboxManager.deleteMailbox(mailbox.get().getPath(), session);
+            }
+        } catch (MailboxException e) {
+            Throwables.propagate(e);
+        }
+    }
+
+    private Optional<MailboxMetaData> retrieveMailbox(final MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
+        MailboxQuery userMailboxesQuery = MailboxQuery.builder(mailboxSession).expression("*").build();
+        return mailboxManager.search(userMailboxesQuery, mailboxSession)
+            .stream()
+            .filter(mailboxMetaData -> mailboxMetaData.getId().equals(mailboxId))
+            .findFirst();
+    }
+
+    @Override
+    public int getConstantMessageSize() {
+        return CONTENT.length;
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/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
new file mode 100644
index 0000000..3776033
--- /dev/null
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java
@@ -0,0 +1,73 @@
+/****************************************************************
+ * 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 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.store.MessageManagerTestSystem;
+import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
+
+import com.google.common.base.Throwables;
+
+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);
+
+        try {
+            mailboxManager.init();
+        } catch (MailboxException e) {
+            Throwables.propagate(e);
+        }
+        return mailboxManager;
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/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 998ec96..7966e38 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
@@ -91,6 +91,7 @@ import org.apache.james.util.IteratorWrapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
@@ -469,11 +470,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
         return aclResolver.isReadWrite(myRights(session), getSharedPermanentFlags(session));
     }
 
-    /**
-     * @see MessageManager#getMetaData(boolean, MailboxSession,
-     *      org.apache.james.mailbox.MessageManager.MetaData.FetchGroup)
-     */
-    public MetaData getMetaData(boolean resetRecent, MailboxSession mailboxSession, org.apache.james.mailbox.MessageManager.MetaData.FetchGroup fetchGroup) throws MailboxException {
+    @Override
+    public MetaData getMetaData(boolean resetRecent, MailboxSession mailboxSession, MetaData.FetchGroup fetchGroup) throws MailboxException {
 
         final List<MessageUid> recent;
         final Flags permanentFlags = getPermanentFlags(mailboxSession);
@@ -816,9 +814,27 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
      * @throws UnsupportedRightException
      */
     protected MailboxACL getResolvedMailboxACL(MailboxSession mailboxSession) throws UnsupportedRightException {
-        return aclResolver.applyGlobalACL(mailbox.getACL(), new GroupFolderResolver(mailboxSession).isGroupFolder(mailbox));
+        return filteredForSession(mailbox, aclResolver.applyGlobalACL(mailbox.getACL(), new GroupFolderResolver(mailboxSession).isGroupFolder(mailbox)), mailboxSession);
     }
-    
+
+    /**
+     * ACL is sensible information and as such we should expose as few information as possible
+     * to users. This method allows to filter a {@link MailboxACL} in order to present it to
+     * the connected user.
+     */
+    @VisibleForTesting static MailboxACL filteredForSession(Mailbox mailbox, MailboxACL acl, MailboxSession mailboxSession) throws UnsupportedRightException {
+        if (mailboxSession.getUser().isSameUser(mailbox.getUser())) {
+            return acl;
+        }
+        MailboxACL.EntryKey userAsKey = MailboxACL.EntryKey.createUser(mailboxSession.getUser().getUserName());
+        Rfc4314Rights rights = acl.getEntries().getOrDefault(userAsKey, new Rfc4314Rights());
+        if (rights.contains(MailboxACL.Right.Administer)) {
+            return acl;
+        }
+        return new MailboxACL(ImmutableMap.of(userAsKey, rights));
+    }
+
+
     @Override
     public MailboxId getId() {
         return mailbox.getMailboxId();

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageManagerTest.java
new file mode 100644
index 0000000..d85d342
--- /dev/null
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageManagerTest.java
@@ -0,0 +1,84 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailbox.store;
+
+import static org.apache.james.mailbox.fixture.MailboxFixture.MAILBOX_PATH1;
+import static org.apache.james.mailbox.fixture.MailboxFixture.OTHER_USER;
+import static org.apache.james.mailbox.fixture.MailboxFixture.THIRD_USER;
+import static org.apache.james.mailbox.fixture.MailboxFixture.USER;
+import static org.assertj.core.api.Assertions.assertThat;
+
+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.MessageManager;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.fixture.MailboxFixture;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.junit.Test;
+
+public abstract class AbstractMessageManagerTest {
+
+    private static final boolean NO_RESET_RECENT = false;
+
+    private MessageManagerTestSystem testSystem;
+    private MailboxManager mailboxManager;
+    private MailboxSession session;
+    private MailboxSession otherSession;
+
+    protected abstract MessageManagerTestSystem createTestSystem() throws Exception;
+
+    public void setUp() throws Exception {
+        session = new MockMailboxSession(USER);
+        otherSession = new MockMailboxSession(OTHER_USER);
+        testSystem = createTestSystem();
+        mailboxManager = testSystem.getMailboxManager();
+
+        testSystem.createMailbox(MAILBOX_PATH1, session);
+        testSystem.createMailbox(MailboxFixture.MAILBOX_PATH2, session);
+        testSystem.createMailbox(MailboxFixture.MAILBOX_PATH3, session);
+        testSystem.createMailbox(MailboxFixture.MAILBOX_PATH4, otherSession);
+    }
+
+    @Test
+    public void getMetadataShouldListUsersAclWhenShared() throws Exception {
+        mailboxManager.applyRightsCommand(MAILBOX_PATH1, MailboxACL.command().forUser(OTHER_USER).rights(MailboxACL.Right.Read).asAddition(), session);
+        mailboxManager.applyRightsCommand(MAILBOX_PATH1, MailboxACL.command().forUser(THIRD_USER).rights(MailboxACL.Right.Read).asAddition(), session);
+        MessageManager messageManager = mailboxManager.getMailbox(MAILBOX_PATH1, session);
+
+        MessageManager.MetaData actual = messageManager.getMetaData(NO_RESET_RECENT, session, MessageManager.MetaData.FetchGroup.NO_COUNT);
+        assertThat(actual.getACL().getEntries()).containsKeys(MailboxACL.EntryKey.createUser(OTHER_USER), MailboxACL.EntryKey.createUser(THIRD_USER));
+    }
+
+    @Test
+    public void getMetadataShouldNotExposeOtherUsersWhenSessionIsNotOwner() throws Exception {
+        mailboxManager.applyRightsCommand(MAILBOX_PATH1, MailboxACL.command().forUser(OTHER_USER).rights(MailboxACL.Right.Read).asAddition(), session);
+        mailboxManager.applyRightsCommand(MAILBOX_PATH1, MailboxACL.command().forUser(THIRD_USER).rights(MailboxACL.Right.Read).asAddition(), session);
+        MessageManager messageManager = mailboxManager.getMailbox(MAILBOX_PATH1, session);
+
+        MessageManager.MetaData actual = messageManager.getMetaData(NO_RESET_RECENT, otherSession, MessageManager.MetaData.FetchGroup.NO_COUNT);
+        assertThat(actual.getACL().getEntries()).containsOnlyKeys(MailboxACL.EntryKey.createUser(OTHER_USER));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageManagerTestSystem.java
new file mode 100644
index 0000000..f1715d6
--- /dev/null
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageManagerTestSystem.java
@@ -0,0 +1,64 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailbox.store;
+
+import javax.mail.Flags;
+
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+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 MessageManagerTestSystem {
+
+    private final MailboxManager mailboxManager;
+
+    public MessageManagerTestSystem(MailboxManager mailboxManager) {
+        this.mailboxManager = mailboxManager;
+    }
+
+    public MailboxManager getMailboxManager() {
+        return mailboxManager;
+    }
+
+    public abstract Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException;
+
+    /**
+     * Should take care of find returning the MailboxMessage
+     * Should take care of findMailboxes returning the mailbox the message is in
+     * Should persist flags 
+     * Should keep track of flag state for setFlags
+     * 
+     * @param mailboxId
+     * @param flags
+     * @return the id of persisted message
+     */
+    public abstract MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession session);
+
+    public abstract MessageId createNotUsedMessageId();
+
+    public abstract void deleteMailbox(MailboxId mailboxId, MailboxSession session);
+
+    public abstract int getConstantMessageSize();
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
index e0db1ec..8c3819d 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.store;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -33,6 +34,7 @@ import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.exception.NotAdminException;
 import org.apache.james.mailbox.exception.UserDoesNotExistException;
 import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
@@ -167,11 +169,13 @@ public class StoreMailboxManagerTest {
     }
 
     @Test(expected = MailboxNotFoundException.class)
-    public void getMailboxShouldThrowWhenMailboxDoesNotMatchUser() throws Exception {
+    public void getMailboxShouldThrowWhenMailboxDoesNotMatchUserWithoutRight() throws Exception {
         Mailbox mockedMailbox = mock(Mailbox.class);
+        when(mockedMailbox.getACL()).thenReturn(new MailboxACL());
         when(mockedMailbox.getUser()).thenReturn("other.user");
         when(mockedMailbox.getMailboxId()).thenReturn(MAILBOX_ID);
         when(mockedMailboxMapper.findMailboxById(MAILBOX_ID)).thenReturn(mockedMailbox);
+        when(mockedMailboxMapper.findMailboxByPath(any())).thenReturn(mockedMailbox);
 
         MessageManager expected = storeMailboxManager.getMailbox(MAILBOX_ID, mockedMailboxSession);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
new file mode 100644
index 0000000..9172412
--- /dev/null
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageManagerTest.java
@@ -0,0 +1,68 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailbox.store;
+
+import static org.apache.james.mailbox.fixture.MailboxFixture.MAILBOX_PATH1;
+import static org.apache.james.mailbox.fixture.MailboxFixture.OTHER_USER;
+import static org.apache.james.mailbox.fixture.MailboxFixture.THIRD_USER;
+import static org.apache.james.mailbox.fixture.MailboxFixture.USER;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.james.mailbox.exception.UnsupportedRightException;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxACL.Right;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
+import org.junit.Test;
+
+public class StoreMessageManagerTest {
+
+    public static final long UID_VALIDITY = 3421l;
+
+    @Test
+    public void filteredForSessionShouldBeIdentityWhenOwner() throws UnsupportedRightException {
+        MailboxACL acl = new MailboxACL()
+            .apply(MailboxACL.command().rights(Right.Read, Right.Write).forUser(OTHER_USER).asAddition())
+            .apply(MailboxACL.command().rights(Right.Read, Right.Write, Right.Administer).forUser(THIRD_USER).asAddition());
+        MailboxACL actual = StoreMessageManager.filteredForSession(
+            new SimpleMailbox(MAILBOX_PATH1, UID_VALIDITY), acl, new MockMailboxSession(USER));
+        assertThat(actual).isEqualTo(acl);
+    }
+
+    @Test
+    public void filteredForSessionShouldBeIdentityWhenAdmin() throws UnsupportedRightException {
+        MailboxACL acl = new MailboxACL()
+            .apply(MailboxACL.command().rights(Right.Read, Right.Write).forUser(OTHER_USER).asAddition())
+            .apply(MailboxACL.command().rights(Right.Read, Right.Write, Right.Administer).forUser(THIRD_USER).asAddition());
+        MailboxACL actual = StoreMessageManager.filteredForSession(
+            new SimpleMailbox(MAILBOX_PATH1, UID_VALIDITY), acl, new MockMailboxSession(THIRD_USER));
+        assertThat(actual).isEqualTo(acl);
+    }
+
+    @Test
+    public void filteredForSessionShouldContainOnlyLoggedUserWhenReadWriteAccess() throws UnsupportedRightException {
+        MailboxACL acl = new MailboxACL()
+            .apply(MailboxACL.command().rights(Right.Read, Right.Write).forUser(OTHER_USER).asAddition())
+            .apply(MailboxACL.command().rights(Right.Read, Right.Write, Right.Administer).forUser(THIRD_USER).asAddition());
+        MailboxACL actual = StoreMessageManager.filteredForSession(
+            new SimpleMailbox(MAILBOX_PATH1, UID_VALIDITY), acl, new MockMailboxSession(OTHER_USER));
+        assertThat(actual.getEntries()).containsKey(MailboxACL.EntryKey.createUser(OTHER_USER));
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/5edd32af/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index 1a9f568..7c49289 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -22,6 +22,7 @@ package org.apache.james.jmap.methods.integration;
 import static com.jayway.restassured.RestAssured.given;
 import static com.jayway.restassured.config.EncoderConfig.encoderConfig;
 import static com.jayway.restassured.config.RestAssuredConfig.newConfig;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.empty;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasEntry;
@@ -37,6 +38,7 @@ import java.io.ByteArrayInputStream;
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 
 import javax.mail.Flags;
 
@@ -83,6 +85,7 @@ public abstract class GetMailboxesMethodTest {
     private AccessToken accessToken;
     private String alice;
     private String bob;
+    private String cedric;
     private GuiceJamesServer jmapServer;
     private MailboxProbe mailboxProbe;
     private ACLProbe aclProbe;
@@ -105,6 +108,7 @@ public abstract class GetMailboxesMethodTest {
         String domain = "domain.tld";
         alice = "alice@" + domain;
         bob = "bob@" + domain;
+        cedric = "cedric@" + domain;
         String password = "password";
         DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(domain);
@@ -507,9 +511,11 @@ public abstract class GetMailboxesMethodTest {
     public void getMailboxesShouldReturnMailboxesWhenShared() throws Exception {
         String mailboxName = "name";
         MailboxId bobMailbox = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, bob, mailboxName);
-        aclProbe.replaceRights(MailboxPath.forUser(bob, mailboxName), alice, new Rfc4314Rights(Right.Read));
+        MailboxPath bobMailboxPath = MailboxPath.forUser(bob, mailboxName);
+        aclProbe.replaceRights(bobMailboxPath, alice, new Rfc4314Rights(Right.Read));
+        aclProbe.replaceRights(bobMailboxPath, cedric, new Rfc4314Rights(Right.Read));
 
-        given()
+        Map<String, String> sharedWith = given()
             .header("Authorization", accessToken.serialize())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + bobMailbox.serialize() + "\"]}, \"#0\"]]")
         .when()
@@ -517,7 +523,12 @@ public abstract class GetMailboxesMethodTest {
         .then()
             .statusCode(200)
             .body(NAME, equalTo("mailboxes"))
-            .body(ARGUMENTS + ".list.name", hasItem(mailboxName));
+            .body(ARGUMENTS + ".list.name", hasSize(1))
+        .extract()
+            .jsonPath()
+            .get(FIRST_MAILBOX + ".sharedWith");
+
+        assertThat(sharedWith).containsOnlyKeys(alice);
     }
 
 


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


[29/29] james-project git commit: MAILBOX-307 CassandraACLMapper should not be initialized in MailboxMapper

Posted by bt...@apache.org.
MAILBOX-307 CassandraACLMapper should not be initialized in MailboxMapper


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

Branch: refs/heads/master
Commit: 10da4351c65d1e0b53066921a7bece59d58cf792
Parents: 3682a4a
Author: benwa <bt...@linagora.com>
Authored: Tue Oct 3 08:15:48 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:27:40 2017 +0700

----------------------------------------------------------------------
 .../cassandra/CassandraMailboxSessionMapperFactory.java   | 10 +++++++---
 .../james/mailbox/cassandra/mail/CassandraACLMapper.java  |  3 +++
 .../mailbox/cassandra/mail/CassandraMailboxMapper.java    |  5 ++---
 .../cassandra/CassandraSubscriptionManagerTest.java       |  3 +++
 .../TestCassandraMailboxSessionMapperFactory.java         |  2 ++
 .../mail/CassandraMailboxMapperConcurrencyTest.java       |  6 +++++-
 .../cassandra/mail/CassandraMailboxMapperTest.java        |  6 +++++-
 .../cassandra/mail/CassandraModSeqProviderTest.java       |  6 +++++-
 .../mailbox/cassandra/mail/CassandraUidProviderTest.java  |  7 ++++++-
 9 files changed, 38 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/10da4351/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
index 6806e42..d23d46c 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
@@ -24,6 +24,7 @@ import javax.inject.Inject;
 import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.cassandra.mail.CassandraACLMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraAnnotationMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentDAO;
@@ -86,6 +87,7 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
     private final CassandraBlobsDAO blobsDAO;
     private final CassandraAttachmentMessageIdDAO attachmentMessageIdDAO;
     private final CassandraAttachmentOwnerDAO ownerDAO;
+    private final CassandraACLMapper aclMapper;
     private final CassandraUtils cassandraUtils;
     private final CassandraConfiguration cassandraConfiguration;
 
@@ -97,7 +99,8 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
                                                 CassandraMailboxPathDAO mailboxPathDAO, CassandraFirstUnseenDAO firstUnseenDAO, CassandraApplicableFlagDAO applicableFlagDAO,
                                                 CassandraAttachmentDAO attachmentDAO, CassandraAttachmentDAOV2 attachmentDAOV2, CassandraDeletedMessageDAO deletedMessageDAO,
                                                 CassandraBlobsDAO blobsDAO, CassandraAttachmentMessageIdDAO attachmentMessageIdDAO,
-                                                CassandraAttachmentOwnerDAO ownerDAO, CassandraUtils cassandraUtils, CassandraConfiguration cassandraConfiguration) {
+                                                CassandraAttachmentOwnerDAO ownerDAO, CassandraACLMapper aclMapper,
+                                                CassandraUtils cassandraUtils, CassandraConfiguration cassandraConfiguration) {
         this.uidProvider = uidProvider;
         this.modSeqProvider = modSeqProvider;
         this.session = session;
@@ -115,6 +118,7 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
         this.applicableFlagDAO = applicableFlagDAO;
         this.blobsDAO = blobsDAO;
         this.attachmentMessageIdDAO = attachmentMessageIdDAO;
+        this.aclMapper = aclMapper;
         this.cassandraUtils = cassandraUtils;
         this.ownerDAO = ownerDAO;
         this.cassandraConfiguration = cassandraConfiguration;
@@ -148,14 +152,14 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa
     @Override
     public MessageIdMapper createMessageIdMapper(MailboxSession mailboxSession) throws MailboxException {
         return new CassandraMessageIdMapper(getMailboxMapper(mailboxSession), mailboxDAO,
-                (CassandraAttachmentMapper) createAttachmentMapper(mailboxSession),
+                createAttachmentMapper(mailboxSession),
                 imapUidDAO, messageIdDAO, messageDAO, indexTableHandler, modSeqProvider, mailboxSession,
                 cassandraConfiguration);
     }
 
     @Override
     public MailboxMapper createMailboxMapper(MailboxSession mailboxSession) {
-        return new CassandraMailboxMapper(session, mailboxDAO, mailboxPathDAO, cassandraConfiguration);
+        return new CassandraMailboxMapper(mailboxDAO, mailboxPathDAO, aclMapper, cassandraConfiguration);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/10da4351/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
index 1e67d41..32a2c5d 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
@@ -31,6 +31,8 @@ import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 import java.util.function.Function;
 
+import javax.inject.Inject;
+
 import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
@@ -69,6 +71,7 @@ public class CassandraACLMapper {
     private final PreparedStatement conditionalUpdateStatement;
     private final PreparedStatement readStatement;
 
+    @Inject
     public CassandraACLMapper(Session session, CassandraConfiguration cassandraConfiguration) {
         this(session, cassandraConfiguration, () -> {});
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/10da4351/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index f1e37b5..f76c308 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -49,7 +49,6 @@ import org.apache.james.util.OptionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.datastax.driver.core.Session;
 import com.datastax.driver.core.exceptions.InvalidQueryException;
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
@@ -66,10 +65,10 @@ public class CassandraMailboxMapper implements MailboxMapper {
     private final CassandraACLMapper cassandraACLMapper;
 
     @Inject
-    public CassandraMailboxMapper(Session session, CassandraMailboxDAO mailboxDAO, CassandraMailboxPathDAO mailboxPathDAO, CassandraConfiguration cassandraConfiguration) {
+    public CassandraMailboxMapper(CassandraMailboxDAO mailboxDAO, CassandraMailboxPathDAO mailboxPathDAO, CassandraACLMapper aclMapper, CassandraConfiguration cassandraConfiguration) {
         this.mailboxDAO = mailboxDAO;
         this.mailboxPathDAO = mailboxPathDAO;
-        this.cassandraACLMapper = new CassandraACLMapper(session, cassandraConfiguration);
+        this.cassandraACLMapper = aclMapper;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/10da4351/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
index bcf3e6b..c1286f8 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
@@ -26,6 +26,7 @@ import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mailbox.AbstractSubscriptionManagerTest;
 import org.apache.james.mailbox.SubscriptionManager;
+import org.apache.james.mailbox.cassandra.mail.CassandraACLMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentDAOV2;
@@ -95,6 +96,7 @@ public class CassandraSubscriptionManagerTest extends AbstractSubscriptionManage
         CassandraBlobsDAO cassandraBlobsDAO = null;
         CassandraAttachmentMessageIdDAO attachmentMessageIdDAO = null;
         CassandraAttachmentOwnerDAO ownerDAO = null;
+        CassandraACLMapper aclMapper = null;
         return new CassandraSubscriptionManager(
             new CassandraMailboxSessionMapperFactory(
                 new CassandraUidProvider(cassandra.getConf()),
@@ -115,6 +117,7 @@ public class CassandraSubscriptionManagerTest extends AbstractSubscriptionManage
                 cassandraBlobsDAO,
                 attachmentMessageIdDAO,
                 ownerDAO,
+                aclMapper,
                 CassandraUtils.WITH_DEFAULT_CONFIGURATION,
                 CassandraConfiguration.DEFAULT_CONFIGURATION));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/10da4351/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java
index d5e450c..6896d63 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java
@@ -23,6 +23,7 @@ import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
+import org.apache.james.mailbox.cassandra.mail.CassandraACLMapper;
 import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentDAOV2;
@@ -66,6 +67,7 @@ public class TestCassandraMailboxSessionMapperFactory {
             cassandraBlobsDAO,
             new CassandraAttachmentMessageIdDAO(session, factory, CassandraUtils.WITH_DEFAULT_CONFIGURATION),
             new CassandraAttachmentOwnerDAO(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION),
+            new CassandraACLMapper(session, CassandraConfiguration.DEFAULT_CONFIGURATION),
             CassandraUtils.WITH_DEFAULT_CONFIGURATION,
             CassandraConfiguration.DEFAULT_CONFIGURATION);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/10da4351/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
index 2facbfa..42ed3a9 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
@@ -57,7 +57,11 @@ public class CassandraMailboxMapperConcurrencyTest {
         cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
         CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
-        testee = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, CassandraConfiguration.DEFAULT_CONFIGURATION);
+        testee = new CassandraMailboxMapper(
+            mailboxDAO,
+            mailboxPathDAO,
+            new CassandraACLMapper(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION),
+            CassandraConfiguration.DEFAULT_CONFIGURATION);
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/james-project/blob/10da4351/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index 3cd7828..1c7d9ea 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@ -61,7 +61,11 @@ public class CassandraMailboxMapperTest {
         cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
         mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
-        testee = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, CassandraConfiguration.DEFAULT_CONFIGURATION);
+        testee = new CassandraMailboxMapper(
+            mailboxDAO,
+            mailboxPathDAO,
+            new CassandraACLMapper(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION),
+            CassandraConfiguration.DEFAULT_CONFIGURATION);
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/james-project/blob/10da4351/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
index becbeac..2d4e4c9 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
@@ -60,7 +60,11 @@ public class CassandraModSeqProviderTest {
         modSeqProvider = new CassandraModSeqProvider(cassandra.getConf());
         CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
         CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
-        mapper = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, CassandraConfiguration.DEFAULT_CONFIGURATION);
+        mapper = new CassandraMailboxMapper(
+            mailboxDAO,
+            mailboxPathDAO,
+            new CassandraACLMapper(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION),
+            CassandraConfiguration.DEFAULT_CONFIGURATION);
         MailboxPath path = new MailboxPath("gsoc", "ieugen", "Trash");
         mailbox = new SimpleMailbox(path, 1234);
         mapper.save(mailbox);

http://git-wip-us.apache.org/repos/asf/james-project/blob/10da4351/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
index 8f71f05..9380ba5 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
@@ -19,6 +19,7 @@
 package org.apache.james.mailbox.cassandra.mail;
 
 import static org.assertj.core.api.Assertions.assertThat;
+
 import java.util.Optional;
 import java.util.stream.LongStream;
 
@@ -60,7 +61,11 @@ public class CassandraUidProviderTest {
         uidProvider = new CassandraUidProvider(cassandra.getConf());
         CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
         CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
-        mapper = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, CassandraConfiguration.DEFAULT_CONFIGURATION);
+        mapper = new CassandraMailboxMapper(
+            mailboxDAO,
+            mailboxPathDAO,
+            new CassandraACLMapper(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION),
+            CassandraConfiguration.DEFAULT_CONFIGURATION);
         MailboxPath path = new MailboxPath("gsoc", "ieugen", "Trash");
         mailbox = new SimpleMailbox(path, 1234);
         mapper.save(mailbox);


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


[15/29] james-project git commit: JAMES-2169 Add a test checking ADMIN can read sharedWith JMAP Mailboxes property

Posted by bt...@apache.org.
JAMES-2169 Add a test checking ADMIN can read sharedWith JMAP Mailboxes property


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

Branch: refs/heads/master
Commit: 282030ddb4c930fd4b07933e46e5de06faf84a82
Parents: 0f5a0f2
Author: benwa <bt...@linagora.com>
Authored: Mon Oct 2 10:10:06 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:20:58 2017 +0700

----------------------------------------------------------------------
 .../integration/GetMailboxesMethodTest.java     | 24 +++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/282030dd/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index 7c49289..a8a434e 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -508,7 +508,7 @@ public abstract class GetMailboxesMethodTest {
     }
 
     @Test
-    public void getMailboxesShouldReturnMailboxesWhenShared() throws Exception {
+    public void getMailboxesShouldReturnMailboxesWithFilteredSharedWithWhenShared() throws Exception {
         String mailboxName = "name";
         MailboxId bobMailbox = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, bob, mailboxName);
         MailboxPath bobMailboxPath = MailboxPath.forUser(bob, mailboxName);
@@ -531,5 +531,27 @@ public abstract class GetMailboxesMethodTest {
         assertThat(sharedWith).containsOnlyKeys(alice);
     }
 
+    @Test
+    public void getMailboxesShouldReturnMailboxesWithFullSharedWithWhenHasAdminRight() throws Exception {
+        String mailboxName = "name";
+        MailboxId bobMailbox = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, bob, mailboxName);
+        MailboxPath bobMailboxPath = MailboxPath.forUser(bob, mailboxName);
+        aclProbe.replaceRights(bobMailboxPath, alice, new Rfc4314Rights(Right.Read, Right.Administer));
+        aclProbe.replaceRights(bobMailboxPath, cedric, new Rfc4314Rights(Right.Read));
 
+        Map<String, String> sharedWith = given()
+            .header("Authorization", accessToken.serialize())
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + bobMailbox.serialize() + "\"]}, \"#0\"]]")
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .body(NAME, equalTo("mailboxes"))
+            .body(ARGUMENTS + ".list.name", hasSize(1))
+        .extract()
+            .jsonPath()
+            .get(FIRST_MAILBOX + ".sharedWith");
+
+        assertThat(sharedWith).containsOnlyKeys(alice, cedric);
+    }
 }


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


[20/29] james-project git commit: JAMES-2169 Use MailboxPath::forUser more widely

Posted by bt...@apache.org.
JAMES-2169 Use MailboxPath::forUser more widely


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

Branch: refs/heads/master
Commit: f15ff20bc732d7d11e41cb7f2d9a6f4a09d3109c
Parents: 3bb0259
Author: benwa <bt...@linagora.com>
Authored: Mon Oct 2 11:14:47 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:24:11 2017 +0700

----------------------------------------------------------------------
 .../james/mailbox/MailboxManagerStressTest.java |   3 +-
 .../james/mailbox/MailboxManagerTest.java       |  17 +-
 .../james/mailbox/fixture/MailboxFixture.java   |  10 +-
 .../james/mailbox/mock/MockMailboxManager.java  |   6 +-
 .../james/mailbox/model/MailboxPathTest.java    |  20 +-
 .../james/mailbox/model/MailboxQueryTest.java   |   4 +-
 ...istributedMailboxDelegatingListenerTest.java |   4 +-
 .../mail/CassandraIndexTableHandlerTest.java    |   2 +-
 .../mail/CassandraMailboxCounterDAOTest.java    |   2 +-
 .../cassandra/mail/CassandraMailboxDAOTest.java |   7 +-
 .../CassandraMailboxMapperConcurrencyTest.java  |   2 +-
 .../mail/CassandraMailboxMapperTest.java        |   2 +-
 .../mail/CassandraMailboxPathDAOTest.java       |   7 +-
 .../ElasticSearchIntegrationTest.java           |  11 +-
 .../mailbox/store/StoreMailboxManager.java      |   2 +-
 .../AbstractMailboxManagerAttachmentTest.java   |   5 +-
 .../mailbox/store/GroupFolderResolverTest.java  |   3 +-
 .../store/MailboxEventDispatcherTest.java       |   3 +-
 .../event/MailboxAnnotationListenerTest.java    |   8 +-
 .../event/MailboxListenerRegistryTest.java      |   4 +-
 ...elegatingMailboxListenerIntegrationTest.java |   4 +-
 .../mailbox/store/json/EventSerializerTest.java |   2 +-
 .../store/mail/model/ListMessageAssertTest.java |   2 +-
 .../store/mail/model/MailboxAssertTests.java    |  18 +-
 .../store/mail/model/MailboxMapperACLTest.java  |   2 +-
 .../store/mail/model/MailboxMapperTest.java     |  16 +-
 .../store/mail/model/MessageIdMapperTest.java   |   8 +-
 .../store/mail/model/MessageMapperTest.java     |   8 +-
 .../store/mail/model/MessageMoveTest.java       |   4 +-
 .../model/MessageWithAttachmentMapperTest.java  |   2 +-
 .../quota/DefaultQuotaRootResolverTest.java     |   8 +-
 .../quota/ListeningCurrentQuotaUpdaterTest.java |   2 +-
 .../mailbox/store/quota/QuotaCheckerTest.java   |   2 +-
 .../search/AbstractMessageSearchIndexTest.java  |  11 +-
 .../mailbox/indexer/ReIndexerImplTest.java      |   5 +-
 .../registrations/GlobalRegistrationTest.java   |   5 +-
 .../registrations/MailboxRegistrationTest.java  |   2 +-
 .../mpt/imapmailbox/suite/ACLCommands.java      |   2 +-
 .../mpt/imapmailbox/suite/ACLIntegration.java   |  16 +-
 .../imapmailbox/suite/AuthenticatePlain.java    |   5 +-
 .../imapmailbox/suite/AuthenticatedState.java   |  12 +-
 .../imapmailbox/cyrus/host/CyrusHostSystem.java |   5 +-
 .../james/imap/processor/LSubProcessor.java     |   2 +-
 .../james/imap/processor/ListProcessor.java     |   2 +-
 .../james/imap/main/PathConverterTest.java      |  12 +-
 .../imap/processor/DeleteACLProcessorTest.java  |   3 +-
 .../imap/processor/GetACLProcessorTest.java     |   2 +-
 .../processor/GetQuotaRootProcessorTest.java    |   2 +-
 .../imap/processor/ListRightsProcessorTest.java |   2 +-
 .../imap/processor/SetACLProcessorTest.java     |   2 +-
 .../processor/base/SelectedMailboxImplTest.java |   2 +-
 .../cli/ReindexCommandIntegrationTest.java      |   2 +-
 .../apache/james/modules/MailboxProbeImpl.java  |   3 +-
 .../mailbox/MailboxManagerManagement.java       |   3 +-
 .../adapter/mailbox/MailboxManagementTest.java  |  40 +--
 .../mailets/delivery/LocalDeliveryTest.java     |   6 +-
 .../mailets/delivery/MailboxAppenderTest.java   |   8 +-
 .../mailets/delivery/SieveIntegrationTest.java  |   8 +-
 .../mailets/delivery/ToRecipientFolderTest.java |   8 +-
 .../integration/GetMailboxesMethodTest.java     |   4 +-
 .../integration/GetMessageListMethodTest.java   | 260 +++++++++----------
 .../integration/SetMessagesMethodTest.java      |  28 +-
 .../integration/cucumber/DownloadStepdefs.java  |   8 +-
 .../cucumber/GetMessagesMethodStepdefs.java     |   8 +-
 .../cucumber/SetMailboxesMethodStepdefs.java    |   3 +-
 .../jmap/utils/SystemMailboxesProviderImpl.java |   3 +-
 .../DefaultMailboxesProvisioningFilterTest.java |   5 +-
 .../jmap/methods/GetMailboxesMethodTest.java    |  52 ++--
 .../SetMessagesCreationProcessorTest.java       |   5 +-
 .../james/jmap/model/MailboxFactoryTest.java    |  26 +-
 .../jmap/send/PostDequeueDecoratorTest.java     |   5 +-
 .../james/jmap/utils/MailboxUtilsTest.java      |   6 +-
 .../apache/james/pop3server/POP3ServerTest.java |   8 +-
 .../routes/UserMailboxesRoutesTest.java         |  10 +-
 74 files changed, 392 insertions(+), 409 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
index 115f867..8b4e580 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
@@ -35,7 +35,6 @@ import javax.mail.Flags;
 
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.junit.Test;
 
@@ -63,7 +62,7 @@ public abstract class MailboxManagerStressTest {
         final String username = "username";
         MailboxSession session = mailboxManager.createSystemSession(username);
         mailboxManager.startProcessingRequest(session);
-        final MailboxPath path = new MailboxPath(MailboxConstants.USER_NAMESPACE, username, "INBOX");
+        final MailboxPath path = MailboxPath.forUser(username, "INBOX");
         mailboxManager.createMailbox(path, session);
         mailboxManager.addListener(path, new MailboxListener() {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
index 226745c..0b70549 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
@@ -19,11 +19,13 @@
 package org.apache.james.mailbox;
 
 import static org.assertj.core.api.Assertions.assertThat;
+
 import java.io.ByteArrayInputStream;
 import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.util.List;
 import java.util.Optional;
+
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxManager.MailboxCapabilities;
@@ -33,7 +35,6 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.mock.MockMailboxManager;
 import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -111,7 +112,7 @@ public abstract class MailboxManagerTest {
         session = mailboxManager.createSystemSession(USER_1);
         mailboxManager.startProcessingRequest(session);
 
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USER_1, "name.subfolder");
+        MailboxPath mailboxPath = MailboxPath.forUser(USER_1, "name.subfolder");
         Optional<MailboxId> mailboxId = mailboxManager.createMailbox(mailboxPath, session);
         MessageManager retrievedMailbox = mailboxManager.getMailbox(mailboxPath, session);
 
@@ -218,7 +219,7 @@ public abstract class MailboxManagerTest {
     @Test
     public void user2ShouldBeAbleToCreateRootlessFolder() throws BadCredentialsException, MailboxException {
         session = mailboxManager.createSystemSession(USER_2);
-        MailboxPath trash = new MailboxPath(MailboxConstants.USER_NAMESPACE, USER_2, "Trash");
+        MailboxPath trash = MailboxPath.forUser(USER_2, "Trash");
         mailboxManager.createMailbox(trash, session);
         
         assertThat(mailboxManager.mailboxExists(trash, session)).isTrue();
@@ -227,7 +228,7 @@ public abstract class MailboxManagerTest {
     @Test
     public void user2ShouldBeAbleToCreateNestedFoldersWithoutTheirParents() throws BadCredentialsException, MailboxException {
         session = mailboxManager.createSystemSession(USER_2);
-        MailboxPath nestedFolder = new MailboxPath(MailboxConstants.USER_NAMESPACE, USER_2, "INBOX.testfolder");
+        MailboxPath nestedFolder = MailboxPath.forUser(USER_2, "INBOX.testfolder");
         mailboxManager.createMailbox(nestedFolder, session);
         
         assertThat(mailboxManager.mailboxExists(nestedFolder, session)).isTrue();
@@ -238,9 +239,9 @@ public abstract class MailboxManagerTest {
     public void searchShouldNotReturnResultsFromOtherNamespaces() throws Exception {
         Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Namespace));
         session = mailboxManager.createSystemSession(USER_1);
-        mailboxManager.createMailbox(new MailboxPath("#namespace", USER_1, "Other"), session);
+        mailboxManager.createMailbox(new MailboxPath("other_namespace", USER_1, "Other"), session);
         mailboxManager.createMailbox(MailboxPath.inbox(session), session);
-        List<MailboxMetaData> metaDatas = mailboxManager.search(new MailboxQuery(new MailboxPath("#private", USER_1, ""), "*", '.'), session);
+        List<MailboxMetaData> metaDatas = mailboxManager.search(new MailboxQuery(MailboxPath.forUser(USER_1, ""), "*", '.'), session);
         assertThat(metaDatas).hasSize(1);
         assertThat(metaDatas.get(0).getPath()).isEqualTo(MailboxPath.inbox(session));
     }
@@ -248,9 +249,9 @@ public abstract class MailboxManagerTest {
     @Test
     public void searchShouldNotReturnResultsFromOtherUsers() throws Exception {
         session = mailboxManager.createSystemSession(USER_1);
-        mailboxManager.createMailbox(new MailboxPath("#namespace", USER_2, "Other"), session);
+        mailboxManager.createMailbox(MailboxPath.forUser(USER_2, "Other"), session);
         mailboxManager.createMailbox(MailboxPath.inbox(session), session);
-        List<MailboxMetaData> metaDatas = mailboxManager.search(new MailboxQuery(new MailboxPath("#private", USER_1, ""), "*", '.'), session);
+        List<MailboxMetaData> metaDatas = mailboxManager.search(new MailboxQuery(MailboxPath.forUser(USER_1, ""), "*", '.'), session);
         assertThat(metaDatas).hasSize(1);
         assertThat(metaDatas.get(0).getPath()).isEqualTo(MailboxPath.inbox(session));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java b/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
index 90d2095..ea02227 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
@@ -22,14 +22,12 @@ package org.apache.james.mailbox.fixture;
 import org.apache.james.mailbox.model.MailboxPath;
 
 public class MailboxFixture {
-    public static final String PRIVATE_NAMESPACE = "#private";
-
     public static final String USER = "user";
     public static final String OTHER_USER = "otheruser";
     public static final String THIRD_USER = "thirdUser";
 
-    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");
+    public static final MailboxPath MAILBOX_PATH1 = MailboxPath.forUser(USER, "INBOX");
+    public static final MailboxPath MAILBOX_PATH2 = MailboxPath.forUser(USER, "OUTBOX");
+    public static final MailboxPath MAILBOX_PATH3 = MailboxPath.forUser(USER, "SENT");
+    public static final MailboxPath MAILBOX_PATH4 = MailboxPath.forUser(OTHER_USER, "INBOX");
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxManager.java b/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxManager.java
index c0c4dd1..b4b5d39 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxManager.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxManager.java
@@ -114,19 +114,19 @@ public class MockMailboxManager {
                 String folderName = "INBOX";
 
                 MailboxSession mailboxSession = getMockMailboxManager().createSystemSession(user);
-                mailboxPath = new MailboxPath("#private", user, folderName);
+                mailboxPath = MailboxPath.forUser(user, folderName);
                 createMailbox(mailboxSession, mailboxPath);
                 
                 for (int k=0; k < SUB_MAILBOXES_COUNT; k++) {
                     
                     String subFolderName = folderName + ".SUB_FOLDER_" + k;
-                    mailboxPath = new MailboxPath("#private", user, subFolderName);
+                    mailboxPath = MailboxPath.forUser(user, subFolderName);
                     createMailbox(mailboxSession, mailboxPath);
                     
                     for (int l=0; l < SUB_SUB_MAILBOXES_COUNT; l++) {
 
                         String subSubfolderName = subFolderName + ".SUBSUB_FOLDER_" + l;
-                        mailboxPath = new MailboxPath("#private", user, subSubfolderName);
+                        mailboxPath = MailboxPath.forUser(user, subSubfolderName);
                         createMailbox(mailboxSession, mailboxPath);
 
                     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java
index b474aac..d51608f 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxPathTest.java
@@ -28,35 +28,35 @@ public class MailboxPathTest {
 
     @Test
     public void getHierarchyLevelsShouldBeOrdered() {
-        assertThat(new MailboxPath("#private", "user", "inbox.folder.subfolder")
+        assertThat(MailboxPath.forUser("user", "inbox.folder.subfolder")
             .getHierarchyLevels('.'))
             .containsExactly(
-                new MailboxPath("#private", "user", "inbox"),
-                new MailboxPath("#private", "user", "inbox.folder"),
-                new MailboxPath("#private", "user", "inbox.folder.subfolder"));
+                MailboxPath.forUser("user", "inbox"),
+                MailboxPath.forUser("user", "inbox.folder"),
+                MailboxPath.forUser("user", "inbox.folder.subfolder"));
     }
 
     @Test
     public void getHierarchyLevelsShouldReturnPathWhenOneLevel() {
-        assertThat(new MailboxPath("#private", "user", "inbox")
+        assertThat(MailboxPath.forUser("user", "inbox")
             .getHierarchyLevels('.'))
             .containsExactly(
-                new MailboxPath("#private", "user", "inbox"));
+                MailboxPath.forUser("user", "inbox"));
     }
 
     @Test
     public void getHierarchyLevelsShouldReturnPathWhenEmptyName() {
-        assertThat(new MailboxPath("#private", "user", "")
+        assertThat(MailboxPath.forUser("user", "")
             .getHierarchyLevels('.'))
             .containsExactly(
-                new MailboxPath("#private", "user", ""));
+                MailboxPath.forUser("user", ""));
     }
 
     @Test
     public void getHierarchyLevelsShouldReturnPathWhenNullName() {
-        assertThat(new MailboxPath("#private", "user", null)
+        assertThat(MailboxPath.forUser("user", null)
             .getHierarchyLevels('.'))
             .containsExactly(
-                new MailboxPath("#private", "user", null));
+                MailboxPath.forUser("user", null));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxQueryTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxQueryTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxQueryTest.java
index 854ff70..51db09a 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxQueryTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxQueryTest.java
@@ -25,10 +25,10 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MailboxSession.User;
 import org.apache.james.mailbox.model.MailboxQuery.Builder;
 import org.junit.Before;
 import org.junit.Test;
-import org.apache.james.mailbox.MailboxSession.User;
 
 public class MailboxQueryTest {
 
@@ -1207,7 +1207,7 @@ public class MailboxQueryTest {
     @Test
     public void buildShouldConstructMailboxPathWhenPrivateUserMailboxes() throws Exception {
         //Given
-        MailboxPath expected = new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "");
+        MailboxPath expected = MailboxPath.forUser("user", "");
         //When
         MailboxQuery actual = MailboxQuery.builder()
                 .username("user")

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
index 3585f27..f8304e7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
@@ -60,8 +60,8 @@ import com.google.common.collect.ImmutableMap;
  */
 public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
 
-    public static final MailboxPath MAILBOX_PATH_1 = new MailboxPath("#private", "user", "mbx");
-    public static final MailboxPath MAILBOX_PATH_2 = new MailboxPath("#private", "user", "mbx.other");
+    public static final MailboxPath MAILBOX_PATH_1 = MailboxPath.forUser("user", "mbx");
+    public static final MailboxPath MAILBOX_PATH_2 = MailboxPath.forUser("user", "mbx.other");
     public static final int CASSANDRA_TIME_OUT_IN_S = 10;
     public static final int SCHEDULER_PERIOD_IN_S = 20;
     public static final ImmutableMap<MessageUid, MailboxMessage> EMPTY_MESSAGE_CACHE = ImmutableMap.of();

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
index 33e8253..b42787e 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
@@ -94,7 +94,7 @@ public class CassandraIndexTableHandlerTest {
                                                 applicableFlagDAO,
                                                 deletedMessageDAO);
 
-        mailbox = new SimpleMailbox(new MailboxPath("#private", "user", "name"),
+        mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"),
             UID_VALIDITY,
             MAILBOX_ID);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
index 07d9cc6..6744a70 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
@@ -48,7 +48,7 @@ public class CassandraMailboxCounterDAOTest {
         cassandra = CassandraCluster.create(new CassandraMailboxCounterModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraMailboxCounterDAO(cassandra.getConf());
 
-        mailbox = new SimpleMailbox(new MailboxPath("#private", "user", "name"), UID_VALIDITY, MAILBOX_ID);
+        mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"), UID_VALIDITY, MAILBOX_ID);
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
index ba5ead9..b04b360 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
@@ -30,7 +30,6 @@ import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
@@ -44,7 +43,7 @@ public class CassandraMailboxDAOTest {
 
     public static final int UID_VALIDITY_1 = 145;
     public static final int UID_VALIDITY_2 = 147;
-    public static final MailboxPath NEW_MAILBOX_PATH = new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "xyz");
+    public static final MailboxPath NEW_MAILBOX_PATH = MailboxPath.forUser("user", "xyz");
     public static CassandraId CASSANDRA_ID_1 = CassandraId.timeBased();
     public static CassandraId CASSANDRA_ID_2 = CassandraId.timeBased();
 
@@ -62,10 +61,10 @@ public class CassandraMailboxDAOTest {
 
         testee = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
 
-        mailbox1 = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "abcd"),
+        mailbox1 = new SimpleMailbox(MailboxPath.forUser("user", "abcd"),
             UID_VALIDITY_1,
             CASSANDRA_ID_1);
-        mailbox2 = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "defg"),
+        mailbox2 = new SimpleMailbox(MailboxPath.forUser("user", "defg"),
             UID_VALIDITY_2,
             CASSANDRA_ID_2);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
index 8b3716f..2facbfa 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
@@ -42,7 +42,7 @@ import org.junit.Test;
 public class CassandraMailboxMapperConcurrencyTest {
 
     private static final int UID_VALIDITY = 52;
-    private static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "user", "name");
+    private static final MailboxPath MAILBOX_PATH = MailboxPath.forUser("user", "name");
     private static final int THREAD_COUNT = 10;
     private static final int OPERATION_COUNT = 10;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index f67ffc6..3cd7828 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@ -47,7 +47,7 @@ public class CassandraMailboxMapperTest {
     
     private static final Logger LOGGER = LoggerFactory.getLogger(CassandraMailboxMapperTest.class);
     private static final int UID_VALIDITY = 52;
-    private static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "user", "name");
+    private static final MailboxPath MAILBOX_PATH = MailboxPath.forUser("user", "name");
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
index 430c086..ce79b44 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
@@ -39,17 +39,16 @@ import com.github.steveash.guavate.Guavate;
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 public class CassandraMailboxPathDAOTest {
-    private static final String PRIVATE_NAMESPACE = "#private";
     private static final String USER = "user";
     private static final String OTHER_USER = "other";
     private static final CassandraId INBOX_ID = CassandraId.timeBased();
     private static final CassandraId OUTBOX_ID = CassandraId.timeBased();
     private static final CassandraId otherMailboxId = CassandraId.timeBased();
 
-    public static final MailboxPath USER_INBOX_MAILBOXPATH = new MailboxPath(PRIVATE_NAMESPACE, USER, "INBOX");
+    public static final MailboxPath USER_INBOX_MAILBOXPATH = MailboxPath.forUser(USER, "INBOX");
     public static final CassandraIdAndPath INBOX_ID_AND_PATH = new CassandraIdAndPath(INBOX_ID, USER_INBOX_MAILBOXPATH);
-    public static final MailboxPath USER_OUTBOX_MAILBOXPATH = new MailboxPath(PRIVATE_NAMESPACE, USER, "OUTBOX");
-    public static final MailboxPath OTHER_USER_MAILBOXPATH = new MailboxPath(PRIVATE_NAMESPACE, OTHER_USER, "INBOX");
+    public static final MailboxPath USER_OUTBOX_MAILBOXPATH = MailboxPath.forUser(USER, "OUTBOX");
+    public static final MailboxPath OTHER_USER_MAILBOXPATH = MailboxPath.forUser(OTHER_USER, "INBOX");
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/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 13e1352..6efcaa7 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
@@ -49,7 +49,6 @@ 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.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.mailbox.store.FakeAuthenticator;
@@ -142,7 +141,7 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
 
     @Test
     public void termsBetweenElasticSearchAndLuceneLimitDueTuNonAsciiCharsShouldBeTruncated() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, INBOX);
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
         MockMailboxSession session = new MockMailboxSession(USERNAME);
         MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
 
@@ -159,7 +158,7 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
 
     @Test
     public void tooLongTermsShouldNotMakeIndexingFail() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, INBOX);
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
         MockMailboxSession session = new MockMailboxSession(USERNAME);
         MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
 
@@ -176,7 +175,7 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
 
     @Test
     public void fieldsExceedingLuceneLimitShouldNotBeIgnored() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, INBOX);
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
         MockMailboxSession session = new MockMailboxSession(USERNAME);
         MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
 
@@ -193,7 +192,7 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
 
     @Test
     public void fieldsWithTooLongTermShouldStillBeIndexed() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, INBOX);
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
         MockMailboxSession session = new MockMailboxSession(USERNAME);
         MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
 
@@ -210,7 +209,7 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
 
     @Test
     public void reasonableLongTermShouldNotBeIgnored() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, INBOX);
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
         MockMailboxSession session = new MockMailboxSession(USERNAME);
         MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index a277d04..7f50a8d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -621,7 +621,7 @@ public class StoreMailboxManager implements MailboxManager {
         dispatcher.mailboxRenamed(session, from, mailbox);
 
         // rename submailboxes
-        MailboxPath children = new MailboxPath(MailboxConstants.USER_NAMESPACE, from.getUser(), from.getName() + getDelimiter() + "%");
+        MailboxPath children = new MailboxPath(from.getNamespace(), from.getUser(), from.getName() + getDelimiter() + "%");
         locker.executeWithLock(session, children, (LockAwareExecution<Void>) () -> {
             List<Mailbox> subMailboxes = mapper.findMailboxWithPathLike(children);
             for (Mailbox sub : subMailboxes) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
index 617d0e0..834ac2e 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
@@ -35,7 +35,6 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageRange;
@@ -70,7 +69,7 @@ public abstract class AbstractMailboxManagerAttachmentTest {
         mailboxSession = new MockMailboxSession(USERNAME);
         messageMapper = getMailboxSessionMapperFactory().getMessageMapper(mailboxSession);
         mailboxMapper = getMailboxSessionMapperFactory().getMailboxMapper(mailboxSession);
-        inboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, "INBOX");
+        inboxPath = MailboxPath.forUser(USERNAME, "INBOX");
         mailboxManager = getMailboxManager();
         mailboxManager.createMailbox(inboxPath, mailboxSession);
         inbox = mailboxMapper.findMailboxByPath(inboxPath);
@@ -180,7 +179,7 @@ public abstract class AbstractMailboxManagerAttachmentTest {
         MailboxSession user2MailboxSession = new MockMailboxSession(user2);
         MessageMapper user2MessageMapper = getMailboxSessionMapperFactory().getMessageMapper(user2MailboxSession);
         MailboxMapper user2MailboxMapper = getMailboxSessionMapperFactory().getMailboxMapper(user2MailboxSession);
-        MailboxPath user2InboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user2, "INBOX");
+        MailboxPath user2InboxPath = MailboxPath.forUser(user2, "INBOX");
         mailboxManager.createMailbox(user2InboxPath, user2MailboxSession);
         Mailbox user2Inbox = user2MailboxMapper.findMailboxByPath(user2InboxPath);
         MessageManager user2InboxMessageManager = mailboxManager.getMailbox(user2InboxPath, user2MailboxSession);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/GroupFolderResolverTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/GroupFolderResolverTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/GroupFolderResolverTest.java
index 6f0cee6..2abbaa9 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/GroupFolderResolverTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/GroupFolderResolverTest.java
@@ -24,7 +24,6 @@ import java.util.List;
 import java.util.Locale;
 
 import org.apache.james.mailbox.MailboxSession.SessionType;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.Test;
@@ -50,7 +49,7 @@ public class GroupFolderResolverTest {
         SimpleMailboxSession mailboxSession = new SimpleMailboxSession(1, "username", "password", localePreferences, sharedSpaces, null, pathSeparator, SessionType.User);
         GroupFolderResolver testee =  new GroupFolderResolver(mailboxSession);
         
-        SimpleMailbox mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "name"), UID_VALIDITY);
+        SimpleMailbox mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"), UID_VALIDITY);
         assertThat(testee.isGroupFolder(mailbox)).isFalse();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherTest.java
index 52d99be..9f45c77 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherTest.java
@@ -31,7 +31,6 @@ import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.MessageResult;
@@ -78,7 +77,7 @@ public class MailboxEventDispatcherTest {
 
         dispatcher = MailboxEventDispatcher.ofListener(collector);
         result = mock(MessageResult.class);
-        mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "name"), UID_VALIDITY, MAILBOX_ID);
+        mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"), UID_VALIDITY, MAILBOX_ID);
 
         when(result.getUid()).thenReturn(MessageUid.of(23));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
index da634b5..5442c0c 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
@@ -25,13 +25,13 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
-import com.google.common.collect.ImmutableList;
+import java.util.List;
+
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.TestId;
@@ -44,7 +44,7 @@ import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-import java.util.List;
+import com.google.common.collect.ImmutableList;
 
 public class MailboxAnnotationListenerTest {
     private static final MailboxPath MAILBOX_PATH = new MailboxPath("namespace", "user", "name");
@@ -75,7 +75,7 @@ public class MailboxAnnotationListenerTest {
         mailboxSession = new MockMailboxSession("test");
         listener = new MailboxAnnotationListener(mailboxSessionMapperFactory);
         eventFactory = new EventFactory();
-        mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "name"), UID_VALIDITY, mailboxId);
+        mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"), UID_VALIDITY, mailboxId);
 
         deleteEvent = eventFactory.mailboxDeleted(mailboxSession, mailbox);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxListenerRegistryTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxListenerRegistryTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxListenerRegistryTest.java
index 796e7aa..58b0e11 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxListenerRegistryTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxListenerRegistryTest.java
@@ -30,8 +30,8 @@ import org.junit.Test;
 
 public class MailboxListenerRegistryTest {
 
-    private static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "user", "INBOX");
-    private static final MailboxPath OTHER_MAILBOX_PATH = new MailboxPath("#private", "user", "other");
+    private static final MailboxPath MAILBOX_PATH = MailboxPath.forUser("user", "INBOX");
+    private static final MailboxPath OTHER_MAILBOX_PATH = MailboxPath.forUser("user", "other");
     private MailboxListenerRegistry testee;
     private MailboxListener mailboxListener;
     private MailboxListener otherMailboxListener;

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
index adadc2d..b172a80 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
@@ -50,8 +50,8 @@ import com.google.common.collect.ImmutableMap;
  */
 public class BroadcastDelegatingMailboxListenerIntegrationTest {
 
-    public static final MailboxPath MAILBOX_PATH_1 = new MailboxPath("#private", "user", "mbx");
-    public static final MailboxPath MAILBOX_PATH_2 = new MailboxPath("#private", "user", "mbx.other");
+    public static final MailboxPath MAILBOX_PATH_1 = MailboxPath.forUser("user", "mbx");
+    public static final MailboxPath MAILBOX_PATH_2 = MailboxPath.forUser("user", "mbx.other");
     public static final String TOPIC = "TOPIC";
     public static final ImmutableMap<MessageUid, MailboxMessage> EMPTY_MESSAGE_CACHE = ImmutableMap.<MessageUid, MailboxMessage>of();
     private BroadcastDelegatingMailboxListener broadcastDelegatingMailboxListener1;

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
index 6202d25..edc7dac 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
@@ -74,7 +74,7 @@ public abstract class EventSerializerTest {
         eventFactory = new EventFactory();
         serializer = createSerializer();
         mailboxSession = new MockMailboxSession("benwa");
-        mailbox = new SimpleMailbox(new MailboxPath("#private", "benwa", "name"), 42);
+        mailbox = new SimpleMailbox(MailboxPath.forUser("benwa", "name"), 42);
         mailbox.setMailboxId(TestId.of(28L));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
index 2f1d3db..aadbe79 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
@@ -62,7 +62,7 @@ public class ListMessageAssertTest {
     
     @Before
     public void setUp() {
-        benwaInboxMailbox = createMailbox(new MailboxPath("#private", "user", "INBOX"));
+        benwaInboxMailbox = createMailbox(MailboxPath.forUser("user", "INBOX"));
 
         message1 = createMessage(benwaInboxMailbox, MESSAGE_ID, BODY_CONTENT1, BODY_START, new PropertyBuilder());
         message2 = createMessage(benwaInboxMailbox, MESSAGE_ID, BODY_CONTENT2, BODY_START, new PropertyBuilder());

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxAssertTests.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxAssertTests.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxAssertTests.java
index 7cbb9b3..552ab44 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxAssertTests.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxAssertTests.java
@@ -31,8 +31,8 @@ public class MailboxAssertTests {
 
     @Test
     public void isEqualToShouldNotFailWithEqualMailbox() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(new MailboxPath("namespace", "user", "name"), UID_VALIDITY);
-        SimpleMailbox mailbox2 = new SimpleMailbox(new MailboxPath("namespace", "user", "name"), UID_VALIDITY);
+        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser( "user", "name"), UID_VALIDITY);
+        SimpleMailbox mailbox2 = new SimpleMailbox(MailboxPath.forUser( "user", "name"), UID_VALIDITY);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(MAILBOX_ID);
         MailboxAssert.assertThat(mailbox1).isEqualTo(mailbox2);
@@ -40,7 +40,7 @@ public class MailboxAssertTests {
 
     @Test(expected = AssertionError.class)
     public void isEqualToShouldFailWithNotEqualNamespace() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(new MailboxPath("namespace", "user", "name"), UID_VALIDITY);
+        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser( "user", "name"), UID_VALIDITY);
         SimpleMailbox mailbox2 = new SimpleMailbox(new MailboxPath("other_namespace", "user", "name"), UID_VALIDITY);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(MAILBOX_ID);
@@ -49,7 +49,7 @@ public class MailboxAssertTests {
 
     @Test(expected = AssertionError.class)
     public void isEqualToShouldFailWithNotEqualUser() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(new MailboxPath("namespace", "user", "name"), UID_VALIDITY);
+        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser( "user", "name"), UID_VALIDITY);
         SimpleMailbox mailbox2 = new SimpleMailbox(new MailboxPath("namespace", "other_user", "name"), UID_VALIDITY);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(MAILBOX_ID);
@@ -58,7 +58,7 @@ public class MailboxAssertTests {
 
     @Test(expected = AssertionError.class)
     public void isEqualToShouldFailWithNotEqualName() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(new MailboxPath("namespace", "user", "name"), UID_VALIDITY);
+        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser( "user", "name"), UID_VALIDITY);
         SimpleMailbox mailbox2 = new SimpleMailbox(new MailboxPath("namespace", "user", "other_name"), UID_VALIDITY);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(MAILBOX_ID);
@@ -67,8 +67,8 @@ public class MailboxAssertTests {
 
     @Test(expected = AssertionError.class)
     public void isEqualToShouldFailWithNotEqualId() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(new MailboxPath("namespace", "user", "name"), UID_VALIDITY);
-        SimpleMailbox mailbox2 = new SimpleMailbox(new MailboxPath("namespace", "user", "name"), UID_VALIDITY);
+        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser( "user", "name"), UID_VALIDITY);
+        SimpleMailbox mailbox2 = new SimpleMailbox(MailboxPath.forUser( "user", "name"), UID_VALIDITY);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(TestId.of(MAILBOX_ID.id + 1));
         MailboxAssert.assertThat(mailbox1).isEqualTo(mailbox2);
@@ -76,8 +76,8 @@ public class MailboxAssertTests {
 
     @Test(expected = AssertionError.class)
     public void isEqualToShouldFailWithNotEqualUidValidity() {
-        SimpleMailbox mailbox1 = new SimpleMailbox(new MailboxPath("namespace", "user", "name"), UID_VALIDITY);
-        SimpleMailbox mailbox2 = new SimpleMailbox(new MailboxPath("namespace", "user", "name"), UID_VALIDITY + 1);
+        SimpleMailbox mailbox1 = new SimpleMailbox(MailboxPath.forUser( "user", "name"), UID_VALIDITY);
+        SimpleMailbox mailbox2 = new SimpleMailbox(MailboxPath.forUser( "user", "name"), UID_VALIDITY + 1);
         mailbox1.setMailboxId(MAILBOX_ID);
         mailbox2.setMailboxId(MAILBOX_ID);
         MailboxAssert.assertThat(mailbox1).isEqualTo(mailbox2);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
index 321fd75..e4bf959 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
@@ -58,7 +58,7 @@ public abstract class MailboxMapperACLTest {
 
         this.mailboxMapper = mapperProvider.createMailboxMapper();
 
-        MailboxPath benwaInboxPath = new MailboxPath("#private", "benwa", "INBOX");
+        MailboxPath benwaInboxPath = MailboxPath.forUser("benwa", "INBOX");
         benwaInboxMailbox = createMailbox(benwaInboxPath);
         mailboxMapper.save(benwaInboxMailbox);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
index 92ab5b8..d16925d 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
@@ -96,7 +96,7 @@ public abstract class MailboxMapperTest {
     @Test
     public void findMailboxByPathWhenAbsentShouldFail() throws MailboxException {
         expected.expect(MailboxNotFoundException.class);
-        mailboxMapper.findMailboxByPath(new MailboxPath("#private", "benwa", "INBOX"));
+        mailboxMapper.findMailboxByPath(MailboxPath.forUser("benwa", "INBOX"));
     }
 
     @Test
@@ -261,13 +261,13 @@ public abstract class MailboxMapperTest {
     }
 
     private void initData() {
-        benwaInboxPath = new MailboxPath("#private", "benwa", "INBOX");
-        benwaWorkPath = new MailboxPath("#private", "benwa", "INBOX"+DELIMITER+"work");
-        benwaWorkTodoPath = new MailboxPath("#private", "benwa", "INBOX"+DELIMITER+"work"+DELIMITER+"todo");
-        benwaPersoPath = new MailboxPath("#private", "benwa", "INBOX"+DELIMITER+"perso");
-        benwaWorkDonePath = new MailboxPath("#private", "benwa", "INBOX"+DELIMITER+"work"+DELIMITER+"done");
-        bobInboxPath = new MailboxPath("#private", "bob", "INBOX");
-        bobyMailboxPath = new MailboxPath("#private", "boby", "INBOX.that.is.a.trick");
+        benwaInboxPath = MailboxPath.forUser("benwa", "INBOX");
+        benwaWorkPath = MailboxPath.forUser("benwa", "INBOX"+DELIMITER+"work");
+        benwaWorkTodoPath = MailboxPath.forUser("benwa", "INBOX"+DELIMITER+"work"+DELIMITER+"todo");
+        benwaPersoPath = MailboxPath.forUser("benwa", "INBOX"+DELIMITER+"perso");
+        benwaWorkDonePath = MailboxPath.forUser("benwa", "INBOX"+DELIMITER+"work"+DELIMITER+"done");
+        bobInboxPath = MailboxPath.forUser("bob", "INBOX");
+        bobyMailboxPath = MailboxPath.forUser("boby", "INBOX.that.is.a.trick");
         bobDifferentNamespacePath = new MailboxPath("#private_bob", "bob", "INBOX.bob");
         esnDevGroupInboxPath = new MailboxPath("#community_ESN_DEV", null, "INBOX");
         esnDevGroupHublinPath = new MailboxPath("#community_ESN_DEV", null, "INBOX"+DELIMITER+"hublin");

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
index 73d5a14..391cf51 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
@@ -89,8 +89,8 @@ public abstract class MessageIdMapperTest {
         this.messageMapper = mapperProvider.createMessageMapper();
         this.mailboxMapper = mapperProvider.createMailboxMapper();
 
-        benwaInboxMailbox = createMailbox(new MailboxPath("#private", "benwa", "INBOX"));
-        benwaWorkMailbox = createMailbox( new MailboxPath("#private", "benwa", "INBOX"+DELIMITER+"work"));
+        benwaInboxMailbox = createMailbox(MailboxPath.forUser("benwa", "INBOX"));
+        benwaWorkMailbox = createMailbox(MailboxPath.forUser("benwa", "INBOX" + DELIMITER + "work"));
 
         message1 = createMessage(benwaInboxMailbox, "Subject: Test1 \n\nBody1\n.\n", BODY_START, new PropertyBuilder());
         message2 = createMessage(benwaInboxMailbox, "Subject: Test2 \n\nBody2\n.\n", BODY_START, new PropertyBuilder());
@@ -160,7 +160,7 @@ public abstract class MessageIdMapperTest {
 
     @Test
     public void saveShouldThrowWhenMailboxDoesntExist() throws Exception {
-        SimpleMailbox notPersistedMailbox = new SimpleMailbox(new MailboxPath("#private", "benwa", "mybox"), UID_VALIDITY);
+        SimpleMailbox notPersistedMailbox = new SimpleMailbox(MailboxPath.forUser("benwa", "mybox"), UID_VALIDITY);
         notPersistedMailbox.setMailboxId(mapperProvider.generateId());
         SimpleMailboxMessage message = createMessage(notPersistedMailbox, "Subject: Test \n\nBody\n.\n", BODY_START, new PropertyBuilder());
         message.setUid(mapperProvider.generateMessageUid());
@@ -205,7 +205,7 @@ public abstract class MessageIdMapperTest {
         message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
         sut.save(message1);
 
-        SimpleMailbox notPersistedMailbox = new SimpleMailbox(new MailboxPath("#private", "benwa", "mybox"), UID_VALIDITY);
+        SimpleMailbox notPersistedMailbox = new SimpleMailbox(MailboxPath.forUser("benwa", "mybox"), UID_VALIDITY);
         notPersistedMailbox.setMailboxId(mapperProvider.generateId());
 
         SimpleMailboxMessage message1InOtherMailbox = SimpleMailboxMessage.copy(notPersistedMailbox.getMailboxId(), message1);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
index 16004a1..203bc78 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
@@ -23,12 +23,14 @@ import static org.apache.james.mailbox.store.mail.model.ListMessageAssert.assert
 import static org.apache.james.mailbox.store.mail.model.ListMessagePropertiesAssert.assertProperties;
 import static org.apache.james.mailbox.store.mail.model.MessageAssert.assertThat;
 import static org.assertj.core.api.Assertions.assertThat;
+
 import java.io.IOException;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.TimeUnit;
+
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 import javax.mail.util.SharedByteArrayInputStream;
@@ -99,8 +101,8 @@ public abstract class MessageMapperTest {
     }
 
     private void initData() throws MailboxException {
-        benwaInboxMailbox = createMailbox(new MailboxPath("#private", "benwa", "INBOX"));
-        benwaWorkMailbox = createMailbox( new MailboxPath("#private", "benwa", "INBOX"+DELIMITER+"work"));
+        benwaInboxMailbox = createMailbox(MailboxPath.forUser("benwa", "INBOX"));
+        benwaWorkMailbox = createMailbox( MailboxPath.forUser("benwa", "INBOX"+DELIMITER+"work"));
 
         message1 = createMessage(benwaInboxMailbox, mapperProvider.generateMessageId(), "Subject: Test1 \n\nBody1\n.\n", BODY_START, new PropertyBuilder());
         message2 = createMessage(benwaInboxMailbox, mapperProvider.generateMessageId(), "Subject: Test2 \n\nBody2\n.\n", BODY_START, new PropertyBuilder());
@@ -1035,7 +1037,7 @@ public abstract class MessageMapperTest {
 
     @Test
     public void getApplicableFlagShouldReturnDefaultApplicableFlagsWhenMailboxEmpty() throws Exception {
-        SimpleMailbox emptyMailbox = createMailbox(new MailboxPath("#private", "benwa", "EMPTY"));
+        SimpleMailbox emptyMailbox = createMailbox(MailboxPath.forUser("benwa", "EMPTY"));
 
         assertThat(messageMapper.getApplicableFlag(emptyMailbox))
             .isEqualTo(new FlagsBuilder()

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
index 7efd7c8..91e4e7a 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
@@ -68,8 +68,8 @@ public abstract class MessageMoveTest {
         this.messageMapper = mapperProvider.createMessageMapper();
         Assume.assumeNotNull(messageMapper);
 
-        benwaInboxMailbox = createMailbox(new MailboxPath("#private", "benwa", "INBOX"));
-        benwaWorkMailbox = createMailbox( new MailboxPath("#private", "benwa", "INBOX"+DELIMITER+"work"));
+        benwaInboxMailbox = createMailbox(MailboxPath.forUser("benwa", "INBOX"));
+        benwaWorkMailbox = createMailbox( MailboxPath.forUser("benwa", "INBOX"+DELIMITER+"work"));
         message1 = createMessage(benwaInboxMailbox, mapperProvider.generateMessageId(), "Subject: Test1 \n\nBody1\n.\n", BODY_START, new PropertyBuilder());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
index 59e31c3..68b934c 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
@@ -81,7 +81,7 @@ public abstract class MessageWithAttachmentMapperTest {
         this.messageMapper = mapperProvider.createMessageMapper();
         this.attachmentMapper = mapperProvider.createAttachmentMapper();
 
-        attachmentsMailbox = createMailbox( new MailboxPath("#private", "benwa", "Attachments"));
+        attachmentsMailbox = createMailbox(MailboxPath.forUser("benwa", "Attachments"));
 
         Attachment attachment = Attachment.builder()
                 .attachmentId(AttachmentId.from("123"))

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolverTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolverTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolverTest.java
index c6c6218..bc18ae8 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolverTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolverTest.java
@@ -36,10 +36,10 @@ import com.google.common.collect.Lists;
 
 public class DefaultQuotaRootResolverTest {
 
-    public static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "benwa", "INBOX");
+    public static final MailboxPath MAILBOX_PATH = MailboxPath.forUser("benwa", "INBOX");
     public static final SimpleMailbox MAILBOX = new SimpleMailbox(MAILBOX_PATH, 10);
-    public static final MailboxPath PATH_LIKE = new MailboxPath("#private", "benwa", "%");
-    public static final MailboxPath MAILBOX_PATH_2 = new MailboxPath("#private", "benwa", "test");
+    public static final MailboxPath PATH_LIKE = MailboxPath.forUser("benwa", "%");
+    public static final MailboxPath MAILBOX_PATH_2 = MailboxPath.forUser("benwa", "test");
     public static final SimpleMailbox MAILBOX_2 = new SimpleMailbox(MAILBOX_PATH_2, 10);
     public static final QuotaRoot QUOTA_ROOT = QuotaRootImpl.quotaRoot("#private&benwa");
 
@@ -64,7 +64,7 @@ public class DefaultQuotaRootResolverTest {
 
     @Test(expected = IllegalArgumentException.class)
     public void getQuotaRootShouldThrowWhenUserContainsSeparator() throws Exception {
-        testee.getQuotaRoot(new MailboxPath("#private", "ben&wa", "INBOX"));
+        testee.getQuotaRoot(MailboxPath.forUser("ben&wa", "INBOX"));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
index 63f483a..78179d3 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
@@ -43,7 +43,7 @@ import com.google.common.collect.Lists;
 public class ListeningCurrentQuotaUpdaterTest {
 
     public static final int SIZE = 45;
-    public static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "benwa", "INBOX");
+    public static final MailboxPath MAILBOX_PATH = MailboxPath.forUser("benwa", "INBOX");
     public static final QuotaRoot QUOTA_ROOT = QuotaRootImpl.quotaRoot("benwa");
 
     private StoreCurrentQuotaManager mockedCurrentQuotaManager;

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
index 625a8e1..55a8870 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
@@ -37,7 +37,7 @@ import org.junit.Test;
 public class QuotaCheckerTest {
 
     public static final QuotaRoot QUOTA_ROOT = QuotaRootImpl.quotaRoot("benwa");
-    public static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "benwa", "INBOX");
+    public static final MailboxPath MAILBOX_PATH = MailboxPath.forUser("benwa", "INBOX");
     public static final SimpleMailbox MAILBOX = new SimpleMailbox(MAILBOX_PATH, 10);
 
     private QuotaRootResolver mockedQuotaRootResolver;

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
index ba74c82..9383df7 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
@@ -36,7 +36,6 @@ import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
@@ -105,8 +104,8 @@ public abstract class AbstractMessageSearchIndexTest {
         session = storeMailboxManager.createSystemSession(USERNAME);
         otherSession = storeMailboxManager.createSystemSession(OTHERUSER);
 
-        MailboxPath inboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, INBOX);
-        MailboxPath otherInboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, OTHERUSER, INBOX);
+        MailboxPath inboxPath = MailboxPath.forUser(USERNAME, INBOX);
+        MailboxPath otherInboxPath = MailboxPath.forUser(OTHERUSER, INBOX);
 
         storeMailboxManager.createMailbox(inboxPath, session);
         storeMailboxManager.createMailbox(otherInboxPath, otherSession);
@@ -114,7 +113,7 @@ public abstract class AbstractMessageSearchIndexTest {
         StoreMessageManager inboxMessageManager = (StoreMessageManager) storeMailboxManager.getMailbox(inboxPath, session);
         StoreMessageManager otherInboxMessageManager = (StoreMessageManager) storeMailboxManager.getMailbox(otherInboxPath, otherSession);
 
-        MailboxPath myFolderPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, "MyFolder");
+        MailboxPath myFolderPath = MailboxPath.forUser(USERNAME, "MyFolder");
         storeMailboxManager.createMailbox(myFolderPath, session);
         myFolderMessageManager = (StoreMessageManager) storeMailboxManager.getMailbox(myFolderPath, session);
         mailbox = inboxMessageManager.getMailboxEntity();
@@ -1227,7 +1226,7 @@ public abstract class AbstractMessageSearchIndexTest {
 
     @Test
     public void searchShouldOrderByInternalDateWhenSortOnSentDateAndNoCorrespondingHeader() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, "sentDate");
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, "sentDate");
         storeMailboxManager.createMailbox(mailboxPath, session);
 
         MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
@@ -1253,7 +1252,7 @@ public abstract class AbstractMessageSearchIndexTest {
 
     @Test
     public void searchShouldOrderBySentDateThenInternalDateWhenSortOnSentDateAndNonHomogeneousCorrespondingHeader() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, "sentDate");
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, "sentDate");
         storeMailboxManager.createMailbox(mailboxPath, session);
 
         MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/ReIndexerImplTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/ReIndexerImplTest.java b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/ReIndexerImplTest.java
index a74abe3..5f0acaa 100644
--- a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/ReIndexerImplTest.java
+++ b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/ReIndexerImplTest.java
@@ -31,7 +31,6 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
@@ -50,7 +49,7 @@ import com.google.common.collect.ImmutableList;
 
 public class ReIndexerImplTest {
 
-    public static final MailboxPath INBOX = new MailboxPath("#private", "benwa@apache.org", "INBOX");
+    public static final MailboxPath INBOX = MailboxPath.forUser("benwa@apache.org", "INBOX");
     public static final int LIMIT = 0;
     private MailboxManager mailboxManager;
     private MailboxSessionMapperFactory mailboxSessionMapperFactory;
@@ -108,7 +107,7 @@ public class ReIndexerImplTest {
             .thenReturn(mailboxMapper);
 
         String user1 = "user1@james.org";
-        MailboxPath user1MailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user1, "Inbox");
+        MailboxPath user1MailboxPath = MailboxPath.forUser(user1, "Inbox");
         MockMailboxSession user1MailboxSession = new MockMailboxSession(user1);
         when(mailboxManager.createSystemSession(user1))
             .thenReturn(user1MailboxSession);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
index 1fbda99..7523bd6 100644
--- a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
+++ b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.indexer.registrations;
 
 import static org.assertj.core.api.Assertions.assertThat;
+
 import java.util.Optional;
 
 import org.apache.james.mailbox.MailboxListener;
@@ -31,8 +32,8 @@ import org.junit.Before;
 import org.junit.Test;
 
 public class GlobalRegistrationTest {
-    public static final MailboxPath INBOX = new MailboxPath("#private", "btellier@apache.org", "INBOX");
-    public static final MailboxPath NEW_PATH = new MailboxPath("#private", "btellier@apache.org", "INBOX.new");
+    public static final MailboxPath INBOX = MailboxPath.forUser("btellier@apache.org", "INBOX");
+    public static final MailboxPath NEW_PATH = MailboxPath.forUser("btellier@apache.org", "INBOX.new");
     public static final int UID_VALIDITY = 45;
     public static final SimpleMailbox MAILBOX = new SimpleMailbox(INBOX, UID_VALIDITY);
     public static final SimpleMailbox NEW_MAILBOX = new SimpleMailbox(NEW_PATH, UID_VALIDITY);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
index 7c15da8..da2e59c 100644
--- a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
+++ b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
@@ -47,7 +47,7 @@ import com.google.common.collect.Lists;
 
 public class MailboxRegistrationTest {
 
-    public static final MailboxPath INBOX = new MailboxPath("#private", "btellier@apache.org", "INBOX");
+    public static final MailboxPath INBOX = MailboxPath.forUser("btellier@apache.org", "INBOX");
     public static final MessageUid UID = MessageUid.of(18);
     public static final int UID_VALIDITY = 45;
     public static final SimpleMailbox MAILBOX = new SimpleMailbox(INBOX, UID_VALIDITY);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/ACLCommands.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/ACLCommands.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/ACLCommands.java
index 52ff7f4..c1493c3 100644
--- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/ACLCommands.java
+++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/ACLCommands.java
@@ -34,7 +34,7 @@ public abstract class ACLCommands implements ImapTestConstants {
     
     public static final String OTHER_USER_NAME = "Boby";
     public static final String OTHER_USER_PASSWORD = "password";
-    public static final MailboxPath OTHER_USER_MAILBOX = new MailboxPath("#private", OTHER_USER_NAME, "") ;
+    public static final MailboxPath OTHER_USER_MAILBOX = MailboxPath.forUser(OTHER_USER_NAME, "") ;
 
     protected abstract ImapHostSystem createImapHostSystem();
     protected abstract GrantRightsOnHost createGrantRightsOnHost();

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/ACLIntegration.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/ACLIntegration.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/ACLIntegration.java
index 5967f87..eae4889 100644
--- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/ACLIntegration.java
+++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/ACLIntegration.java
@@ -33,8 +33,8 @@ import org.junit.Test;
 public abstract class ACLIntegration implements ImapTestConstants {
     public static final String OTHER_USER_NAME = "Boby";
     public static final String OTHER_USER_PASSWORD = "password";
-    public static final MailboxPath OTHER_USER_MAILBOX = new MailboxPath("#private", OTHER_USER_NAME, "");
-    public static final MailboxPath MY_INBOX = new MailboxPath("#private", USER, "");
+    public static final MailboxPath OTHER_USER_MAILBOX = MailboxPath.forUser( OTHER_USER_NAME, "");
+    public static final MailboxPath MY_INBOX = MailboxPath.forUser( USER, "");
 
     protected abstract ImapHostSystem createImapHostSystem();
     protected abstract GrantRightsOnHost createGrantRightsOnHost();
@@ -102,22 +102,22 @@ public abstract class ACLIntegration implements ImapTestConstants {
     @Test
     public void rightXOnOriginShouldBeSufficientToRenameAMailboxUS() throws Exception {
         scriptedTestProtocol
-            .withMailbox(new MailboxPath("#private","Boby","test"))
-            .withGrantRights(new MailboxPath("#private", OTHER_USER_NAME, "test"), USER, MailboxACL.Rfc4314Rights.fromSerializedRfc4314Rights("x"))
+            .withMailbox(MailboxPath.forUser("Boby","test"))
+            .withGrantRights(MailboxPath.forUser( OTHER_USER_NAME, "test"), USER, MailboxACL.Rfc4314Rights.fromSerializedRfc4314Rights("x"))
             .run("aclIntegration/ACLIntegrationRightX");
     }
 
     @Test
     public void rightXOnOriginShouldBeNeededToRenameAMailboxUS() throws Exception {
         scriptedTestProtocol
-            .withMailbox(new MailboxPath("#private","Boby","test"))
-            .withGrantRights(new MailboxPath("#private", OTHER_USER_NAME, "test"), USER, MailboxACL.Rfc4314Rights.fromSerializedRfc4314Rights("rswipktela"))
+            .withMailbox(MailboxPath.forUser("Boby","test"))
+            .withGrantRights(MailboxPath.forUser( OTHER_USER_NAME, "test"), USER, MailboxACL.Rfc4314Rights.fromSerializedRfc4314Rights("rswipktela"))
             .run("aclIntegration/ACLIntegrationWithoutRightX");
     }
 
     @Test
     public void rightKOnDestinationShouldBeSufficientToRenameAMailboxUS() throws Exception {
-        MailboxPath newMailbox = new MailboxPath("#private", USER, "test");
+        MailboxPath newMailbox = MailboxPath.forUser( USER, "test");
         scriptedTestProtocol
             .withMailbox(newMailbox)
             .withGrantRights(newMailbox, USER, MailboxACL.Rfc4314Rights.fromSerializedRfc4314Rights("x"))
@@ -127,7 +127,7 @@ public abstract class ACLIntegration implements ImapTestConstants {
 
     @Test
     public void rightKOnDestinationShouldBeNeededToRenameAMailboxUS() throws Exception {
-        MailboxPath newMailbox = new MailboxPath("#private", USER, "test");
+        MailboxPath newMailbox = MailboxPath.forUser( USER, "test");
         scriptedTestProtocol
             .withMailbox(newMailbox)
             .withGrantRights(newMailbox, USER, MailboxACL.Rfc4314Rights.fromSerializedRfc4314Rights("x"))

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatePlain.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatePlain.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatePlain.java
index 84d068d..3729ca1 100644
--- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatePlain.java
+++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatePlain.java
@@ -21,7 +21,6 @@ package org.apache.james.mpt.imapmailbox.suite;
 
 import java.util.Locale;
 
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.ImapTestConstants;
@@ -43,8 +42,8 @@ public abstract class AuthenticatePlain implements ImapTestConstants {
         simpleScriptedTestProtocol = new ImapScriptedTestProtocol("/org/apache/james/imap/scripts/", system)
                 .withUser(USER, PASSWORD)
                 .withUser("delegate", "123456")
-                .withMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "delegate", "delegate"))
-                .withMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "imapuser", "imapuser"));
+                .withMailbox(MailboxPath.forUser("delegate", "delegate"))
+                .withMailbox(MailboxPath.forUser("imapuser", "imapuser"));
         BasicImapCommands.welcome(simpleScriptedTestProtocol);
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
index 3df2651..dd364e8 100644
--- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/AuthenticatedState.java
@@ -412,14 +412,14 @@ public abstract class AuthenticatedState extends BasicImapCommands {
     @Test
     public void listShouldNotListMailboxWithOtherNamspaceUS() throws Exception {
         Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
-        system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
+        system.createMailbox(MailboxPath.forUser(USER, "Other"));
         simpleScriptedTestProtocol.run("ListMailboxes");
     }
 
     @Test
     public void listShouldNotListMailboxWithOtherNamspaceITALY() throws Exception {
         Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
-        system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
+        system.createMailbox(MailboxPath.forUser(USER, "Other"));
         simpleScriptedTestProtocol
             .withLocale(Locale.ITALY)
             .run("ListMailboxes");
@@ -428,7 +428,7 @@ public abstract class AuthenticatedState extends BasicImapCommands {
     @Test
     public void listShouldNotListMailboxWithOtherNamspaceKOREA() throws Exception {
         Assume.assumeTrue(system.supports(Feature.NAMESPACE_SUPPORT));
-        system.createMailbox(new MailboxPath("#namespace", USER, "Other"));
+        system.createMailbox(MailboxPath.forUser(USER, "Other"));
         simpleScriptedTestProtocol
             .withLocale(Locale.KOREA)
             .run("ListMailboxes");
@@ -436,13 +436,13 @@ public abstract class AuthenticatedState extends BasicImapCommands {
 
     @Test
     public void listShouldNotListMailboxWithOtherUserUS() throws Exception {
-        system.createMailbox(new MailboxPath("#namespace", USER + "2", "Other"));
+        system.createMailbox(MailboxPath.forUser(USER + "2", "Other"));
         simpleScriptedTestProtocol.run("ListMailboxes");
     }
 
     @Test
     public void listShouldNotListMailboxWithOtherUserITALY() throws Exception {
-        system.createMailbox(new MailboxPath("#namespace", USER + "2", "Other"));
+        system.createMailbox(MailboxPath.forUser(USER + "2", "Other"));
         simpleScriptedTestProtocol
             .withLocale(Locale.ITALY)
             .run("ListMailboxes");
@@ -450,7 +450,7 @@ public abstract class AuthenticatedState extends BasicImapCommands {
 
     @Test
     public void listShouldNotListMailboxWithOtherUserKOREA() throws Exception {
-        system.createMailbox(new MailboxPath("#namespace", USER + "2", "Other"));
+        system.createMailbox(MailboxPath.forUser(USER + "2", "Other"));
         simpleScriptedTestProtocol
             .withLocale(Locale.KOREA)
             .run("ListMailboxes");


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


[09/29] james-project git commit: JAMES-2169 first simple sharing test case, missing sharedWith filtering for now

Posted by bt...@apache.org.
JAMES-2169 first simple sharing test case, missing sharedWith filtering for now


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

Branch: refs/heads/master
Commit: 526643581cba573e59c37a8e0588fdcf94808289
Parents: 8a1c4c7
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Sep 27 12:36:45 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:19:58 2017 +0700

----------------------------------------------------------------------
 .../mailbox/store/StoreMailboxManager.java      | 15 +++++++++++---
 .../integration/GetMailboxesMethodTest.java     | 21 ++++++++++++++++++++
 2 files changed, 33 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/52664358/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index c96b1de..a277d04 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -50,6 +50,7 @@ import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.exception.NotAdminException;
 import org.apache.james.mailbox.exception.UserDoesNotExistException;
 import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.MailboxACL.Right;
 import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.mailbox.model.MailboxConstants;
@@ -513,8 +514,8 @@ public class StoreMailboxManager implements MailboxManager {
             LOGGER.info("Mailbox '" + mailboxId.serialize() + "' not found.");
             throw new MailboxNotFoundException(mailboxId.serialize());
         }
-        
-        if (! belongsToCurrentUser(mailboxRow, session)) {
+
+        if (! assertUserHasAccessTo(mailboxRow, session)) {
             LOGGER.info("Mailbox '" + mailboxId.serialize() + "' does not belong to user '" + session.getUser() + "' but to '" + mailboxRow.getUser());
             throw new MailboxNotFoundException(mailboxId.serialize());
         }
@@ -524,10 +525,18 @@ public class StoreMailboxManager implements MailboxManager {
         return createMessageManager(mailboxRow, session);
     }
 
+    private boolean assertUserHasAccessTo(Mailbox mailbox, MailboxSession session) throws MailboxException {
+        return belongsToCurrentUser(mailbox, session) || userHasReadRightsOn(mailbox, session);
+    }
+
     private boolean belongsToCurrentUser(Mailbox mailbox, MailboxSession session) {
         return session.getUser().isSameUser(mailbox.getUser());
     }
 
+    private boolean userHasReadRightsOn(Mailbox mailbox, MailboxSession session) throws MailboxException {
+        return hasRight(mailbox.generateAssociatedPath(), Right.Read, session);
+    }
+
     @Override
     public Optional<MailboxId> createMailbox(MailboxPath mailboxPath, final MailboxSession mailboxSession)
             throws MailboxException {
@@ -786,7 +795,7 @@ public class StoreMailboxManager implements MailboxManager {
     }
 
     @Override
-    public boolean hasRight(MailboxPath mailboxPath, MailboxACL.Right right, MailboxSession session) throws MailboxException {
+    public boolean hasRight(MailboxPath mailboxPath, Right right, MailboxSession session) throws MailboxException {
         MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session);
         Mailbox mailbox = mapper.findMailboxByPath(mailboxPath);
         MailboxSession.User user = session.getUser();

http://git-wip-us.apache.org/repos/asf/james-project/blob/52664358/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index aea2d61..46ee024 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -82,6 +82,7 @@ public abstract class GetMailboxesMethodTest {
 
     private AccessToken accessToken;
     private String alice;
+    private String bob;
     private GuiceJamesServer jmapServer;
     private MailboxProbe mailboxProbe;
     private ACLProbe aclProbe;
@@ -102,10 +103,12 @@ public abstract class GetMailboxesMethodTest {
 
         String domain = "domain.tld";
         alice = "alice@" + domain;
+        bob = "bob@" + domain;
         String password = "password";
         DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(domain);
         dataProbe.addUser(alice, password);
+        dataProbe.addUser(bob, password);
         accessToken = HttpJmapAuthentication.authenticateJamesUser(baseUri(), alice, password);
     }
 
@@ -499,4 +502,22 @@ public abstract class GetMailboxesMethodTest {
             .body(FIRST_MAILBOX + ".role", equalTo(DefaultMailboxes.OUTBOX.toLowerCase(Locale.US)));
     }
 
+    @Test
+    public void getMailboxesShouldReturnMailboxesWhenShared() throws Exception {
+        String mailboxName = "name";
+        MailboxId bobMailbox = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, bob, mailboxName);
+        aclProbe.replaceRights(MailboxPath.forUser(bob, mailboxName), alice, new Rfc4314Rights(Right.Read));
+
+        given()
+            .header("Authorization", accessToken.serialize())
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + bobMailbox.serialize() + "\"]}, \"#0\"]]")
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .body(NAME, equalTo("mailboxes"))
+            .body(ARGUMENTS + ".list.name", hasItem(mailboxName));
+    }
+
+
 }


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


[19/29] james-project git commit: JAMES-2169 Use MailboxPath::forUser more widely

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java b/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
index 2c09ac8..452f135 100644
--- a/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
+++ b/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
@@ -21,7 +21,7 @@ package org.apache.james.mpt.imapmailbox.cyrus.host;
 import java.net.InetSocketAddress;
 import java.util.function.Supplier;
 
-import org.apache.james.mailbox.model.MailboxConstants;
+import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mpt.api.ImapFeatures;
 import org.apache.james.mpt.api.ImapFeatures.Feature;
@@ -30,7 +30,6 @@ import org.apache.james.mpt.api.UserAdder;
 import org.apache.james.mpt.host.ExternalHostSystem;
 import org.apache.james.mpt.monitor.NullMonitor;
 import org.apache.james.mpt.protocol.ProtocolSession;
-import org.apache.commons.lang.NotImplementedException;
 
 import com.google.common.base.Joiner;
 import com.google.common.base.Strings;
@@ -69,7 +68,7 @@ public class CyrusHostSystem extends ExternalHostSystem implements Provider<Cont
     }
 
     private boolean createUserInbox(String user) {
-        createMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, user, ""));
+        createMailbox(MailboxPath.forUser(user, ""));
         return true;
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
index ef3f87e..a4bf955 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
@@ -68,7 +68,7 @@ public class LSubProcessor extends AbstractSubscriptionProcessor<LsubRequest> {
         boolean isRelative = ((finalReferencename + mailboxName).charAt(0) != MailboxConstants.NAMESPACE_PREFIX_CHAR);
         MailboxPath basePath = null;
         if (isRelative) {
-            basePath = new MailboxPath(MailboxConstants.USER_NAMESPACE, mailboxSession.getUser().getUserName(), CharsetUtil.decodeModifiedUTF7(finalReferencename));
+            basePath = MailboxPath.forUser(mailboxSession.getUser().getUserName(), CharsetUtil.decodeModifiedUTF7(finalReferencename));
         } else {
             basePath = PathConverter.forSession(session).buildFullPath(CharsetUtil.decodeModifiedUTF7(finalReferencename));
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/protocols/imap/src/main/java/org/apache/james/imap/processor/ListProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/ListProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/ListProcessor.java
index 6f180e5..16a7280 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/ListProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/ListProcessor.java
@@ -166,7 +166,7 @@ public class ListProcessor extends AbstractMailboxProcessor<ListRequest> {
 
                 MailboxPath basePath = null;
                 if (isRelative) {
-                    basePath = new MailboxPath(MailboxConstants.USER_NAMESPACE, user, finalReferencename);
+                    basePath = MailboxPath.forUser(user, finalReferencename);
                 } else {
                     basePath = PathConverter.forSession(session).buildFullPath(finalReferencename);
                 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/protocols/imap/src/test/java/org/apache/james/imap/main/PathConverterTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/main/PathConverterTest.java b/protocols/imap/src/test/java/org/apache/james/imap/main/PathConverterTest.java
index 11515d4..b395109 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/main/PathConverterTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/main/PathConverterTest.java
@@ -72,7 +72,7 @@ public class PathConverterTest {
     public void buildPathShouldAcceptRelativeMailboxName() {
         String mailboxName = "mailboxName";
         assertThat(pathConverter.buildFullPath(mailboxName))
-            .isEqualTo(new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, mailboxName));
+            .isEqualTo(MailboxPath.forUser(USERNAME, mailboxName));
     }
 
     @Ignore("Shared mailbox is not supported yet")
@@ -85,7 +85,7 @@ public class PathConverterTest {
     @Test
     public void buildFullPathShouldAcceptUserNamespace() {
         assertThat(pathConverter.buildFullPath(MailboxConstants.USER_NAMESPACE))
-            .isEqualTo(new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, ""));
+            .isEqualTo(MailboxPath.forUser(USERNAME, ""));
     }
 
     @Ignore("Shared mailbox is not supported yet")
@@ -99,7 +99,7 @@ public class PathConverterTest {
     @Test
     public void buildFullPathShouldAcceptUserNamespaceAndDelimiter() {
         assertThat(pathConverter.buildFullPath(MailboxConstants.USER_NAMESPACE + PATH_DELIMITER))
-            .isEqualTo(new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, ""));
+            .isEqualTo(MailboxPath.forUser(USERNAME, ""));
     }
 
     @Ignore("Shared mailbox is not supported yet")
@@ -114,7 +114,7 @@ public class PathConverterTest {
     public void buildFullPathShouldAcceptFullAbsoluteUserPath() {
         String mailboxName = "mailboxName";
         assertThat(pathConverter.buildFullPath(MailboxConstants.USER_NAMESPACE + PATH_DELIMITER + mailboxName))
-            .isEqualTo(new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, mailboxName));
+            .isEqualTo(MailboxPath.forUser(USERNAME, mailboxName));
     }
 
     @Ignore("Shared mailbox is not supported yet")
@@ -130,14 +130,14 @@ public class PathConverterTest {
     public void buildFullPathShouldAcceptRelativePathWithSubFolder() {
         String mailboxName = "mailboxName" + PATH_DELIMITER + "subFolder";
         assertThat(pathConverter.buildFullPath(mailboxName))
-            .isEqualTo(new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, mailboxName));
+            .isEqualTo(MailboxPath.forUser(USERNAME, mailboxName));
     }
 
     @Test
     public void buildFullPathShouldAcceptAbsoluteUserPathWithSubFolder() {
         String mailboxName = "mailboxName.subFolder";
         assertThat(pathConverter.buildFullPath(MailboxConstants.USER_NAMESPACE + PATH_DELIMITER + mailboxName))
-            .isEqualTo(new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, mailboxName));
+            .isEqualTo(MailboxPath.forUser(USERNAME, mailboxName));
     }
 
     @Ignore("Shared mailbox is not supported yet")

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/protocols/imap/src/test/java/org/apache/james/imap/processor/DeleteACLProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/DeleteACLProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/DeleteACLProcessorTest.java
index 73f3bf3..52c28ee 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/DeleteACLProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/DeleteACLProcessorTest.java
@@ -38,7 +38,6 @@ import org.apache.james.mailbox.MessageManager.MetaData.FetchGroup;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.model.MailboxACL;
-import org.apache.james.mailbox.model.MailboxACL.EditMode;
 import org.apache.james.mailbox.model.MailboxACL.EntryKey;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.metrics.api.NoopMetricFactory;
@@ -99,7 +98,7 @@ public class DeleteACLProcessorTest {
 
     @Before
     public void setUp() throws Exception {
-        path = new MailboxPath("#private", USER_1, MAILBOX_NAME);
+        path = MailboxPath.forUser(USER_1, MAILBOX_NAME);
         statusResponseFactory = new UnpooledStatusResponseFactory();
         mailboxManagerStub = mockery.mock(MailboxManager.class);
         subject = new DeleteACLProcessor(mockery.mock(ImapProcessor.class), mailboxManagerStub, statusResponseFactory, new NoopMetricFactory());

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/protocols/imap/src/test/java/org/apache/james/imap/processor/GetACLProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/GetACLProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/GetACLProcessorTest.java
index bf75f0d..d7c3e5f 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/GetACLProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/GetACLProcessorTest.java
@@ -96,7 +96,7 @@ public class GetACLProcessorTest {
 
     @Before
     public void setUp() throws Exception {
-        path = new MailboxPath("#private", USER_1, MAILBOX_NAME);
+        path = MailboxPath.forUser(USER_1, MAILBOX_NAME);
         statusResponseFactory = new UnpooledStatusResponseFactory();
         mailboxManagerStub = mockery.mock(MailboxManager.class);
         subject = new GetACLProcessor(mockery.mock(ImapProcessor.class), mailboxManagerStub, statusResponseFactory, new NoopMetricFactory());

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/protocols/imap/src/test/java/org/apache/james/imap/processor/GetQuotaRootProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/GetQuotaRootProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/GetQuotaRootProcessorTest.java
index ae7f260..f4057df 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/GetQuotaRootProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/GetQuotaRootProcessorTest.java
@@ -51,7 +51,7 @@ import org.junit.Test;
 public class GetQuotaRootProcessorTest {
 
     private static final QuotaRoot QUOTA_ROOT = QuotaRootImpl.quotaRoot("plop");
-    public static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "plop", "INBOX");
+    public static final MailboxPath MAILBOX_PATH = MailboxPath.forUser("plop", "INBOX");
     public static final Quota MESSAGE_QUOTA = QuotaImpl.quota(24, 1589);
     public static final Quota STORAGE_QUOTA = QuotaImpl.quota(240, 15890);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/protocols/imap/src/test/java/org/apache/james/imap/processor/ListRightsProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/ListRightsProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/ListRightsProcessorTest.java
index 0f914fc..f09b679 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/ListRightsProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/ListRightsProcessorTest.java
@@ -101,7 +101,7 @@ public class ListRightsProcessorTest {
 
     @Before
     public void setUp() throws Exception {
-        path = new MailboxPath("#private", USER_1, MAILBOX_NAME);
+        path = MailboxPath.forUser(USER_1, MAILBOX_NAME);
         statusResponseFactory = new UnpooledStatusResponseFactory();
         mailboxManagerStub = mockery.mock(MailboxManager.class);
         subject = new ListRightsProcessor(mockery.mock(ImapProcessor.class), mailboxManagerStub, statusResponseFactory, new NoopMetricFactory());

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/protocols/imap/src/test/java/org/apache/james/imap/processor/SetACLProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/SetACLProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/SetACLProcessorTest.java
index b09a8ae..5c88a0d 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/SetACLProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/SetACLProcessorTest.java
@@ -103,7 +103,7 @@ public class SetACLProcessorTest {
 
     @Before
     public void setUp() throws Exception {
-        path = new MailboxPath("#private", USER_1, MAILBOX_NAME);
+        path = MailboxPath.forUser(USER_1, MAILBOX_NAME);
         statusResponseFactory = new UnpooledStatusResponseFactory();
         mailboxManagerStub = mockery.mock(MailboxManager.class);
         subject = new SetACLProcessor(mockery.mock(ImapProcessor.class), mailboxManagerStub, statusResponseFactory, new NoopMetricFactory());

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
index c8e0338..55298ef 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
@@ -79,7 +79,7 @@ public class SelectedMailboxImplTest {
     @Before
     public void setUp() throws Exception {
         executorService = Executors.newFixedThreadPool(1);
-        mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, "tellier@linagora.com", MailboxConstants.INBOX);
+        mailboxPath = MailboxPath.forUser("tellier@linagora.com", MailboxConstants.INBOX);
         mailboxManager = mock(MailboxManager.class);
         messageManager = mock(MessageManager.class);
         imapSession = mock(ImapSession.class);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/container/cli-integration/src/test/java/org/apache/james/cli/ReindexCommandIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/container/cli-integration/src/test/java/org/apache/james/cli/ReindexCommandIntegrationTest.java b/server/container/cli-integration/src/test/java/org/apache/james/cli/ReindexCommandIntegrationTest.java
index ac7bfd7..bccaa62 100644
--- a/server/container/cli-integration/src/test/java/org/apache/james/cli/ReindexCommandIntegrationTest.java
+++ b/server/container/cli-integration/src/test/java/org/apache/james/cli/ReindexCommandIntegrationTest.java
@@ -71,7 +71,7 @@ public class ReindexCommandIntegrationTest {
         String mailbox = "mailbox";
         ServerCmd.doMain(new String[] {"-h", "127.0.0.1", "-p", "9999", "reindexmailbox", MailboxConstants.USER_NAMESPACE, USER, mailbox});
 
-        verify(reIndexer).reIndex(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, mailbox));
+        verify(reIndexer).reIndex(MailboxPath.forUser(USER, mailbox));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
index 1bf0252..66e6be0 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/MailboxProbeImpl.java
@@ -36,7 +36,6 @@ import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -124,7 +123,7 @@ public class MailboxProbeImpl implements GuiceProbe, MailboxProbe {
 
     private List<MailboxMetaData> searchUserMailboxes(String username, MailboxSession session) throws MailboxException {
         return mailboxManager.search(
-            new MailboxQuery(new MailboxPath(MailboxConstants.USER_NAMESPACE, username, ""),
+            new MailboxQuery(MailboxPath.forUser(username, ""),
                 "*",
                 session.getPathDelimiter()),
             session);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
index 8242c08..320bb79 100644
--- a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
+++ b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxManagerManagement.java
@@ -36,7 +36,6 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -214,7 +213,7 @@ public class MailboxManagerManagement extends StandardMBean implements MailboxMa
 
     private List<MailboxMetaData> retrieveAllUserMailboxes(String username, MailboxSession session) throws MailboxException {
         return mailboxManager.search(
-            new MailboxQuery(new MailboxPath(MailboxConstants.USER_NAMESPACE, username, ""),
+            new MailboxQuery(MailboxPath.forUser(username, ""),
                 "*",
                 session.getPathDelimiter()),
             session);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
index c5f2410..e5010a1 100644
--- a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
+++ b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
@@ -78,21 +78,21 @@ public class MailboxManagementTest {
 
     @Test
     public void deleteMailboxesShouldDeleteMailboxes() throws Exception {
-        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name"), UID_VALIDITY));
+        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY));
         mailboxManagerManagement.deleteMailboxes(USER);
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
 
     @Test
     public void deleteMailboxesShouldDeleteInbox() throws Exception {
-        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "INBOX"), UID_VALIDITY));
+        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY));
         mailboxManagerManagement.deleteMailboxes(USER);
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
 
     @Test
     public void deleteMailboxesShouldDeleteMailboxesChildren() throws Exception {
-        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "INBOX.test"), UID_VALIDITY));
+        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "INBOX.test"), UID_VALIDITY));
         mailboxManagerManagement.deleteMailboxes(USER);
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
@@ -107,7 +107,7 @@ public class MailboxManagementTest {
 
     @Test
     public void deleteMailboxesShouldNotDeleteMailboxesBelongingToOtherUsers() throws Exception {
-        Mailbox mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "userbis", "name"), UID_VALIDITY);
+        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser("userbis", "name"), UID_VALIDITY);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);
         mailboxManagerManagement.deleteMailboxes(USER);
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox);
@@ -115,7 +115,7 @@ public class MailboxManagementTest {
 
     @Test
     public void deleteMailboxesShouldDeleteMailboxesWithEmptyNames() throws Exception {
-        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, ""), UID_VALIDITY));
+        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, ""), UID_VALIDITY));
         mailboxManagerManagement.deleteMailboxes(USER);
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
@@ -132,9 +132,9 @@ public class MailboxManagementTest {
 
     @Test
     public void deleteMailboxesShouldDeleteMultipleMailboxes() throws Exception {
-        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name"), UID_VALIDITY));
-        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "INBOX"), UID_VALIDITY));
-        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "INBOX.test"), UID_VALIDITY));
+        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY));
+        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY));
+        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "INBOX.test"), UID_VALIDITY));
         mailboxManagerManagement.deleteMailboxes(USER);
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
@@ -143,12 +143,12 @@ public class MailboxManagementTest {
     public void createMailboxShouldCreateAMailbox() throws Exception {
         mailboxManagerManagement.createMailbox(MailboxConstants.USER_NAMESPACE, USER, "name");
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).hasSize(1);
-        assertThat(inMemoryMapperFactory.createMailboxMapper(session).findMailboxByPath(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name"))).isNotNull();
+        assertThat(inMemoryMapperFactory.createMailboxMapper(session).findMailboxByPath(MailboxPath.forUser(USER, "name"))).isNotNull();
     }
 
     @Test
     public void createMailboxShouldNotThrowIfMailboxAlreadyExist() throws Exception {
-        MailboxPath path = new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name");
+        MailboxPath path = MailboxPath.forUser(USER, "name");
         Mailbox mailbox = new SimpleMailbox(path, UID_VALIDITY);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);
         mailboxManagerManagement.createMailbox(MailboxConstants.USER_NAMESPACE, USER, "name");
@@ -188,11 +188,11 @@ public class MailboxManagementTest {
     @Test
     public void listMailboxesShouldReturnUserMailboxes() throws Exception {
         Mailbox mailbox1 = new SimpleMailbox(new MailboxPath("#top", USER, "name1"), UID_VALIDITY);
-        Mailbox mailbox2 = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name2"), UID_VALIDITY);
-        Mailbox mailbox3 = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "other_user", "name3"), UID_VALIDITY);
-        Mailbox mailbox4 = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name4"), UID_VALIDITY);
-        Mailbox mailbox5 = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "INBOX"), UID_VALIDITY);
-        Mailbox mailbox6 = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "INBOX.toto"), UID_VALIDITY);
+        Mailbox mailbox2 = new SimpleMailbox(MailboxPath.forUser(USER, "name2"), UID_VALIDITY);
+        Mailbox mailbox3 = new SimpleMailbox(MailboxPath.forUser("other_user", "name3"), UID_VALIDITY);
+        Mailbox mailbox4 = new SimpleMailbox(MailboxPath.forUser(USER, "name4"), UID_VALIDITY);
+        Mailbox mailbox5 = new SimpleMailbox(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY);
+        Mailbox mailbox6 = new SimpleMailbox(MailboxPath.forUser(USER, "INBOX.toto"), UID_VALIDITY);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox1);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox2);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox3);
@@ -214,7 +214,7 @@ public class MailboxManagementTest {
 
     @Test
     public void deleteMailboxShouldDeleteGivenMailbox() throws Exception {
-        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name"), UID_VALIDITY));
+        inMemoryMapperFactory.createMailboxMapper(session).save(new SimpleMailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY));
         mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, "name");
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).isEmpty();
     }
@@ -229,7 +229,7 @@ public class MailboxManagementTest {
 
     @Test
     public void deleteMailboxShouldNotDeleteGivenMailboxIfWrongUser() throws Exception {
-        Mailbox mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "userbis", "name"), UID_VALIDITY);
+        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser("userbis", "name"), UID_VALIDITY);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);
         mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, "name");
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox);
@@ -237,7 +237,7 @@ public class MailboxManagementTest {
 
     @Test
     public void deleteMailboxShouldNotDeleteGivenMailboxIfWrongName() throws Exception {
-        Mailbox mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "wrong_name"), UID_VALIDITY);
+        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(USER, "wrong_name"), UID_VALIDITY);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);
         mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER, "name");
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox);
@@ -245,7 +245,7 @@ public class MailboxManagementTest {
 
     @Test
     public void importEmlFileToMailboxShouldImportEmlFileToGivenMailbox() throws Exception {
-        Mailbox mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name"),
+        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(USER, "name"),
                 UID_VALIDITY);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);
         String emlpath = ClassLoader.getSystemResource("eml/frnog.eml").getFile();
@@ -262,7 +262,7 @@ public class MailboxManagementTest {
 
     @Test
     public void importEmlFileToMailboxShouldNotImportEmlFileWithWrongPathToGivenMailbox() throws Exception {
-        Mailbox mailbox = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, USER, "name"),
+        Mailbox mailbox = new SimpleMailbox(MailboxPath.forUser(USER, "name"),
                 UID_VALIDITY);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);
         String emlpath = ClassLoader.getSystemResource("eml/frnog.eml").getFile();

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
index c5c19d2..8b59316 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
@@ -34,6 +34,7 @@ import javax.mail.Flags;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
@@ -44,7 +45,6 @@ import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.transport.mailets.LocalDelivery;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
@@ -93,7 +93,7 @@ public class LocalDeliveryTest {
     public void mailShouldBeWellDeliveredByDefaultToUserWhenVirtualHostingIsTurnedOn() throws Exception {
         // Given
         String username = "receiver@domain.com";
-        MailboxPath inbox = new MailboxPath("#private", username, "INBOX");
+        MailboxPath inbox = MailboxPath.forUser(username, "INBOX");
         MessageManager messageManager = mock(MessageManager.class);
 
         when(usersRepository.supportVirtualHosting()).thenReturn(true);
@@ -114,7 +114,7 @@ public class LocalDeliveryTest {
     public void mailShouldBeWellDeliveredByDefaultToUserWhenVirtualHostingIsTurnedOff() throws Exception {
         // Given
         String username = "receiver";
-        MailboxPath inbox = new MailboxPath("#private", username, "INBOX");
+        MailboxPath inbox = MailboxPath.forUser(username, "INBOX");
         MessageManager messageManager = mock(MessageManager.class);
         when(usersRepository.supportVirtualHosting()).thenReturn(false);
         when(usersRepository.getUser(new MailAddress("receiver@localhost"))).thenReturn(username);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
index d85e826..1c26351 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
@@ -80,7 +80,7 @@ public class MailboxAppenderTest {
     public void appendShouldAddMessageToDesiredMailbox() throws Exception {
         testee.append(mimeMessage, USER, FOLDER);
 
-        MessageResultIterator messages = mailboxManager.getMailbox(new MailboxPath("#private", USER, FOLDER), session)
+        MessageResultIterator messages = mailboxManager.getMailbox(MailboxPath.forUser(USER, FOLDER), session)
             .getMessages(MessageRange.all(), new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT), session);
 
         assertThat(messages).hasSize(1);
@@ -88,7 +88,7 @@ public class MailboxAppenderTest {
 
     @Test
     public void appendShouldAddMessageToDesiredMailboxWhenMailboxExists() throws Exception {
-        MailboxPath mailboxPath = new MailboxPath("#private", USER, FOLDER);
+        MailboxPath mailboxPath = MailboxPath.forUser(USER, FOLDER);
         mailboxManager.createMailbox(mailboxPath, session);
 
         testee.append(mimeMessage, USER, FOLDER);
@@ -110,7 +110,7 @@ public class MailboxAppenderTest {
     public void appendShouldRemovePathSeparatorAsFirstChar() throws Exception {
         testee.append(mimeMessage, USER, "." + FOLDER);
 
-        MessageResultIterator messages = mailboxManager.getMailbox(new MailboxPath("#private", USER, FOLDER), session)
+        MessageResultIterator messages = mailboxManager.getMailbox(MailboxPath.forUser(USER, FOLDER), session)
             .getMessages(MessageRange.all(), new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT), session);
 
         assertThat(messages).hasSize(1);
@@ -120,7 +120,7 @@ public class MailboxAppenderTest {
     public void appendShouldReplaceSlashBySeparator() throws Exception {
         testee.append(mimeMessage, USER, FOLDER + "/any");
 
-        MessageResultIterator messages = mailboxManager.getMailbox(new MailboxPath("#private", USER, FOLDER + ".any"), session)
+        MessageResultIterator messages = mailboxManager.getMailbox(MailboxPath.forUser(USER, FOLDER + ".any"), session)
             .getMessages(MessageRange.all(), new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT), session);
 
         assertThat(messages).hasSize(1);

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
index 7cb7c23..1d8736d 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
@@ -28,13 +28,13 @@ import java.io.IOException;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.transport.mailets.Sieve;
 import org.apache.james.transport.mailets.jsieve.ResourceLocator;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
@@ -57,9 +57,9 @@ public class SieveIntegrationTest {
     public static final DateTime DATE_DEFAULT = formatter.parseDateTime("2016-01-14 00:00:00");
     public static final DateTime DATE_NEW = formatter.parseDateTime("2016-01-18 00:00:00");
     public static final DateTime DATE_OLD = formatter.parseDateTime("2011-01-18 00:00:00");
-    public static final MailboxPath NOT_SELECTED_MAILBOX = new MailboxPath("#private", LOCAL_PART, "INBOX.not.selected");
-    public static final MailboxPath SELECTED_MAILBOX = new MailboxPath("#private", LOCAL_PART, "INBOX.select");
-    public static final MailboxPath INBOX = new MailboxPath("#private", LOCAL_PART, "INBOX");
+    public static final MailboxPath NOT_SELECTED_MAILBOX = MailboxPath.forUser(LOCAL_PART, "INBOX.not.selected");
+    public static final MailboxPath SELECTED_MAILBOX = MailboxPath.forUser(LOCAL_PART, "INBOX.select");
+    public static final MailboxPath INBOX = MailboxPath.forUser(LOCAL_PART, "INBOX");
 
     private Sieve testee;
     private UsersRepository usersRepository;

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
index 760909c..6222bdf 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
@@ -35,6 +35,7 @@ import javax.mail.Flags;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
@@ -45,7 +46,6 @@ import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.transport.mailets.ToRecipientFolder;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
@@ -61,9 +61,9 @@ public class ToRecipientFolderTest {
 
     public static final String USER_LOCAL_PART = "receiver";
     public static final String USER = USER_LOCAL_PART + "@domain.com";
-    public static final MailboxPath INBOX = new MailboxPath("#private", USER, "INBOX");
-    public static final MailboxPath JUNK = new MailboxPath("#private", USER_LOCAL_PART, "Junk");
-    public static final MailboxPath JUNK_VIRTUAL_HOSTING = new MailboxPath("#private", USER, "Junk");
+    public static final MailboxPath INBOX = MailboxPath.forUser(USER, "INBOX");
+    public static final MailboxPath JUNK = MailboxPath.forUser(USER_LOCAL_PART, "Junk");
+    public static final MailboxPath JUNK_VIRTUAL_HOSTING = MailboxPath.forUser(USER, "Junk");
     public static final String MAILET_NAME = "RecipientFolderTest";
 
     private MessageManager messageManager;

http://git-wip-us.apache.org/repos/asf/james-project/blob/f15ff20b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index 82a6f01..547c644 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -365,7 +365,7 @@ public abstract class GetMailboxesMethodTest {
     public void getMailboxesShouldReturnMailboxesWhenAvailable() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name");
 
-        mailboxProbe.appendMessage(alice, new MailboxPath(MailboxConstants.USER_NAMESPACE, alice, "name"),
+        mailboxProbe.appendMessage(alice, MailboxPath.forUser(alice, "name"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         given()
@@ -383,7 +383,7 @@ public abstract class GetMailboxesMethodTest {
     public void getMailboxesShouldReturnMailboxPropertiesWhenAvailable() throws Exception {
         String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name").serialize();
 
-        mailboxProbe.appendMessage(alice, new MailboxPath(MailboxConstants.USER_NAMESPACE, alice, "name"),
+        mailboxProbe.appendMessage(alice, MailboxPath.forUser(alice, "name"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
         given()


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


[04/29] james-project git commit: JAMES-2169 rely on createMailbox return, don't call getMailbox

Posted by bt...@apache.org.
JAMES-2169 rely on createMailbox return, don't call getMailbox


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

Branch: refs/heads/master
Commit: 94b2fa54c65501f6bf2b5d8e166cfc9266c41a5b
Parents: f5f12d2
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Sep 27 12:12:54 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Tue Oct 3 09:23:48 2017 +0700

----------------------------------------------------------------------
 .../integration/GetMailboxesMethodTest.java     | 51 +++++++-------------
 1 file changed, 17 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/94b2fa54/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
index 478e4b7..aea2d61 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMailboxesMethodTest.java
@@ -139,8 +139,7 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldReturnEmptyWhenIdsDoesntMatch() throws Exception {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name");
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "quicklyRemoved");
-        String removedId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, "quicklyRemoved").getMailboxId().serialize();
+        String removedId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "quicklyRemoved").serialize();
         mailboxProbe.deleteMailbox(MailboxConstants.USER_NAMESPACE, alice, "quicklyRemoved");
 
         given()
@@ -169,14 +168,8 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnMailboxesWhenIdsMatch() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "myMailbox");
-
-        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
-        Mailbox mailbox2 = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, "myMailbox");
-
-        String mailboxId = mailbox.getMailboxId().serialize();
-        String mailboxId2 = mailbox2.getMailboxId().serialize();
+        String mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX).serialize();
+        String mailboxId2 = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "myMailbox").serialize();
 
         given()
             .header("Authorization", accessToken.serialize())
@@ -193,13 +186,9 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnOnlyMatchingMailboxesWhenIdsGiven() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
+        String mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX).serialize();
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "myMailbox");
 
-        Mailbox mailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
-
-        String mailboxId = mailbox.getMailboxId().serialize();
-
         given()
             .header("Authorization", accessToken.serialize())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
@@ -253,7 +242,7 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldReturnSharedWithProperty() throws Exception {
         String mailboxName = "myMailbox";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
+        String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName).serialize();
         String targetUser1 = "toUser1@domain.com";
         String targetUser2 = "toUser2@domain.com";
         Mailbox myMailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
@@ -262,7 +251,7 @@ public abstract class GetMailboxesMethodTest {
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailbox.getMailboxId().serialize() + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -276,12 +265,11 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void getMailboxShouldReturnEmptySharedWithWhenNoDelegation() throws Exception {
         String mailboxName = "myMailbox";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
-        Mailbox myMailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
+        String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName).serialize();
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailbox.getMailboxId().serialize() + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -294,14 +282,14 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void nonHandledRightsShouldBeFilteredOut() throws Exception {
         String mailboxName = "myMailbox";
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
+        String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName).serialize();
         String targetUser1 = "toUser1@domain.com";
         Mailbox myMailbox = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, mailboxName);
         aclProbe.replaceRights(myMailbox.generateAssociatedPath(), targetUser1, new Rfc4314Rights(Right.Read, Right.Post));
 
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailbox.getMailboxId().serialize() + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -385,15 +373,14 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnMailboxPropertiesWhenAvailable() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name");
+        String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name").serialize();
 
         mailboxProbe.appendMessage(alice, new MailboxPath(MailboxConstants.USER_NAMESPACE, alice, "name"),
                 new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags());
 
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, "name").getMailboxId();
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -417,12 +404,11 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnFilteredMailboxesPropertiesWhenRequestContainsFilterProperties() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name");
+        String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, "name").serialize();
 
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, "name").getMailboxId();
         given()
             .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"], \"properties\" : [\"unreadMessages\", \"sortOrder\"]}, \"#0\"]]")
+            .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"], \"properties\" : [\"unreadMessages\", \"sortOrder\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
         .then()
@@ -479,11 +465,9 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnMailboxesWithSortOrder() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.TRASH);
+        MailboxId inboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX);
+        MailboxId trashId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.TRASH);
 
-        MailboxId inboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.INBOX).getMailboxId();
-        MailboxId trashId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.TRASH).getMailboxId();
         given()
             .header("Authorization", accessToken.serialize())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + inboxId.serialize() + "\", \"" + trashId.serialize() + "\"]}, \"#0\"]]")
@@ -501,9 +485,8 @@ public abstract class GetMailboxesMethodTest {
 
     @Test
     public void getMailboxesShouldReturnMailboxesWithRolesInLowerCase() throws Exception {
-        mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.OUTBOX);
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.OUTBOX);
 
-        MailboxId mailboxId = mailboxProbe.getMailbox(MailboxConstants.USER_NAMESPACE, alice, DefaultMailboxes.OUTBOX).getMailboxId();
         given()
             .header("Authorization", accessToken.serialize())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")


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


[06/29] james-project git commit: JAMES-2169 move fixture to be able to use it widely

Posted by bt...@apache.org.
JAMES-2169 move fixture to be able to use it widely


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

Branch: refs/heads/master
Commit: d75d5653b0a91d24cf356626b699640e29509d3c
Parents: 2fdd0bf
Author: Matthieu Baechler <ma...@apache.org>
Authored: Fri Sep 29 17:18:02 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:19:58 2017 +0700

----------------------------------------------------------------------
 .../james/mailbox/fixture/MailboxFixture.java   | 34 ++++++++++++++++++++
 .../mailbox/manager/MailboxManagerFixture.java  | 34 --------------------
 .../MessageIdManagerTestSystemProvider.java     |  6 ++--
 .../store/AbstractCombinationManagerTest.java   | 16 ++++-----
 .../AbstractMessageIdManagerQuotaTest.java      |  8 ++---
 .../AbstractMessageIdManagerSideEffectTest.java |  8 ++---
 .../AbstractMessageIdManagerStorageTest.java    | 14 ++++----
 .../store/TestMailboxSessionMapperFactory.java  | 22 ++++++-------
 .../utils/SystemMailboxesProviderImplTest.java  |  6 ++--
 9 files changed, 74 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d75d5653/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java b/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.java
new file mode 100644
index 0000000..645a04a
--- /dev/null
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/fixture/MailboxFixture.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.fixture;
+
+import org.apache.james.mailbox.model.MailboxPath;
+
+public class MailboxFixture {
+    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/d75d5653/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
deleted file mode 100644
index 516e578..0000000
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/MailboxManagerFixture.java
+++ /dev/null
@@ -1,34 +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.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/d75d5653/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 8b27c6a..e2ffe1f 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
@@ -23,7 +23,7 @@ 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.manager.MailboxManagerFixture;
+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;
@@ -58,8 +58,8 @@ public class MessageIdManagerTestSystemProvider {
         MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
         FakeAuthenticator authenticator = new FakeAuthenticator();
         FakeAuthorizator authorizator = FakeAuthorizator.defaultReject();
-        authenticator.addUser(MailboxManagerFixture.USER, PASSWORD);
-        authenticator.addUser(MailboxManagerFixture.OTHER_USER, PASSWORD);
+        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);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d75d5653/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
index 21dd3fb..6702724 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
@@ -36,7 +36,7 @@ import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
 import org.apache.james.mailbox.MessageManager.MetaData.FetchGroup;
 import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.manager.MailboxManagerFixture;
+import org.apache.james.mailbox.fixture.MailboxFixture;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.FetchGroupImpl;
@@ -74,11 +74,11 @@ public abstract class AbstractCombinationManagerTest {
     public abstract CombinationManagerTestSystem createTestingData() throws Exception ;
 
     public void setUp() throws Exception {
-        session = new MockMailboxSession(MailboxManagerFixture.USER);
+        session = new MockMailboxSession(MailboxFixture.USER);
         testingData = createTestingData();
 
-        mailbox1 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH1, session);
-        mailbox2 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH2, session);
+        mailbox1 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH1, session);
+        mailbox2 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH2, session);
 
         mailboxManager = testingData.getMailboxManager();
         messageIdManager = testingData.getMessageIdManager();
@@ -114,7 +114,7 @@ public abstract class AbstractCombinationManagerTest {
         query.andCriteria(SearchQuery.all());
 
         MailboxQuery mailboxQuery = MailboxQuery.builder()
-            .base(MailboxManagerFixture.MAILBOX_PATH1)
+            .base(MailboxFixture.MAILBOX_PATH1)
             .build();
         MessageId messageId = messageManager1.appendMessage(new ByteArrayInputStream(MAIL_CONTENT), new Date(), session, false, FLAGS).getMessageId();
 
@@ -131,7 +131,7 @@ public abstract class AbstractCombinationManagerTest {
         query.andCriteria(SearchQuery.all());
 
         MailboxQuery mailboxQuery = MailboxQuery.builder()
-            .username(MailboxManagerFixture.USER)
+            .username(MailboxFixture.USER)
             .expression(String.valueOf(MailboxQuery.FREEWILDCARD))
             .build();
         MessageId messageId = messageManager1.appendMessage(new ByteArrayInputStream(MAIL_CONTENT), new Date(), session, false, FLAGS).getMessageId();
@@ -214,7 +214,7 @@ public abstract class AbstractCombinationManagerTest {
     public void getMessageFromMessageIdManagerShouldReturnMessageWhenCopyMessageWithMailboxPathFromMailboxManager() throws Exception {
         MessageId messageId = messageManager1.appendMessage(new ByteArrayInputStream(MAIL_CONTENT), new Date(), session, false, FLAGS).getMessageId();
 
-        mailboxManager.copyMessages(MessageRange.all(), MailboxManagerFixture.MAILBOX_PATH1, MailboxManagerFixture.MAILBOX_PATH2, session);
+        mailboxManager.copyMessages(MessageRange.all(), MailboxFixture.MAILBOX_PATH1, MailboxFixture.MAILBOX_PATH2, session);
 
         List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
 
@@ -227,7 +227,7 @@ public abstract class AbstractCombinationManagerTest {
     public void getMessageFromMessageIdManagerShouldReturnMessageWhenMoveMessageWithMailboxIdFromMailboxManager() throws Exception {
         MessageId messageId = messageManager1.appendMessage(new ByteArrayInputStream(MAIL_CONTENT), new Date(), session, false, FLAGS).getMessageId();
 
-        mailboxManager.moveMessages(MessageRange.all(), MailboxManagerFixture.MAILBOX_PATH1, MailboxManagerFixture.MAILBOX_PATH2, session);
+        mailboxManager.moveMessages(MessageRange.all(), MailboxFixture.MAILBOX_PATH1, MailboxFixture.MAILBOX_PATH2, session);
 
         List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d75d5653/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
index 98f2fb1..95e1bbf 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
@@ -25,7 +25,7 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.OverQuotaException;
-import org.apache.james.mailbox.manager.MailboxManagerFixture;
+import org.apache.james.mailbox.fixture.MailboxFixture;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.quota.CurrentQuotaManager;
@@ -71,9 +71,9 @@ public abstract class AbstractMessageIdManagerQuotaTest {
         testingData = createTestSystem(quotaManager, currentQuotaManager);
         messageIdManager = testingData.getMessageIdManager();
 
-        mailbox1 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH1, session);
-        mailbox2 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH2, session);
-        mailbox3 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH3, session);
+        mailbox1 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH1, session);
+        mailbox2 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH2, session);
+        mailbox3 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH3, session);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/d75d5653/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 d7a1201..f16ee1e 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,7 +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.fixture.MailboxFixture;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.FetchGroupImpl;
 import org.apache.james.mailbox.model.MailboxId;
@@ -88,9 +88,9 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
         testingData = createTestSystem(quotaManager, dispatcher);
         messageIdManager = testingData.getMessageIdManager();
 
-        mailbox1 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH1, session);
-        mailbox2 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH2, session);
-        mailbox3 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH3, session);
+        mailbox1 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH1, session);
+        mailbox2 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH2, session);
+        mailbox3 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH3, session);
     }
 
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d75d5653/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 757b276..8901276 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
@@ -31,7 +31,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.fixture.MailboxFixture;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.FetchGroupImpl;
 import org.apache.james.mailbox.model.MailboxId;
@@ -67,16 +67,16 @@ public abstract class AbstractMessageIdManagerStorageTest {
     protected abstract MessageIdManagerTestSystem createTestingData() throws Exception;
 
     public void setUp() throws Exception {
-        session = new MockMailboxSession(MailboxManagerFixture.USER);
-        otherSession = new MockMailboxSession(MailboxManagerFixture.OTHER_USER);
+        session = new MockMailboxSession(MailboxFixture.USER);
+        otherSession = new MockMailboxSession(MailboxFixture.OTHER_USER);
         systemSession = new MockMailboxSession("systemuser", SessionType.System);
         testingData = createTestingData();
         messageIdManager = testingData.getMessageIdManager();
 
-        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);
+        mailbox1 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH1, session);
+        mailbox2 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH2, session);
+        mailbox3 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH3, session);
+        mailbox4 = testingData.createMailbox(MailboxFixture.MAILBOX_PATH4, otherSession);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/d75d5653/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 e7cdb71..4a001be 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
@@ -40,7 +40,7 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.exception.SubscriptionException;
-import org.apache.james.mailbox.manager.MailboxManagerFixture;
+import org.apache.james.mailbox.fixture.MailboxFixture;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -80,10 +80,10 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory
     public TestMailboxSessionMapperFactory() {
 
 
-        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));
+        mailbox1 = new SimpleMailbox(MailboxFixture.MAILBOX_PATH1, UID_VALIDITY, TestId.of(36));
+        mailbox2 = new SimpleMailbox(MailboxFixture.MAILBOX_PATH2, UID_VALIDITY, TestId.of(46));
+        mailbox3 = new SimpleMailbox(MailboxFixture.MAILBOX_PATH3, UID_VALIDITY, TestId.of(56));
+        mailbox4 = new SimpleMailbox(MailboxFixture.MAILBOX_PATH4, UID_VALIDITY, TestId.of(66));
 
         mailboxMapper = new MailboxMapper() {
             @Override
@@ -99,19 +99,19 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory
 
             @Override
             public Mailbox findMailboxByPath(MailboxPath mailboxName) throws MailboxException {
-                if (mailboxName.equals(MailboxManagerFixture.MAILBOX_PATH1)) {
+                if (mailboxName.equals(MailboxFixture.MAILBOX_PATH1)) {
                     return mailbox1;
                 }
-                if (mailboxName.equals(MailboxManagerFixture.MAILBOX_PATH2)) {
+                if (mailboxName.equals(MailboxFixture.MAILBOX_PATH2)) {
                     return mailbox2;
                 }
-                if (mailboxName.equals(MailboxManagerFixture.MAILBOX_PATH3)) {
+                if (mailboxName.equals(MailboxFixture.MAILBOX_PATH3)) {
                     return mailbox3;
                 }
                 throw new IllegalArgumentException("Unknown mailbox : " + mailboxName + " must be one of "
-                    + MailboxManagerFixture.MAILBOX_PATH1 + " "
-                    + MailboxManagerFixture.MAILBOX_PATH2 + " "
-                    + MailboxManagerFixture.MAILBOX_PATH3);
+                    + MailboxFixture.MAILBOX_PATH1 + " "
+                    + MailboxFixture.MAILBOX_PATH2 + " "
+                    + MailboxFixture.MAILBOX_PATH3);
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/d75d5653/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
index 8b5b61c..9756c58 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
@@ -29,7 +29,7 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
-import org.apache.james.mailbox.manager.MailboxManagerFixture;
+import org.apache.james.mailbox.fixture.MailboxFixture;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.junit.Before;
 import org.junit.Rule;
@@ -59,14 +59,14 @@ public class SystemMailboxesProviderImplTest {
     @Test
     @SuppressWarnings("unchecked")
     public void getMailboxByRoleShouldReturnEmptyWhenNoMailbox() throws Exception {
-        when(mailboxManager.getMailbox(eq(MailboxManagerFixture.MAILBOX_PATH1), eq(mailboxSession))).thenThrow(MailboxNotFoundException.class);
+        when(mailboxManager.getMailbox(eq(MailboxFixture.MAILBOX_PATH1), eq(mailboxSession))).thenThrow(MailboxNotFoundException.class);
 
         assertThat(systemMailboxProvider.getMailboxByRole(Role.INBOX, mailboxSession)).isEmpty();
     }
 
     @Test
     public void getMailboxByRoleShouldReturnMailboxByRole() throws Exception {
-        when(mailboxManager.getMailbox(eq(MailboxManagerFixture.MAILBOX_PATH1), eq(mailboxSession))).thenReturn(inboxMessageManager);
+        when(mailboxManager.getMailbox(eq(MailboxFixture.MAILBOX_PATH1), eq(mailboxSession))).thenReturn(inboxMessageManager);
 
         assertThat(systemMailboxProvider.getMailboxByRole(Role.INBOX, mailboxSession))
             .hasSize(1)


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


[03/29] james-project git commit: JAMES-2169 refactor GetMailboxesMethod.retrieveMailboxes in a more functional way

Posted by bt...@apache.org.
JAMES-2169 refactor GetMailboxesMethod.retrieveMailboxes in a more functional way


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

Branch: refs/heads/master
Commit: 2a23a97446bddc79462e3b45d980bd8ce1a48db2
Parents: 94b2fa5
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Sep 27 12:31:16 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Tue Oct 3 09:23:48 2017 +0700

----------------------------------------------------------------------
 .../james/jmap/methods/GetMailboxesMethod.java  | 52 +++++++++++---------
 1 file changed, 30 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2a23a974/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
index 1b042af..b6f575c 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
@@ -45,6 +45,7 @@ import org.apache.james.metrics.api.TimeMetric;
 import org.apache.james.util.MDCBuilder;
 import org.apache.james.util.OptionalUtils;
 
+import com.github.fge.lambdas.Throwing;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Throwables;
@@ -120,27 +121,34 @@ public class GetMailboxesMethod implements Method {
     }
 
     private Stream<Mailbox> retrieveMailboxes(Optional<ImmutableList<MailboxId>> mailboxIds, MailboxSession mailboxSession) throws MailboxException {
-        if (mailboxIds.isPresent()) {
-            return mailboxIds.get()
-                .stream()
-                .map(mailboxId -> mailboxFactory.builder()
-                        .id(mailboxId)
-                        .session(mailboxSession)
-                        .build())
-                .flatMap(OptionalUtils::toStream);
-        } else {
-            List<MailboxMetaData> userMailboxes = mailboxManager.search(
-                MailboxQuery.builder(mailboxSession).privateUserMailboxes().build(),
-                mailboxSession);
-            return userMailboxes
-                .stream()
-                .map(MailboxMetaData::getId)
-                .map(mailboxId -> mailboxFactory.builder()
-                        .id(mailboxId)
-                        .session(mailboxSession)
-                        .usingPreloadedMailboxesMetadata(userMailboxes)
-                        .build())
-                .flatMap(OptionalUtils::toStream);
-        }
+        return mailboxIds
+            .map(ids -> retrieveSpecificMailboxes(mailboxSession, ids))
+            .orElseGet(Throwing.supplier(() -> retrieveAllMailboxes(mailboxSession)).sneakyThrow());
+    }
+
+    private Stream<Mailbox> retrieveSpecificMailboxes(MailboxSession mailboxSession, ImmutableList<MailboxId> mailboxIds) {
+        return mailboxIds
+            .stream()
+            .map(mailboxId -> mailboxFactory.builder()
+                .id(mailboxId)
+                .session(mailboxSession)
+                .build())
+            .flatMap(OptionalUtils::toStream);
     }
+
+    private Stream<Mailbox> retrieveAllMailboxes(MailboxSession mailboxSession) throws MailboxException {
+        List<MailboxMetaData> userMailboxes = mailboxManager.search(
+            MailboxQuery.builder(mailboxSession).privateUserMailboxes().build(),
+            mailboxSession);
+        return userMailboxes
+            .stream()
+            .map(MailboxMetaData::getId)
+            .map(mailboxId -> mailboxFactory.builder()
+                    .id(mailboxId)
+                    .session(mailboxSession)
+                    .usingPreloadedMailboxesMetadata(userMailboxes)
+                    .build())
+            .flatMap(OptionalUtils::toStream);
+    }
+
 }


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


[08/29] james-project git commit: JAMES-2169 MailboxMetaData small refactoring for Java 8 style

Posted by bt...@apache.org.
JAMES-2169 MailboxMetaData small refactoring for Java 8 style


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

Branch: refs/heads/master
Commit: 2fdd0bff7add441d3c28ea8370f2c2a7f53e9405
Parents: b8092bb
Author: Matthieu Baechler <ma...@apache.org>
Authored: Fri Sep 29 16:21:09 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:19:58 2017 +0700

----------------------------------------------------------------------
 .../james/mailbox/store/MailboxMetaData.java    | 49 ++++++--------------
 1 file changed, 13 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2fdd0bff/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
index 8b002f0..7dbfa1c 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
@@ -21,6 +21,7 @@ package org.apache.james.mailbox.store;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 import javax.mail.Flags;
 
@@ -48,14 +49,9 @@ public class MailboxMetaData implements MessageManager.MetaData {
 
     public MailboxMetaData(List<MessageUid> recent, Flags permanentFlags, long uidValidity, MessageUid uidNext, long highestModSeq, long messageCount, long unseenCount, MessageUid firstUnseen, boolean writeable, boolean modSeqPermanent, MailboxACL acl) {
         super();
-        if (recent == null) {
-            this.recent = new ArrayList<>();
-        } else {
-            this.recent = recent;
-
-        }
+        this.recent = Optional.ofNullable(recent).orElseGet(ArrayList::new);
         this.highestModSeq = highestModSeq;
-        recentCount = this.recent.size();
+        this.recentCount = this.recent.size();
 
         this.permanentFlags = permanentFlags;
         this.uidValidity = uidValidity;
@@ -68,16 +64,12 @@ public class MailboxMetaData implements MessageManager.MetaData {
         this.acl = acl;
     }
 
-    /**
-     * @see MailboxMetaData#countRecent()
-     */
+    @Override
     public long countRecent() {
         return recentCount;
     }
 
-    /**
-     * @see MailboxMetaData#getPermanentFlags()
-     */
+    @Override
     public Flags getPermanentFlags() {
         return permanentFlags;
     }
@@ -87,61 +79,46 @@ public class MailboxMetaData implements MessageManager.MetaData {
         return recent;
     }
 
-    /**
-     * @see MailboxMetaData#getUidValidity()
-     */
+    @Override
     public long getUidValidity() {
         return uidValidity;
     }
 
+    @Override
     public MessageUid getUidNext() {
         return nextUid;
     }
 
-    /**
-     * @see MailboxMetaData#getMessageCount()
-     */
+    @Override
     public long getMessageCount() {
         return messageCount;
     }
 
-    /**
-     * @see MailboxMetaData#getUnseenCount()
-     */
+    @Override
     public long getUnseenCount() {
         return unseenCount;
     }
 
+    @Override
     public MessageUid getFirstUnseen() {
         return firstUnseen;
     }
 
-    /**
-     * @see MailboxMetaData#isWriteable()
-     */
+    @Override
     public boolean isWriteable() {
         return writeable;
     }
 
-    /**
-     * @see MailboxMetaData#getHighestModSeq()
-     */
+    @Override
     public long getHighestModSeq() {
         return highestModSeq;
     }
 
-    /**
-     * @see MailboxMetaData#isModSeqPermanent()
-     */
+    @Override
     public boolean isModSeqPermanent() {
         return modSeqPermanent;
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.james.mailbox.MessageManager.MetaData#getACL()
-     */
     @Override
     public MailboxACL getACL() {
         return acl;


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


[11/29] james-project git commit: JAMES-2169 fix a typo on MailboxMetaData.permanentFlags

Posted by bt...@apache.org.
JAMES-2169 fix a typo on MailboxMetaData.permanentFlags


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

Branch: refs/heads/master
Commit: b8092bbd9b73505cefa7e62bb0cfba61117cc658
Parents: d5bb0b4
Author: Matthieu Baechler <ma...@apache.org>
Authored: Fri Sep 29 16:18:03 2017 +0200
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:19:58 2017 +0700

----------------------------------------------------------------------
 .../java/org/apache/james/mailbox/store/MailboxMetaData.java | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b8092bbd/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
index ba59371..8b002f0 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
@@ -35,7 +35,7 @@ public class MailboxMetaData implements MessageManager.MetaData {
 
     private final long recentCount;
     private final List<MessageUid> recent;
-    private final Flags premanentFlags;
+    private final Flags permanentFlags;
     private final long uidValidity;
     private final MessageUid nextUid;
     private final long messageCount;
@@ -46,7 +46,7 @@ public class MailboxMetaData implements MessageManager.MetaData {
     private final boolean modSeqPermanent;
     private final MailboxACL acl;
 
-    public MailboxMetaData(List<MessageUid> recent, Flags premanentFlags, long uidValidity, MessageUid uidNext, long highestModSeq, long messageCount, long unseenCount, MessageUid firstUnseen, boolean writeable, boolean modSeqPermanent, MailboxACL acl) {
+    public MailboxMetaData(List<MessageUid> recent, Flags permanentFlags, long uidValidity, MessageUid uidNext, long highestModSeq, long messageCount, long unseenCount, MessageUid firstUnseen, boolean writeable, boolean modSeqPermanent, MailboxACL acl) {
         super();
         if (recent == null) {
             this.recent = new ArrayList<>();
@@ -57,7 +57,7 @@ public class MailboxMetaData implements MessageManager.MetaData {
         this.highestModSeq = highestModSeq;
         recentCount = this.recent.size();
 
-        this.premanentFlags = premanentFlags;
+        this.permanentFlags = permanentFlags;
         this.uidValidity = uidValidity;
         this.nextUid = uidNext;
         this.messageCount = messageCount;
@@ -79,7 +79,7 @@ public class MailboxMetaData implements MessageManager.MetaData {
      * @see MailboxMetaData#getPermanentFlags()
      */
     public Flags getPermanentFlags() {
-        return premanentFlags;
+        return permanentFlags;
     }
 
     @Override


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


[23/29] james-project git commit: JAMES-2169 MailboxProbe.createMailbox should return a MailboxId

Posted by bt...@apache.org.
JAMES-2169 MailboxProbe.createMailbox should return a MailboxId


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

Branch: refs/heads/master
Commit: b5c3096fb557363e0b554f86edbefdb7fcad1a33
Parents: 36b4e56
Author: benwa <bt...@linagora.com>
Authored: Tue Oct 3 09:40:27 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:24:32 2017 +0700

----------------------------------------------------------------------
 .../test/java/org/apache/james/mailbox/model/TestId.java    | 4 +++-
 .../org/apache/james/mailbox/cassandra/ids/CassandraId.java | 3 ++-
 .../main/java/org/apache/james/mailbox/hbase/HBaseId.java   | 3 ++-
 .../src/main/java/org/apache/james/mailbox/jcr/JCRId.java   | 4 +++-
 .../src/main/java/org/apache/james/mailbox/jpa/JPAId.java   | 4 +++-
 .../java/org/apache/james/mailbox/maildir/MaildirId.java    | 4 +++-
 .../java/org/apache/james/mailbox/inmemory/InMemoryId.java  | 4 +++-
 .../apache/james/mailbox/store/mail/ZooUidProviderTest.java | 6 ++++--
 .../src/test/java/org/apache/james/cli/ServerCmdTest.java   | 4 ++--
 .../apache/james/adapter/mailbox/MailboxManagementTest.java | 9 +++++++--
 .../org/apache/james/jmap/json/ObjectMapperFactoryTest.java | 3 ++-
 11 files changed, 34 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/mailbox/api/src/test/java/org/apache/james/mailbox/model/TestId.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/TestId.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/TestId.java
index ee10460..16ade15 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/TestId.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/TestId.java
@@ -18,7 +18,9 @@
  ****************************************************************/
 package org.apache.james.mailbox.model;
 
-public class TestId implements MailboxId {
+import java.io.Serializable;
+
+public class TestId implements MailboxId, Serializable {
 
     public static class Factory implements MailboxId.Factory {
         

http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/ids/CassandraId.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/ids/CassandraId.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/ids/CassandraId.java
index 3db4329..8de229c 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/ids/CassandraId.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/ids/CassandraId.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailbox.cassandra.ids;
 
+import java.io.Serializable;
 import java.util.Objects;
 import java.util.UUID;
 
@@ -26,7 +27,7 @@ import org.apache.james.mailbox.model.MailboxId;
 import com.datastax.driver.core.utils.UUIDs;
 import com.google.common.base.MoreObjects;
 
-public class CassandraId implements MailboxId {
+public class CassandraId implements MailboxId, Serializable {
 
     public static class Factory implements MailboxId.Factory {
         @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseId.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseId.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseId.java
index 586bec1..62ba95f 100644
--- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseId.java
+++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseId.java
@@ -18,12 +18,13 @@
  ****************************************************************/
 package org.apache.james.mailbox.hbase;
 
+import java.io.Serializable;
 import java.util.UUID;
 
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.james.mailbox.model.MailboxId;
 
-public class HBaseId implements MailboxId {
+public class HBaseId implements MailboxId, Serializable {
 
     private final UUID id;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRId.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRId.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRId.java
index 08851b0..092edd6 100644
--- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRId.java
+++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRId.java
@@ -18,9 +18,11 @@
  ****************************************************************/
 package org.apache.james.mailbox.jcr;
 
+import java.io.Serializable;
+
 import org.apache.james.mailbox.model.MailboxId;
 
-public class JCRId implements MailboxId {
+public class JCRId implements MailboxId, Serializable {
 
     public static JCRId of(String value) {
         return new JCRId(value);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAId.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAId.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAId.java
index 2992725..9047cd6 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAId.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAId.java
@@ -18,9 +18,11 @@
  ****************************************************************/
 package org.apache.james.mailbox.jpa;
 
+import java.io.Serializable;
+
 import org.apache.james.mailbox.model.MailboxId;
 
-public class JPAId implements MailboxId {
+public class JPAId implements MailboxId, Serializable {
 
     public static class Factory implements MailboxId.Factory {
         @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirId.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirId.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirId.java
index 5c568b2..9a5d63d 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirId.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirId.java
@@ -18,9 +18,11 @@
  ****************************************************************/
 package org.apache.james.mailbox.maildir;
 
+import java.io.Serializable;
+
 import org.apache.james.mailbox.model.MailboxId;
 
-public class MaildirId implements MailboxId {
+public class MaildirId implements MailboxId, Serializable {
 
     public static class Factory implements MailboxId.Factory {
         @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryId.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryId.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryId.java
index c5139fc..389a76a 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryId.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryId.java
@@ -18,9 +18,11 @@
  ****************************************************************/
 package org.apache.james.mailbox.inmemory;
 
+import java.io.Serializable;
+
 import org.apache.james.mailbox.model.MailboxId;
 
-public class InMemoryId implements MailboxId {
+public class InMemoryId implements MailboxId, Serializable {
 
     public static class Factory implements MailboxId.Factory {
         

http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java b/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
index a9dfa23..2c1c888 100644
--- a/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
+++ b/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
@@ -19,6 +19,8 @@
 package org.apache.james.mailbox.store.mail;
 
 import static org.junit.Assert.assertEquals;
+
+import java.io.Serializable;
 import java.util.Optional;
 import java.util.UUID;
 
@@ -41,7 +43,7 @@ import com.netflix.curator.test.TestingServer;
  */
 public class ZooUidProviderTest {
 
-    public static class LongId implements MailboxId {
+    public static class LongId implements MailboxId, Serializable {
 
         public final Long id;
 
@@ -81,7 +83,7 @@ public class ZooUidProviderTest {
 
     }
 
-    public static class UUIDId implements MailboxId {
+    public static class UUIDId implements MailboxId, Serializable {
 
         private final UUID id;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
----------------------------------------------------------------------
diff --git a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java b/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
index 9609f54..efe9d19 100644
--- a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
+++ b/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
@@ -35,6 +35,7 @@ import org.apache.james.cli.exceptions.InvalidPortException;
 import org.apache.james.cli.exceptions.MissingCommandException;
 import org.apache.james.cli.exceptions.UnrecognizedCommandException;
 import org.apache.james.cli.type.CmdType;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.Quota;
 import org.apache.james.mailbox.store.mail.model.SerializableQuota;
 import org.apache.james.mailbox.store.probe.MailboxProbe;
@@ -308,8 +309,7 @@ public class ServerCmdTest {
         String[] arguments = { "-h", "127.0.0.1", "-p", "9999", CmdType.CREATEMAILBOX.getCommand(), namespace, user, name};
         CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
 
-        mailboxProbe.createMailbox(namespace, user, name);
-        expectLastCall();
+        expect(mailboxProbe.createMailbox(namespace, user, name)).andReturn(control.createMock(MailboxId.class));
 
         control.replay();
         testee.executeCommandLine(commandLine);

http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
index e5010a1..4c4f130 100644
--- a/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
+++ b/server/container/mailbox-adapter/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.adapter.mailbox;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -29,6 +30,7 @@ import org.apache.commons.io.IOUtils;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.exception.MailboxExistsException;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -147,11 +149,14 @@ public class MailboxManagementTest {
     }
 
     @Test
-    public void createMailboxShouldNotThrowIfMailboxAlreadyExist() throws Exception {
+    public void createMailboxShouldThrowIfMailboxAlreadyExist() throws Exception {
         MailboxPath path = MailboxPath.forUser(USER, "name");
         Mailbox mailbox = new SimpleMailbox(path, UID_VALIDITY);
         inMemoryMapperFactory.createMailboxMapper(session).save(mailbox);
-        mailboxManagerManagement.createMailbox(MailboxConstants.USER_NAMESPACE, USER, "name");
+
+        assertThatThrownBy(() -> mailboxManagerManagement.createMailbox(MailboxConstants.USER_NAMESPACE, USER, "name"))
+            .isInstanceOf(RuntimeException.class)
+            .hasCauseInstanceOf(MailboxExistsException.class);
         assertThat(inMemoryMapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b5c3096f/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ObjectMapperFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ObjectMapperFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ObjectMapperFactoryTest.java
index 9e892fc..8a181d7 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ObjectMapperFactoryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ObjectMapperFactoryTest.java
@@ -21,6 +21,7 @@ package org.apache.james.jmap.json;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
+import java.io.Serializable;
 import java.util.Map;
 
 import org.apache.james.jmap.model.mailbox.Rights;
@@ -151,7 +152,7 @@ public class ObjectMapperFactoryTest {
         }
     }
 
-    public static class KeyWithoutToString implements MailboxId {
+    public static class KeyWithoutToString implements MailboxId, Serializable {
         private String value;
 
         public KeyWithoutToString(String value) {


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


[28/29] james-project git commit: JAMES-2169 Optimize a bit right checking upon mailbox read

Posted by bt...@apache.org.
JAMES-2169 Optimize a bit right checking upon mailbox read


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

Branch: refs/heads/master
Commit: 3682a4a02877181f780ca30000dc720a56a413c1
Parents: 7e2062b
Author: benwa <bt...@linagora.com>
Authored: Wed Oct 4 09:08:36 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:24:50 2017 +0700

----------------------------------------------------------------------
 .../org/apache/james/mailbox/store/StoreMailboxManager.java   | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3682a4a0/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 7f50a8d..b96ba8c 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -48,6 +48,7 @@ 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.exception.NotAdminException;
+import org.apache.james.mailbox.exception.UnsupportedRightException;
 import org.apache.james.mailbox.exception.UserDoesNotExistException;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxACL.Right;
@@ -534,7 +535,7 @@ public class StoreMailboxManager implements MailboxManager {
     }
 
     private boolean userHasReadRightsOn(Mailbox mailbox, MailboxSession session) throws MailboxException {
-        return hasRight(mailbox.generateAssociatedPath(), Right.Read, session);
+        return hasRight(mailbox, Right.Read, session);
     }
 
     @Override
@@ -798,6 +799,10 @@ public class StoreMailboxManager implements MailboxManager {
     public boolean hasRight(MailboxPath mailboxPath, Right right, MailboxSession session) throws MailboxException {
         MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session);
         Mailbox mailbox = mapper.findMailboxByPath(mailboxPath);
+        return hasRight(mailbox, right, session);
+    }
+
+    private boolean hasRight(Mailbox mailbox, Right right, MailboxSession session) throws UnsupportedRightException {
         MailboxSession.User user = session.getUser();
         String userName = user != null ? user.getUserName() : null;
         return aclResolver.hasRight(userName, groupMembershipResolver, right, mailbox.getACL(), mailbox.getUser(), new GroupFolderResolver(session).isGroupFolder(mailbox));


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


[22/29] james-project git commit: JAMES-2169 Remove unneeded cast (intelliJ Warning)

Posted by bt...@apache.org.
JAMES-2169 Remove unneeded cast (intelliJ Warning)

setMailboxId is a Mailbox method already


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

Branch: refs/heads/master
Commit: 36b4e56af2cd9633480f82da198ca879c2ca6e37
Parents: 2f97ab9
Author: benwa <bt...@linagora.com>
Authored: Tue Oct 3 09:36:31 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Oct 4 16:24:11 2017 +0700

----------------------------------------------------------------------
 .../apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/36b4e56a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
index 8c635e4..c65b66c 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
@@ -105,7 +105,7 @@ public class InMemoryMailboxMapper implements MailboxMapper {
         InMemoryId id = (InMemoryId) mailbox.getMailboxId();
         if (id == null) {
             id = InMemoryId.of(mailboxIdGenerator.incrementAndGet());
-            ((SimpleMailbox) mailbox).setMailboxId(id);
+            mailbox.setMailboxId(id);
         } else {
             try {
                 Mailbox mailboxWithPreviousName = findMailboxById(id);


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