You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/01/07 07:33:57 UTC

[james-project] 03/16: [Refactoring] ErrorResponder::message formatting

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 07bd60df016c63e5fb79bcc8a74f8fd995b52f66
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jan 3 14:33:15 2020 +0700

    [Refactoring] ErrorResponder::message formatting
---
 .../org/apache/james/webadmin/WebAdminServer.java  |  2 +-
 .../james/webadmin/routes/HealthCheckRoutes.java   |  2 +-
 .../apache/james/webadmin/routes/TasksRoutes.java  |  2 +-
 .../james/webadmin/utils/ErrorResponder.java       |  5 +++
 .../james/webadmin/utils/ParametersExtractor.java  |  6 ++--
 .../james/webadmin/utils/ErrorResponderTest.java   | 36 ++++++++++++++--------
 .../james/webadmin/routes/DomainsRoutes.java       | 14 ++++-----
 .../james/webadmin/routes/MailAddressParser.java   |  3 +-
 .../james/webadmin/routes/SieveQuotaRoutes.java    |  4 +--
 .../vault/routes/DeletedMessagesVaultRoutes.java   |  4 +--
 .../webadmin/routes/EventDeadLettersRoutes.java    |  4 +--
 .../james/webadmin/routes/MailboxesRoutes.java     |  2 +-
 .../james/webadmin/routes/MailQueueRoutes.java     | 12 ++++----
 .../webadmin/routes/MailRepositoriesRoutes.java    | 12 ++++----
 .../service/MailRepositoryStoreService.java        |  2 +-
 15 files changed, 64 insertions(+), 46 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/WebAdminServer.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/WebAdminServer.java
