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 7df0dd016876c4807705076c90494b8473f09b6d Author: Quan Tran <hqt...@linagora.com> AuthorDate: Wed Aug 23 16:11:30 2023 +0700 JAMES-3936 MailRepositoriesRoutes should not decode request param 2 times Besides, MailRepositoryPath.fromEncoded is being used by some Task DTOs - good to keep there. --- .../webadmin/routes/MailRepositoriesRoutes.java | 27 +++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java index 2b1c6b2f8f..407408aaf8 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java @@ -21,7 +21,6 @@ package org.apache.james.webadmin.routes; import java.io.IOException; import java.io.OutputStream; -import java.io.UnsupportedEncodingException; import java.time.Clock; import java.util.Optional; import java.util.Set; @@ -119,7 +118,7 @@ public class MailRepositoriesRoutes implements Routes { public void definePutMailRepository() { service.put(MAIL_REPOSITORIES + "/:encodedPath", (request, response) -> { - MailRepositoryPath path = decodedRepositoryPath(request); + MailRepositoryPath path = getRepositoryPath(request); String protocol = request.queryParams("protocol"); try { repositoryStoreService.createMailRepository(path, protocol); @@ -146,7 +145,7 @@ public class MailRepositoriesRoutes implements Routes { service.get(MAIL_REPOSITORIES + "/:encodedPath/mails", (request, response) -> { Offset offset = ParametersExtractor.extractOffset(request); Limit limit = ParametersExtractor.extractLimit(request); - MailRepositoryPath path = decodedRepositoryPath(request); + MailRepositoryPath path = getRepositoryPath(request); try { return repositoryStoreService.listMails(path, offset, limit) .orElseThrow(() -> repositoryNotFound(request.params("encodedPath"), path)); @@ -171,13 +170,13 @@ public class MailRepositoriesRoutes implements Routes { public void defineGetMail() { service.get(MAIL_REPOSITORIES + "/:encodedPath/mails/:mailKey", Constants.JSON_CONTENT_TYPE, (request, response) -> - getMailAsJson(decodedRepositoryPath(request), new MailKey(request.params("mailKey")), request), + getMailAsJson(getRepositoryPath(request), new MailKey(request.params("mailKey")), request), jsonTransformer); service.get(MAIL_REPOSITORIES + "/:encodedPath/mails/:mailKey", Constants.RFC822_CONTENT_TYPE, (request, response) -> writeMimeMessage( getMailAsMimeMessage( - decodedRepositoryPath(request), + getRepositoryPath(request), new MailKey(request.params("mailKey"))), response.raw())); } @@ -262,7 +261,7 @@ public class MailRepositoriesRoutes implements Routes { public void defineGetMailRepository() { service.get(MAIL_REPOSITORIES + "/:encodedPath", (request, response) -> { - MailRepositoryPath path = decodedRepositoryPath(request); + MailRepositoryPath path = getRepositoryPath(request); try { long size = repositoryStoreService.size(path) .orElseThrow(() -> repositoryNotFound(request.params("encodedPath"), path)); @@ -280,7 +279,7 @@ public class MailRepositoriesRoutes implements Routes { public void defineDeleteMail() { service.delete(MAIL_REPOSITORIES + "/:encodedPath/mails/:mailKey", (request, response) -> { - MailRepositoryPath path = decodedRepositoryPath(request); + MailRepositoryPath path = getRepositoryPath(request); MailKey mailKey = new MailKey(request.params("mailKey")); try { repositoryStoreService.deleteMail(path, mailKey); @@ -298,7 +297,7 @@ public class MailRepositoriesRoutes implements Routes { public void defineDeleteAll() { TaskFromRequest taskFromRequest = request -> { - MailRepositoryPath path = decodedRepositoryPath(request); + MailRepositoryPath path = getRepositoryPath(request); try { return repositoryStoreService.createClearMailRepositoryTask(path); } catch (MailRepositoryStore.MailRepositoryStoreException | MessagingException e) { @@ -320,8 +319,8 @@ public class MailRepositoriesRoutes implements Routes { jsonTransformer); } - private Task reprocessAll(Request request) throws UnsupportedEncodingException, MailRepositoryStore.MailRepositoryStoreException { - MailRepositoryPath path = decodedRepositoryPath(request); + private Task reprocessAll(Request request) throws MailRepositoryStore.MailRepositoryStoreException { + MailRepositoryPath path = getRepositoryPath(request); Long repositorySize = repositoryStoreService.size(path).orElse(0L); return new ReprocessingAllMailsTask(reprocessingService, repositorySize, path, extractConfiguration(request)); @@ -342,8 +341,8 @@ public class MailRepositoriesRoutes implements Routes { jsonTransformer); } - private Task reprocessOne(Request request) throws UnsupportedEncodingException { - MailRepositoryPath path = decodedRepositoryPath(request); + private Task reprocessOne(Request request) { + MailRepositoryPath path = getRepositoryPath(request); MailKey key = new MailKey(request.params("key")); return new ReprocessingOneMailTask(reprocessingService, path, extractConfiguration(request), key, Clock.systemUTC()); @@ -374,8 +373,8 @@ public class MailRepositoriesRoutes implements Routes { .orElse(MailQueueFactory.SPOOL); } - private MailRepositoryPath decodedRepositoryPath(Request request) throws UnsupportedEncodingException { - return MailRepositoryPath.fromEncoded(request.params("encodedPath")); + private MailRepositoryPath getRepositoryPath(Request request) { + return MailRepositoryPath.from(request.params("encodedPath")); } private Limit parseLimit(Request request) { --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org