This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 1ce3b28b8f62160dbd70951c20c8b83f8387e110 Author: Rémi Kowalski <[email protected]> AuthorDate: Fri Aug 30 15:05:18 2019 +0200 JAMES-2813 strongly type TaskType --- .../cassandra/migration/MigrationTask.java | 5 ++- .../mail/migration/MailboxPathV2Migration.java | 5 ++- .../cassandra/mail/task/MailboxMergingTask.java | 7 ++-- .../blob/BlobStoreVaultGarbageCollectionTask.java | 5 ++- .../tools/indexer/ErrorRecoveryIndexationTask.java | 7 ++-- .../mailbox/tools/indexer/FullReindexingTask.java | 7 ++-- .../tools/indexer/MessageIdReIndexerImpl.java | 5 ++- .../tools/indexer/SingleMailboxReindexingTask.java | 7 ++-- .../tools/indexer/SingleMessageReindexingTask.java | 7 ++-- .../mailbox/tools/indexer/UserReindexingTask.java | 7 ++-- .../migration/MappingsSourcesMigration.java | 9 ++--- .../CassandraMappingsSolveInconsistenciesTask.java | 7 ++-- .../james/webadmin/dto/ExecutionDetailsDto.java | 2 +- .../routes/DeletedMessagesVaultDeleteTask.java | 7 ++-- .../routes/DeletedMessagesVaultExportTask.java | 7 ++-- .../routes/DeletedMessagesVaultRestoreTask.java | 7 ++-- .../WebadminApiQuerySerializationContractTest.java | 2 +- .../service/EventDeadLettersRedeliverTask.java | 7 ++-- .../service/PreviousReIndexingService.java | 5 ++- .../james/webadmin/service/ClearMailQueueTask.java | 7 ++-- .../service/DeleteMailsFromMailQueueTask.java | 7 ++-- .../webadmin/service/ClearMailRepositoryTask.java | 7 ++-- .../webadmin/service/ReprocessingAllMailsTask.java | 7 ++-- .../webadmin/service/ReprocessingOneMailTask.java | 7 ++-- ...assandraTaskExecutionDetailsProjectionDAO.scala | 8 ++-- .../apache/james/server/task/json/TestTask.java | 5 ++- .../src/main/java/org/apache/james/task/Task.java | 4 +- .../java/org/apache/james/task/TaskType.java} | 44 ++++++++++++++++------ .../apache/james/task/TaskExecutionDetails.scala | 4 +- .../java/org/apache/james/task/CompletedTask.java | 4 +- .../java/org/apache/james/task/FailedTask.java | 4 +- .../org/apache/james/task/MemoryReferenceTask.java | 4 +- ...{MemoryReferenceTask.java => TaskTypeTest.java} | 34 ++++++++--------- .../java/org/apache/james/task/ThrowingTask.java | 4 +- .../james/task/TaskExecutionDetailsFixture.scala | 9 +++-- 35 files changed, 158 insertions(+), 116 deletions(-) diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTask.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTask.java index 632fdc0..538a6f5 100644 --- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTask.java +++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTask.java @@ -34,6 +34,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.task.TaskType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -96,7 +97,7 @@ public class MigrationTask implements Task { private static final Logger LOGGER = LoggerFactory.getLogger(MigrationTask.class); - public static final String CASSANDRA_MIGRATION = "CassandraMigration"; + public static final TaskType CASSANDRA_MIGRATION = TaskType.of("CassandraMigration"); public static class Details implements TaskExecutionDetails.AdditionalInformation { private final SchemaVersion toVersion; @@ -170,7 +171,7 @@ public class MigrationTask implements Task { } @Override - public String type() { + public TaskType type() { return CASSANDRA_MIGRATION; } diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2Migration.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2Migration.java index a063457..d3cb735 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2Migration.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2Migration.java @@ -30,6 +30,7 @@ import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathDAOImpl; import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathV2DAO; import org.apache.james.task.Task; import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.task.TaskType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -96,8 +97,8 @@ public class MailboxPathV2Migration implements Migration { } @Override - public String type() { - return "Cassandra_mailboxPathV2Migration"; + public TaskType type() { + return TaskType.of("Cassandra_mailboxPathV2Migration"); } @Override diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTask.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTask.java index 30ffb3b..87692a0 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTask.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTask.java @@ -29,11 +29,12 @@ import org.apache.james.server.task.json.dto.TaskDTO; import org.apache.james.server.task.json.dto.TaskDTOModule; import org.apache.james.task.Task; import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.task.TaskType; import com.fasterxml.jackson.annotation.JsonProperty; public class MailboxMergingTask implements Task { - public static final String MAILBOX_MERGING = "mailboxMerging"; + public static final TaskType MAILBOX_MERGING = TaskType.of("mailboxMerging"); public static class Details implements TaskExecutionDetails.AdditionalInformation { private final CassandraId oldMailboxId; @@ -165,7 +166,7 @@ public class MailboxMergingTask implements Task { .convertToDTO(MailboxMergingTaskDTO.class) .toDomainObjectConverter(dto -> dto.toDTO(taskRunner)) .toDTOConverter(MailboxMergingTaskDTO::fromDTO) - .typeName(MAILBOX_MERGING) + .typeName(MAILBOX_MERGING.asString()) .withFactory(TaskDTOModule::new); private final MailboxMergingTaskRunner taskRunner; @@ -186,7 +187,7 @@ public class MailboxMergingTask implements Task { } @Override - public String type() { + public TaskType type() { return MAILBOX_MERGING; } diff --git a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreVaultGarbageCollectionTask.java b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreVaultGarbageCollectionTask.java index ec616c5..0d3c014 100644 --- a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreVaultGarbageCollectionTask.java +++ b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/blob/BlobStoreVaultGarbageCollectionTask.java @@ -28,6 +28,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; import org.apache.james.blob.api.BucketName; import org.apache.james.task.Task; import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.task.TaskType; import com.github.steveash.guavate.Guavate; @@ -57,7 +58,7 @@ public class BlobStoreVaultGarbageCollectionTask implements Task { } } - public static final String TYPE = "deletedMessages/blobStoreBasedGarbageCollection"; + private static final TaskType TYPE = TaskType.of("deletedMessages/blobStoreBasedGarbageCollection"); private final Flux<BucketName> retentionOperation; private final ZonedDateTime beginningOfRetentionPeriod; @@ -81,7 +82,7 @@ public class BlobStoreVaultGarbageCollectionTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java index a7dc60e..01bf9b4 100644 --- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java +++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java @@ -35,13 +35,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.task.TaskType; import com.fasterxml.jackson.annotation.JsonProperty; import com.github.steveash.guavate.Guavate; import com.google.common.collect.Multimap; public class ErrorRecoveryIndexationTask implements Task { - private static final String PREVIOUS_FAILURES_INDEXING = "ErrorRecoveryIndexation"; + private static final TaskType PREVIOUS_FAILURES_INDEXING = TaskType.of("ErrorRecoveryIndexation"); public static final Function<ErrorRecoveryIndexationTask.Factory, TaskDTOModule<ErrorRecoveryIndexationTask, ErrorRecoveryIndexationTaskDTO>> MODULE = (factory) -> DTOModule @@ -49,7 +50,7 @@ public class ErrorRecoveryIndexationTask implements Task { .convertToDTO(ErrorRecoveryIndexationTask.ErrorRecoveryIndexationTaskDTO.class) .toDomainObjectConverter(factory::create) .toDTOConverter(ErrorRecoveryIndexationTask.ErrorRecoveryIndexationTaskDTO::of) - .typeName(PREVIOUS_FAILURES_INDEXING) + .typeName(PREVIOUS_FAILURES_INDEXING.asString()) .withFactory(TaskDTOModule::new); public static class ErrorRecoveryIndexationTaskDTO implements TaskDTO { @@ -156,7 +157,7 @@ public class ErrorRecoveryIndexationTask implements Task { } @Override - public String type() { + public TaskType type() { return PREVIOUS_FAILURES_INDEXING; } diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java index c6a8491..b30cb5d 100644 --- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java +++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java @@ -30,12 +30,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.task.TaskType; import com.fasterxml.jackson.annotation.JsonProperty; public class FullReindexingTask implements Task { - public static final String FULL_RE_INDEXING = "FullReIndexing"; + public static final TaskType FULL_RE_INDEXING = TaskType.of("FullReIndexing"); private final ReIndexerPerformer reIndexerPerformer; private final ReprocessingContextInformation additionalInformation; @@ -47,7 +48,7 @@ public class FullReindexingTask implements Task { .convertToDTO(FullReindexingTask.FullReindexingTaskDTO.class) .toDomainObjectConverter(factory::create) .toDTOConverter((task, type) -> new FullReindexingTaskDTO(type)) - .typeName(FULL_RE_INDEXING) + .typeName(FULL_RE_INDEXING.asString()) .withFactory(TaskDTOModule::new); public static class FullReindexingTaskDTO implements TaskDTO { @@ -96,7 +97,7 @@ public class FullReindexingTask implements Task { } @Override - public String type() { + public TaskType type() { return FULL_RE_INDEXING; } diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImpl.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImpl.java index 06ef559..27ae4f4 100644 --- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImpl.java +++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImpl.java @@ -35,6 +35,7 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex; import org.apache.james.task.Task; import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.task.TaskType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,7 +45,7 @@ public class MessageIdReIndexerImpl implements MessageIdReIndexer { public static class MessageIdReIndexingTask implements Task { private static final Logger LOGGER = LoggerFactory.getLogger(MessageIdReIndexingTask.class); - public static final String TYPE = "MessageIdReIndexingTask"; + public static final TaskType TYPE = new TaskType("MessageIdReIndexingTask"); public final class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation { private final MessageId messageId; @@ -102,7 +103,7 @@ public class MessageIdReIndexerImpl implements MessageIdReIndexer { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java index e76f2f8..71cb0db 100644 --- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java +++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java @@ -30,6 +30,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.task.TaskType; import com.fasterxml.jackson.annotation.JsonProperty; @@ -60,7 +61,7 @@ public class SingleMailboxReindexingTask implements Task { } - public static final String MAILBOX_RE_INDEXING = "mailboxReIndexing"; + public static final TaskType MAILBOX_RE_INDEXING = TaskType.of("mailboxReIndexing"); public static final Function<Factory, TaskDTOModule<SingleMailboxReindexingTask, SingleMailboxReindexingTaskDTO>> MODULE = (factory) -> DTOModule @@ -68,7 +69,7 @@ public class SingleMailboxReindexingTask implements Task { .convertToDTO(SingleMailboxReindexingTaskDTO.class) .toDomainObjectConverter(factory::create) .toDTOConverter(SingleMailboxReindexingTaskDTO::of) - .typeName(MAILBOX_RE_INDEXING) + .typeName(MAILBOX_RE_INDEXING.asString()) .withFactory(TaskDTOModule::new); public static class AdditionalInformation extends ReprocessingContextInformation { @@ -124,7 +125,7 @@ public class SingleMailboxReindexingTask implements Task { } @Override - public String type() { + public TaskType type() { return MAILBOX_RE_INDEXING; } diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java index 83b1be2..19b6ff0 100644 --- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java +++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java @@ -32,6 +32,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.task.TaskType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +41,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class SingleMessageReindexingTask implements Task { private static final Logger LOGGER = LoggerFactory.getLogger(SingleMessageReindexingTask.class); - public static final String MESSAGE_RE_INDEXING = "messageReIndexing"; + public static final TaskType MESSAGE_RE_INDEXING = TaskType.of("messageReIndexing"); public static final Function<SingleMessageReindexingTask.Factory, TaskDTOModule<SingleMessageReindexingTask, SingleMessageReindexingTask.SingleMessageReindexingTaskDTO>> MODULE = (factory) -> DTOModule @@ -48,7 +49,7 @@ public class SingleMessageReindexingTask implements Task { .convertToDTO(SingleMessageReindexingTask.SingleMessageReindexingTaskDTO.class) .toDomainObjectConverter(factory::create) .toDTOConverter(SingleMessageReindexingTask.SingleMessageReindexingTaskDTO::of) - .typeName(MESSAGE_RE_INDEXING) + .typeName(MESSAGE_RE_INDEXING.asString()) .withFactory(TaskDTOModule::new); @@ -142,7 +143,7 @@ public class SingleMessageReindexingTask implements Task { } @Override - public String type() { + public TaskType type() { return MESSAGE_RE_INDEXING; } diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java index af8b329..9be6734 100644 --- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java +++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java @@ -31,12 +31,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.task.TaskType; import com.fasterxml.jackson.annotation.JsonProperty; public class UserReindexingTask implements Task { - public static final String USER_RE_INDEXING = "userReIndexing"; + public static final TaskType USER_RE_INDEXING = TaskType.of("userReIndexing"); public static final Function<UserReindexingTask.Factory, TaskDTOModule<UserReindexingTask, UserReindexingTask.UserReindexingTaskDTO>> MODULE = (factory) -> DTOModule @@ -44,7 +45,7 @@ public class UserReindexingTask implements Task { .convertToDTO(UserReindexingTask.UserReindexingTaskDTO.class) .toDomainObjectConverter(factory::create) .toDTOConverter(UserReindexingTask.UserReindexingTaskDTO::of) - .typeName(USER_RE_INDEXING) + .typeName(USER_RE_INDEXING.asString()) .withFactory(TaskDTOModule::new); public static class UserReindexingTaskDTO implements TaskDTO { @@ -123,7 +124,7 @@ public class UserReindexingTask implements Task { } @Override - public String type() { + public TaskType type() { return USER_RE_INDEXING; } diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigration.java b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigration.java index 990d994..6d4f887 100644 --- a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigration.java +++ b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigration.java @@ -33,6 +33,7 @@ import org.apache.james.rrt.lib.Mapping; import org.apache.james.rrt.lib.MappingSource; import org.apache.james.task.Task; import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.task.TaskType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +41,7 @@ import reactor.core.publisher.Mono; public class MappingsSourcesMigration implements Migration { private static final Logger LOGGER = LoggerFactory.getLogger(MappingsSourcesMigration.class); - private static final String TYPE = "mappingsSourcesMigration"; + private static final TaskType TYPE = TaskType.of("mappingsSourcesMigration"); public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation { private final long successfulMappingsCount; @@ -93,7 +94,7 @@ public class MappingsSourcesMigration implements Migration { .then() .onErrorResume(t -> { LOGGER.error("Error while performing migration of mapping source: {} with mapping: {}", - mappingEntry.getLeft().asString(), mappingEntry.getRight().asString(), t); + mappingEntry.getLeft().asString(), mappingEntry.getRight().asString(), t); errorMappingsCount.incrementAndGet(); return Mono.empty(); }); @@ -109,7 +110,7 @@ public class MappingsSourcesMigration implements Migration { } @Override - public String type() { + public TaskType type() { return TYPE; } @@ -120,8 +121,6 @@ public class MappingsSourcesMigration implements Migration { }; } - - AdditionalInformation createAdditionalInformation() { return new AdditionalInformation( successfulMappingsCount.get(), diff --git a/server/protocols/webadmin/webadmin-cassandra-data/src/main/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTask.java b/server/protocols/webadmin/webadmin-cassandra-data/src/main/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTask.java index 040ce34..f951dbf 100644 --- a/server/protocols/webadmin/webadmin-cassandra-data/src/main/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTask.java +++ b/server/protocols/webadmin/webadmin-cassandra-data/src/main/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTask.java @@ -31,12 +31,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.task.TaskType; import com.fasterxml.jackson.annotation.JsonProperty; import reactor.core.publisher.Mono; public class CassandraMappingsSolveInconsistenciesTask implements Task { - public static final String TYPE = "cassandraMappingsSolveInconsistencies"; + public static final TaskType TYPE = TaskType.of("cassandraMappingsSolveInconsistencies"); private static class CassandraMappingsSolveInconsistenciesTaskDTO implements TaskDTO { @@ -58,7 +59,7 @@ public class CassandraMappingsSolveInconsistenciesTask implements Task { .convertToDTO(CassandraMappingsSolveInconsistenciesTaskDTO.class) .toDomainObjectConverter(dto -> new CassandraMappingsSolveInconsistenciesTask(mappingsSourcesMigration, cassandraMappingsSourcesDAO)) .toDTOConverter((domainObject, typeName) -> new CassandraMappingsSolveInconsistenciesTaskDTO(typeName)) - .typeName(TYPE) + .typeName(TYPE.asString()) .withFactory(TaskDTOModule::new); private final Task mappingsSourcesMigration; @@ -81,7 +82,7 @@ public class CassandraMappingsSolveInconsistenciesTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/dto/ExecutionDetailsDto.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/dto/ExecutionDetailsDto.java index 31216cb..7819977 100644 --- a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/dto/ExecutionDetailsDto.java +++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/dto/ExecutionDetailsDto.java @@ -53,7 +53,7 @@ public class ExecutionDetailsDto { } public String getType() { - return executionDetails.getType(); + return executionDetails.getType().asString(); } public String getStatus() { diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultDeleteTask.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultDeleteTask.java index 1af3326..4584a3e 100644 --- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultDeleteTask.java +++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultDeleteTask.java @@ -31,6 +31,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.task.TaskType; import org.apache.james.vault.DeletedMessageVault; import com.fasterxml.jackson.annotation.JsonProperty; @@ -38,7 +39,7 @@ import reactor.core.publisher.Mono; public class DeletedMessagesVaultDeleteTask implements Task { - static final String TYPE = "deletedMessages/delete"; + static final TaskType TYPE = TaskType.of("deletedMessages/delete"); public static final Function<DeletedMessagesVaultDeleteTask.Factory, TaskDTOModule<DeletedMessagesVaultDeleteTask, DeletedMessagesVaultDeleteTaskDTO>> MODULE = (factory) -> DTOModule @@ -46,7 +47,7 @@ public class DeletedMessagesVaultDeleteTask implements Task { .convertToDTO(DeletedMessagesVaultDeleteTask.DeletedMessagesVaultDeleteTaskDTO.class) .toDomainObjectConverter(factory::create) .toDTOConverter(DeletedMessagesVaultDeleteTask.DeletedMessagesVaultDeleteTaskDTO::of) - .typeName(TYPE) + .typeName(TYPE.asString()) .withFactory(TaskDTOModule::new); public static class DeletedMessagesVaultDeleteTaskDTO implements TaskDTO { @@ -135,7 +136,7 @@ public class DeletedMessagesVaultDeleteTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultExportTask.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultExportTask.java index 9b65c20..d10cc1c 100644 --- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultExportTask.java +++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultExportTask.java @@ -34,6 +34,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.task.TaskType; import org.apache.james.vault.dto.query.QueryDTO; import org.apache.james.vault.dto.query.QueryTranslator; import org.apache.james.vault.search.Query; @@ -45,7 +46,7 @@ import com.google.common.annotations.VisibleForTesting; class DeletedMessagesVaultExportTask implements Task { - static final String TYPE = "deletedMessages/export"; + static final TaskType TYPE = TaskType.of("deletedMessages/export"); public static final Function<DeletedMessagesVaultExportTask.Factory, TaskDTOModule<DeletedMessagesVaultExportTask, DeletedMessagesVaultExportTaskDTO>> MODULE = (factory) -> DTOModule @@ -59,7 +60,7 @@ class DeletedMessagesVaultExportTask implements Task { } }) .toDTOConverter(factory::createDTO) - .typeName(TYPE) + .typeName(TYPE.asString()) .withFactory(TaskDTOModule::new); public static class DeletedMessagesVaultExportTaskDTO implements TaskDTO { @@ -175,7 +176,7 @@ class DeletedMessagesVaultExportTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRestoreTask.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRestoreTask.java index 786a73b..75249d5 100644 --- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRestoreTask.java +++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/main/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRestoreTask.java @@ -34,6 +34,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.task.TaskType; import org.apache.james.vault.dto.query.QueryDTO; import org.apache.james.vault.dto.query.QueryTranslator; import org.apache.james.vault.search.Query; @@ -45,7 +46,7 @@ import com.google.common.annotations.VisibleForTesting; class DeletedMessagesVaultRestoreTask implements Task { - static final String TYPE = "deletedMessages/restore"; + static final TaskType TYPE = TaskType.of("deletedMessages/restore"); public static final Function<DeletedMessagesVaultRestoreTask.Factory, TaskDTOModule<DeletedMessagesVaultRestoreTask, DeletedMessagesVaultRestoreTaskDTO>> MODULE = (factory) -> DTOModule @@ -53,7 +54,7 @@ class DeletedMessagesVaultRestoreTask implements Task { .convertToDTO(DeletedMessagesVaultRestoreTask.DeletedMessagesVaultRestoreTaskDTO.class) .toDomainObjectConverter(factory::create) .toDTOConverter(factory::createDTO) - .typeName(TYPE) + .typeName(TYPE.asString()) .withFactory(TaskDTOModule::new); public static class DeletedMessagesVaultRestoreTaskDTO implements TaskDTO { @@ -186,7 +187,7 @@ class DeletedMessagesVaultRestoreTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/WebadminApiQuerySerializationContractTest.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/WebadminApiQuerySerializationContractTest.java index 32b3d66..967ef88 100644 --- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/WebadminApiQuerySerializationContractTest.java +++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/WebadminApiQuerySerializationContractTest.java @@ -109,7 +109,7 @@ class WebadminApiQuerySerializationContractTest { void respectAPIContract(String jsonFilePath, QueryDTO expectedDeserializedValue) throws Exception { String jsonContent = ClassLoaderUtils.getSystemResourceAsString("query/" + jsonFilePath); QueryDTO extractedQueryDTO = factory.createDTO((DeletedMessagesVaultRestoreTask) taskSerializer.deserialize(jsonContent), - DeletedMessagesVaultRestoreTask.TYPE).getQuery(); + DeletedMessagesVaultRestoreTask.TYPE.asString()).getQuery(); Assertions.assertThat(extractedQueryDTO).isEqualTo(expectedDeserializedValue); } diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTask.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTask.java index 0ac810b..53a4832 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTask.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTask.java @@ -30,12 +30,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.task.TaskType; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; public class EventDeadLettersRedeliverTask implements Task { - public static final String TYPE = "eventDeadLettersRedeliverTask"; + public static final TaskType TYPE = TaskType.of("eventDeadLettersRedeliverTask"); public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation { private final long successfulRedeliveriesCount; @@ -90,7 +91,7 @@ public class EventDeadLettersRedeliverTask implements Task { .convertToDTO(EventDeadLettersRedeliverTaskDTO.class) .toDomainObjectConverter(dto -> new EventDeadLettersRedeliverTask(service, eventRetriever)) .toDTOConverter((domainObject, typeName) -> new EventDeadLettersRedeliverTaskDTO(typeName)) - .typeName(TYPE) + .typeName(TYPE.asString()) .withFactory(TaskDTOModule::new); private final EventDeadLettersRedeliverService service; @@ -128,7 +129,7 @@ public class EventDeadLettersRedeliverTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/PreviousReIndexingService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/PreviousReIndexingService.java index 9c00dea..e03f6cd 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/PreviousReIndexingService.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/PreviousReIndexingService.java @@ -26,6 +26,7 @@ import org.apache.james.task.TaskExecutionDetails; import org.apache.james.task.TaskId; import org.apache.james.task.TaskManager; import org.apache.james.task.TaskNotFoundException; +import org.apache.james.task.TaskType; public class PreviousReIndexingService { public static class TaskNotYetFinishedException extends RuntimeException { @@ -35,8 +36,8 @@ public class PreviousReIndexingService { } public static class NotAnIndexingRetriableTask extends RuntimeException { - NotAnIndexingRetriableTask(String type) { - super("'" + type + "' is not a valid type of task for retrying a failed indexing"); + NotAnIndexingRetriableTask(TaskType type) { + super("'" + type.asString() + "' is not a valid type of task for retrying a failed indexing"); } } diff --git a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTask.java b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTask.java index b9dc686..7e92601 100644 --- a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTask.java +++ b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTask.java @@ -32,6 +32,7 @@ import org.apache.james.server.task.json.dto.TaskDTOModule; import org.apache.james.task.Task; import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.task.TaskType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -98,14 +99,14 @@ public class ClearMailQueueTask implements Task { } private static final Logger LOGGER = LoggerFactory.getLogger(ClearMailQueueTask.class); - public static final String TYPE = "clear-mail-queue"; + public static final TaskType TYPE = TaskType.of("clear-mail-queue"); public static final Function<MailQueueFactory<ManageableMailQueue>, TaskDTOModule<ClearMailQueueTask, ClearMailQueueTaskDTO>> MODULE = (mailQueueFactory) -> DTOModule .forDomainObject(ClearMailQueueTask.class) .convertToDTO(ClearMailQueueTaskDTO.class) .toDomainObjectConverter(dto -> dto.fromDTO(mailQueueFactory)) .toDTOConverter(ClearMailQueueTaskDTO::toDTO) - .typeName(TYPE) + .typeName(TYPE.asString()) .withFactory(TaskDTOModule::new); private final ManageableMailQueue queue; @@ -129,7 +130,7 @@ public class ClearMailQueueTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTask.java b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTask.java index b156fc4..bf41ea8 100644 --- a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTask.java +++ b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTask.java @@ -32,6 +32,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.task.TaskType; import com.fasterxml.jackson.annotation.JsonProperty; import com.github.fge.lambdas.Throwing; @@ -153,14 +154,14 @@ public class DeleteMailsFromMailQueueTask implements Task { } } - public static final String TYPE = "delete-mails-from-mail-queue"; + public static final TaskType TYPE = TaskType.of("delete-mails-from-mail-queue"); public static final Function<MailQueueFactory<ManageableMailQueue>, TaskDTOModule<DeleteMailsFromMailQueueTask,DeleteMailsFromMailQueueTaskDTO>> MODULE = (mailQueueFactory) -> DTOModule .forDomainObject(DeleteMailsFromMailQueueTask.class) .convertToDTO(DeleteMailsFromMailQueueTaskDTO.class) .toDomainObjectConverter(dto -> dto.fromDTO(mailQueueFactory)) .toDTOConverter(DeleteMailsFromMailQueueTaskDTO::toDTO) - .typeName(TYPE) + .typeName(TYPE.asString()) .withFactory(TaskDTOModule::new); private final ManageableMailQueue queue; @@ -197,7 +198,7 @@ public class DeleteMailsFromMailQueueTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTask.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTask.java index 8fe7e41..bb5d530 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTask.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTask.java @@ -33,13 +33,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.task.TaskType; import com.fasterxml.jackson.annotation.JsonProperty; import com.github.fge.lambdas.Throwing; public class ClearMailRepositoryTask implements Task { - public static final String TYPE = "clearMailRepository"; + public static final TaskType TYPE = TaskType.of("clearMailRepository"); public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation { private final MailRepositoryPath repositoryPath; @@ -121,7 +122,7 @@ public class ClearMailRepositoryTask implements Task { .convertToDTO(ClearMailRepositoryTaskDTO.class) .toDomainObjectConverter(dto -> dto.fromDTO(mailRepositories)) .toDTOConverter(ClearMailRepositoryTaskDTO::toDTO) - .typeName(TYPE) + .typeName(TYPE.asString()) .withFactory(TaskDTOModule::new); private final List<MailRepository> mailRepositories; @@ -148,7 +149,7 @@ public class ClearMailRepositoryTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java index b8f9409..2c669bf 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java @@ -33,13 +33,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.task.TaskType; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; public class ReprocessingAllMailsTask implements Task { - public static final String TYPE = "reprocessingAllTask"; + public static final TaskType TYPE = TaskType.of("reprocessingAllTask"); public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation { private final MailRepositoryPath repositoryPath; @@ -172,7 +173,7 @@ public class ReprocessingAllMailsTask implements Task { .convertToDTO(ReprocessingAllMailsTaskDTO.class) .toDomainObjectConverter(dto -> dto.fromDTO(reprocessingService)) .toDTOConverter(ReprocessingAllMailsTaskDTO::toDTO) - .typeName(TYPE) + .typeName(TYPE.asString()) .withFactory(TaskDTOModule::new); private final ReprocessingService reprocessingService; @@ -203,7 +204,7 @@ public class ReprocessingAllMailsTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTask.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTask.java index 6ccfadd..dbffedc 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTask.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTask.java @@ -31,12 +31,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.task.TaskType; import com.fasterxml.jackson.annotation.JsonProperty; public class ReprocessingOneMailTask implements Task { - public static final String TYPE = "reprocessingOneTask"; + public static final TaskType TYPE = TaskType.of("reprocessingOneTask"); public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation { private final MailRepositoryPath repositoryPath; @@ -162,7 +163,7 @@ public class ReprocessingOneMailTask implements Task { .convertToDTO(ReprocessingOneMailTaskDTO.class) .toDomainObjectConverter(dto -> dto.fromDTO(reprocessingService)) .toDTOConverter(ReprocessingOneMailTaskDTO::toDTO) - .typeName(TYPE) + .typeName(TYPE.asString()) .withFactory(TaskDTOModule::new); private final ReprocessingService reprocessingService; @@ -194,7 +195,7 @@ public class ReprocessingOneMailTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionDAO.scala b/server/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionDAO.scala index fdcf2ac..232def3 100644 --- a/server/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionDAO.scala +++ b/server/task-distributed/src/main/scala/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionDAO.scala @@ -26,9 +26,9 @@ import com.datastax.driver.core.{Row, Session} import javax.inject.Inject import org.apache.james.backends.cassandra.init.{CassandraTypesProvider, CassandraZonedDateTimeModule} import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor -import org.apache.james.task.eventsourcing.cassandra.CassandraTaskExecutionDetailsProjectionTable._ import org.apache.james.task.eventsourcing.Hostname -import org.apache.james.task.{TaskExecutionDetails, TaskId, TaskManager} +import org.apache.james.task.eventsourcing.cassandra.CassandraTaskExecutionDetailsProjectionTable._ +import org.apache.james.task.{TaskExecutionDetails, TaskId, TaskManager, TaskType} import reactor.core.publisher.{Flux, Mono} @Inject @@ -58,7 +58,7 @@ class CassandraTaskExecutionDetailsProjectionDAO(session: Session, typesProvider def saveDetails(details : TaskExecutionDetails): Mono[Void] = cassandraAsyncExecutor.executeVoid( insertStatement.bind .setUUID(TASK_ID, details.getTaskId.getValue) - .setString(TYPE, details.getType) + .setString(TYPE, details.getType.asString()) .setString(STATUS, details.getStatus.getValue) .setUDTValue(SUBMITTED_DATE, CassandraZonedDateTimeModule.toUDT(dateType, details.getSubmittedDate)) .setString(SUBMITTED_NODE, details.getSubmittedNode.asString) @@ -79,7 +79,7 @@ class CassandraTaskExecutionDetailsProjectionDAO(session: Session, typesProvider private def readRow(row: Row): TaskExecutionDetails = new TaskExecutionDetails( taskId = TaskId.fromUUID(row.getUUID(TASK_ID)), - `type` = row.getString(TYPE), + `type` = TaskType.of(row.getString(TYPE)), status = TaskManager.Status.fromString(row.getString(STATUS)), submittedDate = CassandraZonedDateTimeModule.fromUDT(row.getUDTValue(SUBMITTED_DATE)), submittedNode = Hostname(row.getString(SUBMITTED_NODE)), diff --git a/server/task-json/src/test/java/org/apache/james/server/task/json/TestTask.java b/server/task-json/src/test/java/org/apache/james/server/task/json/TestTask.java index 91c1b18..579e1f2 100644 --- a/server/task-json/src/test/java/org/apache/james/server/task/json/TestTask.java +++ b/server/task-json/src/test/java/org/apache/james/server/task/json/TestTask.java @@ -20,6 +20,7 @@ import java.util.Optional; import org.apache.james.task.Task; import org.apache.james.task.TaskExecutionDetails; +import org.apache.james.task.TaskType; public class TestTask implements Task { @@ -39,8 +40,8 @@ public class TestTask implements Task { } @Override - public String type() { - return "testTask"; + public TaskType type() { + return TaskType.of("testTask"); } @Override diff --git a/server/task/src/main/java/org/apache/james/task/Task.java b/server/task/src/main/java/org/apache/james/task/Task.java index 2edb39d..c66e40c 100644 --- a/server/task/src/main/java/org/apache/james/task/Task.java +++ b/server/task/src/main/java/org/apache/james/task/Task.java @@ -93,7 +93,7 @@ public interface Task { Result run() throws InterruptedException; - default String type() { + default TaskType type() { return UNKNOWN; } @@ -105,5 +105,5 @@ public interface Task { String TASK_TYPE = "taskType"; String TASK_DETAILS = "taskDetails"; - String UNKNOWN = "unknown"; + TaskType UNKNOWN = TaskType.of("unknown"); } diff --git a/server/task/src/test/java/org/apache/james/task/MemoryReferenceTask.java b/server/task/src/main/java/org/apache/james/task/TaskType.java similarity index 57% copy from server/task/src/test/java/org/apache/james/task/MemoryReferenceTask.java copy to server/task/src/main/java/org/apache/james/task/TaskType.java index 16f2a7e..00476bb 100644 --- a/server/task/src/test/java/org/apache/james/task/MemoryReferenceTask.java +++ b/server/task/src/main/java/org/apache/james/task/TaskType.java @@ -18,28 +18,48 @@ ****************************************************************/ package org.apache.james.task; -import java.util.Optional; +import java.util.Objects; -public class MemoryReferenceTask implements Task { - public static final String TYPE = "memory-reference-task"; - private final Task task; +import com.google.common.base.MoreObjects; - public MemoryReferenceTask(Task task) { - this.task = task; +public class TaskType { + private final String typeName; + + public static TaskType of(String typeName) { + if (typeName == null || typeName.isEmpty()) { + throw new IllegalArgumentException("Task type should be defined"); + } + return new TaskType(typeName); + } + + private TaskType(String typeName) { + this.typeName = typeName; + } + + public String asString() { + return typeName; } @Override - public Result run() throws InterruptedException { - return task.run(); + public final boolean equals(Object o) { + if (o instanceof TaskType) { + TaskType taskId = (TaskType) o; + + return Objects.equals(this.typeName, taskId.typeName); + } + return false; } @Override - public String type() { - return TYPE; + public final int hashCode() { + return Objects.hash(typeName); } @Override - public Optional<TaskExecutionDetails.AdditionalInformation> details() { - return Optional.empty(); + public String toString() { + return MoreObjects.toStringHelper(this) + .add("typeName", typeName) + .toString(); } + } diff --git a/server/task/src/main/scala/org/apache/james/task/TaskExecutionDetails.scala b/server/task/src/main/scala/org/apache/james/task/TaskExecutionDetails.scala index 13cf7d0..d541bf4 100644 --- a/server/task/src/main/scala/org/apache/james/task/TaskExecutionDetails.scala +++ b/server/task/src/main/scala/org/apache/james/task/TaskExecutionDetails.scala @@ -35,7 +35,7 @@ object TaskExecutionDetails { } class TaskExecutionDetails(val taskId: TaskId, - private val `type`: String, + private val `type`: TaskType, private val status: TaskManager.Status, private val submittedDate: ZonedDateTime, private val submittedNode: Hostname, @@ -48,7 +48,7 @@ class TaskExecutionDetails(val taskId: TaskId, private val failedDate: Optional[ZonedDateTime] = Optional.empty()) { def getTaskId: TaskId = taskId - def getType: String = `type` + def getType: TaskType = `type` def getStatus: TaskManager.Status = status diff --git a/server/task/src/test/java/org/apache/james/task/CompletedTask.java b/server/task/src/test/java/org/apache/james/task/CompletedTask.java index 96133ed..b918532 100644 --- a/server/task/src/test/java/org/apache/james/task/CompletedTask.java +++ b/server/task/src/test/java/org/apache/james/task/CompletedTask.java @@ -21,7 +21,7 @@ package org.apache.james.task; import java.util.Optional; public class CompletedTask implements Task { - public static final String TYPE = "completed"; + public static final TaskType TYPE = TaskType.of("completed"); @Override public Result run() throws InterruptedException { @@ -29,7 +29,7 @@ public class CompletedTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/task/src/test/java/org/apache/james/task/FailedTask.java b/server/task/src/test/java/org/apache/james/task/FailedTask.java index 127c96e..e17031a 100644 --- a/server/task/src/test/java/org/apache/james/task/FailedTask.java +++ b/server/task/src/test/java/org/apache/james/task/FailedTask.java @@ -21,7 +21,7 @@ package org.apache.james.task; import java.util.Optional; public class FailedTask implements Task { - public static final String TYPE = "failed"; + public static final TaskType TYPE = TaskType.of("failed"); @Override public Result run() throws InterruptedException { @@ -29,7 +29,7 @@ public class FailedTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/task/src/test/java/org/apache/james/task/MemoryReferenceTask.java b/server/task/src/test/java/org/apache/james/task/MemoryReferenceTask.java index 16f2a7e..6ce1499 100644 --- a/server/task/src/test/java/org/apache/james/task/MemoryReferenceTask.java +++ b/server/task/src/test/java/org/apache/james/task/MemoryReferenceTask.java @@ -21,7 +21,7 @@ package org.apache.james.task; import java.util.Optional; public class MemoryReferenceTask implements Task { - public static final String TYPE = "memory-reference-task"; + public static final TaskType TYPE = TaskType.of("memory-reference-task"); private final Task task; public MemoryReferenceTask(Task task) { @@ -34,7 +34,7 @@ public class MemoryReferenceTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/task/src/test/java/org/apache/james/task/MemoryReferenceTask.java b/server/task/src/test/java/org/apache/james/task/TaskTypeTest.java similarity index 66% copy from server/task/src/test/java/org/apache/james/task/MemoryReferenceTask.java copy to server/task/src/test/java/org/apache/james/task/TaskTypeTest.java index 16f2a7e..c76bc2d 100644 --- a/server/task/src/test/java/org/apache/james/task/MemoryReferenceTask.java +++ b/server/task/src/test/java/org/apache/james/task/TaskTypeTest.java @@ -16,30 +16,30 @@ * specific language governing permissions and limitations * * under the License. * ****************************************************************/ + package org.apache.james.task; -import java.util.Optional; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; -public class MemoryReferenceTask implements Task { - public static final String TYPE = "memory-reference-task"; - private final Task task; +import nl.jqno.equalsverifier.EqualsVerifier; - public MemoryReferenceTask(Task task) { - this.task = task; - } +public class TaskTypeTest { - @Override - public Result run() throws InterruptedException { - return task.run(); + @Test + public void taskTypeShouldMatchBeanContract() { + EqualsVerifier.forClass(TaskType.class) + .verify(); } - @Override - public String type() { - return TYPE; + @Test + public void serializingATaskTypeToAValueShouldReturnTheInitialValue() { + Assertions.assertThat(TaskType.of("foo").asString()).isEqualTo("foo"); } - @Override - public Optional<TaskExecutionDetails.AdditionalInformation> details() { - return Optional.empty(); + @Test + public void creatingATaskTypeFromNullShouldThrow() { + Assertions.assertThatThrownBy(() -> TaskType.of(null)).isInstanceOf(IllegalArgumentException.class); } -} + +} \ No newline at end of file diff --git a/server/task/src/test/java/org/apache/james/task/ThrowingTask.java b/server/task/src/test/java/org/apache/james/task/ThrowingTask.java index eafe862..77f14c3 100644 --- a/server/task/src/test/java/org/apache/james/task/ThrowingTask.java +++ b/server/task/src/test/java/org/apache/james/task/ThrowingTask.java @@ -21,7 +21,7 @@ package org.apache.james.task; import java.util.Optional; public class ThrowingTask implements Task { - public static final String TYPE = "throwing"; + public static final TaskType TYPE = TaskType.of("throwing"); @Override public Result run() throws InterruptedException { @@ -29,7 +29,7 @@ public class ThrowingTask implements Task { } @Override - public String type() { + public TaskType type() { return TYPE; } diff --git a/server/task/src/test/scala/org/apache/james/task/TaskExecutionDetailsFixture.scala b/server/task/src/test/scala/org/apache/james/task/TaskExecutionDetailsFixture.scala index ddcf176..b6310f8 100644 --- a/server/task/src/test/scala/org/apache/james/task/TaskExecutionDetailsFixture.scala +++ b/server/task/src/test/scala/org/apache/james/task/TaskExecutionDetailsFixture.scala @@ -33,13 +33,14 @@ object TaskExecutionDetailsFixture { val TASK_ID_2 = TaskId.fromString("2c7f4081-aa30-11e9-bf6c-2d3b9e84aafe") val ADDITIONAL_INFORMATION: () => Optional[AdditionalInformation] = Optional.empty - val TASK_EXECUTION_DETAILS = new TaskExecutionDetails(TASK_ID, "type", TaskManager.Status.COMPLETED, SUBMITTED_DATE, SUBMITTED_NODE, ADDITIONAL_INFORMATION) - val TASK_EXECUTION_DETAILS_2 = new TaskExecutionDetails(TASK_ID_2, "type", TaskManager.Status.COMPLETED, SUBMITTED_DATE, SUBMITTED_NODE, ADDITIONAL_INFORMATION) - val TASK_EXECUTION_DETAILS_UPDATED = new TaskExecutionDetails(TASK_ID, "type", TaskManager.Status.FAILED, SUBMITTED_DATE, SUBMITTED_NODE, ADDITIONAL_INFORMATION) + val TYPE = TaskType.of("type") + val TASK_EXECUTION_DETAILS = new TaskExecutionDetails(TASK_ID, TYPE, TaskManager.Status.COMPLETED, SUBMITTED_DATE, SUBMITTED_NODE, ADDITIONAL_INFORMATION) + val TASK_EXECUTION_DETAILS_2 = new TaskExecutionDetails(TASK_ID_2, TYPE, TaskManager.Status.COMPLETED, SUBMITTED_DATE, SUBMITTED_NODE, ADDITIONAL_INFORMATION) + val TASK_EXECUTION_DETAILS_UPDATED = new TaskExecutionDetails(TASK_ID, TYPE, TaskManager.Status.FAILED, SUBMITTED_DATE, SUBMITTED_NODE, ADDITIONAL_INFORMATION) val ADDITIONAL_INFORMATION_2: () => Optional[AdditionalInformation] = () => Optional.of(new CustomAdditionalInformation("hello")) - val TASK_EXECUTION_DETAILS_WITH_ADDITIONAL_INFORMATION = new TaskExecutionDetails(TASK_ID, "type", TaskManager.Status.COMPLETED, SUBMITTED_DATE_2, SUBMITTED_NODE_2, ADDITIONAL_INFORMATION) + val TASK_EXECUTION_DETAILS_WITH_ADDITIONAL_INFORMATION = new TaskExecutionDetails(TASK_ID, TYPE, TaskManager.Status.COMPLETED, SUBMITTED_DATE_2, SUBMITTED_NODE_2, ADDITIONAL_INFORMATION) } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
