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