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 76ffc2106c1f4ed4c5275d91e04bcfbb8464d048 Author: Benoit Tellier <[email protected]> AuthorDate: Mon Jun 1 16:09:49 2020 +0700 JAMES-3194 Leverage named injection to uncouple storage and presentation DTOs for additional tasks --- .../org/apache/james/CassandraJamesServerMain.java | 2 + ...assandraConsistencyTaskSerializationModule.java | 39 ++++++++++++ .../java/org/apache/james/JPAJamesServerMain.java | 4 +- .../vault/VaultTaskSerializationModule.java | 28 +++++++++ .../server/JmapTaskSerializationModule.java | 14 +++++ .../WebAdminReIndexingTaskSerializationModule.java | 73 ++++++++++++++++++++++ ...badminMailboxExportTaskSerializationModule.java | 8 +++ .../WebadminMailboxTaskSerializationModule.java | 26 ++++++++ .../server/MailQueueTaskSerializationModule.java | 15 +++++ .../MailRepositoryTaskSerializationModule.java | 21 +++++++ .../james/modules/server/TaskRoutesModule.java | 19 ++++++ .../james/webadmin/dto/DTOModuleInjections.java} | 19 +----- .../apache/james/webadmin/routes/TasksRoutes.java | 5 +- .../WebAdminReprocessingContextInformationDTO.java | 29 ++++++--- ...lboxReindexingTaskAdditionalInformationDTO.java | 26 ++++---- ...UserReindexingTaskAdditionalInformationDTO.java | 21 ++++--- ...AdminReprocessingContextInformationDTOTest.java | 23 +++++-- .../WebAdminSingleMailboxReprocessingDTOTest.java | 15 ++++- .../dto/WebAdminUserReprocessingDTOTest.java | 17 +++-- 19 files changed, 346 insertions(+), 58 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 167bb2e..2c2e189 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 @@ -69,6 +69,7 @@ import org.apache.james.modules.server.ReIndexingModule; import org.apache.james.modules.server.SieveRoutesModule; import org.apache.james.modules.server.SwaggerRoutesModule; import org.apache.james.modules.server.TaskManagerModule; +import org.apache.james.modules.server.WebAdminReIndexingTaskSerializationModule; import org.apache.james.modules.server.WebAdminServerModule; import org.apache.james.modules.spamassassin.SpamAssassinListenerModule; import org.apache.james.modules.vault.DeletedMessageVaultRoutesModule; @@ -100,6 +101,7 @@ public class CassandraJamesServerMain implements JamesServerMain { new SieveRoutesModule(), new SwaggerRoutesModule(), new WebAdminServerModule(), + new WebAdminReIndexingTaskSerializationModule(), new MessagesRoutesModule()); public static final Module PROTOCOLS = Modules.combine( 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 index 2b565c2..7c1546b 100644 --- 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 @@ -42,10 +42,13 @@ 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.dto.DTOModuleInjections; +import org.apache.james.webadmin.dto.WebAdminMigrationTaskAdditionalInformationDTO; import org.apache.james.webadmin.service.CassandraMappingsSolveInconsistenciesTask; import com.google.inject.AbstractModule; import com.google.inject.multibindings.ProvidesIntoSet; +import com.google.inject.name.Named; public class CassandraConsistencyTaskSerializationModule extends AbstractModule { @ProvidesIntoSet @@ -83,28 +86,64 @@ public class CassandraConsistencyTaskSerializationModule extends AbstractModule return MappingsSourcesMigrationTaskAdditionalInformationDTO.serializationModule(CassandraMappingsSolveInconsistenciesTask.TYPE); } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminCassandraMappingsSolveInconsistenciesAdditionalInformation() { + return MappingsSourcesMigrationTaskAdditionalInformationDTO.serializationModule(CassandraMappingsSolveInconsistenciesTask.TYPE); + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> mailboxMergingAdditionalInformation() { return MailboxMergingTaskAdditionalInformationDTO.SERIALIZATION_MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminMailboxMergingAdditionalInformation() { + return MailboxMergingTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> solveMailboxInconsistenciesAdditionalInformation() { return SolveMailboxInconsistenciesTaskAdditionalInformationDTO.MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminSolveMailboxInconsistenciesAdditionalInformation() { + return SolveMailboxInconsistenciesTaskAdditionalInformationDTO.MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeMailboxCountersAdditionalInformation() { return RecomputeMailboxCountersTaskAdditionalInformationDTO.MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminRecomputeMailboxCountersAdditionalInformation() { + return RecomputeMailboxCountersTaskAdditionalInformationDTO.MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> migrationTaskAdditionalInformation() { return MigrationTaskAdditionalInformationDTO.serializationModule(); } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminMigrationTaskAdditionalInformation() { + return WebAdminMigrationTaskAdditionalInformationDTO.serializationModule(); + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> solveMessageInconsistenciesAdditionalInformation() { return SolveMessageInconsistenciesTaskAdditionalInformationDTO.MODULE; } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminSolveMessageInconsistenciesAdditionalInformation() { + return SolveMessageInconsistenciesTaskAdditionalInformationDTO.MODULE; + } } diff --git a/server/container/guice/jpa-guice/src/main/java/org/apache/james/JPAJamesServerMain.java b/server/container/guice/jpa-guice/src/main/java/org/apache/james/JPAJamesServerMain.java index 6e742c5..5895e24 100644 --- a/server/container/guice/jpa-guice/src/main/java/org/apache/james/JPAJamesServerMain.java +++ b/server/container/guice/jpa-guice/src/main/java/org/apache/james/JPAJamesServerMain.java @@ -47,6 +47,7 @@ import org.apache.james.modules.server.ReIndexingModule; import org.apache.james.modules.server.SieveRoutesModule; import org.apache.james.modules.server.SwaggerRoutesModule; import org.apache.james.modules.server.TaskManagerModule; +import org.apache.james.modules.server.WebAdminReIndexingTaskSerializationModule; import org.apache.james.modules.server.WebAdminServerModule; import org.apache.james.modules.spamassassin.SpamAssassinListenerModule; import org.apache.james.server.core.configuration.Configuration; @@ -65,7 +66,8 @@ public class JPAJamesServerMain implements JamesServerMain { new MailRepositoriesRoutesModule(), new ReIndexingModule(), new SwaggerRoutesModule(), - new SieveRoutesModule()); + new SieveRoutesModule(), + new WebAdminReIndexingTaskSerializationModule()); private static final Module PROTOCOLS = Modules.combine( new IMAPServerModule(), 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 index b59c3ce..cc7340e 100644 --- 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 @@ -28,6 +28,7 @@ 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.dto.DTOModuleInjections; import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultDeleteTask; import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultDeleteTaskAdditionalInformationDTO; import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultDeleteTaskDTO; @@ -35,9 +36,12 @@ import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultExportTaskAddi 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.james.webadmin.vault.routes.WebAdminDeletedMessagesVaultDeleteTaskAdditionalInformationDTO; +import org.apache.james.webadmin.vault.routes.WebAdminDeletedMessagesVaultRestoreTaskAdditionalInformationDTO; import com.google.inject.AbstractModule; import com.google.inject.multibindings.ProvidesIntoSet; +import com.google.inject.name.Named; public class VaultTaskSerializationModule extends AbstractModule { @ProvidesIntoSet @@ -65,18 +69,42 @@ public class VaultTaskSerializationModule extends AbstractModule { return BlobStoreVaultGarbageCollectionTaskAdditionalInformationDTO.MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminBlobStoreVaultGarbageCollectionAdditionalInformation() { + return BlobStoreVaultGarbageCollectionTaskAdditionalInformationDTO.MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deletedMessagesVaultDeleteAdditionalInformation(MessageId.Factory factory) { return DeletedMessagesVaultDeleteTaskAdditionalInformationDTO.serializationModule(factory); } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminDeletedMessagesVaultDeleteAdditionalInformation(MessageId.Factory factory) { + return WebAdminDeletedMessagesVaultDeleteTaskAdditionalInformationDTO.serializationModule(factory); + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deletedMessagesVaultExportAdditionalInformation() { return DeletedMessagesVaultExportTaskAdditionalInformationDTO.MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminDeletedMessagesVaultExportAdditionalInformation() { + return DeletedMessagesVaultExportTaskAdditionalInformationDTO.MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deletedMessagesVaultRestoreAdditionalInformation() { return DeletedMessagesVaultRestoreTaskAdditionalInformationDTO.MODULE; } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminDeletedMessagesVaultRestoreAdditionalInformation() { + return WebAdminDeletedMessagesVaultRestoreTaskAdditionalInformationDTO.MODULE; + } } 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 index de4fe7b..2c45797 100644 --- 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 @@ -29,9 +29,11 @@ import org.apache.james.webadmin.data.jmap.RecomputeAllFastViewProjectionItemsTa 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.dto.DTOModuleInjections; import com.google.inject.AbstractModule; import com.google.inject.multibindings.ProvidesIntoSet; +import com.google.inject.name.Named; public class JmapTaskSerializationModule extends AbstractModule { @ProvidesIntoSet @@ -49,8 +51,20 @@ public class JmapTaskSerializationModule extends AbstractModule { return RecomputeAllFastViewTaskAdditionalInformationDTO.SERIALIZATION_MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminRecomputeAllJmapPreviewsAdditionalInformation() { + return RecomputeAllFastViewTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeUserJmapPreviewsAdditionalInformation() { return RecomputeUserFastViewTaskAdditionalInformationDTO.SERIALIZATION_MODULE; } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminRecomputeUserJmapPreviewsAdditionalInformation() { + return RecomputeUserFastViewTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } } diff --git a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebAdminReIndexingTaskSerializationModule.java b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebAdminReIndexingTaskSerializationModule.java new file mode 100644 index 0000000..819ffd0 --- /dev/null +++ b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebAdminReIndexingTaskSerializationModule.java @@ -0,0 +1,73 @@ +/**************************************************************** + * 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.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.task.TaskExecutionDetails; +import org.apache.james.webadmin.dto.DTOModuleInjections; +import org.apache.james.webadmin.dto.WebAdminReprocessingContextInformationDTO; +import org.apache.james.webadmin.dto.WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO; +import org.apache.james.webadmin.dto.WebAdminUserReindexingTaskAdditionalInformationDTO; +import org.apache.mailbox.tools.indexer.MessageIdReindexingTaskAdditionalInformationDTO; +import org.apache.mailbox.tools.indexer.SingleMessageReindexingTaskAdditionalInformationDTO; + +import com.google.inject.AbstractModule; +import com.google.inject.multibindings.ProvidesIntoSet; +import com.google.inject.name.Named; + +public class WebAdminReIndexingTaskSerializationModule extends AbstractModule { + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> errorRecoveryAdditionalInformation(MailboxId.Factory mailboxIdFactory) { + return WebAdminReprocessingContextInformationDTO.WebAdminErrorRecoveryIndexationDTO.serializationModule(mailboxIdFactory); + } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> fullReindexAdditionalInformation(MailboxId.Factory mailboxIdFactory) { + return WebAdminReprocessingContextInformationDTO.WebAdminFullIndexationDTO.serializationModule(mailboxIdFactory); + } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> messageIdReindexingAdditionalInformation(MessageId.Factory messageIdFactory) { + return MessageIdReindexingTaskAdditionalInformationDTO.serializationModule(messageIdFactory); + } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> singleMailboxReindexingAdditionalInformation(MailboxId.Factory mailboxIdFactory) { + return WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory); + } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> singleMessageReindexingAdditionalInformation(MailboxId.Factory mailboxIdFactory) { + return SingleMessageReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory); + } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> userReindexingAdditionalInformation(MailboxId.Factory mailboxIdFactory) { + return WebAdminUserReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory); + } +} diff --git a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebadminMailboxExportTaskSerializationModule.java b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebadminMailboxExportTaskSerializationModule.java index 90f69af..7afff0b 100644 --- a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebadminMailboxExportTaskSerializationModule.java +++ b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebadminMailboxExportTaskSerializationModule.java @@ -24,12 +24,14 @@ 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.dto.DTOModuleInjections; import org.apache.james.webadmin.service.ExportService; import org.apache.james.webadmin.service.MailboxesExportTask; import org.apache.james.webadmin.service.MailboxesExportTaskAdditionalInformationDTO; import com.google.inject.AbstractModule; import com.google.inject.multibindings.ProvidesIntoSet; +import com.google.inject.name.Named; public class WebadminMailboxExportTaskSerializationModule extends AbstractModule { @ProvidesIntoSet @@ -41,4 +43,10 @@ public class WebadminMailboxExportTaskSerializationModule extends AbstractModule public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> mailboxesExportAdditionalInformation() { return MailboxesExportTaskAdditionalInformationDTO.SERIALIZATION_MODULE; } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminMailboxesExportAdditionalInformation() { + 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 index b7dbb5b..dd5ffbe 100644 --- 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 @@ -27,6 +27,7 @@ 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.dto.DTOModuleInjections; import org.apache.james.webadmin.service.EventDeadLettersRedeliverAllTaskDTO; import org.apache.james.webadmin.service.EventDeadLettersRedeliverGroupTaskDTO; import org.apache.james.webadmin.service.EventDeadLettersRedeliverOneTaskDTO; @@ -35,6 +36,7 @@ import org.apache.james.webadmin.service.EventDeadLettersRedeliveryTaskAdditiona import com.google.inject.AbstractModule; import com.google.inject.multibindings.ProvidesIntoSet; +import com.google.inject.name.Named; public class WebadminMailboxTaskSerializationModule extends AbstractModule { @ProvidesIntoSet @@ -62,18 +64,42 @@ public class WebadminMailboxTaskSerializationModule extends AbstractModule { return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForAll.MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminEventDeadLettersRedeliveryAdditionalInformationForAll() { + return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForAll.MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> eventDeadLettersRedeliveryAdditionalInformationForGroup() { return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForGroup.MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminEventDeadLettersRedeliveryAdditionalInformationForGroup() { + return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForGroup.MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> eventDeadLettersRedeliveryAdditionalInformationForOne() { return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForOne.MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminEventDeadLettersRedeliveryAdditionalInformationForOne() { + return EventDeadLettersRedeliveryTaskAdditionalInformationDTO.EventDeadLettersRedeliveryTaskAdditionalInformationForOne.MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> recomputeCurrentQuotasAdditionalInformation() { return RecomputeCurrentQuotasTaskAdditionalInformationDTO.MODULE; } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminRecomputeCurrentQuotasAdditionalInformation() { + return RecomputeCurrentQuotasTaskAdditionalInformationDTO.MODULE; + } } 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 index 14495ea..75c220d 100644 --- 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 @@ -26,13 +26,16 @@ 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.dto.DTOModuleInjections; 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 org.apache.james.webadmin.service.WebAdminDeleteMailsFromMailQueueTaskAdditionalInformationDTO; import com.google.inject.AbstractModule; import com.google.inject.multibindings.ProvidesIntoSet; +import com.google.inject.name.Named; public class MailQueueTaskSerializationModule extends AbstractModule { @ProvidesIntoSet @@ -50,8 +53,20 @@ public class MailQueueTaskSerializationModule extends AbstractModule { return ClearMailQueueTaskAdditionalInformationDTO.SERIALIZATION_MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminClearMailQueueAdditionalInformation() { + return ClearMailQueueTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> deleteMailsFromMailQueueAdditionalInformation() { return DeleteMailsFromMailQueueTaskAdditionalInformationDTO.MODULE; } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminDeleteMailsFromMailQueueAdditionalInformation() { + return WebAdminDeleteMailsFromMailQueueTaskAdditionalInformationDTO.MODULE; + } } 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 index 5f8d4c7..1af8fe9 100644 --- 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 @@ -26,6 +26,7 @@ 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.dto.DTOModuleInjections; import org.apache.james.webadmin.service.ClearMailRepositoryTask; import org.apache.james.webadmin.service.ClearMailRepositoryTaskAdditionalInformationDTO; import org.apache.james.webadmin.service.ClearMailRepositoryTaskDTO; @@ -34,9 +35,11 @@ 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.service.WebAdminClearMailRepositoryTaskAdditionalInformationDTO; import com.google.inject.AbstractModule; import com.google.inject.multibindings.ProvidesIntoSet; +import com.google.inject.name.Named; public class MailRepositoryTaskSerializationModule extends AbstractModule { @ProvidesIntoSet @@ -59,13 +62,31 @@ public class MailRepositoryTaskSerializationModule extends AbstractModule { return ClearMailRepositoryTaskAdditionalInformationDTO.SERIALIZATION_MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminClearMailRepositoryAdditionalInformation() { + return WebAdminClearMailRepositoryTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> reprocessingAllMailsAdditionalInformation() { return ReprocessingAllMailsTaskAdditionalInformationDTO.SERIALIZATION_MODULE; } + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminReprocessingAllMailsAdditionalInformation() { + return ReprocessingAllMailsTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } + @ProvidesIntoSet public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> reprocessingOneMailAdditionalInformation() { return ReprocessingOneMailTaskAdditionalInformationDTO.SERIALIZATION_MODULE; } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @ProvidesIntoSet + public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO> webAdminReprocessingOneMailAdditionalInformation() { + return ReprocessingOneMailTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + } } diff --git a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/TaskRoutesModule.java b/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/TaskRoutesModule.java index 390bb17..cd5a10f 100644 --- a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/TaskRoutesModule.java +++ b/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/TaskRoutesModule.java @@ -19,12 +19,22 @@ package org.apache.james.modules.server; +import java.util.Set; + +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.task.TaskExecutionDetails; import org.apache.james.webadmin.Routes; +import org.apache.james.webadmin.dto.DTOModuleInjections; import org.apache.james.webadmin.routes.TasksRoutes; import com.google.inject.AbstractModule; +import com.google.inject.Provides; import com.google.inject.Scopes; +import com.google.inject.Singleton; import com.google.inject.multibindings.Multibinder; +import com.google.inject.name.Named; public class TaskRoutesModule extends AbstractModule { @Override @@ -34,4 +44,13 @@ public class TaskRoutesModule extends AbstractModule { Multibinder<Routes> routesMultibinder = Multibinder.newSetBinder(binder(), Routes.class); routesMultibinder.addBinding().to(TasksRoutes.class); } + + @Named(DTOModuleInjections.WEBADMIN_DTO) + @Provides + @Singleton + public DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationDTOConverter( + @Named(DTOModuleInjections.WEBADMIN_DTO) Set<AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends AdditionalInformationDTO>> modules) { + + return new DTOConverter<>(modules); + } } diff --git a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/TaskRoutesModule.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/dto/DTOModuleInjections.java similarity index 67% copy from server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/TaskRoutesModule.java copy to server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/dto/DTOModuleInjections.java index 390bb17..2f4055c 100644 --- a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/TaskRoutesModule.java +++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/dto/DTOModuleInjections.java @@ -17,21 +17,8 @@ * under the License. * ****************************************************************/ -package org.apache.james.modules.server; +package org.apache.james.webadmin.dto; -import org.apache.james.webadmin.Routes; -import org.apache.james.webadmin.routes.TasksRoutes; - -import com.google.inject.AbstractModule; -import com.google.inject.Scopes; -import com.google.inject.multibindings.Multibinder; - -public class TaskRoutesModule extends AbstractModule { - @Override - protected void configure() { - bind(TasksRoutes.class).in(Scopes.SINGLETON); - - Multibinder<Routes> routesMultibinder = Multibinder.newSetBinder(binder(), Routes.class); - routesMultibinder.addBinding().to(TasksRoutes.class); - } +public interface DTOModuleInjections { + String WEBADMIN_DTO = "webadmin-dto"; } diff --git a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java index 9316ad7..35ad151 100644 --- a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java +++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java @@ -26,6 +26,7 @@ import java.util.Optional; import java.util.function.Supplier; import javax.inject.Inject; +import javax.inject.Named; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -39,6 +40,7 @@ import org.apache.james.task.TaskManager; import org.apache.james.task.TaskNotFoundException; import org.apache.james.util.DurationParser; import org.apache.james.webadmin.Routes; +import org.apache.james.webadmin.dto.DTOModuleInjections; import org.apache.james.webadmin.dto.ExecutionDetailsDto; import org.apache.james.webadmin.utils.ErrorResponder; import org.apache.james.webadmin.utils.JsonTransformer; @@ -69,7 +71,8 @@ public class TasksRoutes implements Routes { private final DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationDTOConverter; @Inject - public TasksRoutes(TaskManager taskManager, JsonTransformer jsonTransformer, DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationDTOConverter) { + public TasksRoutes(TaskManager taskManager, JsonTransformer jsonTransformer, + @Named(DTOModuleInjections.WEBADMIN_DTO) DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> additionalInformationDTOConverter) { this.taskManager = taskManager; this.jsonTransformer = jsonTransformer; this.additionalInformationDTOConverter = additionalInformationDTOConverter; diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTO.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTO.java index 0c67a50..1b43b3e 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTO.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTO.java @@ -19,9 +19,11 @@ package org.apache.james.webadmin.dto; import java.time.Instant; +import java.util.List; import org.apache.commons.lang3.NotImplementedException; import org.apache.james.json.DTOModule; +import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.server.task.json.dto.AdditionalInformationDTO; import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; @@ -29,6 +31,8 @@ import org.apache.mailbox.tools.indexer.ErrorRecoveryIndexationTask; import org.apache.mailbox.tools.indexer.FullReindexingTask; import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO; +import com.github.steveash.guavate.Guavate; + public class WebAdminReprocessingContextInformationDTO implements AdditionalInformationDTO { public static class WebAdminErrorRecoveryIndexationDTO extends WebAdminReprocessingContextInformationDTO { public static AdditionalInformationDTOModule<ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask, WebAdminErrorRecoveryIndexationDTO> serializationModule(MailboxId.Factory mailboxIdFactory) { @@ -41,14 +45,14 @@ public class WebAdminReprocessingContextInformationDTO implements AdditionalInfo type, details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(), - SerializableReIndexingExecutionFailures.from(details.failures()), + details.failures(), details.timestamp())) .typeName(ErrorRecoveryIndexationTask.PREVIOUS_FAILURES_INDEXING.asString()) .withFactory(AdditionalInformationDTOModule::new); } WebAdminErrorRecoveryIndexationDTO(String type, int successfullyReprocessedMailCount, int failedReprocessedMailCount, - SerializableReIndexingExecutionFailures failures, Instant timestamp) { + ReIndexingExecutionFailures failures, Instant timestamp) { super(type, successfullyReprocessedMailCount, failedReprocessedMailCount, failures, timestamp); } } @@ -64,14 +68,14 @@ public class WebAdminReprocessingContextInformationDTO implements AdditionalInfo type, details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(), - SerializableReIndexingExecutionFailures.from(details.failures()), + details.failures(), details.timestamp())) .typeName(FullReindexingTask.FULL_RE_INDEXING.asString()) .withFactory(AdditionalInformationDTOModule::new); } WebAdminFullIndexationDTO(String type, int successfullyReprocessedMailCount, int failedReprocessedMailCount, - SerializableReIndexingExecutionFailures failures, Instant timestamp) { + ReIndexingExecutionFailures failures, Instant timestamp) { super(type, successfullyReprocessedMailCount, failedReprocessedMailCount, failures, timestamp); } @@ -80,16 +84,21 @@ public class WebAdminReprocessingContextInformationDTO implements AdditionalInfo protected final String type; protected final int successfullyReprocessedMailCount; protected final int failedReprocessedMailCount; - protected final SerializableReIndexingExecutionFailures failures; + protected final SerializableReIndexingExecutionFailures messageFailures; + private final List<String> mailboxFailures; protected final Instant timestamp; WebAdminReprocessingContextInformationDTO(String type, int successfullyReprocessedMailCount, int failedReprocessedMailCount, - SerializableReIndexingExecutionFailures failures, Instant timestamp) { + ReIndexingExecutionFailures failures, + Instant timestamp) { this.type = type; this.successfullyReprocessedMailCount = successfullyReprocessedMailCount; this.failedReprocessedMailCount = failedReprocessedMailCount; - this.failures = failures; + this.messageFailures = SerializableReIndexingExecutionFailures.from(failures); + this.mailboxFailures = failures.mailboxFailures().stream() + .map(MailboxId::serialize) + .collect(Guavate.toImmutableList()); this.timestamp = timestamp; } @@ -102,7 +111,11 @@ public class WebAdminReprocessingContextInformationDTO implements AdditionalInfo } public SerializableReIndexingExecutionFailures getFailures() { - return failures; + return messageFailures; + } + + public List<String> getMailboxFailures() { + return mailboxFailures; } public Instant getTimestamp() { diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO.java index 6574e7a..199177c 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO.java @@ -19,16 +19,17 @@ package org.apache.james.webadmin.dto; import java.time.Instant; +import java.util.List; import org.apache.commons.lang3.NotImplementedException; import org.apache.james.json.DTOModule; +import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.server.task.json.dto.AdditionalInformationDTO; import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTask; import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; public class WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO implements AdditionalInformationDTO { @@ -43,7 +44,7 @@ public class WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO impleme details.getMailboxId(), details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(), - SerializableReIndexingExecutionFailures.from(details.failures()), + details.failures(), details.timestamp())) .typeName(SingleMailboxReindexingTask.MAILBOX_RE_INDEXING.asString()) .withFactory(AdditionalInformationDTOModule::new); @@ -53,18 +54,15 @@ public class WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO impleme private final String mailboxId; @JsonCreator - private WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO(@JsonProperty("type") String type, - @JsonProperty("mailboxId") String mailboxId, - @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount, - @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount, - @JsonProperty("failures") SerializableReIndexingExecutionFailures failures, - @JsonProperty("timestamp") Instant timestamp) { + private WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO(String type, + String mailboxId, + int successfullyReprocessedMailCount, + int failedReprocessedMailCount, + ReIndexingExecutionFailures failures, + Instant timestamp) { this.mailboxId = mailboxId; this.reprocessingContextInformationDTO = new WebAdminReprocessingContextInformationDTO( - type, - successfullyReprocessedMailCount, - failedReprocessedMailCount, failures, - timestamp); + type, successfullyReprocessedMailCount, failedReprocessedMailCount, failures, timestamp); } @Override @@ -91,4 +89,8 @@ public class WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO impleme public SerializableReIndexingExecutionFailures getFailures() { return reprocessingContextInformationDTO.getFailures(); } + + public List<String> getMailboxFailures() { + return reprocessingContextInformationDTO.getMailboxFailures(); + } } diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminUserReindexingTaskAdditionalInformationDTO.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminUserReindexingTaskAdditionalInformationDTO.java index 9d5c17a..7991a04 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminUserReindexingTaskAdditionalInformationDTO.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminUserReindexingTaskAdditionalInformationDTO.java @@ -19,16 +19,17 @@ package org.apache.james.webadmin.dto; import java.time.Instant; +import java.util.List; import org.apache.commons.lang3.NotImplementedException; import org.apache.james.json.DTOModule; +import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.server.task.json.dto.AdditionalInformationDTO; import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; import org.apache.mailbox.tools.indexer.UserReindexingTask; import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; public class WebAdminUserReindexingTaskAdditionalInformationDTO implements AdditionalInformationDTO { @@ -43,7 +44,7 @@ public class WebAdminUserReindexingTaskAdditionalInformationDTO implements Addit details.getUsername(), details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(), - SerializableReIndexingExecutionFailures.from(details.failures()), + details.failures(), details.timestamp())) .typeName(UserReindexingTask.USER_RE_INDEXING.asString()) .withFactory(AdditionalInformationDTOModule::new); @@ -53,12 +54,12 @@ public class WebAdminUserReindexingTaskAdditionalInformationDTO implements Addit private final String username; @JsonCreator - private WebAdminUserReindexingTaskAdditionalInformationDTO(@JsonProperty("type") String type, - @JsonProperty("username") String username, - @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount, - @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount, - @JsonProperty("failures") SerializableReIndexingExecutionFailures failures, - @JsonProperty("timestamp") Instant timestamp) { + private WebAdminUserReindexingTaskAdditionalInformationDTO(String type, + String username, + int successfullyReprocessedMailCount, + int failedReprocessedMailCount, + ReIndexingExecutionFailures failures, + Instant timestamp) { this.username = username; this.reprocessingContextInformationDTO = new WebAdminReprocessingContextInformationDTO( type, @@ -90,4 +91,8 @@ public class WebAdminUserReindexingTaskAdditionalInformationDTO implements Addit public SerializableReIndexingExecutionFailures getFailures() { return reprocessingContextInformationDTO.getFailures(); } + + public List<String> getMailboxFailures() { + return reprocessingContextInformationDTO.getMailboxFailures(); + } } diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTOTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTOTest.java index c8d25af..cf0e6da 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTOTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTOTest.java @@ -19,7 +19,6 @@ package org.apache.james.webadmin.dto; import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson; -import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.time.Instant; @@ -29,6 +28,7 @@ import org.apache.james.json.JsonGenericSerializer; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.indexer.ReIndexer; import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures; +import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.TestId; import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO; import org.junit.jupiter.api.Test; @@ -39,8 +39,20 @@ import com.google.common.collect.ImmutableList; class WebAdminReprocessingContextInformationDTOTest { private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); - private final String serializedErrorRecoveryAdditionalInformation = "{\"type\":\"error-recovery-indexation\",\"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":{\"1\":[{\"uid\":10}],\"2\":[{\"uid\":20}]},\"timestamp\":\"2018-11-13T12:00:55Z\"}"; - private final String serializedFullAdditionalInformation = "{\"type\":\"full-reindexing\",\"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":{\"1\":[{\"uid\":10}],\"2\":[{\"uid\":20}]},\"timestamp\":\"2018-11-13T12:00:55Z\"}"; + private final String serializedErrorRecoveryAdditionalInformation = "{" + + " \"type\":\"error-recovery-indexation\"," + + " \"successfullyReprocessedMailCount\":42," + + " \"failedReprocessedMailCount\":2," + + " \"failures\":{\"1\":[{\"uid\":10}],\"2\":[{\"uid\":20}]}," + + " \"mailboxFailures\":[\"3\", \"4\"]," + + " \"timestamp\":\"2018-11-13T12:00:55Z\"}"; + private final String serializedFullAdditionalInformation = "{" + + " \"type\":\"full-reindexing\"," + + " \"successfullyReprocessedMailCount\":42," + + " \"failedReprocessedMailCount\":2," + + " \"failures\":{\"1\":[{\"uid\":10}],\"2\":[{\"uid\":20}]}," + + " \"mailboxFailures\":[\"3\", \"4\"]," + + " \"timestamp\":\"2018-11-13T12:00:55Z\"}"; private final TestId mailboxId = TestId.of(1L); private final MessageUid messageUid = MessageUid.of(10L); @@ -48,8 +60,9 @@ class WebAdminReprocessingContextInformationDTOTest { private final TestId mailboxId2 = TestId.of(2L); private final MessageUid messageUid2 = MessageUid.of(20L); private final ReIndexingExecutionFailures.ReIndexingFailure indexingFailure2 = new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2); - private final List<ReIndexingExecutionFailures.ReIndexingFailure> failures = ImmutableList.of(indexingFailure, indexingFailure2); - private final ReIndexingExecutionFailures executionFailures = new ReIndexingExecutionFailures(failures); + private final List<ReIndexingExecutionFailures.ReIndexingFailure> messageFailures = ImmutableList.of(indexingFailure, indexingFailure2); + private final ImmutableList<MailboxId> mailboxFailures = ImmutableList.of(TestId.of(3), TestId.of(4)); + private final ReIndexingExecutionFailures executionFailures = new ReIndexingExecutionFailures(messageFailures, mailboxFailures); @Test void shouldSerializeErrorRecoveryAdditionalInformation() throws Exception { diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReprocessingDTOTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReprocessingDTOTest.java index 30bd411..02f4795 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReprocessingDTOTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReprocessingDTOTest.java @@ -28,6 +28,7 @@ import org.apache.james.json.JsonGenericSerializer; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.indexer.ReIndexer; import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures; +import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.TestId; import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO; import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTask; @@ -39,7 +40,14 @@ import com.google.common.collect.ImmutableList; class WebAdminSingleMailboxReprocessingDTOTest { private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); - private final String serializedAdditionalInformation = "{\"type\":\"mailbox-reindexing\",\"mailboxId\":\"1\",\"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":{\"1\":[{\"uid\":10}],\"2\":[{\"uid\":20}]},\"timestamp\":\"2018-11-13T12:00:55Z\"}"; + private final String serializedAdditionalInformation = "{" + + " \"type\":\"mailbox-reindexing\"," + + " \"mailboxId\":\"1\"," + + " \"successfullyReprocessedMailCount\":42," + + " \"failedReprocessedMailCount\":2," + + " \"failures\":{\"1\":[{\"uid\":10}],\"2\":[{\"uid\":20}]}," + + " \"mailboxFailures\":[\"3\", \"4\"]," + + " \"timestamp\":\"2018-11-13T12:00:55Z\"}"; private final TestId mailboxId = TestId.of(1L); private final MessageUid messageUid = MessageUid.of(10L); @@ -47,8 +55,9 @@ class WebAdminSingleMailboxReprocessingDTOTest { private final TestId mailboxId2 = TestId.of(2L); private final MessageUid messageUid2 = MessageUid.of(20L); private final ReIndexingExecutionFailures.ReIndexingFailure indexingFailure2 = new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2); - private final List<ReIndexingExecutionFailures.ReIndexingFailure> failures = ImmutableList.of(indexingFailure, indexingFailure2); - private final ReIndexingExecutionFailures executionFailures = new ReIndexingExecutionFailures(failures); + private final List<ReIndexingExecutionFailures.ReIndexingFailure> messageFailures = ImmutableList.of(indexingFailure, indexingFailure2); + private final ImmutableList<MailboxId> mailboxFailures = ImmutableList.of(TestId.of(3), TestId.of(4)); + private final ReIndexingExecutionFailures executionFailures = new ReIndexingExecutionFailures(messageFailures, mailboxFailures); @Test void shouldSerializeAdditionalInformation() throws Exception { diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminUserReprocessingDTOTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminUserReprocessingDTOTest.java index 9ea55a7..48acc11 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminUserReprocessingDTOTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminUserReprocessingDTOTest.java @@ -29,18 +29,26 @@ import org.apache.james.json.JsonGenericSerializer; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.indexer.ReIndexer; import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures; +import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.TestId; -import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTask; import org.apache.mailbox.tools.indexer.UserReindexingTask; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.databind.exc.InvalidDefinitionException; import com.google.common.collect.ImmutableList; +import net.javacrumbs.jsonunit.core.Option; + class WebAdminUserReprocessingDTOTest { private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); - private final String serializedAdditionalInformation = "{\"type\":\"user-reindexing\",\"username\":\"bob\",\"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":{\"1\":[{\"uid\":10}],\"2\":[{\"uid\":20}]},\"timestamp\":\"2018-11-13T12:00:55Z\"}"; + private final String serializedAdditionalInformation = "{" + + " \"type\":\"user-reindexing\",\"username\":\"bob\"," + + " \"successfullyReprocessedMailCount\":42," + + " \"failedReprocessedMailCount\":2," + + " \"failures\":{\"1\":[{\"uid\":10}],\"2\":[{\"uid\":20}]}," + + " \"mailboxFailures\":[\"3\", \"4\"]," + + " \"timestamp\":\"2018-11-13T12:00:55Z\"}"; private final TestId mailboxId = TestId.of(1L); private final MessageUid messageUid = MessageUid.of(10L); @@ -48,8 +56,9 @@ class WebAdminUserReprocessingDTOTest { private final TestId mailboxId2 = TestId.of(2L); private final MessageUid messageUid2 = MessageUid.of(20L); private final ReIndexingExecutionFailures.ReIndexingFailure indexingFailure2 = new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2); - private final List<ReIndexingExecutionFailures.ReIndexingFailure> failures = ImmutableList.of(indexingFailure, indexingFailure2); - private final ReIndexingExecutionFailures executionFailures = new ReIndexingExecutionFailures(failures); + private final List<ReIndexingExecutionFailures.ReIndexingFailure> messageFailures = ImmutableList.of(indexingFailure, indexingFailure2); + private final ImmutableList<MailboxId> mailboxFailures = ImmutableList.of(TestId.of(3), TestId.of(4)); + private final ReIndexingExecutionFailures executionFailures = new ReIndexingExecutionFailures(messageFailures, mailboxFailures); @Test void shouldSerializeAdditionalInformation() throws Exception { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