index 92b28fc..1c9f00a 100644
--- a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/WebAdminServer.java
+++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/WebAdminServer.java
@@ -149,7 +149,7 @@ public class WebAdminServer implements Startable {
         service.notFound((req, res) -> ErrorResponder.builder()
             .statusCode(NOT_FOUND_404)
             .type(NOT_FOUND)
-            .message(String.format("%s %s can not be found", req.requestMethod(), req.pathInfo()))
+            .message("%s %s can not be found", req.requestMethod(), req.pathInfo())
             .asString());
 
         service.internalServerError((req, res) -> ErrorResponder.builder()
diff --git a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/HealthCheckRoutes.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/HealthCheckRoutes.java
index 45d9543..520a7a5 100644
--- a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/HealthCheckRoutes.java
+++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/HealthCheckRoutes.java
@@ -189,7 +189,7 @@ public class HealthCheckRoutes implements PublicRoutes {
     
     private HaltException throw404(String componentName) {
         return ErrorResponder.builder()
-            .message(String.format("Component with name %s cannot be found", componentName))
+            .message("Component with name %s cannot be found", componentName)
             .statusCode(HttpStatus.NOT_FOUND_404)
             .type(ErrorResponder.ErrorType.NOT_FOUND)
             .haltError();
diff --git a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java
index a01fc99..231388a 100644
--- a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java
+++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java
@@ -156,7 +156,7 @@ public class TasksRoutes implements Routes {
             return ExecutionDetailsDto.from(executionDetails);
         } catch (TaskNotFoundException e) {
             throw ErrorResponder.builder()
-                .message(String.format("%s can not be found", taskId.getValue()))
+                .message("%s can not be found", taskId.getValue())
                 .statusCode(HttpStatus.NOT_FOUND_404)
                 .type(ErrorResponder.ErrorType.NOT_FOUND)
                 .haltError();
diff --git a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/utils/ErrorResponder.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/utils/ErrorResponder.java
index e72cbec..72361e0 100644
--- a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/utils/ErrorResponder.java
+++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/utils/ErrorResponder.java
@@ -77,6 +77,11 @@ public class ErrorResponder {
         return this;
     }
 
+    public ErrorResponder message(String message, Object... args) {
+        this.message = String.format(message, args);
+        return this;
+    }
+
     public ErrorResponder message(String message) {
         this.message = message;
         return this;
diff --git a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/utils/ParametersExtractor.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/utils/ParametersExtractor.java
index 582f1d2..0cc0fc1 100644
--- a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/utils/ParametersExtractor.java
+++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/utils/ParametersExtractor.java
@@ -62,7 +62,7 @@ public class ParametersExtractor {
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
                 .cause(e)
-                .message("Can not parse " + parameterName)
+                .message("Can not parse %s", parameterName)
                 .haltError();
         }
     }
@@ -72,7 +72,7 @@ public class ParametersExtractor {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
-                .message(parameterName + " can not be negative")
+                .message("%s can not be negative", parameterName)
                 .haltError();
         }
         return value;
@@ -83,7 +83,7 @@ public class ParametersExtractor {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
-                .message(parameterName + " can not be equal to zero")
+                .message("%s can not be equal to zero", parameterName)
                 .haltError();
         }
         return value;
diff --git a/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/utils/ErrorResponderTest.java b/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/utils/ErrorResponderTest.java
index 53dc91d..0f80843 100644
--- a/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/utils/ErrorResponderTest.java
+++ b/server/protocols/webadmin/webadmin-core/src/test/java/org/apache/james/webadmin/utils/ErrorResponderTest.java
@@ -25,26 +25,25 @@ import java.util.Objects;
 import java.util.Optional;
 
 import org.eclipse.jetty.http.HttpStatus;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import com.jayway.jsonpath.DocumentContext;
 import com.jayway.jsonpath.JsonPath;
 
 import spark.HaltException;
 
-public class ErrorResponderTest {
-
-    public static final Optional<String> NO_CAUSE = Optional.empty();
+class ErrorResponderTest {
+    static final Optional<String> NO_CAUSE = Optional.empty();
 
     @Test
-    public void haltErrorShouldThrowWhenNoStatusCode() throws Exception {
+    void haltErrorShouldThrowWhenNoStatusCode() {
         assertThatThrownBy(() -> ErrorResponder.builder()
             .haltError())
             .isInstanceOf(NullPointerException.class);
     }
 
     @Test
-    public void haltErrorShouldThrowWhenNoType() throws Exception {
+    void haltErrorShouldThrowWhenNoType() {
         assertThatThrownBy(() -> ErrorResponder.builder()
             .statusCode(HttpStatus.BAD_REQUEST_400)
             .haltError())
@@ -52,7 +51,7 @@ public class ErrorResponderTest {
     }
 
     @Test
-    public void haltErrorShouldThrowWhenNoMessage() throws Exception {
+    void haltErrorShouldThrowWhenNoMessage() {
         assertThatThrownBy(() -> ErrorResponder.builder()
             .statusCode(HttpStatus.BAD_REQUEST_400)
             .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
@@ -61,7 +60,7 @@ public class ErrorResponderTest {
     }
 
     @Test
-    public void haltErrorShouldReturnBodyWithStatusCodeWhenSetting() throws Exception {
+    void haltErrorShouldReturnBodyWithStatusCodeWhenSetting() {
         assertThatThrownBy(() -> ErrorResponder.builder()
                 .statusCode(HttpStatus.NOT_FOUND_404)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
@@ -73,7 +72,7 @@ public class ErrorResponderTest {
     }
 
     @Test
-    public void haltErrorShouldReturnBodyWithErrorTypeWhenSetting() throws Exception {
+    void haltErrorShouldReturnBodyWithErrorTypeWhenSetting() {
         assertThatThrownBy(() -> ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorResponder.ErrorType.WRONG_STATE)
@@ -85,7 +84,7 @@ public class ErrorResponderTest {
     }
 
     @Test
-    public void haltErrorShouldReturnBodyWithErrorMessageWhenSetting() throws Exception {
+    void haltErrorShouldReturnBodyWithErrorMessageWhenSetting() {
         assertThatThrownBy(() -> ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
@@ -97,7 +96,7 @@ public class ErrorResponderTest {
     }
 
     @Test
-    public void haltErrorShouldReturnBodyWithCauseTypeWhenSetting() throws Exception {
+    void haltErrorShouldReturnBodyWithCauseTypeWhenSetting() {
         assertThatThrownBy(() -> ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
@@ -110,7 +109,7 @@ public class ErrorResponderTest {
     }
 
     @Test
-    public void haltErrorShouldReturnBodyWithErrorDetail() throws Exception {
+    void haltErrorShouldReturnBodyWithErrorDetail() {
         assertThatThrownBy(() -> ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
@@ -122,6 +121,19 @@ public class ErrorResponderTest {
             .matches(e -> bodyHasErrorDetail(e, new ErrorResponder.ErrorDetail(HttpStatus.BAD_REQUEST_400, "InvalidArgument", "Error", Optional.of("The input data is invalid"))));
     }
 
+    @Test
+    void haltShouldFormatMessage() {
+        assertThatThrownBy(() -> ErrorResponder.builder()
+                .statusCode(HttpStatus.BAD_REQUEST_400)
+                .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
+                .message("Error %s", "bip")
+                .cause(new IllegalArgumentException("The input data is invalid"))
+            .haltError())
+            .isInstanceOf(HaltException.class)
+            .matches(e -> hasStatus(e, HttpStatus.BAD_REQUEST_400))
+            .matches(e -> bodyHasErrorDetail(e, new ErrorResponder.ErrorDetail(HttpStatus.BAD_REQUEST_400, "InvalidArgument", "Error bip", Optional.of("The input data is invalid"))));
+    }
+
     private boolean hasStatus(Throwable throwable, int status) {
         HaltException haltException = (HaltException) throwable;
         return Objects.equals(haltException.statusCode(), status);
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java
index ac41c8e..bb8ef4c 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java
@@ -252,7 +252,7 @@ public class DomainsRoutes implements Routes {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.NO_CONTENT_204)
                 .type(ErrorType.INVALID_ARGUMENT)
-                .message(domain.name() + " already exists")
+                .message("%s already exists", domain.name())
                 .cause(e)
                 .haltError();
         } catch (IllegalArgumentException e) {
@@ -260,7 +260,7 @@ public class DomainsRoutes implements Routes {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorType.INVALID_ARGUMENT)
-                .message("Invalid request for domain creation " + domain.name())
+                .message("Invalid request for domain creation %s", domain.name())
                 .cause(e)
                 .haltError();
         }
@@ -274,7 +274,7 @@ public class DomainsRoutes implements Routes {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorType.INVALID_ARGUMENT)
-                .message("Invalid request for domain creation " + urlDecodedDomainName)
+                .message("Invalid request for domain creation %s", urlDecodedDomainName)
                 .cause(e)
                 .haltError();
         }
@@ -287,7 +287,7 @@ public class DomainsRoutes implements Routes {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorType.INVALID_ARGUMENT)
-                .message("Invalid request for domain creation " + domainName + " unable to url decode some characters")
+                .message("Invalid request for domain creation %s unable to url decode some characters", domainName)
                 .cause(e)
                 .haltError();
         }
@@ -345,7 +345,7 @@ public class DomainsRoutes implements Routes {
         return ErrorResponder.builder()
             .statusCode(HttpStatus.NOT_FOUND_404)
             .type(ErrorType.INVALID_ARGUMENT)
-            .message("The domain list does not contain: " + domain.name())
+            .message("The domain list does not contain: %s", domain.name())
             .haltError();
     }
 
@@ -353,7 +353,7 @@ public class DomainsRoutes implements Routes {
         return ErrorResponder.builder()
             .statusCode(HttpStatus.NOT_FOUND_404)
             .type(ErrorType.INVALID_ARGUMENT)
-            .message("The following domain is not in the domain list and has no registered local aliases: " + domain.name())
+            .message("The following domain is not in the domain list and has no registered local aliases: %s", domain.name())
             .haltError();
     }
 
@@ -361,7 +361,7 @@ public class DomainsRoutes implements Routes {
         return ErrorResponder.builder()
             .statusCode(HttpStatus.BAD_REQUEST_400)
             .type(ErrorType.INVALID_ARGUMENT)
-            .message("Source domain and destination domain can not have same value(" + sameDomain.name() + ")")
+            .message("Source domain and destination domain can not have same value(%s)", sameDomain.name())
             .haltError();
     }
 }
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/MailAddressParser.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/MailAddressParser.java
index ff363a0..f138ebd 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/MailAddressParser.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/MailAddressParser.java
@@ -22,6 +22,7 @@ package org.apache.james.webadmin.routes;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.nio.charset.StandardCharsets;
+
 import javax.mail.internet.AddressException;
 
 import org.apache.james.core.MailAddress;
@@ -43,7 +44,7 @@ class MailAddressParser {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
-                .message("The " + addressType + " is not an email address")
+                .message("The %s is not an email address", addressType)
                 .cause(e)
                 .haltError();
         } catch (UnsupportedEncodingException e) {
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/SieveQuotaRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/SieveQuotaRoutes.java
index fbbb40d..6009c7e 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/SieveQuotaRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/SieveQuotaRoutes.java
@@ -230,7 +230,7 @@ public class SieveQuotaRoutes implements Routes {
             throw ErrorResponder.builder()
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
                 .statusCode(HttpStatus.BAD_REQUEST_400)
-                .message(String.format("unrecognized integer number '%s'", body))
+                .message("unrecognized integer number '%s'", body)
                 .haltError();
         }
     }
@@ -241,7 +241,7 @@ public class SieveQuotaRoutes implements Routes {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.NOT_FOUND_404)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
-                .message("User " + username + " does not exist")
+                .message("User %s does not exist", username)
                 .haltError();
         }
         return username;
diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutes.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutes.java
index e7c33a5..3a076b7 100644
--- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutes.java
@@ -240,7 +240,7 @@ public class DeletedMessagesVaultRoutes implements Routes {
                 throw ErrorResponder.builder()
                     .statusCode(HttpStatus.NOT_FOUND_404)
                     .type(ErrorResponder.ErrorType.NOT_FOUND)
-                    .message("User '" + username.asString() + "' does not exist in the system")
+                    .message("User '%s' does not exist in the system", username.asString())
                     .haltError();
             }
         } catch (UsersRepositoryException e) {
@@ -311,7 +311,7 @@ public class DeletedMessagesVaultRoutes implements Routes {
         } catch (Exception e) {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
-                .message("Can not deserialize the supplied messageId: " + messageIdAsString)
+                .message("Can not deserialize the supplied messageId: %s", messageIdAsString)
                 .cause(e)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
                 .haltError();
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
index 601db57..04ea5f9 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
@@ -303,7 +303,7 @@ public class EventDeadLettersRoutes implements Routes {
         } catch (Group.GroupDeserializationException e) {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
-                .message("Can not deserialize the supplied group: " + groupAsString)
+                .message("Can not deserialize the supplied group: %s", groupAsString)
                 .cause(e)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
                 .haltError();
@@ -317,7 +317,7 @@ public class EventDeadLettersRoutes implements Routes {
         } catch (Exception e) {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
-                .message("Can not deserialize the supplied insertionId: " + insertionIdAsString)
+                .message("Can not deserialize the supplied insertionId: %s", insertionIdAsString)
                 .cause(e)
                 .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
                 .haltError();
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MailboxesRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MailboxesRoutes.java
index a26450e..72ad721 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MailboxesRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MailboxesRoutes.java
@@ -121,7 +121,7 @@ public class MailboxesRoutes implements Routes {
                 throw ErrorResponder.builder()
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
-                    .message("TaskId " + taskId.asString() + " does not exist")
+                    .message("TaskId %s does not exist", taskId.asString())
                     .cause(e)
                     .haltError();
             }
diff --git a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/routes/MailQueueRoutes.java b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/routes/MailQueueRoutes.java
index 335cd04..c2f6064 100644
--- a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/routes/MailQueueRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/routes/MailQueueRoutes.java
@@ -166,7 +166,7 @@ public class MailQueueRoutes implements Routes {
         return mailQueueFactory.getQueue(mailQueueName).map(this::toDTO)
             .orElseThrow(
                 () -> ErrorResponder.builder()
-                    .message(String.format("%s can not be found", mailQueueName))
+                    .message("%s can not be found", mailQueueName)
                     .statusCode(HttpStatus.NOT_FOUND_404)
                     .type(ErrorResponder.ErrorType.NOT_FOUND)
                     .haltError());
@@ -179,7 +179,7 @@ public class MailQueueRoutes implements Routes {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorType.INVALID_ARGUMENT)
-                .message("Invalid request for getting the mail queue " + queue)
+                .message("Invalid request for getting the mail queue %s", queue)
                 .cause(e)
                 .haltError();
         }
@@ -226,7 +226,7 @@ public class MailQueueRoutes implements Routes {
                 .map(name -> listMails(name, isDelayed(request.queryParams(DELAYED_QUERY_PARAM)), ParametersExtractor.extractLimit(request)))
                 .orElseThrow(
                     () -> ErrorResponder.builder()
-                        .message(String.format("%s can not be found", mailQueueName))
+                        .message("%s can not be found", mailQueueName)
                         .statusCode(HttpStatus.NOT_FOUND_404)
                         .type(ErrorResponder.ErrorType.NOT_FOUND)
                         .haltError());
@@ -247,7 +247,7 @@ public class MailQueueRoutes implements Routes {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorType.INVALID_ARGUMENT)
-                .message("Invalid request for listing the mails from the mail queue " + queue)
+                .message("Invalid request for listing the mails from the mail queue %s", queue)
                 .cause(e)
                 .haltError();
         }
@@ -311,7 +311,7 @@ public class MailQueueRoutes implements Routes {
                     recipient(request.queryParams(RECIPIENT_QUERY_PARAM))))
             .orElseThrow(
                 () -> ErrorResponder.builder()
-                    .message(String.format("%s can not be found", mailQueueName))
+                    .message("%s can not be found", mailQueueName)
                     .statusCode(HttpStatus.NOT_FOUND_404)
                     .type(ErrorResponder.ErrorType.NOT_FOUND)
                     .haltError());
@@ -394,7 +394,7 @@ public class MailQueueRoutes implements Routes {
         String mailQueueName = request.params(MAIL_QUEUE_NAME);
         return mailQueueFactory.getQueue(mailQueueName)
             .orElseThrow(() -> ErrorResponder.builder()
-                .message(String.format("%s can not be found", mailQueueName))
+                .message("%s can not be found", mailQueueName)
                 .statusCode(HttpStatus.NOT_FOUND_404)
                 .type(ErrorType.NOT_FOUND)
                 .haltError());
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 f200a1d..6a070a8 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
@@ -160,14 +160,14 @@ public class MailRepositoriesRoutes implements Routes {
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .type(ErrorType.INVALID_ARGUMENT)
                     .cause(e)
-                    .message(String.format("'%s' is an unsupported protocol", protocol))
+                    .message("'%s' is an unsupported protocol", protocol)
                     .haltError();
             } catch (MailRepositoryStore.MailRepositoryStoreException e) {
                 throw ErrorResponder.builder()
                     .statusCode(HttpStatus.INTERNAL_SERVER_ERROR_500)
                     .type(ErrorResponder.ErrorType.SERVER_ERROR)
                     .cause(e)
-                    .message(String.format("Error while creating a mail repository with path '%s' and protocol '%s'", path.asString(), protocol))
+                    .message("Error while creating a mail repository with path '%s' and protocol '%s'", path.asString(), protocol)
                     .haltError();
             }
         }, jsonTransformer);
@@ -295,7 +295,7 @@ public class MailRepositoriesRoutes implements Routes {
             .statusCode(HttpStatus.INTERNAL_SERVER_ERROR_500)
             .type(ErrorType.SERVER_ERROR)
             .cause(e)
-            .message("The field '" + e.getField().getName() + "' requested in additionalFields parameter can't be accessed")
+            .message("The field '%s' requested in additionalFields parameter can't be accessed", e.getField().getName())
             .haltError();
     }
 
@@ -304,7 +304,7 @@ public class MailRepositoriesRoutes implements Routes {
             .statusCode(HttpStatus.BAD_REQUEST_400)
             .type(ErrorType.INVALID_ARGUMENT)
             .cause(e)
-            .message("The field '" + e.getMessage() + "' can't be requested in additionalFields parameter")
+            .message("The field '%s' can't be requested in additionalFields parameter", e.getMessage())
             .haltError();
     }
 
@@ -312,7 +312,7 @@ public class MailRepositoriesRoutes implements Routes {
         return () -> ErrorResponder.builder()
             .statusCode(HttpStatus.NOT_FOUND_404)
             .type(ErrorResponder.ErrorType.NOT_FOUND)
-            .message("Could not retrieve " + mailKey.asString())
+            .message("Could not retrieve %s", mailKey.asString())
             .haltError();
     }
 
@@ -320,7 +320,7 @@ public class MailRepositoriesRoutes implements Routes {
         return ErrorResponder.builder()
             .statusCode(HttpStatus.NOT_FOUND_404)
             .type(ErrorType.NOT_FOUND)
-            .message("The repository '" + encodedPath + "' (decoded value: '" + path.asString() + "') does not exist")
+            .message("The repository '%s' (decoded value: '%s') does not exist", encodedPath, path.asString())
             .haltError();
     }
 
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java
index 987b443..b9fc716 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java
@@ -112,7 +112,7 @@ public class MailRepositoryStoreService {
             ErrorResponder.builder()
                 .statusCode(HttpStatus.NOT_FOUND_404)
                 .type(ErrorResponder.ErrorType.NOT_FOUND)
-                .message(path.asString() + " does not exist")
+                .message("%s does not exist", path.asString())
                 .haltError();
         }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org