You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2023/08/26 05:51:37 UTC
[james-project] 02/07: JAMES-3936 MailRepositoriesRoutes should not decode request param 2 times
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 <hq...@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-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org