You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2024/10/30 03:41:45 UTC

(james-project) 09/37: JAMES-2182 PathConverter: Add the reverse transformation MailboxPath -> mailboxname

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

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

commit b6a9452a6467f4235412b6fea088ee2a990a521a
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Wed Oct 9 11:30:03 2024 +0200

    JAMES-2182 PathConverter: Add the reverse transformation MailboxPath -> mailboxname
    
     - Centralize in one place the knowledge of encoding MailboxPath
     into IMAP
---
 .../org/apache/james/imap/main/PathConverter.java  | 33 ++++++++++++++++++++++
 .../imap/processor/AbstractMailboxProcessor.java   | 29 -------------------
 .../apache/james/imap/processor/ListProcessor.java |  6 ++--
 3 files changed, 36 insertions(+), 32 deletions(-)

diff --git a/protocols/imap/src/main/java/org/apache/james/imap/main/PathConverter.java b/protocols/imap/src/main/java/org/apache/james/imap/main/PathConverter.java
index 4e7828b62c..042c4b2ae1 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/main/PathConverter.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/main/PathConverter.java
@@ -108,7 +108,40 @@ public interface PathConverter {
             }
             return mailboxName;
         }
+
+        /**
+         * Joins the elements of a mailboxPath together and returns them as a string
+         */
+        private String joinMailboxPath(MailboxPath mailboxPath, char delimiter) {
+            StringBuilder sb = new StringBuilder();
+            if (mailboxPath.getNamespace() != null && !mailboxPath.getNamespace().equals("")) {
+                sb.append(mailboxPath.getNamespace());
+            }
+            if (mailboxPath.getUser() != null && !mailboxPath.getUser().equals("")) {
+                if (sb.length() > 0) {
+                    sb.append(delimiter);
+                }
+                sb.append(mailboxPath.getUser().asString());
+            }
+            if (mailboxPath.getName() != null && !mailboxPath.getName().equals("")) {
+                if (sb.length() > 0) {
+                    sb.append(delimiter);
+                }
+                sb.append(mailboxPath.getName());
+            }
+            return sb.toString();
+        }
+
+        public String mailboxName(boolean relative, MailboxPath path, char delimiter) {
+            if (relative) {
+                return path.getName();
+            } else {
+                return joinMailboxPath(path, delimiter);
+            }
+        }
     }
 
     MailboxPath buildFullPath(String mailboxName);
+
+    String mailboxName(boolean relative, MailboxPath path, char delimiter);
 }
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
index 42278c4645..439444f15c 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
@@ -363,36 +363,7 @@ public abstract class AbstractMailboxProcessor<R extends ImapRequest> extends Ab
             .then();
     }
 
-    /**
-     * Joins the elements of a mailboxPath together and returns them as a string
-     */
-    private String joinMailboxPath(MailboxPath mailboxPath, char delimiter) {
-        StringBuilder sb = new StringBuilder();
-        if (mailboxPath.getNamespace() != null && !mailboxPath.getNamespace().equals("")) {
-            sb.append(mailboxPath.getNamespace());
-        }
-        if (mailboxPath.getUser() != null && !mailboxPath.getUser().equals("")) {
-            if (sb.length() > 0) {
-                sb.append(delimiter);
-            }
-            sb.append(mailboxPath.getUser().asString());
-        }
-        if (mailboxPath.getName() != null && !mailboxPath.getName().equals("")) {
-            if (sb.length() > 0) {
-                sb.append(delimiter);
-            }
-            sb.append(mailboxPath.getName());
-        }
-        return sb.toString();
-    }
 
-    protected String mailboxName(boolean relative, MailboxPath path, char delimiter) {
-        if (relative) {
-            return path.getName();
-        } else {
-            return joinMailboxPath(path, delimiter);
-        }
-    }
 
     protected MailboxManager getMailboxManager() {
         return mailboxManager;
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 bc2e347ad8..8657d8c494 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
@@ -224,7 +224,7 @@ public class ListProcessor<T extends ListRequest> extends AbstractMailboxProcess
                     responder.respond(
                         createResponse(metaData.inferiors(),
                             metaData.getSelectability(),
-                            mailboxName(isRelative, metaData.getPath(), metaData.getHierarchyDelimiter()),
+                            pathConverterFactory.forSession(session).mailboxName(isRelative, metaData.getPath(), metaData.getHierarchyDelimiter()),
                             metaData.getHierarchyDelimiter(),
                             mailboxType,
                             isSubscribed.test(metaData.getPath())));
@@ -287,7 +287,7 @@ public class ListProcessor<T extends ListRequest> extends AbstractMailboxProcess
             .map(mailboxMetaData -> ListResponse.builder()
                 .returnSubscribed(RETURN_SUBSCRIBED)
                 .forMetaData(mailboxMetaData)
-                .name(mailboxName(relative, subscribed, mailboxMetaData.getHierarchyDelimiter()))
+                .name(pathConverterFactory.forSession(session).mailboxName(relative, subscribed, mailboxMetaData.getHierarchyDelimiter()))
                 .returnNonExistent(!RETURN_NON_EXISTENT)
                 .mailboxType(getMailboxType(listRequest, session, mailboxMetaData.getPath())))
             .orElseGet(() -> ListResponse.builder().nonExitingSubscribedMailbox(subscribed))
@@ -311,7 +311,7 @@ public class ListProcessor<T extends ListRequest> extends AbstractMailboxProcess
                 MailboxMetaData metaData = pair.getValue();
                 ListResponse listResponse = ListResponse.builder()
                     .forMetaData(metaData)
-                    .name(mailboxName(relative, metaData.getPath(), metaData.getHierarchyDelimiter()))
+                    .name(pathConverterFactory.forSession(session).mailboxName(relative, metaData.getPath(), metaData.getHierarchyDelimiter()))
                     .childInfos(ListResponse.ChildInfo.SUBSCRIBED)
                     .returnSubscribed(allSubscribedSearch.contains(pair.getKey()))
                     .mailboxType(getMailboxType(listRequest, session, metaData.getPath()))


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