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