This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 948252e3e0c6b3f5be8b72eaab93b15ed763883e
Author: Benoit Tellier <[email protected]>
AuthorDate: Mon Mar 30 15:42:52 2020 +0700

    JAMES-2632 Add a MailboxPath::child method
---
 .../apache/james/mailbox/model/MailboxPath.java    |  9 +++++++
 .../james/mailbox/model/MailboxPathTest.java       | 28 ++++++++++++++++++++++
 .../james/jmap/draft/model/MailboxFactoryTest.java |  4 ++--
 3 files changed, 39 insertions(+), 2 deletions(-)

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 f2617b7..3c6a8ed 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
@@ -32,6 +32,8 @@ import 
org.apache.james.mailbox.exception.MailboxNameException;
 import org.apache.james.mailbox.exception.TooLongMailboxNameException;
 
 import com.google.common.base.CharMatcher;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 
 /**
@@ -108,6 +110,13 @@ public class MailboxPath {
         return user.equals(mailboxSession.getUser());
     }
 
+    public MailboxPath child(String childName, char delimiter) {
+        Preconditions.checkArgument(!Strings.isNullOrEmpty(childName), 
"'childName' should not be null or empty");
+        
Preconditions.checkArgument(!childName.contains(String.valueOf(delimiter)), 
"'childName' should not contain delimiter");
+
+        return new MailboxPath(namespace, user, name + delimiter + childName);
+    }
+
     /**
      * Return a list of MailboxPath representing the hierarchy levels of this
      * MailboxPath. E.g. INBOX.main.sub would yield
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 453c91f..f421ed7 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
@@ -61,6 +61,34 @@ class MailboxPathTest {
     }
 
     @Test
+    void childShouldConcatenateChildNameWithParentForlder() {
+        assertThat(MailboxPath.forUser(USER, "folder")
+            .child("toto", '.'))
+            .isEqualTo(MailboxPath.forUser(USER, "folder.toto"));
+    }
+
+    @Test
+    void childShouldThrowWhenNull() {
+        MailboxPath path = MailboxPath.forUser(USER, "folder");
+        assertThatThrownBy(() -> path.child(null, '.'))
+            .isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void childShouldThrowWhenEmpty() {
+        MailboxPath path = MailboxPath.forUser(USER, "folder");
+        assertThatThrownBy(() -> path.child("", '.'))
+            .isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void childShouldThrowWhenContainsDelimiter() {
+        MailboxPath path = MailboxPath.forUser(USER, "folder");
+        assertThatThrownBy(() -> path.child("a.b", '.'))
+            .isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
     void getHierarchyLevelsShouldReturnPathWhenOneLevel() {
         assertThat(MailboxPath.forUser(USER, "inbox")
             .getHierarchyLevels('.'))
diff --git 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MailboxFactoryTest.java
 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MailboxFactoryTest.java
index 14d9d42..f235996 100644
--- 
a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MailboxFactoryTest.java
+++ 
b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MailboxFactoryTest.java
@@ -144,7 +144,7 @@ public class MailboxFactoryTest {
         mailboxManager.createMailbox(parentMailboxPath, mailboxSession);
         MailboxId parentId = mailboxManager.getMailbox(parentMailboxPath, 
mailboxSession).getId();
 
-        MailboxPath mailboxPath = MailboxPath.forUser(user, "INBOX.mailbox");
+        MailboxPath mailboxPath = parentMailboxPath.child("mailbox", '.');
         mailboxManager.createMailbox(mailboxPath, mailboxSession);
 
         Optional<MailboxId> id = sut.getParentIdFromMailboxPath(mailboxPath, 
Optional.empty(), mailboxSession);
@@ -202,7 +202,7 @@ public class MailboxFactoryTest {
     public void buildShouldRelyOnPreloadedMailboxes() throws Exception {
         MailboxPath inbox = MailboxPath.inbox(user);
         Optional<MailboxId> inboxId = mailboxManager.createMailbox(inbox, 
mailboxSession);
-        Optional<MailboxId> otherId = 
mailboxManager.createMailbox(MailboxPath.forUser(user, "INBOX.child"), 
mailboxSession);
+        Optional<MailboxId> otherId = 
mailboxManager.createMailbox(inbox.child("child", '.'), mailboxSession);
 
         InMemoryId preLoadedId = InMemoryId.of(45);
         Mailbox retrievedMailbox = sut.builder()


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

Reply via email to