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 c8ab2ff90046aa4bccee469d08fde59d1c66fc13 Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Mon Dec 16 14:06:03 2019 +0700 JAMES-2993 Guice bindings for JMAP preview re-computing --- pom.xml | 5 +++ server/container/guice/cassandra-guice/pom.xml | 4 ++ .../org/apache/james/CassandraJamesServerMain.java | 10 +++-- .../james/modules/TaskSerializationModule.java | 13 ++++++ server/container/guice/memory-guice/pom.xml | 4 ++ .../org/apache/james/MemoryJamesServerMain.java | 8 ++-- server/container/guice/pom.xml | 6 +++ .../guice/protocols/webadmin-jmap/pom.xml | 52 ++++++++++++++++++++++ .../james/modules/server/JmapTasksModule.java} | 10 +++-- .../modules/server/MailboxesRoutesModule.java | 4 ++ ...uteAllFastViewProjectionItemsRequestToTask.java | 7 ++- ...> RecomputeAllFastViewProjectionItemsTask.java} | 13 +++--- ...uteAllPreviewsTaskAdditionalInformationDTO.java | 8 ++-- ...llFastViewProjectionItemsRequestToTaskTest.java | 8 ++-- ...tionItemsTaskAdditionalInformationDTOTest.java} | 6 +-- ...tViewProjectionItemsTaskSerializationTest.java} | 8 ++-- .../james/webadmin/routes/MailboxesRoutes.java | 12 ++++- .../james/webadmin/routes/MailboxesRoutesTest.java | 6 ++- 18 files changed, 145 insertions(+), 39 deletions(-) diff --git a/pom.xml b/pom.xml index 1245413..bd6137e 100644 --- a/pom.xml +++ b/pom.xml @@ -1823,6 +1823,11 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>james-server-webadmin-jmap</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-webadmin-mailbox</artifactId> <version>${project.version}</version> </dependency> diff --git a/server/container/guice/cassandra-guice/pom.xml b/server/container/guice/cassandra-guice/pom.xml index 347c693..01219bb 100644 --- a/server/container/guice/cassandra-guice/pom.xml +++ b/server/container/guice/cassandra-guice/pom.xml @@ -232,6 +232,10 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>james-server-guice-webadmin-jmap</artifactId> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-guice-webadmin-mailbox</artifactId> </dependency> <dependency> diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java index 67bf8b5..f62e1bd 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java @@ -59,6 +59,7 @@ import org.apache.james.modules.server.DLPRoutesModule; import org.apache.james.modules.server.DataRoutesModules; import org.apache.james.modules.server.ElasticSearchMetricReporterModule; import org.apache.james.modules.server.JMXServerModule; +import org.apache.james.modules.server.JmapTasksModule; import org.apache.james.modules.server.MailQueueRoutesModule; import org.apache.james.modules.server.MailRepositoriesRoutesModule; import org.apache.james.modules.server.MailboxRoutesModule; @@ -86,15 +87,16 @@ public class CassandraJamesServerMain { new CassandraDataRoutesModules(), new DataRoutesModules(), new DeletedMessageVaultRoutesModule(), + new DLPRoutesModule(), + new JmapTasksModule(), + new MailboxesRoutesModule(), new MailboxRoutesModule(), new MailQueueRoutesModule(), new MailRepositoriesRoutesModule(), - new SwaggerRoutesModule(), - new WebAdminServerModule(), - new DLPRoutesModule(), new ReIndexingModule(), new SieveRoutesModule(), - new MailboxesRoutesModule(), + new SwaggerRoutesModule(), + new WebAdminServerModule(), new MessagesRoutesModule()); public static final Module PROTOCOLS = Modules.combine( diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/TaskSerializationModule.java b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/TaskSerializationModule.java index f75f0d8..6bf92c3 100644 --- a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/TaskSerializationModule.java +++ b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/TaskSerializationModule.java @@ -52,6 +52,9 @@ import org.apache.james.task.eventsourcing.distributed.TasksSerializationModule; import org.apache.james.vault.blob.BlobStoreVaultGarbageCollectionTask; import org.apache.james.vault.blob.BlobStoreVaultGarbageCollectionTaskAdditionalInformationDTO; import org.apache.james.vault.blob.BlobStoreVaultGarbageCollectionTaskDTO; +import org.apache.james.webadmin.data.jmap.MessageFastViewProjectionCorrector; +import org.apache.james.webadmin.data.jmap.RecomputeAllFastViewProjectionItemsTask; +import org.apache.james.webadmin.data.jmap.RecomputeAllPreviewsTaskAdditionalInformationDTO; import org.apache.james.webadmin.service.CassandraMappingsSolveInconsistenciesTask; import org.apache.james.webadmin.service.ClearMailQueueTaskAdditionalInformationDTO; import org.apache.james.webadmin.service.ClearMailQueueTaskDTO; @@ -174,6 +177,11 @@ public class TaskSerializationModule extends AbstractModule { } @ProvidesIntoSet + public TaskDTOModule<?, ?> recomputeAllJmapPreviewsTask(MessageFastViewProjectionCorrector corrector) { + return RecomputeAllFastViewProjectionItemsTask.module(corrector); + } + + @ProvidesIntoSet public TaskDTOModule<?, ?> clearMailRepositoryTask(ClearMailRepositoryTask.Factory factory) { return ClearMailRepositoryTaskDTO.module(factory); } @@ -368,6 +376,11 @@ public class TaskSerializationModule extends AbstractModule { return UserReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory); } + @ProvidesIntoSet + public AdditionalInformationDTOModule<?, ?> recomputeAllJmapPreviewsAdditionalInformation() { + return RecomputeAllPreviewsTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + @Named(EVENT_NESTED_TYPES_INJECTION_NAME) @Provides public Set<DTOModule<?, ?>> eventNestedTypes(Set<AdditionalInformationDTOModule<?, ?>> additionalInformationDTOModules, diff --git a/server/container/guice/memory-guice/pom.xml b/server/container/guice/memory-guice/pom.xml index 84d5c99..34e4b4a 100644 --- a/server/container/guice/memory-guice/pom.xml +++ b/server/container/guice/memory-guice/pom.xml @@ -148,6 +148,10 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>james-server-guice-webadmin-jmap</artifactId> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-guice-webadmin-mailbox</artifactId> </dependency> <dependency> diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java index 87c8d4c..489b055 100644 --- a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java +++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java @@ -42,6 +42,7 @@ import org.apache.james.modules.server.DKIMMailetModule; import org.apache.james.modules.server.DLPRoutesModule; import org.apache.james.modules.server.DataRoutesModules; import org.apache.james.modules.server.JMXServerModule; +import org.apache.james.modules.server.JmapTasksModule; import org.apache.james.modules.server.MailQueueRoutesModule; import org.apache.james.modules.server.MailRepositoriesRoutesModule; import org.apache.james.modules.server.MailboxRoutesModule; @@ -68,12 +69,13 @@ public class MemoryJamesServerMain { new WebAdminServerModule(), new DataRoutesModules(), new DeletedMessageVaultRoutesModule(), + new DLPRoutesModule(), + new JmapTasksModule(), new MailboxRoutesModule(), new MailQueueRoutesModule(), new MailRepositoriesRoutesModule(), - new SwaggerRoutesModule(), - new DLPRoutesModule(), - new SieveRoutesModule()); + new SieveRoutesModule(), + new SwaggerRoutesModule()); public static final JwtConfiguration NO_JWT_CONFIGURATION = new JwtConfiguration(Optional.empty()); diff --git a/server/container/guice/pom.xml b/server/container/guice/pom.xml index 0ac4ab6..9cefaf5 100644 --- a/server/container/guice/pom.xml +++ b/server/container/guice/pom.xml @@ -69,6 +69,7 @@ <module>protocols/webadmin-cassandra</module> <module>protocols/webadmin-cassandra-data</module> <module>protocols/webadmin-data</module> + <module>protocols/webadmin-jmap</module> <module>protocols/webadmin-mailbox</module> <module>protocols/webadmin-mailqueue</module> <module>protocols/webadmin-mailrepository</module> @@ -196,6 +197,11 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>james-server-guice-webadmin-jmap</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-guice-webadmin-mailbox</artifactId> <version>${project.version}</version> </dependency> diff --git a/server/container/guice/protocols/webadmin-jmap/pom.xml b/server/container/guice/protocols/webadmin-jmap/pom.xml new file mode 100644 index 0000000..39cc21a --- /dev/null +++ b/server/container/guice/protocols/webadmin-jmap/pom.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.james</groupId> + <artifactId>james-server-guice</artifactId> + <version>3.5.0-SNAPSHOT</version> + <relativePath>../../pom.xml</relativePath> + </parent> + + <artifactId>james-server-guice-webadmin-jmap</artifactId> + + <name>Apache James :: Server :: Guice :: Webadmin :: JMAP</name> + <description>Webadmin jmap modules for Guice implementation of James server</description> + + <dependencies> + <dependency> + <groupId>${james.groupId}</groupId> + <artifactId>james-server-webadmin-core</artifactId> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> + <artifactId>james-server-webadmin-mailbox</artifactId> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> + <artifactId>james-server-webadmin-jmap</artifactId> + </dependency> + <dependency> + <groupId>com.google.inject</groupId> + <artifactId>guice</artifactId> + </dependency> + </dependencies> +</project> diff --git a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesRoutesModule.java b/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/JmapTasksModule.java similarity index 75% copy from server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesRoutesModule.java copy to server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/JmapTasksModule.java index 9075f34..9db7450 100644 --- a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesRoutesModule.java +++ b/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/JmapTasksModule.java @@ -19,16 +19,18 @@ package org.apache.james.modules.server; -import org.apache.james.webadmin.Routes; +import org.apache.james.webadmin.data.jmap.RecomputeAllFastViewProjectionItemsRequestToTask; import org.apache.james.webadmin.routes.MailboxesRoutes; +import org.apache.james.webadmin.tasks.TaskFromRequestRegistry; import com.google.inject.AbstractModule; import com.google.inject.multibindings.Multibinder; +import com.google.inject.name.Names; -public class MailboxesRoutesModule extends AbstractModule { +public class JmapTasksModule extends AbstractModule { @Override protected void configure() { - Multibinder<Routes> routesMultibinder = Multibinder.newSetBinder(binder(), Routes.class); - routesMultibinder.addBinding().to(MailboxesRoutes.class); + Multibinder.newSetBinder(binder(), TaskFromRequestRegistry.TaskRegistration.class, Names.named(MailboxesRoutes.ALL_MAILBOXES_TASKS)) + .addBinding().to(RecomputeAllFastViewProjectionItemsRequestToTask.class); } } diff --git a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesRoutesModule.java b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesRoutesModule.java index 9075f34..a6d7e86 100644 --- a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesRoutesModule.java +++ b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesRoutesModule.java @@ -21,14 +21,18 @@ package org.apache.james.modules.server; import org.apache.james.webadmin.Routes; import org.apache.james.webadmin.routes.MailboxesRoutes; +import org.apache.james.webadmin.tasks.TaskFromRequestRegistry.TaskRegistration; import com.google.inject.AbstractModule; import com.google.inject.multibindings.Multibinder; +import com.google.inject.name.Names; public class MailboxesRoutesModule extends AbstractModule { @Override protected void configure() { Multibinder<Routes> routesMultibinder = Multibinder.newSetBinder(binder(), Routes.class); routesMultibinder.addBinding().to(MailboxesRoutes.class); + + Multibinder.newSetBinder(binder(), TaskRegistration.class, Names.named(MailboxesRoutes.ALL_MAILBOXES_TASKS)); } } diff --git a/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTask.java b/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTask.java index a5810e1..e8d8a23 100644 --- a/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTask.java +++ b/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTask.java @@ -19,11 +19,14 @@ package org.apache.james.webadmin.data.jmap; +import javax.inject.Inject; + import org.apache.james.webadmin.tasks.TaskFromRequestRegistry; public class RecomputeAllFastViewProjectionItemsRequestToTask extends TaskFromRequestRegistry.TaskRegistration { - public RecomputeAllFastViewProjectionItemsRequestToTask(MessageFastViewProjectionCorrector corrector) { + @Inject + RecomputeAllFastViewProjectionItemsRequestToTask(MessageFastViewProjectionCorrector corrector) { super(Constants.TASK_REGISTRATION_KEY, - request -> new RecomputeAllPreviewsTask(corrector)); + request -> new RecomputeAllFastViewProjectionItemsTask(corrector)); } } diff --git a/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTask.java b/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTask.java similarity index 88% rename from server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTask.java rename to server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTask.java index 99b5b8d..88f4a64 100644 --- a/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTask.java +++ b/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTask.java @@ -21,7 +21,6 @@ package org.apache.james.webadmin.data.jmap; import java.time.Clock; import java.time.Instant; -import java.util.Objects; import java.util.Optional; import org.apache.james.json.DTOModule; @@ -35,8 +34,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import reactor.core.scheduler.Schedulers; -public class RecomputeAllPreviewsTask implements Task { - static final TaskType TASK_TYPE = TaskType.of("RecomputeAllPreviewsTask"); +public class RecomputeAllFastViewProjectionItemsTask implements Task { + static final TaskType TASK_TYPE = TaskType.of("RecomputeAllFastViewProjectionItemsTask"); public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation { private static AdditionalInformation from(MessageFastViewProjectionCorrector.Progress progress) { @@ -97,11 +96,11 @@ public class RecomputeAllPreviewsTask implements Task { } } - public static TaskDTOModule<RecomputeAllPreviewsTask, RecomputeAllPreviousTaskDTO> module(MessageFastViewProjectionCorrector corrector) { + public static TaskDTOModule<RecomputeAllFastViewProjectionItemsTask, RecomputeAllPreviousTaskDTO> module(MessageFastViewProjectionCorrector corrector) { return DTOModule - .forDomainObject(RecomputeAllPreviewsTask.class) + .forDomainObject(RecomputeAllFastViewProjectionItemsTask.class) .convertToDTO(RecomputeAllPreviousTaskDTO.class) - .toDomainObjectConverter(dto -> new RecomputeAllPreviewsTask(corrector)) + .toDomainObjectConverter(dto -> new RecomputeAllFastViewProjectionItemsTask(corrector)) .toDTOConverter((task, type) -> new RecomputeAllPreviousTaskDTO(type)) .typeName(TASK_TYPE.asString()) .withFactory(TaskDTOModule::new); @@ -110,7 +109,7 @@ public class RecomputeAllPreviewsTask implements Task { private final MessageFastViewProjectionCorrector corrector; private final MessageFastViewProjectionCorrector.Progress progress; - RecomputeAllPreviewsTask(MessageFastViewProjectionCorrector corrector) { + RecomputeAllFastViewProjectionItemsTask(MessageFastViewProjectionCorrector corrector) { this.corrector = corrector; this.progress = new MessageFastViewProjectionCorrector.Progress(); } diff --git a/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTaskAdditionalInformationDTO.java b/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTaskAdditionalInformationDTO.java index aab6aa7..56478e6 100644 --- a/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTaskAdditionalInformationDTO.java +++ b/server/protocols/webadmin/webadmin-data-jmap/src/main/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTaskAdditionalInformationDTO.java @@ -29,10 +29,10 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.annotations.VisibleForTesting; public class RecomputeAllPreviewsTaskAdditionalInformationDTO implements AdditionalInformationDTO { - public static final AdditionalInformationDTOModule<RecomputeAllPreviewsTask.AdditionalInformation, RecomputeAllPreviewsTaskAdditionalInformationDTO> SERIALIZATION_MODULE = - DTOModule.forDomainObject(RecomputeAllPreviewsTask.AdditionalInformation.class) + public static final AdditionalInformationDTOModule<RecomputeAllFastViewProjectionItemsTask.AdditionalInformation, RecomputeAllPreviewsTaskAdditionalInformationDTO> SERIALIZATION_MODULE = + DTOModule.forDomainObject(RecomputeAllFastViewProjectionItemsTask.AdditionalInformation.class) .convertToDTO(RecomputeAllPreviewsTaskAdditionalInformationDTO.class) - .toDomainObjectConverter(dto -> new RecomputeAllPreviewsTask.AdditionalInformation( + .toDomainObjectConverter(dto -> new RecomputeAllFastViewProjectionItemsTask.AdditionalInformation( dto.getProcessedUserCount(), dto.getProcessedMessageCount(), dto.getFailedUserCount(), @@ -45,7 +45,7 @@ public class RecomputeAllPreviewsTaskAdditionalInformationDTO implements Additio details.getProcessedMessageCount(), details.getFailedUserCount(), details.getFailedMessageCount())) - .typeName(RecomputeAllPreviewsTask.TASK_TYPE.asString()) + .typeName(RecomputeAllFastViewProjectionItemsTask.TASK_TYPE.asString()) .withFactory(AdditionalInformationDTOModule::new); private final String type; diff --git a/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java b/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java index a351095..1013e63 100644 --- a/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java +++ b/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsRequestToTaskTest.java @@ -200,7 +200,7 @@ class RecomputeAllFastViewProjectionItemsRequestToTaskTest { .then() .body("status", is("completed")) .body("taskId", is(taskId)) - .body("type", is("RecomputeAllPreviewsTask")) + .body("type", is("RecomputeAllFastViewProjectionItemsTask")) .body("additionalInformation.processedUserCount", is(0)) .body("additionalInformation.processedMessageCount", is(0)) .body("additionalInformation.failedUserCount", is(0)) @@ -227,7 +227,7 @@ class RecomputeAllFastViewProjectionItemsRequestToTaskTest { .then() .body("status", is("completed")) .body("taskId", is(taskId)) - .body("type", is("RecomputeAllPreviewsTask")) + .body("type", is("RecomputeAllFastViewProjectionItemsTask")) .body("additionalInformation.processedUserCount", is(1)) .body("additionalInformation.processedMessageCount", is(0)) .body("additionalInformation.failedUserCount", is(0)) @@ -255,7 +255,7 @@ class RecomputeAllFastViewProjectionItemsRequestToTaskTest { .then() .body("status", is("completed")) .body("taskId", is(taskId)) - .body("type", is("RecomputeAllPreviewsTask")) + .body("type", is("RecomputeAllFastViewProjectionItemsTask")) .body("additionalInformation.processedUserCount", is(1)) .body("additionalInformation.processedMessageCount", is(0)) .body("additionalInformation.failedUserCount", is(0)) @@ -287,7 +287,7 @@ class RecomputeAllFastViewProjectionItemsRequestToTaskTest { .then() .body("status", is("completed")) .body("taskId", is(taskId)) - .body("type", is("RecomputeAllPreviewsTask")) + .body("type", is("RecomputeAllFastViewProjectionItemsTask")) .body("additionalInformation.processedUserCount", is(1)) .body("additionalInformation.processedMessageCount", is(1)) .body("additionalInformation.failedUserCount", is(0)) diff --git a/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTaskAdditionalInformationDTOTest.java b/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java similarity index 87% rename from server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTaskAdditionalInformationDTOTest.java rename to server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java index 5fad6d9..d1111bb 100644 --- a/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTaskAdditionalInformationDTOTest.java +++ b/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest.java @@ -25,11 +25,9 @@ import org.apache.james.JsonSerializationVerifier; import org.apache.james.util.ClassLoaderUtils; import org.junit.jupiter.api.Test; -import nl.jqno.equalsverifier.EqualsVerifier; - -class RecomputeAllPreviewsTaskAdditionalInformationDTOTest { +class RecomputeAllFastViewProjectionItemsTaskAdditionalInformationDTOTest { private static final Instant INSTANT = Instant.parse("2007-12-03T10:15:30.00Z"); - private static final RecomputeAllPreviewsTask.AdditionalInformation DOMAIN_OBJECT = new RecomputeAllPreviewsTask.AdditionalInformation(1, 2, 3, 4, INSTANT); + private static final RecomputeAllFastViewProjectionItemsTask.AdditionalInformation DOMAIN_OBJECT = new RecomputeAllFastViewProjectionItemsTask.AdditionalInformation(1, 2, 3, 4, INSTANT); @Test void shouldMatchJsonSerializationContract() throws Exception { diff --git a/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTaskSerializationTest.java b/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java similarity index 88% rename from server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTaskSerializationTest.java rename to server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java index 177a2b6..3d1b949 100644 --- a/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllPreviewsTaskSerializationTest.java +++ b/server/protocols/webadmin/webadmin-data-jmap/src/test/java/org/apache/james/webadmin/data/jmap/RecomputeAllFastViewProjectionItemsTaskSerializationTest.java @@ -26,9 +26,7 @@ import org.apache.james.util.ClassLoaderUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import nl.jqno.equalsverifier.EqualsVerifier; - -class RecomputeAllPreviewsTaskSerializationTest { +class RecomputeAllFastViewProjectionItemsTaskSerializationTest { MessageFastViewProjectionCorrector corrector; @BeforeEach @@ -38,8 +36,8 @@ class RecomputeAllPreviewsTaskSerializationTest { @Test void shouldMatchJsonSerializationContract() throws Exception { - JsonSerializationVerifier.dtoModule(RecomputeAllPreviewsTask.module(corrector)) - .bean(new RecomputeAllPreviewsTask(corrector)) + JsonSerializationVerifier.dtoModule(RecomputeAllFastViewProjectionItemsTask.module(corrector)) + .bean(new RecomputeAllFastViewProjectionItemsTask(corrector)) .json(ClassLoaderUtils.getSystemResourceAsString("json/recomputeAll.task.json")) .verify(); } diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MailboxesRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MailboxesRoutes.java index 5d644fd..f48f090 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MailboxesRoutes.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/MailboxesRoutes.java @@ -19,7 +19,10 @@ package org.apache.james.webadmin.routes; +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; @@ -38,6 +41,7 @@ import org.apache.james.webadmin.Routes; import org.apache.james.webadmin.service.PreviousReIndexingService; import org.apache.james.webadmin.tasks.TaskFromRequest; import org.apache.james.webadmin.tasks.TaskFromRequestRegistry; +import org.apache.james.webadmin.tasks.TaskFromRequestRegistry.TaskRegistration; import org.apache.james.webadmin.tasks.TaskIdDto; import org.apache.james.webadmin.tasks.TaskRegistrationKey; import org.apache.james.webadmin.utils.ErrorResponder; @@ -68,20 +72,25 @@ public class MailboxesRoutes implements Routes { private static final String MESSAGE_PATH = MAILBOX_PATH + "/mails/" + UID_PARAM; static final TaskRegistrationKey RE_INDEX = TaskRegistrationKey.of("reIndex"); static final String TASK_PARAMETER = "task"; + public static final String ALL_MAILBOXES_TASKS = "allMailboxesTasks"; private final TaskManager taskManager; private final PreviousReIndexingService previousReIndexingService; private final MailboxId.Factory mailboxIdFactory; private final ReIndexer reIndexer; private final JsonTransformer jsonTransformer; + private final Set<TaskRegistration> allMailboxesTaskRegistration; @Inject - MailboxesRoutes(TaskManager taskManager, PreviousReIndexingService previousReIndexingService, MailboxId.Factory mailboxIdFactory, ReIndexer reIndexer, JsonTransformer jsonTransformer) { + MailboxesRoutes(TaskManager taskManager, PreviousReIndexingService previousReIndexingService, + MailboxId.Factory mailboxIdFactory, ReIndexer reIndexer, JsonTransformer jsonTransformer, + @Named(ALL_MAILBOXES_TASKS) Set<TaskRegistration> allMailboxesTaskRegistration) { this.taskManager = taskManager; this.previousReIndexingService = previousReIndexingService; this.mailboxIdFactory = mailboxIdFactory; this.reIndexer = reIndexer; this.jsonTransformer = jsonTransformer; + this.allMailboxesTaskRegistration = allMailboxesTaskRegistration; } @Override @@ -125,6 +134,7 @@ public class MailboxesRoutes implements Routes { private Route reIndexAll() { return TaskFromRequestRegistry.builder() .parameterName(TASK_PARAMETER) + .registrations(allMailboxesTaskRegistration) .register(RE_INDEX, wrap(this::reIndexAll)) .buildAsRoute(taskManager); } diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java index 5f0a977..552356a 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java @@ -51,6 +51,7 @@ import org.apache.james.task.MemoryTaskManager; import org.apache.james.webadmin.WebAdminServer; import org.apache.james.webadmin.WebAdminUtils; import org.apache.james.webadmin.service.PreviousReIndexingService; +import org.apache.james.webadmin.tasks.TaskFromRequestRegistry; import org.apache.james.webadmin.utils.ErrorResponder; import org.apache.james.webadmin.utils.JsonTransformer; import org.apache.mailbox.tools.indexer.FullReindexingTask; @@ -64,12 +65,14 @@ 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; class MailboxesRoutesTest { private static final Username USERNAME = Username.of("be...@apache.org"); private static final MailboxPath INBOX = MailboxPath.inbox(USERNAME); + private static final ImmutableSet<TaskFromRequestRegistry.TaskRegistration> NO_ADDITIONAL_REGISTRATION = ImmutableSet.of(); private WebAdminServer webAdminServer; private ListeningMessageSearchIndex searchIndex; @@ -99,7 +102,8 @@ class MailboxesRoutesTest { new PreviousReIndexingService(taskManager), mailboxIdFactory, reIndexer, - jsonTransformer)) + jsonTransformer, + NO_ADDITIONAL_REGISTRATION)) .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