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 <btell...@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-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to