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]

Reply via email to