JAMES-2293 Use DELETE rather than patch for clearing mail repository
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e30179fa Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e30179fa Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e30179fa Branch: refs/heads/master Commit: e30179fabc53e27b4e95ed6fada5a68c683d51ef Parents: e727433 Author: benwa <[email protected]> Authored: Wed Jan 24 15:14:02 2018 +0700 Committer: benwa <[email protected]> Committed: Thu Jan 25 11:39:29 2018 +0700 ---------------------------------------------------------------------- .../webadmin/routes/MailRepositoriesRoutes.java | 32 ++---------------- .../routes/MailRepositoriesRoutesTest.java | 34 +++----------------- 2 files changed, 6 insertions(+), 60 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/e30179fa/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java ---------------------------------------------------------------------- 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 5879de7..1078206 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 @@ -55,7 +55,6 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; -import io.swagger.jaxrs.PATCH; import spark.Request; import spark.Service; @@ -246,27 +245,18 @@ public class MailRepositoriesRoutes implements Routes { }); } - @PATCH + @DELETE @Path("/{encodedUrl}/mails") @ApiOperation(value = "Deleting all mails in that mailRepository") - @ApiImplicitParams({ - @ApiImplicitParam( - required = true, - paramType = "query parameter", - dataType = "String", - example = "?action=clear", - value = "Specify the action. Only clear is supported. clear removes all mails from that mail repository.") - }) @ApiResponses(value = { @ApiResponse(code = HttpStatus.CREATED_201, message = "All mails are deleted", response = TaskIdDto.class), @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "Internal server error - Something went bad on the server side."), @ApiResponse(code = HttpStatus.BAD_REQUEST_400, message = "Bad request - unknown action") }) public void defineDeleteAll() { - service.patch(MAIL_REPOSITORIES + "/:encodedUrl/mails", (request, response) -> { + service.delete(MAIL_REPOSITORIES + "/:encodedUrl/mails", (request, response) -> { String url = URLDecoder.decode(request.params("encodedUrl"), StandardCharsets.UTF_8.displayName()); try { - ensureSpecifiedClearAction(request); Task task = repositoryStoreService.createClearMailRepositoryTask(url); TaskId taskId = taskManager.submit(task); return TaskIdDto.respond(response, taskId); @@ -281,24 +271,6 @@ public class MailRepositoriesRoutes implements Routes { }, jsonTransformer); } - private void ensureSpecifiedClearAction(Request request) { - String action = request.queryParams("action"); - if (Strings.isNullOrEmpty(action)) { - throw ErrorResponder.builder() - .statusCode(HttpStatus.BAD_REQUEST_400) - .type(ErrorResponder.ErrorType.INVALID_ARGUMENT) - .message("You need to specify an action. Currently only clear is supported.") - .haltError(); - } - if (!action.equals("clear")) { - throw ErrorResponder.builder() - .statusCode(HttpStatus.BAD_REQUEST_400) - .type(ErrorResponder.ErrorType.INVALID_ARGUMENT) - .message("Unknown action " + action) - .haltError(); - } - } - private Optional<Integer> assertPositiveInteger(Request request, String parameterName) { try { return Optional.ofNullable(request.queryParams(parameterName)) http://git-wip-us.apache.org/repos/asf/james-project/blob/e30179fa/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java index 14a6b8a..cbad2b4 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java @@ -482,7 +482,7 @@ public class MailRepositoriesRoutesTest { when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); when() - .patch(URL_ESCAPED_MY_REPO + "/mails?action=clear") + .delete(URL_ESCAPED_MY_REPO + "/mails") .then() .statusCode(HttpStatus.CREATED_201) .header("Location", is(notNullValue())) @@ -490,32 +490,6 @@ public class MailRepositoriesRoutesTest { } @Test - public void patchShouldOnlySupportClear() throws Exception { - when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); - - when() - .patch(URL_ESCAPED_MY_REPO + "/mails?action=invalid") - .then() - .statusCode(HttpStatus.BAD_REQUEST_400) - .body("statusCode", is(400)) - .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType())) - .body("message", is("Unknown action invalid")); - } - - @Test - public void patchShouldRequireAnAction() throws Exception { - when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); - - when() - .patch(URL_ESCAPED_MY_REPO + "/mails") - .then() - .statusCode(HttpStatus.BAD_REQUEST_400) - .body("statusCode", is(400)) - .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType())) - .body("message", is("You need to specify an action. Currently only clear is supported.")); - } - - @Test public void clearTaskShouldHaveDetails() throws Exception { when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); @@ -529,7 +503,7 @@ public class MailRepositoriesRoutesTest { .build()); String taskId = with() - .patch(URL_ESCAPED_MY_REPO + "/mails?action=clear") + .delete(URL_ESCAPED_MY_REPO + "/mails") .jsonPath() .get("taskId"); @@ -561,7 +535,7 @@ public class MailRepositoriesRoutesTest { .build()); String taskId = with() - .patch(URL_ESCAPED_MY_REPO + "/mails?action=clear") + .delete(URL_ESCAPED_MY_REPO + "/mails") .jsonPath() .get("taskId"); @@ -581,7 +555,7 @@ public class MailRepositoriesRoutesTest { when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.empty()); when() - .patch(URL_ESCAPED_MY_REPO + "/mails?action=clear") + .delete(URL_ESCAPED_MY_REPO + "/mails") .then() .statusCode(HttpStatus.NOT_FOUND_404) .body("statusCode", is(404)) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
