This is an automated email from the ASF dual-hosted git repository. rouazana pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 7c1adec91f44c237d60d989a63326ff7faaab327 Author: Benoit Tellier <[email protected]> AuthorDate: Fri May 15 15:51:03 2020 +0700 JAMES-3194 Inject DTOConverter for every product Note that is requires splitting guice injections for it --- .../org/apache/james/CassandraJamesServerMain.java | 2 + ...assandraConsistencyTaskSerializationModule.java | 110 +++++ .../james/CassandraRabbitMQJamesServerMain.java | 4 +- .../modules/DistributedTaskManagerModule.java | 3 + .../DistributedTaskSerializationModule.java | 107 +++++ .../james/modules/TaskSerializationModule.java | 475 --------------------- server/container/guice/guice-common/pom.xml | 4 + .../james/modules/server/TaskManagerModule.java | 2 + .../modules/server/TaskSerializationModule.java} | 36 +- .../modules/mailbox/LuceneSearchMailboxModule.java | 2 + .../modules/vault/DeletedMessageVaultModule.java | 1 + .../vault/VaultTaskSerializationModule.java | 82 ++++ server/container/guice/mailbox/pom.xml | 4 + .../mailbox/ReIndexingTaskSerializationModule.java | 110 +++++ .../server/JmapTaskSerializationModule.java | 56 +++ .../james/modules/server/JmapTasksModule.java | 2 + .../james/modules/server/MailboxRoutesModule.java | 2 + .../server/MailboxesExportRoutesModule.java | 1 + ...adminMailboxExportTaskSerializationModule.java} | 32 +- .../WebadminMailboxTaskSerializationModule.java | 79 ++++ .../modules/server/MailQueueRoutesModule.java | 2 + .../server/MailQueueTaskSerializationModule.java | 57 +++ .../server/MailRepositoriesRoutesModule.java | 2 + .../MailRepositoryTaskSerializationModule.java | 71 +++ 24 files changed, 739 insertions(+), 507 deletions(-) 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 8ecdf1a..167bb2e 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 @@ -24,6 +24,7 @@ import java.util.Set; import org.apache.james.eventsourcing.eventstore.cassandra.EventNestedTypes; import org.apache.james.json.DTOModule; import org.apache.james.modules.BlobExportMechanismModule; +import org.apache.james.modules.CassandraConsistencyTaskSerializationModule; import org.apache.james.modules.MailboxModule; import org.apache.james.modules.activemq.ActiveMQQueueModule; import org.apache.james.modules.data.CassandraDLPConfigurationStoreModule; @@ -139,6 +140,7 @@ public class CassandraJamesServerMain implements JamesServerMain { CASSANDRA_EVENT_STORE_JSON_SERIALIZATION_DEFAULT_MODULE); public static final Module CASSANDRA_MAILBOX_MODULE = Modules.combine( + new CassandraConsistencyTaskSerializationModule(), new CassandraMailboxModule(), new CassandraDeletedMessageVaultModule(), new ElasticSearchClientModule(), diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/CassandraConsistencyTaskSerializationModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/CassandraConsistencyTaskSerializationModule.java new file mode 100644 index 0000000..2b565c2 --- /dev/null +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/CassandraConsistencyTaskSerializationModule.java @@ -0,0 +1,110 @@ +/**************************************************************** + * 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. * + ****************************************************************/ +package org.apache.james.modules; + +import org.apache.james.backends.cassandra.migration.MigrationTask; +import org.apache.james.backends.cassandra.migration.MigrationTaskAdditionalInformationDTO; +import org.apache.james.backends.cassandra.migration.MigrationTaskDTO; +import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTaskAdditionalInformationDTO; +import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTaskDTO; +import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTaskRunner; +import org.apache.james.mailbox.cassandra.mail.task.RecomputeMailboxCountersService; +import org.apache.james.mailbox.cassandra.mail.task.RecomputeMailboxCountersTaskAdditionalInformationDTO; +import org.apache.james.mailbox.cassandra.mail.task.RecomputeMailboxCountersTaskDTO; +import org.apache.james.mailbox.cassandra.mail.task.SolveMailboxInconsistenciesService; +import org.apache.james.mailbox.cassandra.mail.task.SolveMailboxInconsistenciesTaskAdditionalInformationDTO; +import org.apache.james.mailbox.cassandra.mail.task.SolveMailboxInconsistenciesTaskDTO; +import org.apache.james.mailbox.cassandra.mail.task.SolveMessageInconsistenciesService; +import org.apache.james.mailbox.cassandra.mail.task.SolveMessageInconsistenciesTaskAdditionalInformationDTO; +import org.apache.james.mailbox.cassandra.mail.task.SolveMessageInconsistenciesTaskDTO; +import org.apache.james.rrt.cassandra.CassandraMappingsSourcesDAO; +import org.apache.james.rrt.cassandra.migration.MappingsSourcesMigration; +import org.apache.james.rrt.cassandra.migration.MappingsSourcesMigrationTaskAdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.james.task.Task; +import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.webadmin.service.CassandraMappingsSolveInconsistenciesTask; + +import com.google.inject.AbstractModule; +import com.google.inject.multibindings.ProvidesIntoSet; + +public class CassandraConsistencyTaskSerializationModule extends AbstractModule { + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> cassandraMappingsSolveInconsistenciesTask(MappingsSourcesMigration migration, CassandraMappingsSourcesDAO dao) { + return CassandraMappingsSolveInconsistenciesTask.module(migration, dao); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> mailboxMergingTask(MailboxMergingTaskRunner taskRunner) { + return MailboxMergingTaskDTO.module(taskRunner); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> solveMailboxInconsistenciesTask(SolveMailboxInconsistenciesService service) { + return SolveMailboxInconsistenciesTaskDTO.module(service); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> recomputeMailboxCountersTask(RecomputeMailboxCountersService service) { + return RecomputeMailboxCountersTaskDTO.module(service); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> migrationTask(MigrationTask.Factory factory) { + return MigrationTaskDTO.module(factory); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> solveMessageInconsistenciesTask(SolveMessageInconsistenciesService solveMessageInconsistenciesService) { + return SolveMessageInconsistenciesTaskDTO.module(solveMessageInconsistenciesService); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> cassandraMappingsSolveInconsistenciesAdditionalInformation() { + return MappingsSourcesMigrationTaskAdditionalInformationDTO.serializationModule(CassandraMappingsSolveInconsistenciesTask.TYPE); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> mailboxMergingAdditionalInformation() { + return MailboxMergingTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> solveMailboxInconsistenciesAdditionalInformation() { + return SolveMailboxInconsistenciesTaskAdditionalInformationDTO.MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeMailboxCountersAdditionalInformation() { + return RecomputeMailboxCountersTaskAdditionalInformationDTO.MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> migrationTaskAdditionalInformation() { + return MigrationTaskAdditionalInformationDTO.serializationModule(); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> solveMessageInconsistenciesAdditionalInformation() { + return SolveMessageInconsistenciesTaskAdditionalInformationDTO.MODULE; + } +} diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java index e9730fa..588ee9b 100644 --- a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java +++ b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java @@ -22,7 +22,7 @@ package org.apache.james; import static org.apache.james.CassandraJamesServerMain.REQUIRE_TASK_MANAGER_MODULE; import org.apache.james.modules.DistributedTaskManagerModule; -import org.apache.james.modules.TaskSerializationModule; +import org.apache.james.modules.DistributedTaskSerializationModule; import org.apache.james.modules.blobstore.BlobStoreCacheModulesChooser; import org.apache.james.modules.blobstore.BlobStoreConfiguration; import org.apache.james.modules.blobstore.BlobStoreModulesChooser; @@ -37,7 +37,7 @@ public class CassandraRabbitMQJamesServerMain implements JamesServerMain { protected static final Module MODULES = Modules .override(Modules.combine(REQUIRE_TASK_MANAGER_MODULE, new DistributedTaskManagerModule())) - .with(new RabbitMQModule(), new RabbitMQEventBusModule(), new TaskSerializationModule()); + .with(new RabbitMQModule(), new RabbitMQEventBusModule(), new DistributedTaskSerializationModule()); public static void main(String[] args) throws Exception { CassandraRabbitMQJamesConfiguration configuration = CassandraRabbitMQJamesConfiguration.builder() diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/DistributedTaskManagerModule.java b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/DistributedTaskManagerModule.java index ce0333f..d970f5a 100644 --- a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/DistributedTaskManagerModule.java +++ b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/DistributedTaskManagerModule.java @@ -22,6 +22,7 @@ package org.apache.james.modules; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.modules.server.HostnameModule; +import org.apache.james.modules.server.TaskSerializationModule; import org.apache.james.task.TaskManager; import org.apache.james.task.eventsourcing.EventSourcingTaskManager; import org.apache.james.task.eventsourcing.TaskExecutionDetailsProjection; @@ -45,6 +46,8 @@ public class DistributedTaskManagerModule extends AbstractModule { @Override protected void configure() { install(new HostnameModule()); + install(new TaskSerializationModule()); + bind(CassandraTaskExecutionDetailsProjection.class).in(Scopes.SINGLETON); bind(EventSourcingTaskManager.class).in(Scopes.SINGLETON); bind(RabbitMQWorkQueueSupplier.class).in(Scopes.SINGLETON); diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/DistributedTaskSerializationModule.java b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/DistributedTaskSerializationModule.java new file mode 100644 index 0000000..2cbed70 --- /dev/null +++ b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/DistributedTaskSerializationModule.java @@ -0,0 +1,107 @@ +/**************************************************************** + * 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. * + ****************************************************************/ +package org.apache.james.modules; + +import java.util.Set; + +import javax.inject.Named; + +import org.apache.james.eventsourcing.Event; +import org.apache.james.eventsourcing.eventstore.cassandra.EventNestedTypes; +import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTO; +import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule; +import org.apache.james.json.DTOConverter; +import org.apache.james.json.DTOModule; +import org.apache.james.modules.mailbox.ReIndexingTaskSerializationModule; +import org.apache.james.server.task.json.JsonTaskSerializer; +import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.james.task.Task; +import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.task.eventsourcing.distributed.TasksSerializationModule; + +import com.google.common.collect.Sets; +import com.google.inject.AbstractModule; +import com.google.inject.Provides; +import com.google.inject.multibindings.ProvidesIntoSet; + +public class DistributedTaskSerializationModule extends AbstractModule { + @Override + protected void configure() { + install(new ReIndexingTaskSerializationModule()); + } + + @ProvidesIntoSet + public EventDTOModule<? extends Event, ? extends EventDTO> taskCreatedSerialization(JsonTaskSerializer jsonTaskSerializer, + DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, + DTOConverter<Task, TaskDTO> taskConverter) { + return TasksSerializationModule.CREATED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); + } + + @ProvidesIntoSet + public EventDTOModule<? extends Event, ? extends EventDTO> taskStartedSerialization(JsonTaskSerializer jsonTaskSerializer, + DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, + DTOConverter<Task, TaskDTO> taskConverter) { + return TasksSerializationModule.STARTED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); + } + + @ProvidesIntoSet + public EventDTOModule<? extends Event, ? extends EventDTO> taskCancelRequestedSerialization(JsonTaskSerializer jsonTaskSerializer, + DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, + DTOConverter<Task, TaskDTO> taskConverter) { + return TasksSerializationModule.CANCEL_REQUESTED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); + } + + @ProvidesIntoSet + public EventDTOModule<? extends Event, ? extends EventDTO> taskCancelledSerialization(JsonTaskSerializer jsonTaskSerializer, + DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, + DTOConverter<Task, TaskDTO> taskConverter) { + return TasksSerializationModule.CANCELLED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); + } + + @ProvidesIntoSet + public EventDTOModule<? extends Event, ? extends EventDTO> taskCompletedSerialization(JsonTaskSerializer jsonTaskSerializer, + DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, + DTOConverter<Task, TaskDTO> taskConverter) { + return TasksSerializationModule.COMPLETED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); + } + + @ProvidesIntoSet + public EventDTOModule<? extends Event, ? extends EventDTO> taskFailedSerialization(JsonTaskSerializer jsonTaskSerializer, + DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, + DTOConverter<Task, TaskDTO> taskConverter) { + return TasksSerializationModule.FAILED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); + } + + @ProvidesIntoSet + public EventDTOModule<? extends Event, ? extends EventDTO> taskUpdatedSerialization(JsonTaskSerializer jsonTaskSerializer, + DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, + DTOConverter<Task, TaskDTO> taskConverter) { + return TasksSerializationModule.UPDATED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); + } + + @Named(EventNestedTypes.EVENT_NESTED_TYPES_INJECTION_NAME) + @Provides + public Set<DTOModule<?, ? extends org.apache.james.json.DTO>> eventNestedTypes(Set<AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO>> additionalInformationDTOModules, + Set<TaskDTOModule<? extends Task, ? extends TaskDTO>> taskDTOModules) { + return Sets.union(additionalInformationDTOModules, taskDTOModules); + } +} 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 deleted file mode 100644 index 5c63753..0000000 --- a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/TaskSerializationModule.java +++ /dev/null @@ -1,475 +0,0 @@ -/**************************************************************** - * 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. * - ****************************************************************/ -package org.apache.james.modules; - -import java.time.Clock; -import java.util.Set; - -import javax.inject.Named; - -import org.apache.james.backends.cassandra.migration.MigrationTask; -import org.apache.james.backends.cassandra.migration.MigrationTaskAdditionalInformationDTO; -import org.apache.james.backends.cassandra.migration.MigrationTaskDTO; -import org.apache.james.eventsourcing.Event; -import org.apache.james.eventsourcing.eventstore.cassandra.EventNestedTypes; -import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTO; -import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule; -import org.apache.james.json.DTOConverter; -import org.apache.james.json.DTOModule; -import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTaskAdditionalInformationDTO; -import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTaskDTO; -import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTaskRunner; -import org.apache.james.mailbox.cassandra.mail.task.RecomputeMailboxCountersService; -import org.apache.james.mailbox.cassandra.mail.task.RecomputeMailboxCountersTaskAdditionalInformationDTO; -import org.apache.james.mailbox.cassandra.mail.task.RecomputeMailboxCountersTaskDTO; -import org.apache.james.mailbox.cassandra.mail.task.SolveMailboxInconsistenciesService; -import org.apache.james.mailbox.cassandra.mail.task.SolveMailboxInconsistenciesTaskAdditionalInformationDTO; -import org.apache.james.mailbox.cassandra.mail.task.SolveMailboxInconsistenciesTaskDTO; -import org.apache.james.mailbox.cassandra.mail.task.SolveMessageInconsistenciesService; -import org.apache.james.mailbox.cassandra.mail.task.SolveMessageInconsistenciesTaskAdditionalInformationDTO; -import org.apache.james.mailbox.cassandra.mail.task.SolveMessageInconsistenciesTaskDTO; -import org.apache.james.mailbox.model.MailboxId; -import org.apache.james.mailbox.model.MessageId; -import org.apache.james.mailbox.quota.task.RecomputeCurrentQuotasService; -import org.apache.james.mailbox.quota.task.RecomputeCurrentQuotasTaskAdditionalInformationDTO; -import org.apache.james.mailbox.quota.task.RecomputeCurrentQuotasTaskDTO; -import org.apache.james.queue.api.MailQueueFactory; -import org.apache.james.queue.api.ManageableMailQueue; -import org.apache.james.rrt.cassandra.CassandraMappingsSourcesDAO; -import org.apache.james.rrt.cassandra.migration.MappingsSourcesMigration; -import org.apache.james.rrt.cassandra.migration.MappingsSourcesMigrationTaskAdditionalInformationDTO; -import org.apache.james.server.task.json.JsonTaskSerializer; -import org.apache.james.server.task.json.dto.AdditionalInformationDTO; -import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; -import org.apache.james.server.task.json.dto.TaskDTO; -import org.apache.james.server.task.json.dto.TaskDTOModule; -import org.apache.james.task.Task; -import org.apache.james.task.TaskExecutionDetails; -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.RecomputeAllFastViewTaskAdditionalInformationDTO; -import org.apache.james.webadmin.data.jmap.RecomputeUserFastViewProjectionItemsTask; -import org.apache.james.webadmin.data.jmap.RecomputeUserFastViewTaskAdditionalInformationDTO; -import org.apache.james.webadmin.service.CassandraMappingsSolveInconsistenciesTask; -import org.apache.james.webadmin.service.ClearMailQueueTaskAdditionalInformationDTO; -import org.apache.james.webadmin.service.ClearMailQueueTaskDTO; -import org.apache.james.webadmin.service.ClearMailRepositoryTask; -import org.apache.james.webadmin.service.ClearMailRepositoryTaskAdditionalInformationDTO; -import org.apache.james.webadmin.service.ClearMailRepositoryTaskDTO; -import org.apache.james.webadmin.service.DeleteMailsFromMailQueueTaskAdditionalInformationDTO; -import org.apache.james.webadmin.service.DeleteMailsFromMailQueueTaskDTO; -import org.apache.james.webadmin.service.EventDeadLettersRedeliverAllTaskDTO; -import org.apache.james.webadmin.service.EventDeadLettersRedeliverGroupTaskDTO; -import org.apache.james.webadmin.service.EventDeadLettersRedeliverOneTaskDTO; -import org.apache.james.webadmin.service.EventDeadLettersRedeliverService; -import org.apache.james.webadmin.service.EventDeadLettersRedeliveryTaskAdditionalInformationDTO; -import org.apache.james.webadmin.service.ExportService; -import org.apache.james.webadmin.service.MailboxesExportTask; -import org.apache.james.webadmin.service.MailboxesExportTaskAdditionalInformationDTO; -import org.apache.james.webadmin.service.ReprocessingAllMailsTaskAdditionalInformationDTO; -import org.apache.james.webadmin.service.ReprocessingAllMailsTaskDTO; -import org.apache.james.webadmin.service.ReprocessingOneMailTaskAdditionalInformationDTO; -import org.apache.james.webadmin.service.ReprocessingOneMailTaskDTO; -import org.apache.james.webadmin.service.ReprocessingService; -import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultDeleteTask; -import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultDeleteTaskAdditionalInformationDTO; -import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultDeleteTaskDTO; -import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultExportTaskAdditionalInformationDTO; -import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultExportTaskDTO; -import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultRestoreTaskAdditionalInformationDTO; -import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultRestoreTaskDTO; -import org.apache.mailbox.tools.indexer.ErrorRecoveryIndexationTask; -import org.apache.mailbox.tools.indexer.ErrorRecoveryIndexationTaskDTO; -import org.apache.mailbox.tools.indexer.FullReindexingTaskDTO; -import org.apache.mailbox.tools.indexer.MessageIdReIndexingTask; -import org.apache.mailbox.tools.indexer.MessageIdReindexingTaskAdditionalInformationDTO; -import org.apache.mailbox.tools.indexer.MessageIdReindexingTaskDTO; -import org.apache.mailbox.tools.indexer.ReIndexerPerformer; -import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO; -import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTask; -import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTaskAdditionalInformationDTO; -import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTaskDTO; -import org.apache.mailbox.tools.indexer.SingleMessageReindexingTask; -import org.apache.mailbox.tools.indexer.SingleMessageReindexingTaskAdditionalInformationDTO; -import org.apache.mailbox.tools.indexer.SingleMessageReindexingTaskDTO; -import org.apache.mailbox.tools.indexer.UserReindexingTask; -import org.apache.mailbox.tools.indexer.UserReindexingTaskAdditionalInformationDTO; -import org.apache.mailbox.tools.indexer.UserReindexingTaskDTO; - -import com.google.common.collect.Sets; -import com.google.inject.AbstractModule; -import com.google.inject.Provides; -import com.google.inject.Singleton; -import com.google.inject.multibindings.ProvidesIntoSet; - -public class TaskSerializationModule extends AbstractModule { - - @Provides - @Singleton - public DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationDTOConverter(Set<AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO>> modules) { - return new DTOConverter<>(modules); - } - - @Provides - @Singleton - public DTOConverter<Task, TaskDTO> taskDTOConverter(Set<TaskDTOModule<? extends Task, ? extends TaskDTO>> taskDTOModules) { - return new DTOConverter<>(taskDTOModules); - - } - - @ProvidesIntoSet - public EventDTOModule<? extends Event, ? extends EventDTO> taskCreatedSerialization(JsonTaskSerializer jsonTaskSerializer, - DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, - DTOConverter<Task, TaskDTO> taskConverter) { - return TasksSerializationModule.CREATED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); - } - - @ProvidesIntoSet - public EventDTOModule<? extends Event, ? extends EventDTO> taskStartedSerialization(JsonTaskSerializer jsonTaskSerializer, - DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, - DTOConverter<Task, TaskDTO> taskConverter) { - return TasksSerializationModule.STARTED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); - } - - @ProvidesIntoSet - public EventDTOModule<? extends Event, ? extends EventDTO> taskCancelRequestedSerialization(JsonTaskSerializer jsonTaskSerializer, - DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, - DTOConverter<Task, TaskDTO> taskConverter) { - return TasksSerializationModule.CANCEL_REQUESTED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); - } - - @ProvidesIntoSet - public EventDTOModule<? extends Event, ? extends EventDTO> taskCancelledSerialization(JsonTaskSerializer jsonTaskSerializer, - DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, - DTOConverter<Task, TaskDTO> taskConverter) { - return TasksSerializationModule.CANCELLED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); - } - - @ProvidesIntoSet - public EventDTOModule<? extends Event, ? extends EventDTO> taskCompletedSerialization(JsonTaskSerializer jsonTaskSerializer, - DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, - DTOConverter<Task, TaskDTO> taskConverter) { - return TasksSerializationModule.COMPLETED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); - } - - @ProvidesIntoSet - public EventDTOModule<? extends Event, ? extends EventDTO> taskFailedSerialization(JsonTaskSerializer jsonTaskSerializer, - DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, - DTOConverter<Task, TaskDTO> taskConverter) { - return TasksSerializationModule.FAILED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); - } - - @ProvidesIntoSet - public EventDTOModule<? extends Event, ? extends EventDTO> taskUpdatedSerialization(JsonTaskSerializer jsonTaskSerializer, - DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationConverter, - DTOConverter<Task, TaskDTO> taskConverter) { - return TasksSerializationModule.UPDATED.create(jsonTaskSerializer, additionalInformationConverter, taskConverter); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> blobStoreVaultGarbageCollectionTask(BlobStoreVaultGarbageCollectionTask.Factory factory) { - return BlobStoreVaultGarbageCollectionTaskDTO.module(factory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> cassandraMappingsSolveInconsistenciesTask(MappingsSourcesMigration migration, CassandraMappingsSourcesDAO dao) { - return CassandraMappingsSolveInconsistenciesTask.module(migration, dao); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> clearMailQueueTask(MailQueueFactory<? extends ManageableMailQueue> mailQueueFactory) { - return ClearMailQueueTaskDTO.module(mailQueueFactory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> recomputeAllJmapPreviewsTask(MessageFastViewProjectionCorrector corrector) { - return RecomputeAllFastViewProjectionItemsTask.module(corrector); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> recomputeUserJmapPreviewsTask(MessageFastViewProjectionCorrector corrector) { - return RecomputeUserFastViewProjectionItemsTask.module(corrector); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> mailboxesExportTask(ExportService exportService) { - return MailboxesExportTask.module(exportService); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> clearMailRepositoryTask(ClearMailRepositoryTask.Factory factory) { - return ClearMailRepositoryTaskDTO.module(factory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> deleteMailsFromMailQueueTask(MailQueueFactory<? extends ManageableMailQueue> mailQueueFactory) { - return DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> deletedMessagesVaultDeleteTask(DeletedMessagesVaultDeleteTask.Factory factory) { - return DeletedMessagesVaultDeleteTaskDTO.module(factory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> deletedMessagesVaultExportTask(DeletedMessagesVaultExportTaskDTO.Factory factory) { - return DeletedMessagesVaultExportTaskDTO.module(factory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> deletedMessagesVaultRestoreTask(DeletedMessagesVaultRestoreTaskDTO.Factory factory) { - return DeletedMessagesVaultRestoreTaskDTO.module(factory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> eventDeadLettersRedeliverAllTask(EventDeadLettersRedeliverService service) { - return EventDeadLettersRedeliverAllTaskDTO.module(service); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> eventDeadLettersRedeliverGroupTask(EventDeadLettersRedeliverService service) { - return EventDeadLettersRedeliverGroupTaskDTO.module(service); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> eventDeadLettersRedeliverOneTask(EventDeadLettersRedeliverService service) { - return EventDeadLettersRedeliverOneTaskDTO.module(service); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> fullReindexTask(ReIndexerPerformer performer) { - return FullReindexingTaskDTO.module(performer); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> errorRecoveryIndexationTask(ErrorRecoveryIndexationTask.Factory factory) { - return ErrorRecoveryIndexationTaskDTO.module(factory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> mailboxMergingTask(MailboxMergingTaskRunner taskRunner) { - return MailboxMergingTaskDTO.module(taskRunner); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> solveMailboxInconsistenciesTask(SolveMailboxInconsistenciesService service) { - return SolveMailboxInconsistenciesTaskDTO.module(service); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> recomputeMailboxCountersTask(RecomputeMailboxCountersService service) { - return RecomputeMailboxCountersTaskDTO.module(service); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> recomputeCurrentQuotasTask(RecomputeCurrentQuotasService service) { - return RecomputeCurrentQuotasTaskDTO.module(service); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> messageIdReindexingTask(MessageIdReIndexingTask.Factory factory) { - return MessageIdReindexingTaskDTO.module(factory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> migrationTask(MigrationTask.Factory factory) { - return MigrationTaskDTO.module(factory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> reprocessingAllMailsTask(ReprocessingService reprocessingService) { - return ReprocessingAllMailsTaskDTO.module(reprocessingService); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> reprocessingOneMailsTask(ReprocessingService reprocessingService) { - return ReprocessingOneMailTaskDTO.module(Clock.systemUTC(), reprocessingService); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> solveMessageInconsistenciesTask(SolveMessageInconsistenciesService solveMessageInconsistenciesService) { - return SolveMessageInconsistenciesTaskDTO.module(solveMessageInconsistenciesService); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> singleMailboxReindexingTask(SingleMailboxReindexingTask.Factory factory) { - return SingleMailboxReindexingTaskDTO.module(factory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> singleMessageReindexingTask(SingleMessageReindexingTask.Factory factory) { - return SingleMessageReindexingTaskDTO.module(factory); - } - - @ProvidesIntoSet - public TaskDTOModule<? extends Task, ? extends TaskDTO> userReindexingTask(UserReindexingTask.Factory factory) { - return UserReindexingTaskDTO.module(factory); - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> blobStoreVaultGarbageCollectionAdditionalInformation() { - return BlobStoreVaultGarbageCollectionTaskAdditionalInformationDTO.MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> cassandraMappingsSolveInconsistenciesAdditionalInformation() { - return MappingsSourcesMigrationTaskAdditionalInformationDTO.serializationModule(CassandraMappingsSolveInconsistenciesTask.TYPE); - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> clearMailQueueAdditionalInformation() { - return ClearMailQueueTaskAdditionalInformationDTO.SERIALIZATION_MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> clearMailRepositoryAdditionalInformation() { - return ClearMailRepositoryTaskAdditionalInformationDTO.SERIALIZATION_MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deleteMailsFromMailQueueAdditionalInformation() { - return DeleteMailsFromMailQueueTaskAdditionalInformationDTO.MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deletedMessagesVaultDeleteAdditionalInformation(MessageId.Factory factory) { - return DeletedMessagesVaultDeleteTaskAdditionalInformationDTO.serializationModule(factory); - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deletedMessagesVaultExportAdditionalInformation() { - return DeletedMessagesVaultExportTaskAdditionalInformationDTO.MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deletedMessagesVaultRestoreAdditionalInformation() { - return DeletedMessagesVaultRestoreTaskAdditionalInformationDTO.MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> errorRecoveryAdditionalInformation(MailboxId.Factory mailboxIdFactory) { - return ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask.serializationModule(mailboxIdFactory); - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> eventDeadLettersRedeliveryAdditionalInformationForAll() { - return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForAll.MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> eventDeadLettersRedeliveryAdditionalInformationForGroup() { - return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForGroup.MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> eventDeadLettersRedeliveryAdditionalInformationForOne() { - return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForOne.MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> fullReindexAdditionalInformation(MailboxId.Factory mailboxIdFactory) { - return ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask.serializationModule(mailboxIdFactory); - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> mailboxMergingAdditionalInformation() { - return MailboxMergingTaskAdditionalInformationDTO.SERIALIZATION_MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> solveMailboxInconsistenciesAdditionalInformation() { - return SolveMailboxInconsistenciesTaskAdditionalInformationDTO.MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeMailboxCountersAdditionalInformation() { - return RecomputeMailboxCountersTaskAdditionalInformationDTO.MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeCurrentQuotasAdditionalInformation() { - return RecomputeCurrentQuotasTaskAdditionalInformationDTO.MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> messageIdReindexingAdditionalInformation(MessageId.Factory messageIdFactory) { - return MessageIdReindexingTaskAdditionalInformationDTO.serializationModule(messageIdFactory); - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> migrationTaskAdditionalInformation() { - return MigrationTaskAdditionalInformationDTO.serializationModule(); - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> reprocessingAllMailsAdditionalInformation() { - return ReprocessingAllMailsTaskAdditionalInformationDTO.SERIALIZATION_MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> reprocessingOneMailAdditionalInformation() { - return ReprocessingOneMailTaskAdditionalInformationDTO.SERIALIZATION_MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> singleMailboxReindexingAdditionalInformation(MailboxId.Factory mailboxIdFactory) { - return SingleMailboxReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory); - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> singleMessageReindexingAdditionalInformation(MailboxId.Factory mailboxIdFactory) { - return SingleMessageReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory); - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> userReindexingAdditionalInformation(MailboxId.Factory mailboxIdFactory) { - return UserReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory); - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeAllJmapPreviewsAdditionalInformation() { - return RecomputeAllFastViewTaskAdditionalInformationDTO.SERIALIZATION_MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeUserJmapPreviewsAdditionalInformation() { - return RecomputeUserFastViewTaskAdditionalInformationDTO.SERIALIZATION_MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> mailboxesExportAdditionalInformation() { - return MailboxesExportTaskAdditionalInformationDTO.SERIALIZATION_MODULE; - } - - @ProvidesIntoSet - public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> solveMessageInconsistenciesAdditionalInformation() { - return SolveMessageInconsistenciesTaskAdditionalInformationDTO.MODULE; - } - - @Named(EventNestedTypes.EVENT_NESTED_TYPES_INJECTION_NAME) - @Provides - public Set<DTOModule<?, ? extends org.apache.james.json.DTO>> eventNestedTypes(Set<AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO>> additionalInformationDTOModules, - Set<TaskDTOModule<? extends Task, ? extends TaskDTO>> taskDTOModules) { - return Sets.union(additionalInformationDTOModules, taskDTOModules); - } -} diff --git a/server/container/guice/guice-common/pom.xml b/server/container/guice/guice-common/pom.xml index e24d450..4d6c6625 100644 --- a/server/container/guice/guice-common/pom.xml +++ b/server/container/guice/guice-common/pom.xml @@ -111,6 +111,10 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>james-server-task-json</artifactId> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-task-memory</artifactId> </dependency> <dependency> diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/TaskManagerModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/TaskManagerModule.java index 484ad4c..d07ed8f 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/TaskManagerModule.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/TaskManagerModule.java @@ -29,6 +29,8 @@ public class TaskManagerModule extends AbstractModule { @Override protected void configure() { install(new HostnameModule()); + install(new TaskSerializationModule()); + bind(MemoryTaskManager.class).in(Scopes.SINGLETON); bind(TaskManager.class).to(MemoryTaskManager.class); } diff --git a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesExportRoutesModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/TaskSerializationModule.java similarity index 53% copy from server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesExportRoutesModule.java copy to server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/TaskSerializationModule.java index 4e09cdb..884b947 100644 --- a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesExportRoutesModule.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/TaskSerializationModule.java @@ -19,24 +19,30 @@ package org.apache.james.modules.server; -import org.apache.james.webadmin.routes.UserMailboxesRoutes; -import org.apache.james.webadmin.service.ExportService; -import org.apache.james.webadmin.service.MailboxesExportRequestToTask; -import org.apache.james.webadmin.tasks.TaskFromRequestRegistry; +import java.util.Set; -import com.google.inject.AbstractModule; -import com.google.inject.Scopes; -import com.google.inject.multibindings.Multibinder; -import com.google.inject.name.Names; +import org.apache.james.json.DTOConverter; +import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.james.task.Task; +import org.apache.james.task.TaskExecutionDetails; -public class MailboxesExportRoutesModule extends AbstractModule { +import com.google.inject.AbstractModule; +import com.google.inject.Provides; +import com.google.inject.Singleton; - @Override - protected void configure() { - install(new MailboxesBackupModule()); +public class TaskSerializationModule extends AbstractModule { + @Provides + @Singleton + public DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationDTOConverter(Set<AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO>> modules) { + return new DTOConverter<>(modules); + } - bind(ExportService.class).in(Scopes.SINGLETON); - Multibinder.newSetBinder(binder(), TaskFromRequestRegistry.TaskRegistration.class, Names.named(UserMailboxesRoutes.USER_MAILBOXES_OPERATIONS_INJECTION_KEY)) - .addBinding().to(MailboxesExportRequestToTask.class); + @Provides + @Singleton + public DTOConverter<Task, TaskDTO> taskDTOConverter(Set<TaskDTOModule<? extends Task, ? extends TaskDTO>> taskDTOModules) { + return new DTOConverter<>(taskDTOModules); } } diff --git a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/LuceneSearchMailboxModule.java b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/LuceneSearchMailboxModule.java index 7b5c6de..78c5bba 100644 --- a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/LuceneSearchMailboxModule.java +++ b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/LuceneSearchMailboxModule.java @@ -39,6 +39,8 @@ public class LuceneSearchMailboxModule extends AbstractModule { @Override protected void configure() { + install(new ReIndexingTaskSerializationModule()); + bind(LuceneMessageSearchIndex.class).in(Scopes.SINGLETON); bind(MessageSearchIndex.class).to(LuceneMessageSearchIndex.class); bind(ListeningMessageSearchIndex.class).to(LuceneMessageSearchIndex.class); diff --git a/server/container/guice/mailbox-plugin-deleted-messages-vault-guice/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultModule.java b/server/container/guice/mailbox-plugin-deleted-messages-vault-guice/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultModule.java index 9d26a1d..c6ac334 100644 --- a/server/container/guice/mailbox-plugin-deleted-messages-vault-guice/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultModule.java +++ b/server/container/guice/mailbox-plugin-deleted-messages-vault-guice/src/main/java/org/apache/james/modules/vault/DeletedMessageVaultModule.java @@ -30,6 +30,7 @@ public class DeletedMessageVaultModule extends AbstractModule { @Override protected void configure() { install(new DeletedMessageVaultRetentionModule()); + install(new VaultTaskSerializationModule()); bind(BucketNameGenerator.class).in(Scopes.SINGLETON); bind(BlobStoreDeletedMessageVault.class).in(Scopes.SINGLETON); diff --git a/server/container/guice/mailbox-plugin-deleted-messages-vault-guice/src/main/java/org/apache/james/modules/vault/VaultTaskSerializationModule.java b/server/container/guice/mailbox-plugin-deleted-messages-vault-guice/src/main/java/org/apache/james/modules/vault/VaultTaskSerializationModule.java new file mode 100644 index 0000000..b59c3ce --- /dev/null +++ b/server/container/guice/mailbox-plugin-deleted-messages-vault-guice/src/main/java/org/apache/james/modules/vault/VaultTaskSerializationModule.java @@ -0,0 +1,82 @@ +/**************************************************************** + * 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. * + ****************************************************************/ +package org.apache.james.modules.vault; + +import org.apache.james.mailbox.model.MessageId; +import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.james.task.Task; +import org.apache.james.task.TaskExecutionDetails; +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.vault.routes.DeletedMessagesVaultDeleteTask; +import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultDeleteTaskAdditionalInformationDTO; +import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultDeleteTaskDTO; +import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultExportTaskAdditionalInformationDTO; +import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultExportTaskDTO; +import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultRestoreTaskAdditionalInformationDTO; +import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultRestoreTaskDTO; + +import com.google.inject.AbstractModule; +import com.google.inject.multibindings.ProvidesIntoSet; + +public class VaultTaskSerializationModule extends AbstractModule { + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> blobStoreVaultGarbageCollectionTask(BlobStoreVaultGarbageCollectionTask.Factory factory) { + return BlobStoreVaultGarbageCollectionTaskDTO.module(factory); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> deletedMessagesVaultDeleteTask(DeletedMessagesVaultDeleteTask.Factory factory) { + return DeletedMessagesVaultDeleteTaskDTO.module(factory); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> deletedMessagesVaultExportTask(DeletedMessagesVaultExportTaskDTO.Factory factory) { + return DeletedMessagesVaultExportTaskDTO.module(factory); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> deletedMessagesVaultRestoreTask(DeletedMessagesVaultRestoreTaskDTO.Factory factory) { + return DeletedMessagesVaultRestoreTaskDTO.module(factory); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> blobStoreVaultGarbageCollectionAdditionalInformation() { + return BlobStoreVaultGarbageCollectionTaskAdditionalInformationDTO.MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deletedMessagesVaultDeleteAdditionalInformation(MessageId.Factory factory) { + return DeletedMessagesVaultDeleteTaskAdditionalInformationDTO.serializationModule(factory); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deletedMessagesVaultExportAdditionalInformation() { + return DeletedMessagesVaultExportTaskAdditionalInformationDTO.MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deletedMessagesVaultRestoreAdditionalInformation() { + return DeletedMessagesVaultRestoreTaskAdditionalInformationDTO.MODULE; + } +} diff --git a/server/container/guice/mailbox/pom.xml b/server/container/guice/mailbox/pom.xml index ecc3efa..53b833f 100644 --- a/server/container/guice/mailbox/pom.xml +++ b/server/container/guice/mailbox/pom.xml @@ -52,6 +52,10 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>apache-james-mailbox-tools-indexer</artifactId> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-guice-configuration</artifactId> </dependency> <dependency> diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/ReIndexingTaskSerializationModule.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/ReIndexingTaskSerializationModule.java new file mode 100644 index 0000000..fda0438 --- /dev/null +++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/ReIndexingTaskSerializationModule.java @@ -0,0 +1,110 @@ +/**************************************************************** + * 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. * + ****************************************************************/ +package org.apache.james.modules.mailbox; + +import org.apache.james.mailbox.model.MailboxId; +import org.apache.james.mailbox.model.MessageId; +import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.james.task.Task; +import org.apache.james.task.TaskExecutionDetails; +import org.apache.mailbox.tools.indexer.ErrorRecoveryIndexationTask; +import org.apache.mailbox.tools.indexer.ErrorRecoveryIndexationTaskDTO; +import org.apache.mailbox.tools.indexer.FullReindexingTaskDTO; +import org.apache.mailbox.tools.indexer.MessageIdReIndexingTask; +import org.apache.mailbox.tools.indexer.MessageIdReindexingTaskAdditionalInformationDTO; +import org.apache.mailbox.tools.indexer.MessageIdReindexingTaskDTO; +import org.apache.mailbox.tools.indexer.ReIndexerPerformer; +import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO; +import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTask; +import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTaskAdditionalInformationDTO; +import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTaskDTO; +import org.apache.mailbox.tools.indexer.SingleMessageReindexingTask; +import org.apache.mailbox.tools.indexer.SingleMessageReindexingTaskAdditionalInformationDTO; +import org.apache.mailbox.tools.indexer.SingleMessageReindexingTaskDTO; +import org.apache.mailbox.tools.indexer.UserReindexingTask; +import org.apache.mailbox.tools.indexer.UserReindexingTaskAdditionalInformationDTO; +import org.apache.mailbox.tools.indexer.UserReindexingTaskDTO; + +import com.google.inject.AbstractModule; +import com.google.inject.multibindings.ProvidesIntoSet; + +public class ReIndexingTaskSerializationModule extends AbstractModule { + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> fullReindexTask(ReIndexerPerformer performer) { + return FullReindexingTaskDTO.module(performer); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> errorRecoveryIndexationTask(ErrorRecoveryIndexationTask.Factory factory) { + return ErrorRecoveryIndexationTaskDTO.module(factory); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> messageIdReindexingTask(MessageIdReIndexingTask.Factory factory) { + return MessageIdReindexingTaskDTO.module(factory); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> singleMailboxReindexingTask(SingleMailboxReindexingTask.Factory factory) { + return SingleMailboxReindexingTaskDTO.module(factory); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> singleMessageReindexingTask(SingleMessageReindexingTask.Factory factory) { + return SingleMessageReindexingTaskDTO.module(factory); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> userReindexingTask(UserReindexingTask.Factory factory) { + return UserReindexingTaskDTO.module(factory); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> errorRecoveryAdditionalInformation(MailboxId.Factory mailboxIdFactory) { + return ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask.serializationModule(mailboxIdFactory); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> fullReindexAdditionalInformation(MailboxId.Factory mailboxIdFactory) { + return ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask.serializationModule(mailboxIdFactory); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> messageIdReindexingAdditionalInformation(MessageId.Factory messageIdFactory) { + return MessageIdReindexingTaskAdditionalInformationDTO.serializationModule(messageIdFactory); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> singleMailboxReindexingAdditionalInformation(MailboxId.Factory mailboxIdFactory) { + return SingleMailboxReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> singleMessageReindexingAdditionalInformation(MailboxId.Factory mailboxIdFactory) { + return SingleMessageReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> userReindexingAdditionalInformation(MailboxId.Factory mailboxIdFactory) { + return UserReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory); + } +} diff --git a/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/JmapTaskSerializationModule.java b/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/JmapTaskSerializationModule.java new file mode 100644 index 0000000..de4fe7b --- /dev/null +++ b/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/JmapTaskSerializationModule.java @@ -0,0 +1,56 @@ +/**************************************************************** + * 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. * + ****************************************************************/ +package org.apache.james.modules.server; + +import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.james.task.Task; +import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.webadmin.data.jmap.MessageFastViewProjectionCorrector; +import org.apache.james.webadmin.data.jmap.RecomputeAllFastViewProjectionItemsTask; +import org.apache.james.webadmin.data.jmap.RecomputeAllFastViewTaskAdditionalInformationDTO; +import org.apache.james.webadmin.data.jmap.RecomputeUserFastViewProjectionItemsTask; +import org.apache.james.webadmin.data.jmap.RecomputeUserFastViewTaskAdditionalInformationDTO; + +import com.google.inject.AbstractModule; +import com.google.inject.multibindings.ProvidesIntoSet; + +public class JmapTaskSerializationModule extends AbstractModule { + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> recomputeAllJmapPreviewsTask(MessageFastViewProjectionCorrector corrector) { + return RecomputeAllFastViewProjectionItemsTask.module(corrector); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> recomputeUserJmapPreviewsTask(MessageFastViewProjectionCorrector corrector) { + return RecomputeUserFastViewProjectionItemsTask.module(corrector); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeAllJmapPreviewsAdditionalInformation() { + return RecomputeAllFastViewTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeUserJmapPreviewsAdditionalInformation() { + return RecomputeUserFastViewTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } +} diff --git a/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/JmapTasksModule.java b/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/JmapTasksModule.java index 5b6931e..73b1030 100644 --- a/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/JmapTasksModule.java +++ b/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/JmapTasksModule.java @@ -32,6 +32,8 @@ import com.google.inject.name.Names; public class JmapTasksModule extends AbstractModule { @Override protected void configure() { + install(new JmapTaskSerializationModule()); + 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/MailboxRoutesModule.java b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxRoutesModule.java index 6da9e2c..cc16843 100644 --- a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxRoutesModule.java +++ b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxRoutesModule.java @@ -44,6 +44,8 @@ public class MailboxRoutesModule extends AbstractModule { @Override protected void configure() { + install(new WebadminMailboxTaskSerializationModule()); + Multibinder<Routes> routesMultibinder = Multibinder.newSetBinder(binder(), Routes.class); routesMultibinder.addBinding().to(DomainQuotaRoutes.class); routesMultibinder.addBinding().to(EventDeadLettersRoutes.class); diff --git a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesExportRoutesModule.java b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesExportRoutesModule.java index 4e09cdb..2a7021f 100644 --- a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesExportRoutesModule.java +++ b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesExportRoutesModule.java @@ -34,6 +34,7 @@ public class MailboxesExportRoutesModule extends AbstractModule { @Override protected void configure() { install(new MailboxesBackupModule()); + install(new WebadminMailboxExportTaskSerializationModule()); bind(ExportService.class).in(Scopes.SINGLETON); Multibinder.newSetBinder(binder(), TaskFromRequestRegistry.TaskRegistration.class, Names.named(UserMailboxesRoutes.USER_MAILBOXES_OPERATIONS_INJECTION_KEY)) diff --git a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesExportRoutesModule.java b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebadminMailboxExportTaskSerializationModule.java similarity index 54% copy from server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesExportRoutesModule.java copy to server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebadminMailboxExportTaskSerializationModule.java index 4e09cdb..90f69af 100644 --- a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/MailboxesExportRoutesModule.java +++ b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebadminMailboxExportTaskSerializationModule.java @@ -16,27 +16,29 @@ * specific language governing permissions and limitations * * under the License. * ****************************************************************/ - package org.apache.james.modules.server; -import org.apache.james.webadmin.routes.UserMailboxesRoutes; +import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.james.task.Task; +import org.apache.james.task.TaskExecutionDetails; import org.apache.james.webadmin.service.ExportService; -import org.apache.james.webadmin.service.MailboxesExportRequestToTask; -import org.apache.james.webadmin.tasks.TaskFromRequestRegistry; +import org.apache.james.webadmin.service.MailboxesExportTask; +import org.apache.james.webadmin.service.MailboxesExportTaskAdditionalInformationDTO; import com.google.inject.AbstractModule; -import com.google.inject.Scopes; -import com.google.inject.multibindings.Multibinder; -import com.google.inject.name.Names; - -public class MailboxesExportRoutesModule extends AbstractModule { +import com.google.inject.multibindings.ProvidesIntoSet; - @Override - protected void configure() { - install(new MailboxesBackupModule()); +public class WebadminMailboxExportTaskSerializationModule extends AbstractModule { + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> mailboxesExportTask(ExportService exportService) { + return MailboxesExportTask.module(exportService); + } - bind(ExportService.class).in(Scopes.SINGLETON); - Multibinder.newSetBinder(binder(), TaskFromRequestRegistry.TaskRegistration.class, Names.named(UserMailboxesRoutes.USER_MAILBOXES_OPERATIONS_INJECTION_KEY)) - .addBinding().to(MailboxesExportRequestToTask.class); + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> mailboxesExportAdditionalInformation() { + return MailboxesExportTaskAdditionalInformationDTO.SERIALIZATION_MODULE; } } diff --git a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebadminMailboxTaskSerializationModule.java b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebadminMailboxTaskSerializationModule.java new file mode 100644 index 0000000..b7dbb5b --- /dev/null +++ b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebadminMailboxTaskSerializationModule.java @@ -0,0 +1,79 @@ +/**************************************************************** + * 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. * + ****************************************************************/ +package org.apache.james.modules.server; + +import org.apache.james.mailbox.quota.task.RecomputeCurrentQuotasService; +import org.apache.james.mailbox.quota.task.RecomputeCurrentQuotasTaskAdditionalInformationDTO; +import org.apache.james.mailbox.quota.task.RecomputeCurrentQuotasTaskDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.james.task.Task; +import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.webadmin.service.EventDeadLettersRedeliverAllTaskDTO; +import org.apache.james.webadmin.service.EventDeadLettersRedeliverGroupTaskDTO; +import org.apache.james.webadmin.service.EventDeadLettersRedeliverOneTaskDTO; +import org.apache.james.webadmin.service.EventDeadLettersRedeliverService; +import org.apache.james.webadmin.service.EventDeadLettersRedeliveryTaskAdditionalInformationDTO; + +import com.google.inject.AbstractModule; +import com.google.inject.multibindings.ProvidesIntoSet; + +public class WebadminMailboxTaskSerializationModule extends AbstractModule { + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> eventDeadLettersRedeliverAllTask(EventDeadLettersRedeliverService service) { + return EventDeadLettersRedeliverAllTaskDTO.module(service); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> eventDeadLettersRedeliverGroupTask(EventDeadLettersRedeliverService service) { + return EventDeadLettersRedeliverGroupTaskDTO.module(service); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> eventDeadLettersRedeliverOneTask(EventDeadLettersRedeliverService service) { + return EventDeadLettersRedeliverOneTaskDTO.module(service); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> recomputeCurrentQuotasTask(RecomputeCurrentQuotasService service) { + return RecomputeCurrentQuotasTaskDTO.module(service); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> eventDeadLettersRedeliveryAdditionalInformationForAll() { + return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForAll.MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> eventDeadLettersRedeliveryAdditionalInformationForGroup() { + return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForGroup.MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> eventDeadLettersRedeliveryAdditionalInformationForOne() { + return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForOne.MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeCurrentQuotasAdditionalInformation() { + return RecomputeCurrentQuotasTaskAdditionalInformationDTO.MODULE; + } +} diff --git a/server/container/guice/protocols/webadmin-mailqueue/src/main/java/org/apache/james/modules/server/MailQueueRoutesModule.java b/server/container/guice/protocols/webadmin-mailqueue/src/main/java/org/apache/james/modules/server/MailQueueRoutesModule.java index 127c53a..d8dd186 100644 --- a/server/container/guice/protocols/webadmin-mailqueue/src/main/java/org/apache/james/modules/server/MailQueueRoutesModule.java +++ b/server/container/guice/protocols/webadmin-mailqueue/src/main/java/org/apache/james/modules/server/MailQueueRoutesModule.java @@ -28,6 +28,8 @@ import com.google.inject.multibindings.Multibinder; public class MailQueueRoutesModule extends AbstractModule { @Override protected void configure() { + install(new MailQueueTaskSerializationModule()); + Multibinder<Routes> routesMultibinder = Multibinder.newSetBinder(binder(), Routes.class); routesMultibinder.addBinding().to(MailQueueRoutes.class); } diff --git a/server/container/guice/protocols/webadmin-mailqueue/src/main/java/org/apache/james/modules/server/MailQueueTaskSerializationModule.java b/server/container/guice/protocols/webadmin-mailqueue/src/main/java/org/apache/james/modules/server/MailQueueTaskSerializationModule.java new file mode 100644 index 0000000..14495ea --- /dev/null +++ b/server/container/guice/protocols/webadmin-mailqueue/src/main/java/org/apache/james/modules/server/MailQueueTaskSerializationModule.java @@ -0,0 +1,57 @@ +/**************************************************************** + * 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. * + ****************************************************************/ +package org.apache.james.modules.server; + +import org.apache.james.queue.api.MailQueueFactory; +import org.apache.james.queue.api.ManageableMailQueue; +import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.james.task.Task; +import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.webadmin.service.ClearMailQueueTaskAdditionalInformationDTO; +import org.apache.james.webadmin.service.ClearMailQueueTaskDTO; +import org.apache.james.webadmin.service.DeleteMailsFromMailQueueTaskAdditionalInformationDTO; +import org.apache.james.webadmin.service.DeleteMailsFromMailQueueTaskDTO; + +import com.google.inject.AbstractModule; +import com.google.inject.multibindings.ProvidesIntoSet; + +public class MailQueueTaskSerializationModule extends AbstractModule { + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> clearMailQueueTask(MailQueueFactory<? extends ManageableMailQueue> mailQueueFactory) { + return ClearMailQueueTaskDTO.module(mailQueueFactory); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> deleteMailsFromMailQueueTask(MailQueueFactory<? extends ManageableMailQueue> mailQueueFactory) { + return DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> clearMailQueueAdditionalInformation() { + return ClearMailQueueTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deleteMailsFromMailQueueAdditionalInformation() { + return DeleteMailsFromMailQueueTaskAdditionalInformationDTO.MODULE; + } +} diff --git a/server/container/guice/protocols/webadmin-mailrepository/src/main/java/org/apache/james/modules/server/MailRepositoriesRoutesModule.java b/server/container/guice/protocols/webadmin-mailrepository/src/main/java/org/apache/james/modules/server/MailRepositoriesRoutesModule.java index a4a4706..eb24141 100644 --- a/server/container/guice/protocols/webadmin-mailrepository/src/main/java/org/apache/james/modules/server/MailRepositoriesRoutesModule.java +++ b/server/container/guice/protocols/webadmin-mailrepository/src/main/java/org/apache/james/modules/server/MailRepositoriesRoutesModule.java @@ -28,6 +28,8 @@ import com.google.inject.multibindings.Multibinder; public class MailRepositoriesRoutesModule extends AbstractModule { @Override protected void configure() { + install(new MailRepositoryTaskSerializationModule()); + Multibinder<Routes> routesMultibinder = Multibinder.newSetBinder(binder(), Routes.class); routesMultibinder.addBinding().to(MailRepositoriesRoutes.class); } diff --git a/server/container/guice/protocols/webadmin-mailrepository/src/main/java/org/apache/james/modules/server/MailRepositoryTaskSerializationModule.java b/server/container/guice/protocols/webadmin-mailrepository/src/main/java/org/apache/james/modules/server/MailRepositoryTaskSerializationModule.java new file mode 100644 index 0000000..5f8d4c7 --- /dev/null +++ b/server/container/guice/protocols/webadmin-mailrepository/src/main/java/org/apache/james/modules/server/MailRepositoryTaskSerializationModule.java @@ -0,0 +1,71 @@ +/**************************************************************** + * 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. * + ****************************************************************/ +package org.apache.james.modules.server; + +import java.time.Clock; + +import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.james.task.Task; +import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.webadmin.service.ClearMailRepositoryTask; +import org.apache.james.webadmin.service.ClearMailRepositoryTaskAdditionalInformationDTO; +import org.apache.james.webadmin.service.ClearMailRepositoryTaskDTO; +import org.apache.james.webadmin.service.ReprocessingAllMailsTaskAdditionalInformationDTO; +import org.apache.james.webadmin.service.ReprocessingAllMailsTaskDTO; +import org.apache.james.webadmin.service.ReprocessingOneMailTaskAdditionalInformationDTO; +import org.apache.james.webadmin.service.ReprocessingOneMailTaskDTO; +import org.apache.james.webadmin.service.ReprocessingService; + +import com.google.inject.AbstractModule; +import com.google.inject.multibindings.ProvidesIntoSet; + +public class MailRepositoryTaskSerializationModule extends AbstractModule { + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> clearMailRepositoryTask(ClearMailRepositoryTask.Factory factory) { + return ClearMailRepositoryTaskDTO.module(factory); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> reprocessingAllMailsTask(ReprocessingService reprocessingService) { + return ReprocessingAllMailsTaskDTO.module(reprocessingService); + } + + @ProvidesIntoSet + public TaskDTOModule<? extends Task, ? extends TaskDTO> reprocessingOneMailsTask(ReprocessingService reprocessingService) { + return ReprocessingOneMailTaskDTO.module(Clock.systemUTC(), reprocessingService); + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> clearMailRepositoryAdditionalInformation() { + return ClearMailRepositoryTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> reprocessingAllMailsAdditionalInformation() { + return ReprocessingAllMailsTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> reprocessingOneMailAdditionalInformation() { + return ReprocessingOneMailTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
