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 <khuatdang...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org