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:43 UTC
[james-project] 06/17: JAMES-3194 Leverage named injection to
uncouple storage and presentation DTOs for additional tasks
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 <bt...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org