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/04/29 01:14:41 UTC

[james-project] 07/27: JAMES-3143 Exposes task in MessageRoutes

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 6ceec974c780faa1895da90c47ac9bd94e90bb15
Author: LanKhuat <kh...@gmail.com>
AuthorDate: Wed Apr 22 11:03:14 2020 +0700

    JAMES-3143 Exposes task in MessageRoutes
---
 .../james/modules/server/MessagesRoutesModule.java |  5 ++-
 .../james/webadmin/routes/MessagesRoutes.java      | 38 +++++++++++++++++++++-
 .../james/webadmin/routes/MessageRoutesTest.java   |  4 ++-
 3 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MessagesRoutesModule.java b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MessagesRoutesModule.java
index df23a93..5e0ec7a 100644
--- a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MessagesRoutesModule.java
+++ b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MessagesRoutesModule.java
@@ -19,11 +19,14 @@
 
 package org.apache.james.modules.server;
 
+import static org.apache.james.webadmin.tasks.TaskFromRequestRegistry.TaskRegistration;
+
 import org.apache.james.webadmin.Routes;
 import org.apache.james.webadmin.routes.MessagesRoutes;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.multibindings.Multibinder;
+import com.google.inject.name.Names;
 
 public class MessagesRoutesModule extends AbstractModule {
     @Override
@@ -31,6 +34,6 @@ public class MessagesRoutesModule extends AbstractModule {
         Multibinder<Routes> routesMultibinder = Multibinder.newSetBinder(binder(), Routes.class);
         routesMultibinder.addBinding().to(MessagesRoutes.class);
 
-
+        Multibinder.newSetBinder(binder(), TaskRegistration.class, Names.named(MessagesRoutes.ALL_MESSAGES_TASKS));
     }
 }
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MessagesRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MessagesRoutes.java
index 45d235f..da42211 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MessagesRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MessagesRoutes.java
@@ -21,7 +21,11 @@ package org.apache.james.webadmin.routes;
 
 import static org.apache.james.webadmin.routes.MailboxesRoutes.TASK_PARAMETER;
 
+import java.util.Optional;
+import java.util.Set;
+
 import javax.inject.Inject;
+import javax.inject.Named;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
@@ -58,13 +62,18 @@ public class MessagesRoutes implements Routes {
     private final MessageId.Factory messageIdFactory;
     private final MessageIdReIndexer reIndexer;
     private final JsonTransformer jsonTransformer;
+    private final Set<TaskFromRequestRegistry.TaskRegistration> allMessagesTaskRegistration;
+
+    public static final String ALL_MESSAGES_TASKS = "allMessagesTasks";
 
     @Inject
-    MessagesRoutes(TaskManager taskManager, MessageId.Factory messageIdFactory, MessageIdReIndexer reIndexer, JsonTransformer jsonTransformer) {
+    MessagesRoutes(TaskManager taskManager, MessageId.Factory messageIdFactory, MessageIdReIndexer reIndexer, JsonTransformer jsonTransformer,
+                   @Named(ALL_MESSAGES_TASKS) Set<TaskFromRequestRegistry.TaskRegistration> allMessagesTaskRegistration) {
         this.taskManager = taskManager;
         this.messageIdFactory = messageIdFactory;
         this.reIndexer = reIndexer;
         this.jsonTransformer = jsonTransformer;
+        this.allMessagesTaskRegistration = allMessagesTaskRegistration;
     }
 
     @Override
@@ -75,6 +84,8 @@ public class MessagesRoutes implements Routes {
     @Override
     public void define(Service service) {
         service.post(MESSAGE_PATH, reIndexMessage(), jsonTransformer);
+        allMessagesOperations()
+            .ifPresent(route -> service.post(BASE_PATH, route, jsonTransformer));
     }
 
     @POST
@@ -121,4 +132,29 @@ public class MessagesRoutes implements Routes {
                 .haltError();
         }
     }
+
+    @POST
+    @Path("/")
+    @ApiOperation(value = "Operation on messages")
+    @ApiImplicitParams({
+        @ApiImplicitParam(
+            required = true,
+            name = "task",
+            paramType = "query parameter",
+            dataType = "String",
+            defaultValue = "none",
+            example = "?task=SolveInconsistencies",
+            value = "Compulsory. Depends on the tasks handled by the product")
+    })
+    @ApiResponses(value = {
+        @ApiResponse(code = HttpStatus.CREATED_201, message = "Task is created", 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 - details in the returned error message")
+    })
+    private Optional<Route> allMessagesOperations() {
+        return TaskFromRequestRegistry.builder()
+            .parameterName(TASK_PARAMETER)
+            .registrations(allMessagesTaskRegistration)
+            .buildAsRouteOptional(taskManager);
+    }
 }
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java
index 63c1a0a..02be730 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java
@@ -55,6 +55,7 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
+import org.testcontainers.shaded.com.google.common.collect.ImmutableSet;
 
 import io.restassured.RestAssured;
 
@@ -83,7 +84,8 @@ class MessageRoutesTest {
                 new MessagesRoutes(taskManager,
                     new InMemoryMessageId.Factory(),
                     new MessageIdReIndexerImpl(reIndexerPerformer),
-                    jsonTransformer))
+                    jsonTransformer,
+                    ImmutableSet.of()))
             .start();
 
         RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminServer).build();


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