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 2019/10/31 09:48:42 UTC

[james-project] 04/06: JAMES-2936 add a method to check for empty names in the hierarchy in a mailbox path

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 63d8419fb6b655243423f795647104e2ce227f03
Author: RĂ©mi KOWALSKI <rk...@linagora.com>
AuthorDate: Mon Oct 28 15:14:49 2019 +0100

    JAMES-2936 add a method to check for empty names in the hierarchy in a mailbox path
---
 .../apache/james/mailbox/model/MailboxPath.java    |  7 +++
 .../james/mailbox/model/MailboxPathTest.java       | 56 ++++++++++++++++++++++
 2 files changed, 63 insertions(+)

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 ec6a2ee..d6c2621 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
@@ -147,6 +147,13 @@ public class MailboxPath {
         return this;
     }
 
+    public boolean hasEmptyNameInHierarchy(char pathDelimiter) {
+        String delimiterString = String.valueOf(pathDelimiter);
+        return this.name.isEmpty()
+            || this.name.contains(delimiterString + delimiterString)
+            || this.name.startsWith(delimiterString)
+            || this.name.endsWith(delimiterString);
+    }
 
     public String asString() {
         return namespace + ":" + user + ":" + name;
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 422d587..d6606cc 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
@@ -126,6 +126,62 @@ public class MailboxPathTest {
     }
 
     @Test
+    public void hasEmptyNameInHierarchyShouldBeFalseIfSingleLevelPath() {
+        assertThat(MailboxPath.forUser("user", "a")
+            .hasEmptyNameInHierarchy('.'))
+            .isFalse();
+    }
+
+    @Test
+    public void hasEmptyNameInHierarchyShouldBeFalseIfNestedLevelWithNonEmptyNames() {
+        assertThat(MailboxPath.forUser("user", "a.b.c")
+            .hasEmptyNameInHierarchy('.'))
+            .isFalse();
+    }
+
+    @Test
+    public void hasEmptyNameInHierarchyShouldBeTrueIfEmptyPath() {
+        assertThat(MailboxPath.forUser("user", "")
+            .hasEmptyNameInHierarchy('.'))
+            .isTrue();
+    }
+
+    @Test
+    public void hasEmptyNameInHierarchyShouldBeTrueIfPathWithTwoEmptyNames() {
+        assertThat(MailboxPath.forUser("user", ".")
+            .hasEmptyNameInHierarchy('.'))
+            .isTrue();
+    }
+
+    @Test
+    public void hasEmptyNameInHierarchyShouldBeTrueIfPathWithAnEmptyNameBetweenTwoNames() {
+        assertThat(MailboxPath.forUser("user", "a..b")
+            .hasEmptyNameInHierarchy('.'))
+            .isTrue();
+    }
+
+    @Test
+    public void hasEmptyNameInHierarchyShouldBeTrueIfPathWithHeadingEmptyNames() {
+        assertThat(MailboxPath.forUser("user", "..a")
+            .hasEmptyNameInHierarchy('.'))
+            .isTrue();
+    }
+
+    @Test
+    public void hasEmptyNameInHierarchyShouldBeTrueIfPathWithATrailingEmptyName() {
+        assertThat(MailboxPath.forUser("user", "a.")
+            .hasEmptyNameInHierarchy('.'))
+            .isTrue();
+    }
+
+    @Test
+    public void hasEmptyNameInHierarchyShouldBeTrueIfPathWithTrailingEmptyNames() {
+        assertThat(MailboxPath.forUser("user", "a..")
+            .hasEmptyNameInHierarchy('.'))
+            .isTrue();
+    }
+
+    @Test
     public void isInboxShouldReturnTrueWhenINBOX() {
         MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", DefaultMailboxes.INBOX);
         assertThat(mailboxPath.isInbox()).isTrue();


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