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