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]
