You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2020/06/11 15:25:41 UTC
[james-project] 04/17: JAMES-3194 Inject DTOConverter for every
product
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 <bt...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org