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 805ebca371822761a93b8f28202b05d028fd5dfd Author: Matthieu Baechler <[email protected]> AuthorDate: Tue Oct 22 17:05:46 2019 +0200 JAMES-2813 use a staged builder to create serializers --- .../migration/MigrationTaskSerializationTest.java | 4 +- .../eventstore/cassandra/JsonEventSerializer.java | 40 +++++++++++--- .../CassandraEventSourcingSystemTest.java | 2 +- .../cassandra/CassandraEventStoreExtension.java | 20 +++---- .../cassandra/CassandraEventStoreTest.java | 2 +- .../cassandra/JsonEventSerializerTest.java | 33 ++++++------ .../apache/james/json/JsonGenericSerializer.java | 43 ++++++++++++--- .../src/test/java/org/apache/DTOConverterTest.java | 13 ++--- .../java/org/apache/JsonGenericSerializerTest.java | 61 +++++++++++----------- json/src/test/java/org/apache/dto/TestModules.java | 16 +++--- ...ailboxPathV2MigrationTaskSerializationTest.java | 19 +++---- .../mail/task/MailboxMergingTaskTest.java | 6 +-- ...aultGarbageCollectionTaskSerializationTest.java | 10 ++-- .../james/mailbox/quota/cassandra/dto/DTOTest.java | 16 +++--- ...sandraQuotaMailingListenersIntegrationTest.java | 4 +- ...rorRecoveryIndexationTaskSerializationTest.java | 5 +- .../FullReindexingTaskSerializationTest.java | 4 +- .../MessageIdReindexingTaskSerializationTest.java | 4 +- ...ngleMailboxReindexingTaskSerializationTest.java | 4 +- ...ngleMessageReindexingTaskSerializationTest.java | 4 +- .../UserReindexingTaskSerializationTest.java | 4 +- ...ventSourcingDLPConfigurationStoreExtension.java | 8 ++- ...pingsSourcesMigrationTaskSerializationTest.java | 6 +-- ...sandraEventSourcingFilteringManagementTest.java | 4 +- ...sandraMappingsSolveInconsistenciesTaskTest.java | 6 +-- ...edMessagesVaultDeleteTaskSerializationTest.java | 4 +- ...edMessagesVaultExportTaskSerializationTest.java | 4 +- ...dMessagesVaultRestoreTaskSerializationTest.java | 4 +- .../WebadminApiQuerySerializationContractTest.java | 2 +- .../service/EventDeadLettersRedeliverTaskTest.java | 4 +- .../webadmin/service/ClearMailQueueTaskTest.java | 8 +-- .../service/DeleteMailsFromMailQueueTaskTest.java | 10 ++-- .../service/ClearMailRepositoryTaskTest.java | 8 +-- .../service/ReprocessingAllMailsTaskTest.java | 8 +-- .../service/ReprocessingOneMailTaskTest.java | 8 +-- .../CassandraMailQueueViewTestFactory.java | 4 +- .../EventsourcingConfigurationManagementTest.java | 6 ++- ...andraTaskExecutionDetailsProjectionDAOTest.java | 2 +- ...assandraTaskExecutionDetailsProjectionTest.java | 5 +- .../distributed/DistributedTaskManagerTest.java | 15 +++--- .../RabbitMQTerminationSubscriberTest.java | 5 +- .../distributed/RabbitMQWorkQueueTest.java | 4 +- .../distributed/TaskEventsSerializationTest.java | 9 ++-- .../JsonTaskAdditionalInformationSerializer.java | 13 +++-- .../james/server/task/json/JsonTaskSerializer.java | 13 +++-- .../server/task/json/TaskDeserializerTest.java | 2 +- .../server/task/json/TaskSerializationTest.java | 8 +-- .../james/server/task/json/TaskSerializerTest.java | 2 +- 48 files changed, 262 insertions(+), 224 deletions(-) diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/MigrationTaskSerializationTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/MigrationTaskSerializationTest.java index c56e378..7dd5686 100644 --- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/MigrationTaskSerializationTest.java +++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/MigrationTaskSerializationTest.java @@ -43,8 +43,8 @@ class MigrationTaskSerializationTest { private final CassandraSchemaVersionDAO cassandraSchemaVersionDAO = mock(CassandraSchemaVersionDAO.class); private final CassandraSchemaTransitions transitions = mock(CassandraSchemaTransitions.class); private final MigrationTask.Factory factory = target -> new MigrationTask(cassandraSchemaVersionDAO, transitions, target); - private final JsonTaskSerializer taskSerializer = new JsonTaskSerializer(MigrationTaskDTO.module(factory)); - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer(MigrationTaskAdditionalInformationDTO.serializationModule()); + private final JsonTaskSerializer taskSerializer = JsonTaskSerializer.of(MigrationTaskDTO.module(factory)); + private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of(MigrationTaskAdditionalInformationDTO.serializationModule()); @Test void taskShouldBeSerializable() throws JsonProcessingException { diff --git a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializer.java b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializer.java index 15f8005..3acdd58 100644 --- a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializer.java +++ b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializer.java @@ -20,6 +20,8 @@ package org.apache.james.eventsourcing.eventstore.cassandra; import java.io.IOException; +import java.util.Arrays; +import java.util.Collection; import java.util.Set; import javax.inject.Inject; @@ -27,15 +29,43 @@ import javax.inject.Inject; import org.apache.james.eventsourcing.Event; import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTO; import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule; -import org.apache.james.json.DTOConverter; import org.apache.james.json.DTOModule; import org.apache.james.json.JsonGenericSerializer; import com.fasterxml.jackson.core.JsonProcessingException; +import com.github.steveash.guavate.Guavate; import com.google.common.collect.ImmutableSet; public class JsonEventSerializer { + public static RequireNestedConfiguration forModules(Set<? extends EventDTOModule<?, ?>> modules) { + return nestedTypesModules -> { + ImmutableSet<EventDTOModule<?, ?>> dtoModules = ImmutableSet.copyOf(modules); + return new JsonEventSerializer(dtoModules, ImmutableSet.copyOf(nestedTypesModules)); + }; + } + + @SafeVarargs + public static RequireNestedConfiguration forModules(EventDTOModule<?, ?>... modules) { + return forModules(ImmutableSet.copyOf(modules)); + } + + public interface RequireNestedConfiguration { + JsonEventSerializer withNestedTypeModules(Set<DTOModule<?, ?>> modules); + + default JsonEventSerializer withNestedTypeModules(DTOModule<?, ?>... modules) { + return withNestedTypeModules(ImmutableSet.copyOf(modules)); + } + + default JsonEventSerializer withNestedTypeModules(Set<DTOModule<?, ?>>... modules) { + return withNestedTypeModules(Arrays.stream(modules).flatMap(Collection::stream).collect(Guavate.toImmutableSet())); + } + + default JsonEventSerializer withoutNestedType() { + return withNestedTypeModules(ImmutableSet.of()); + } + } + public static class InvalidEventException extends RuntimeException { public InvalidEventException(JsonGenericSerializer.InvalidTypeException original) { super(original); @@ -51,14 +81,10 @@ public class JsonEventSerializer { private JsonGenericSerializer<Event, EventDTO> jsonGenericSerializer; @Inject - public JsonEventSerializer(DTOConverter<Event, EventDTO> converter, Set<EventDTOModule<?, ?>> modules, Set<DTOModule<?, ?>> nestedTypesModules) { - jsonGenericSerializer = new JsonGenericSerializer<>(modules, nestedTypesModules, converter); + private JsonEventSerializer(Set<EventDTOModule<?, ?>> modules, Set<DTOModule<?, ?>> nestedTypesModules) { + jsonGenericSerializer = JsonGenericSerializer.forModules(modules).withNestedTypeModules(nestedTypesModules); } - public JsonEventSerializer(EventDTOModule<?, ?>... modules) { - this(new DTOConverter<>(ImmutableSet.copyOf(modules)), ImmutableSet.copyOf(modules), ImmutableSet.of()); - } - public String serialize(Event event) throws JsonProcessingException { try { return jsonGenericSerializer.serialize(event); diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java index 92c5401..6858b2d 100644 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java +++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventSourcingSystemTest.java @@ -25,5 +25,5 @@ import org.junit.jupiter.api.extension.RegisterExtension; public class CassandraEventSourcingSystemTest implements EventSourcingSystemTest { @RegisterExtension - static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(TestEventDTOModules.TEST_TYPE); + static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(JsonEventSerializer.forModules(TestEventDTOModules.TEST_TYPE).withoutNestedType()); } diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java index bed4553..d338495 100644 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java +++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.java @@ -19,12 +19,8 @@ package org.apache.james.eventsourcing.eventstore.cassandra; -import java.util.Set; - import org.apache.james.backends.cassandra.CassandraClusterExtension; import org.apache.james.eventsourcing.eventstore.EventStore; -import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule; -import org.apache.james.json.DTOConverter; import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeAllCallback; @@ -34,21 +30,19 @@ import org.junit.jupiter.api.extension.ParameterContext; import org.junit.jupiter.api.extension.ParameterResolutionException; import org.junit.jupiter.api.extension.ParameterResolver; -import com.google.common.collect.ImmutableSet; - public class CassandraEventStoreExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, ParameterResolver { - private final Set<EventDTOModule<?, ?>> modules; private CassandraClusterExtension cassandra; + private final JsonEventSerializer eventSerializer; private EventStoreDao eventStoreDao; - public CassandraEventStoreExtension(@SuppressWarnings("rawtypes") EventDTOModule... modules) { - this(new CassandraClusterExtension(CassandraEventStoreModule.MODULE), ImmutableSet.copyOf(modules)); + public CassandraEventStoreExtension(JsonEventSerializer eventSerializer) { + this(new CassandraClusterExtension(CassandraEventStoreModule.MODULE), eventSerializer); } - public CassandraEventStoreExtension(CassandraClusterExtension cassandra, Set<EventDTOModule<?, ?>> module) { + public CassandraEventStoreExtension(CassandraClusterExtension cassandra, JsonEventSerializer eventSerializer) { this.cassandra = cassandra; - this.modules = module; + this.eventSerializer = eventSerializer; } @Override @@ -63,9 +57,7 @@ public class CassandraEventStoreExtension implements BeforeAllCallback, AfterAll @Override public void beforeEach(ExtensionContext context) { - JsonEventSerializer jsonEventSerializer = new JsonEventSerializer(modules.toArray(new EventDTOModule[0])); - - eventStoreDao = new EventStoreDao(cassandra.getCassandraCluster().getConf(), jsonEventSerializer); + eventStoreDao = new EventStoreDao(cassandra.getCassandraCluster().getConf(), eventSerializer); } @Override diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java index f40eac1..562bd9b 100644 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java +++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreTest.java @@ -25,5 +25,5 @@ import org.junit.jupiter.api.extension.RegisterExtension; class CassandraEventStoreTest implements EventStoreTest { @RegisterExtension - static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(TestEventDTOModules.TEST_TYPE); + static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(JsonEventSerializer.forModules(TestEventDTOModules.TEST_TYPE).withoutNestedType()); } diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializerTest.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializerTest.java index 043532a..d0d6c65 100644 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializerTest.java +++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/JsonEventSerializerTest.java @@ -28,7 +28,6 @@ import org.apache.james.eventsourcing.TestAggregateId; import org.apache.james.eventsourcing.TestEvent; import org.apache.james.eventsourcing.eventstore.cassandra.dto.OtherEvent; import org.apache.james.eventsourcing.eventstore.cassandra.dto.TestEventDTOModules; -import org.apache.james.json.DTOModule; import org.junit.jupiter.api.Test; class JsonEventSerializerTest { @@ -45,23 +44,23 @@ class JsonEventSerializerTest { @Test void shouldDeserializeKnownEvent() throws Exception { - assertThat(new JsonEventSerializer(TestEventDTOModules.TEST_TYPE) + assertThat(JsonEventSerializer.forModules(TestEventDTOModules.TEST_TYPE).withoutNestedType() .deserialize(TEST_EVENT_JSON)) .isEqualTo(TEST_EVENT); } @Test void shouldThrowWhenDeserializeUnknownEvent() { - assertThatThrownBy(() -> new JsonEventSerializer() + assertThatThrownBy(() -> JsonEventSerializer.forModules().withoutNestedType() .deserialize(TEST_EVENT_JSON)) .isInstanceOf(JsonEventSerializer.UnknownEventException.class); } @Test void serializeShouldHandleAllKnownEvents() throws Exception { - JsonEventSerializer jsonEventSerializer = new JsonEventSerializer( - TestEventDTOModules.TEST_TYPE, - TestEventDTOModules.OTHER_TEST_TYPE); + JsonEventSerializer jsonEventSerializer = JsonEventSerializer + .forModules(TestEventDTOModules.TEST_TYPE, TestEventDTOModules.OTHER_TEST_TYPE) + .withoutNestedType(); assertThatJson( jsonEventSerializer.serialize(OTHER_EVENT)) @@ -74,9 +73,9 @@ class JsonEventSerializerTest { @Test void deserializeShouldHandleAllKnownEvents() throws Exception { - JsonEventSerializer jsonEventSerializer = new JsonEventSerializer( - TestEventDTOModules.TEST_TYPE, - TestEventDTOModules.OTHER_TEST_TYPE); + JsonEventSerializer jsonEventSerializer = JsonEventSerializer + .forModules(TestEventDTOModules.TEST_TYPE, TestEventDTOModules.OTHER_TEST_TYPE) + .withoutNestedType(); assertThatJson( jsonEventSerializer.deserialize(OTHER_EVENT_JSON)) @@ -90,32 +89,32 @@ class JsonEventSerializerTest { @Test void deserializeShouldThrowWhenEventWithDuplicatedTypes() { - assertThatThrownBy(() -> new JsonEventSerializer( - TestEventDTOModules.TEST_TYPE, - TestEventDTOModules.OTHER_TEST_TYPE) + assertThatThrownBy(() -> JsonEventSerializer + .forModules(TestEventDTOModules.TEST_TYPE, TestEventDTOModules.OTHER_TEST_TYPE) + .withoutNestedType() .deserialize(DUPLICATE_TYPE_EVENT_JSON)) .isInstanceOf(JsonEventSerializer.InvalidEventException.class); } @Test void deserializeShouldThrowWhenEventWithMissingType() { - assertThatThrownBy(() -> new JsonEventSerializer( - TestEventDTOModules.TEST_TYPE, - TestEventDTOModules.OTHER_TEST_TYPE) + assertThatThrownBy(() -> JsonEventSerializer + .forModules(TestEventDTOModules.TEST_TYPE, TestEventDTOModules.OTHER_TEST_TYPE) + .withoutNestedType() .deserialize(MISSING_TYPE_EVENT_JSON)) .isInstanceOf(JsonEventSerializer.InvalidEventException.class); } @Test void shouldSerializeKnownEvent() throws Exception { - assertThatJson(new JsonEventSerializer(TestEventDTOModules.TEST_TYPE) + assertThatJson(JsonEventSerializer.forModules(TestEventDTOModules.TEST_TYPE).withoutNestedType() .serialize(TEST_EVENT)) .isEqualTo(TEST_EVENT_JSON); } @Test void shouldThrowWhenSerializeUnknownEvent() { - assertThatThrownBy(() -> new JsonEventSerializer() + assertThatThrownBy(() -> JsonEventSerializer.forModules().withoutNestedType() .serialize(TEST_EVENT)) .isInstanceOf(JsonEventSerializer.UnknownEventException.class); } diff --git a/json/src/main/java/org/apache/james/json/JsonGenericSerializer.java b/json/src/main/java/org/apache/james/json/JsonGenericSerializer.java index a9cfdcc..bc2c156 100644 --- a/json/src/main/java/org/apache/james/json/JsonGenericSerializer.java +++ b/json/src/main/java/org/apache/james/json/JsonGenericSerializer.java @@ -20,6 +20,8 @@ package org.apache.james.json; import java.io.IOException; +import java.util.Arrays; +import java.util.Collection; import java.util.Set; import com.fasterxml.jackson.annotation.JsonInclude; @@ -34,11 +36,40 @@ import com.fasterxml.jackson.databind.jsontype.NamedType; import com.fasterxml.jackson.datatype.guava.GuavaModule; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.github.steveash.guavate.Guavate; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; public class JsonGenericSerializer<T, U extends DTO> { + public static <T, U extends DTO> RequireNestedConfiguration<T, U> forModules(Set<? extends DTOModule<? extends T, ? extends U>> modules) { + return nestedTypesModules -> { + ImmutableSet<DTOModule<? extends T, ? extends U>> dtoModules = ImmutableSet.copyOf(modules); + return new JsonGenericSerializer<>(dtoModules, ImmutableSet.copyOf(nestedTypesModules), new DTOConverter<>(dtoModules)); + }; + } + + @SafeVarargs + public static <T, U extends DTO> RequireNestedConfiguration<T, U> forModules(DTOModule<? extends T, ? extends U>... modules) { + return forModules(ImmutableSet.copyOf(modules)); + } + + public interface RequireNestedConfiguration<T, U extends DTO> { + JsonGenericSerializer<T, U> withNestedTypeModules(Set<DTOModule<?, ?>> modules); + + default JsonGenericSerializer<T, U> withNestedTypeModules(DTOModule<?, ?>... modules) { + return withNestedTypeModules(ImmutableSet.copyOf(modules)); + } + + default JsonGenericSerializer<T, U> withNestedTypeModules(Set<DTOModule<?, ?>>... modules) { + return withNestedTypeModules(Arrays.stream(modules).flatMap(Collection::stream).collect(Guavate.toImmutableSet())); + } + + default JsonGenericSerializer<T, U> withoutNestedType() { + return withNestedTypeModules(ImmutableSet.of()); + } + } + public static class InvalidTypeException extends RuntimeException { public InvalidTypeException(String message) { super(message); @@ -58,12 +89,7 @@ public class JsonGenericSerializer<T, U extends DTO> { private final ObjectMapper objectMapper; private final DTOConverter<T, U> dtoConverter; - @SafeVarargs - public static <T, U extends DTO> JsonGenericSerializer<T, U> of(DTOModule<T, U>... modules) { - return new JsonGenericSerializer<>(ImmutableSet.copyOf(modules), ImmutableSet.of(), DTOConverter.of(modules)); - } - - public JsonGenericSerializer(Set<? extends DTOModule<? extends T, ? extends U>> modules, Set<? extends DTOModule<?, ?>> nestedTypesModules, DTOConverter<T, U> converter) { + private JsonGenericSerializer(Set<? extends DTOModule<? extends T, ? extends U>> modules, Set<? extends DTOModule<?, ?>> nestedTypesModules, DTOConverter<T, U> converter) { this.dtoConverter = converter; this.objectMapper = buildObjectMapper(Sets.union(modules, nestedTypesModules)); } @@ -76,9 +102,10 @@ public class JsonGenericSerializer<T, U extends DTO> { .setSerializationInclusion(JsonInclude.Include.NON_ABSENT) .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) .enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY); - modules.stream() + NamedType[] namedTypes = modules.stream() .map(module -> new NamedType(module.getDTOClass(), module.getDomainObjectType())) - .forEach(objectMapper::registerSubtypes); + .toArray(NamedType[]::new); + objectMapper.registerSubtypes(namedTypes); return objectMapper; } diff --git a/json/src/test/java/org/apache/DTOConverterTest.java b/json/src/test/java/org/apache/DTOConverterTest.java index d75fffe..6783b0e 100644 --- a/json/src/test/java/org/apache/DTOConverterTest.java +++ b/json/src/test/java/org/apache/DTOConverterTest.java @@ -43,15 +43,16 @@ import org.junit.jupiter.params.provider.MethodSource; class DTOConverterTest { private static final Optional<NestedType> NO_CHILD = Optional.empty(); private static final Optional<DTO> NO_CHILD_DTO = Optional.empty(); - private static final FirstDomainObject FIRST = new FirstDomainObject(Optional.of(1L), ZonedDateTime.parse("2016-04-03T02:01+07:00[Asia/Vientiane]"), "first payload", NO_CHILD); - private static final FirstDTO FIRST_DTO = new FirstDTO("first", Optional.of(1L), "2016-04-03T02:01+07:00[Asia/Vientiane]", "first payload", NO_CHILD_DTO); - private static final SecondDomainObject SECOND = new SecondDomainObject(UUID.fromString("4a2c853f-7ffc-4ce3-9410-a47e85b3b741"), "second payload", NO_CHILD); - private static final SecondDTO SECOND_DTO = new SecondDTO("second", "4a2c853f-7ffc-4ce3-9410-a47e85b3b741", "second payload", NO_CHILD_DTO); + private static final BaseType FIRST = new FirstDomainObject(Optional.of(1L), ZonedDateTime.parse("2016-04-03T02:01+07:00[Asia/Vientiane]"), "first payload", NO_CHILD); + private static final DTO FIRST_DTO = new FirstDTO("first", Optional.of(1L), "2016-04-03T02:01+07:00[Asia/Vientiane]", "first payload", NO_CHILD_DTO); + private static final BaseType SECOND = new SecondDomainObject(UUID.fromString("4a2c853f-7ffc-4ce3-9410-a47e85b3b741"), "second payload", NO_CHILD); + private static final DTO SECOND_DTO = new SecondDTO("second", "4a2c853f-7ffc-4ce3-9410-a47e85b3b741", "second payload", NO_CHILD_DTO); @SuppressWarnings("unchecked") @Test void shouldConvertFromKnownDTO() throws Exception { - assertThat(DTOConverter.of(TestModules.FIRST_TYPE) + assertThat(DTOConverter + .<BaseType, DTO>of(TestModules.FIRST_TYPE) .convert(FIRST_DTO)) .contains(FIRST); } @@ -105,7 +106,7 @@ class DTOConverterTest { @SuppressWarnings("unchecked") @Test void shouldConvertFromKnownDomainObject() throws Exception { - assertThat(DTOConverter.of(TestModules.FIRST_TYPE) + assertThat(DTOConverter.<BaseType, DTO>of(TestModules.FIRST_TYPE) .convert(FIRST)) .hasValueSatisfying(result -> assertThat(result).isInstanceOf(FirstDTO.class).isEqualToComparingFieldByField(FIRST_DTO)); } diff --git a/json/src/test/java/org/apache/JsonGenericSerializerTest.java b/json/src/test/java/org/apache/JsonGenericSerializerTest.java index 3fc6c45..d9bcde1 100644 --- a/json/src/test/java/org/apache/JsonGenericSerializerTest.java +++ b/json/src/test/java/org/apache/JsonGenericSerializerTest.java @@ -44,10 +44,10 @@ import org.junit.jupiter.params.provider.MethodSource; class JsonGenericSerializerTest { private static final Optional<NestedType> NO_CHILD = Optional.empty(); - private static final FirstDomainObject FIRST = new FirstDomainObject(Optional.of(1L), ZonedDateTime.parse("2016-04-03T02:01+07:00[Asia/Vientiane]"), "first payload", NO_CHILD); - private static final SecondDomainObject SECOND = new SecondDomainObject(UUID.fromString("4a2c853f-7ffc-4ce3-9410-a47e85b3b741"), "second payload", NO_CHILD); - private static final SecondDomainObject SECOND_WITH_NESTED = new SecondDomainObject(UUID.fromString("4a2c853f-7ffc-4ce3-9410-a47e85b3b741"), "second payload", Optional.of(new FirstNestedType(12))); - private static final FirstDomainObject FIRST_WITH_NESTED = new FirstDomainObject(Optional.of(1L), ZonedDateTime.parse("2016-04-03T02:01+07:00[Asia/Vientiane]"), "payload", Optional.of(new SecondNestedType("bar"))); + private static final BaseType FIRST = new FirstDomainObject(Optional.of(1L), ZonedDateTime.parse("2016-04-03T02:01+07:00[Asia/Vientiane]"), "first payload", NO_CHILD); + private static final BaseType SECOND = new SecondDomainObject(UUID.fromString("4a2c853f-7ffc-4ce3-9410-a47e85b3b741"), "second payload", NO_CHILD); + private static final BaseType SECOND_WITH_NESTED = new SecondDomainObject(UUID.fromString("4a2c853f-7ffc-4ce3-9410-a47e85b3b741"), "second payload", Optional.of(new FirstNestedType(12))); + private static final BaseType FIRST_WITH_NESTED = new FirstDomainObject(Optional.of(1L), ZonedDateTime.parse("2016-04-03T02:01+07:00[Asia/Vientiane]"), "payload", Optional.of(new SecondNestedType("bar"))); private static final String MISSING_TYPE_JSON = "{\"id\":1,\"time\":\"2016-04-03T02:01+07:00[Asia/Vientiane]\",\"payload\":\"first payload\"}"; private static final String DUPLICATE_TYPE_JSON = "{\"type\":\"first\", \"type\":\"second\", \"id\":1,\"time\":\"2016-04-03T02:01+07:00[Asia/Vientiane]\",\"payload\":\"first payload\"}"; @@ -56,51 +56,50 @@ class JsonGenericSerializerTest { private static final String SECOND_JSON = "{\"type\":\"second\",\"id\":\"4a2c853f-7ffc-4ce3-9410-a47e85b3b741\",\"payload\":\"second payload\"}"; private static final String SECOND_WITH_NESTED_JSON = "{\"type\":\"second\",\"id\":\"4a2c853f-7ffc-4ce3-9410-a47e85b3b741\",\"payload\":\"second payload\", \"child\": {\"foo\": 12, \"type\": \"first-nested\"}}"; - @SuppressWarnings("unchecked") @Test void shouldDeserializeKnownType() throws Exception { - assertThat(JsonGenericSerializer.of(TestModules.FIRST_TYPE) + assertThat(JsonGenericSerializer.forModules(TestModules.FIRST_TYPE).withoutNestedType() .deserialize(FIRST_JSON)) .isEqualTo(FIRST); } - @SuppressWarnings("unchecked") @Test void shouldDeserializeNestedTypeWithSecond() throws Exception { - assertThat(JsonGenericSerializer.of(TestModules.FIRST_TYPE, TestModules.SECOND_TYPE, TestModules.FIRST_NESTED, TestModules.SECOND_NESTED) + assertThat(JsonGenericSerializer + .forModules(TestModules.FIRST_TYPE, TestModules.SECOND_TYPE) + .withNestedTypeModules(TestModules.FIRST_NESTED, TestModules.SECOND_NESTED) .deserialize(SECOND_WITH_NESTED_JSON)) .isEqualTo(SECOND_WITH_NESTED); } - @SuppressWarnings("unchecked") @Test void shouldDeserializeNestedTypeWithFirst() throws Exception { - assertThat(JsonGenericSerializer.of(TestModules.FIRST_TYPE, TestModules.SECOND_TYPE, TestModules.FIRST_NESTED, TestModules.SECOND_NESTED) + assertThat(JsonGenericSerializer + .forModules(TestModules.FIRST_TYPE, TestModules.SECOND_TYPE) + .withNestedTypeModules(TestModules.FIRST_NESTED, TestModules.SECOND_NESTED) .deserialize(FIRST_JSON_WITH_NESTED)) .isEqualTo(FIRST_WITH_NESTED); } - @SuppressWarnings("unchecked") @Test void shouldThrowWhenDeserializeEventWithMissingType() { - assertThatThrownBy(() -> JsonGenericSerializer.of(TestModules.FIRST_TYPE) + assertThatThrownBy(() -> JsonGenericSerializer.forModules(TestModules.FIRST_TYPE).withoutNestedType() .deserialize(MISSING_TYPE_JSON)) .isInstanceOf(JsonGenericSerializer.InvalidTypeException.class); } - @SuppressWarnings("unchecked") @Test void shouldThrowWhenDeserializeEventWithDuplicatedTypes() { - assertThatThrownBy(() -> JsonGenericSerializer.of( - TestModules.FIRST_TYPE, - TestModules.SECOND_TYPE) + assertThatThrownBy(() -> JsonGenericSerializer + .forModules(TestModules.FIRST_TYPE, TestModules.SECOND_TYPE) + .withoutNestedType() .deserialize(DUPLICATE_TYPE_JSON)) .isInstanceOf(JsonGenericSerializer.InvalidTypeException.class); } @Test void shouldThrowWhenDeserializeUnknownType() { - assertThatThrownBy(() -> JsonGenericSerializer.of() + assertThatThrownBy(() -> JsonGenericSerializer.forModules().withoutNestedType() .deserialize(FIRST_JSON)) .isInstanceOf(JsonGenericSerializer.UnknownTypeException.class); } @@ -108,12 +107,11 @@ class JsonGenericSerializerTest { @ParameterizedTest @MethodSource void serializeShouldHandleAllKnownTypes(BaseType domainObject, String serializedJson) throws Exception { - @SuppressWarnings("unchecked") - JsonGenericSerializer<BaseType, DTO> serializer = JsonGenericSerializer.of( - TestModules.FIRST_TYPE, - TestModules.SECOND_TYPE); - assertThatJson(serializer.serialize(domainObject)) + assertThatJson(JsonGenericSerializer + .forModules(TestModules.FIRST_TYPE, TestModules.SECOND_TYPE) + .withoutNestedType() + .serialize(domainObject)) .isEqualTo(serializedJson); } @@ -124,12 +122,10 @@ class JsonGenericSerializerTest { @ParameterizedTest @MethodSource void deserializeShouldHandleAllKnownTypes(BaseType domainObject, String serializedJson) throws Exception { - @SuppressWarnings("unchecked") - JsonGenericSerializer<BaseType, DTO> serializer = JsonGenericSerializer.of( - TestModules.FIRST_TYPE, - TestModules.SECOND_TYPE); - - assertThatJson(serializer.deserialize(serializedJson)) + assertThatJson(JsonGenericSerializer + .forModules(TestModules.FIRST_TYPE, TestModules.SECOND_TYPE) + .withoutNestedType() + .deserialize(serializedJson)) .isEqualTo(domainObject); } @@ -144,17 +140,20 @@ class JsonGenericSerializerTest { ); } - @SuppressWarnings("unchecked") @Test void shouldSerializeKnownType() throws Exception { - assertThatJson(JsonGenericSerializer.of(TestModules.FIRST_TYPE) + assertThatJson(JsonGenericSerializer + .<BaseType, DTO>forModules(TestModules.FIRST_TYPE) + .withoutNestedType() .serialize(FIRST)) .isEqualTo(FIRST_JSON); } @Test void shouldThrowWhenSerializeUnknownType() { - assertThatThrownBy(() -> JsonGenericSerializer.of() + assertThatThrownBy(() -> JsonGenericSerializer + .forModules() + .withoutNestedType() .serialize(FIRST)) .isInstanceOf(JsonGenericSerializer.UnknownTypeException.class); } diff --git a/json/src/test/java/org/apache/dto/TestModules.java b/json/src/test/java/org/apache/dto/TestModules.java index ad4d04b..d7cb781 100644 --- a/json/src/test/java/org/apache/dto/TestModules.java +++ b/json/src/test/java/org/apache/dto/TestModules.java @@ -24,7 +24,7 @@ import org.apache.james.json.DTOConverter; import org.apache.james.json.DTOModule; public interface TestModules { - TestNestedModule FIRST_NESTED = DTOModule + TestNestedModule<?, ?> FIRST_NESTED = DTOModule .forDomainObject(FirstNestedType.class) .convertToDTO(FirstNestedDTO.class) .toDomainObjectConverter(FirstNestedDTO::toDomainObject) @@ -34,7 +34,7 @@ public interface TestModules { .typeName("first-nested") .withFactory(TestNestedModule::new); - TestNestedModule SECOND_NESTED = DTOModule + TestNestedModule<?, ?> SECOND_NESTED = DTOModule .forDomainObject(SecondNestedType.class) .convertToDTO(SecondNestedDTO.class) .toDomainObjectConverter(SecondNestedDTO::toDomainObject) @@ -44,10 +44,9 @@ public interface TestModules { .typeName("second-nested") .withFactory(TestNestedModule::new); - DTOConverter NESTED_CONVERTERS = DTOConverter.of(FIRST_NESTED, SECOND_NESTED); + DTOConverter<NestedType, DTO> NESTED_CONVERTERS = DTOConverter.of(FIRST_NESTED, SECOND_NESTED); - @SuppressWarnings("rawtypes") - TestModule FIRST_TYPE = DTOModule + TestModule<?, ?> FIRST_TYPE = DTOModule .forDomainObject(FirstDomainObject.class) .convertToDTO(FirstDTO.class) .toDomainObjectConverter(dto -> dto.toDomainObject(NESTED_CONVERTERS)) @@ -56,12 +55,11 @@ public interface TestModules { domainObject.getId(), domainObject.getTime().toString(), domainObject.getPayload(), - NESTED_CONVERTERS.convert(domainObject.getChild()))) + domainObject.getChild().flatMap(NESTED_CONVERTERS::convert))) .typeName("first") .withFactory(TestModule::new); - @SuppressWarnings("rawtypes") - TestModule SECOND_TYPE = DTOModule + TestModule<?, ?> SECOND_TYPE = DTOModule .forDomainObject(SecondDomainObject.class) .convertToDTO(SecondDTO.class) .toDomainObjectConverter(dto -> dto.toDomainObject(NESTED_CONVERTERS)) @@ -69,7 +67,7 @@ public interface TestModules { typeName, domainObject.getId().toString(), domainObject.getPayload(), - NESTED_CONVERTERS.convert(domainObject.getChild()))) + domainObject.getChild().flatMap(NESTED_CONVERTERS::convert))) .typeName("second") .withFactory(TestModule::new); diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskSerializationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskSerializationTest.java index f0a0277..4012d94 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskSerializationTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskSerializationTest.java @@ -30,9 +30,9 @@ import java.time.Instant; import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer; import org.apache.james.server.task.json.JsonTaskSerializer; import org.apache.james.task.TaskExecutionDetails; +import org.junit.jupiter.api.Test; import com.fasterxml.jackson.core.JsonProcessingException; -import org.junit.jupiter.api.Test; class MailboxPathV2MigrationTaskSerializationTest { private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); @@ -42,8 +42,8 @@ class MailboxPathV2MigrationTaskSerializationTest { private static final MailboxPathV2Migration.AdditionalInformation DETAILS = new MailboxPathV2Migration.AdditionalInformation(42L, 10, TIMESTAMP); private static final String SERIALIZED_ADDITIONAL_INFORMATION = "{\"type\": \"cassandra-mailbox-path-v2-migration\", \"remainingCount\":42,\"initialCount\":10, \"timestamp\":\"2018-11-13T12:00:55Z\"}"; - private static final JsonTaskSerializer TASK_SERIALIZER = new JsonTaskSerializer(MailboxPathV2MigrationTaskDTO.MODULE.apply(MIGRATION)); - private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = new JsonTaskAdditionalInformationSerializer(MailboxPathV2MigrationTaskAdditionalInformationDTO.MODULE); + private static final JsonTaskSerializer TASK_SERIALIZER = JsonTaskSerializer.of(MailboxPathV2MigrationTaskDTO.MODULE.apply(MIGRATION)); + private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = JsonTaskAdditionalInformationSerializer.of(MailboxPathV2MigrationTaskAdditionalInformationDTO.MODULE); @Test void taskShouldBeSerializable() throws JsonProcessingException { @@ -63,12 +63,13 @@ class MailboxPathV2MigrationTaskSerializationTest { } @Test - void additonalInformationShouldBeDeserializable() throws IOException { + void additionalInformationShouldBeDeserializable() throws IOException { TaskExecutionDetails.AdditionalInformation deserialized = JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER.deserialize(SERIALIZED_ADDITIONAL_INFORMATION); - assertThat(deserialized).isInstanceOf(MailboxPathV2Migration.AdditionalInformation.class); - - MailboxPathV2Migration.AdditionalInformation additionalInformation = (MailboxPathV2Migration.AdditionalInformation) deserialized; - assertThat(additionalInformation.getRemainingCount()).isEqualTo(DETAILS.getRemainingCount()); - assertThat(additionalInformation.getInitialCount()).isEqualTo(DETAILS.getInitialCount()); + assertThat(deserialized).isInstanceOfSatisfying(MailboxPathV2Migration.AdditionalInformation.class, + additionalInformation -> { + assertThat(additionalInformation.getRemainingCount()).isEqualTo(DETAILS.getRemainingCount()); + assertThat(additionalInformation.getInitialCount()).isEqualTo(DETAILS.getInitialCount()); + } + ); } } diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTaskTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTaskTest.java index 4e7b48e..dabac7c 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTaskTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/MailboxMergingTaskTest.java @@ -29,10 +29,10 @@ import java.time.Instant; import org.apache.james.mailbox.cassandra.ids.CassandraId; import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer; import org.apache.james.server.task.json.JsonTaskSerializer; +import org.junit.jupiter.api.Test; import com.fasterxml.jackson.core.JsonProcessingException; import net.javacrumbs.jsonunit.assertj.JsonAssertions; -import org.junit.jupiter.api.Test; class MailboxMergingTaskTest { private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); @@ -42,8 +42,8 @@ class MailboxMergingTaskTest { private static final MailboxMergingTaskRunner TASK_RUNNER = mock(MailboxMergingTaskRunner.class); private static final MailboxMergingTask TASK = new MailboxMergingTask(TASK_RUNNER, 0L, CASSANDRA_ID_FACTORY.fromString("3b8e5f90-b94f-20f8-ce7b-3c4aad93b90c"), CASSANDRA_ID_FACTORY.fromString("2c7f4081-aa30-11e9-bf6c-2d3b9e84aafd")); private static final MailboxMergingTask.Details DETAILS = new MailboxMergingTask.Details(CASSANDRA_ID_FACTORY.fromString("3b8e5f90-b94f-20f8-ce7b-3c4aad93b90c"), CASSANDRA_ID_FACTORY.fromString("2c7f4081-aa30-11e9-bf6c-2d3b9e84aafd"), 10, 15, 20, TIMESTAMP); - private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = new JsonTaskAdditionalInformationSerializer(MailboxMergingTaskAdditionalInformationDTO.SERIALIZATION_MODULE); - private static final JsonTaskSerializer TESTEE = new JsonTaskSerializer(MailboxMergingTaskDTO.module(TASK_RUNNER)); + private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = JsonTaskAdditionalInformationSerializer.of(MailboxMergingTaskAdditionalInformationDTO.SERIALIZATION_MODULE); + private static final JsonTaskSerializer TESTEE = JsonTaskSerializer.of(MailboxMergingTaskDTO.module(TASK_RUNNER)); @Test void taskShouldBeSerializable() throws JsonProcessingException { diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreVaultGarbageCollectionTaskSerializationTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreVaultGarbageCollectionTaskSerializationTest.java index 6852dd7..ab2fff9 100644 --- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreVaultGarbageCollectionTaskSerializationTest.java +++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/blob/BlobStoreVaultGarbageCollectionTaskSerializationTest.java @@ -32,21 +32,19 @@ import org.apache.james.blob.api.BucketName; import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer; import org.apache.james.server.task.json.JsonTaskSerializer; import org.apache.james.task.Task; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.google.common.collect.ImmutableList; - import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.mockito.Mockito; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.google.common.collect.ImmutableList; import reactor.core.publisher.Flux; class BlobStoreVaultGarbageCollectionTaskSerializationTest { private static final BlobStoreDeletedMessageVault DELETED_MESSAGE_VAULT = Mockito.mock(BlobStoreDeletedMessageVault.class); private static final BlobStoreVaultGarbageCollectionTask.Factory TASK_FACTORY = new BlobStoreVaultGarbageCollectionTask.Factory(DELETED_MESSAGE_VAULT); - private static final JsonTaskSerializer TASK_SERIALIZER = new JsonTaskSerializer(BlobStoreVaultGarbageCollectionTaskDTO.module(TASK_FACTORY)); + private static final JsonTaskSerializer TASK_SERIALIZER = JsonTaskSerializer.of(BlobStoreVaultGarbageCollectionTaskDTO.module(TASK_FACTORY)); private static final ZonedDateTime BEGINNING_OF_RETENTION_PERIOD = ZonedDateTime.parse("2019-09-03T15:26:13.356+02:00[Europe/Paris]"); private static final ImmutableList<BucketName> BUCKET_IDS = ImmutableList.of(BucketName.of("1"), BucketName.of("2"), BucketName.of("3")); private static final Flux<BucketName> RETENTION_OPERATION = Flux.fromIterable(BUCKET_IDS); @@ -57,7 +55,7 @@ class BlobStoreVaultGarbageCollectionTaskSerializationTest { private static final String SERIALIZED_TASK = "{\"type\":\"deleted-messages-blob-store-based-garbage-collection\"}"; private static final String SERIALIZED_ADDITIONAL_INFORMATION_TASK = "{\"type\":\"deleted-messages-blob-store-based-garbage-collection\", \"beginningOfRetentionPeriod\":\"2019-09-03T15:26:13.356+02:00[Europe/Paris]\",\"deletedBuckets\":[\"1\", \"2\", \"3\"], \"timestamp\": \"2018-11-13T12:00:55Z\"}"; - private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = new JsonTaskAdditionalInformationSerializer(BlobStoreVaultGarbageCollectionTaskAdditionalInformationDTO.MODULE); + private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = JsonTaskAdditionalInformationSerializer.of(BlobStoreVaultGarbageCollectionTaskAdditionalInformationDTO.MODULE); @BeforeAll static void setUp() { diff --git a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/dto/DTOTest.java b/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/dto/DTOTest.java index 2311487..394bf6f 100644 --- a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/dto/DTOTest.java +++ b/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/dto/DTOTest.java @@ -148,56 +148,56 @@ class DTOTest { @Test void shouldSerializeQuotaThresholdChangedEvent() throws Exception { - assertThatJson(new JsonEventSerializer(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE) + assertThatJson(JsonEventSerializer.forModules(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE).withoutNestedType() .serialize(EVENT)) .isEqualTo(EVENT_JSON); } @Test void shouldDeserializeQuotaThresholdChangedEvent() throws Exception { - assertThat(new JsonEventSerializer(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE) + assertThat(JsonEventSerializer.forModules(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE).withoutNestedType() .deserialize(EVENT_JSON)) .isEqualTo(EVENT); } @Test void shouldSerializeEvent2() throws Exception { - assertThatJson(new JsonEventSerializer(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE) + assertThatJson(JsonEventSerializer.forModules(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE).withoutNestedType() .serialize(EVENT_2)) .isEqualTo(EVENT_JSON_2); } @Test void shouldDeserializeEvent2() throws Exception { - assertThat(new JsonEventSerializer(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE) + assertThat(JsonEventSerializer.forModules(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE).withoutNestedType() .deserialize(EVENT_JSON_2)) .isEqualTo(EVENT_2); } @Test void shouldSerializeEvent3() throws Exception { - assertThatJson(new JsonEventSerializer(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE) + assertThatJson(JsonEventSerializer.forModules(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE).withoutNestedType() .serialize(EVENT_3)) .isEqualTo(EVENT_JSON_3); } @Test void shouldDeserializeEvent3() throws Exception { - assertThat(new JsonEventSerializer(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE) + assertThat(JsonEventSerializer.forModules(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE).withoutNestedType() .deserialize(EVENT_JSON_3)) .isEqualTo(EVENT_3); } @Test void shouldSerializeEvent4() throws Exception { - assertThatJson(new JsonEventSerializer(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE) + assertThatJson(JsonEventSerializer.forModules(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE).withoutNestedType() .serialize(EVENT_4)) .isEqualTo(EVENT_JSON_4); } @Test void shouldDeserializeEvent4() throws Exception { - assertThat(new JsonEventSerializer(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE) + assertThat(JsonEventSerializer.forModules(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE).withoutNestedType() .deserialize(EVENT_JSON_4)) .isEqualTo(EVENT_4); } diff --git a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java b/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java index 8864507..55c3c44 100644 --- a/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java +++ b/mailbox/plugin/quota-mailing-cassandra/src/test/java/org/apache/james/mailbox/quota/cassandra/listeners/CassandraQuotaMailingListenersIntegrationTest.java @@ -20,11 +20,13 @@ package org.apache.james.mailbox.quota.cassandra.listeners; import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreExtension; +import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer; import org.apache.james.mailbox.quota.cassandra.dto.QuotaEventDTOModules; import org.apache.james.mailbox.quota.mailing.listeners.QuotaThresholdMailingIntegrationTest; import org.junit.jupiter.api.extension.RegisterExtension; class CassandraQuotaMailingListenersIntegrationTest implements QuotaThresholdMailingIntegrationTest { @RegisterExtension - static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE); + static CassandraEventStoreExtension eventStoreExtension = + new CassandraEventStoreExtension(JsonEventSerializer.forModules(QuotaEventDTOModules.QUOTA_THRESHOLD_CHANGE).withoutNestedType()); } diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java index cbc823c..d71ad03 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java @@ -33,7 +33,6 @@ import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer import org.apache.james.server.task.json.JsonTaskSerializer; import org.apache.james.task.Task; import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -71,9 +70,9 @@ class ErrorRecoveryIndexationTaskSerializationTest { void setUp() { reIndexerPerformer = mock(ReIndexerPerformer.class); ErrorRecoveryIndexationTask.Factory factory = new ErrorRecoveryIndexationTask.Factory(reIndexerPerformer, mailboxIdFactory); - taskSerializer = new JsonTaskSerializer(ErrorRecoveryIndexationTaskDTO.module(factory)); + taskSerializer = JsonTaskSerializer.of(ErrorRecoveryIndexationTaskDTO.module(factory)); - jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer( + jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of( ReprocessingContextInformationForErrorRecoveryIndexationTask.serializationModule(mailboxIdFactory)); reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of( diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java index 0c1a34b..3d0f9c5 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java @@ -61,9 +61,9 @@ class FullReindexingTaskSerializationTest { @BeforeEach void setUp() { reIndexerPerformer = mock(ReIndexerPerformer.class); - taskSerializer = new JsonTaskSerializer(FullReindexingTask.module(reIndexerPerformer)); + taskSerializer = JsonTaskSerializer.of(FullReindexingTask.module(reIndexerPerformer)); - jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer( + jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of( ReprocessingContextInformationForFullReindexingTask.serializationModule(new TestId.Factory())); reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of( diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReindexingTaskSerializationTest.java index c1a873e..4c27cef 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReindexingTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReindexingTaskSerializationTest.java @@ -49,11 +49,11 @@ class MessageIdReindexingTaskSerializationTest { @BeforeEach void setUp() { messageIdFactory = new TestMessageId.Factory(); - jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer( + jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of( MessageIdReindexingTaskAdditionalInformationDTO.serializationModule(messageIdFactory)); reIndexerPerformer = mock(ReIndexerPerformer.class); MessageIdReIndexingTask.Factory factory = new MessageIdReIndexingTask.Factory(reIndexerPerformer, messageIdFactory); - taskSerializer = new JsonTaskSerializer(MessageIdReindexingTaskDTO.module(factory)); + taskSerializer = JsonTaskSerializer.of(MessageIdReindexingTaskDTO.module(factory)); } @Test diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java index 0ce4f36..b5c23c7 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java @@ -65,9 +65,9 @@ class SingleMailboxReindexingTaskSerializationTest { void setUp() { reIndexerPerformer = mock(ReIndexerPerformer.class); SingleMailboxReindexingTask.Factory factory = new SingleMailboxReindexingTask.Factory(reIndexerPerformer, new TestId.Factory()); - taskSerializer = new JsonTaskSerializer(SingleMailboxReindexingTaskDTO.module(factory)); + taskSerializer = JsonTaskSerializer.of(SingleMailboxReindexingTaskDTO.module(factory)); - jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer( + jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of( SingleMailboxReindexingTaskAdditionalInformationDTO.serializationModule(new TestId.Factory())); reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of( diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTaskSerializationTest.java index 9ba44ee..b97441b 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTaskSerializationTest.java @@ -45,14 +45,14 @@ class SingleMessageReindexingTaskSerializationTest { private final String SERIALIZED_ADDITIONAL_INFORMATION = "{\"type\": \"message-reindexing\", \"mailboxId\": \"1\", \"uid\": 10, \"timestamp\":\"2018-11-13T12:00:55Z\"}"; private final TestId mailboxId = TestId.of(1L); private final MessageUid messageUid = MessageUid.of(10L); - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer( + private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of( SingleMessageReindexingTaskAdditionalInformationDTO.serializationModule(mailboxIdFactory)); @BeforeEach void setUp() { reIndexerPerformer = mock(ReIndexerPerformer.class); SingleMessageReindexingTask.Factory factory = new SingleMessageReindexingTask.Factory(reIndexerPerformer, mailboxIdFactory); - taskSerializer = new JsonTaskSerializer(SingleMessageReindexingTaskDTO.module(factory)); + taskSerializer = JsonTaskSerializer.of(SingleMessageReindexingTaskDTO.module(factory)); } @Test diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java index 701c131..ce2135a 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java @@ -68,8 +68,8 @@ class UserReindexingTaskSerializationTest { void setUp() { reIndexerPerformer = mock(ReIndexerPerformer.class); UserReindexingTask.Factory factory = new UserReindexingTask.Factory(reIndexerPerformer); - taskSerializer = new JsonTaskSerializer(UserReindexingTaskDTO.module(factory)); - jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer( + taskSerializer = JsonTaskSerializer.of(UserReindexingTaskDTO.module(factory)); + jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of( UserReindexingTaskAdditionalInformationDTO.serializationModule(new TestId.Factory())); reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of( diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java index bc81db2..d438db7 100644 --- a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java +++ b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java @@ -35,8 +35,6 @@ import org.junit.jupiter.api.extension.ParameterContext; import org.junit.jupiter.api.extension.ParameterResolutionException; import org.junit.jupiter.api.extension.ParameterResolver; -import com.google.common.collect.ImmutableSet; - public class CassandraEventSourcingDLPConfigurationStoreExtension implements BeforeAllCallback, AfterAllCallback, AfterEachCallback, ParameterResolver { private final DockerCassandraExtension dockerCassandraExtension; @@ -72,9 +70,9 @@ public class CassandraEventSourcingDLPConfigurationStoreExtension implements Bef @Override public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { - JsonEventSerializer jsonEventSerializer = new JsonEventSerializer( - DLPConfigurationModules.DLP_CONFIGURATION_STORE, - DLPConfigurationModules.DLP_CONFIGURATION_CLEAR); + JsonEventSerializer jsonEventSerializer = JsonEventSerializer + .forModules(DLPConfigurationModules.DLP_CONFIGURATION_STORE, DLPConfigurationModules.DLP_CONFIGURATION_CLEAR) + .withoutNestedType(); EventStoreDao eventStoreDao = new EventStoreDao( cassandra.getConf(), diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskSerializationTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskSerializationTest.java index e98fb43..edae144 100644 --- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskSerializationTest.java +++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskSerializationTest.java @@ -29,9 +29,9 @@ import java.time.Instant; import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer; import org.apache.james.server.task.json.JsonTaskSerializer; +import org.junit.jupiter.api.Test; import com.fasterxml.jackson.core.JsonProcessingException; -import org.junit.jupiter.api.Test; class MappingsSourcesMigrationTaskSerializationTest { private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); @@ -41,8 +41,8 @@ class MappingsSourcesMigrationTaskSerializationTest { private static final MappingsSourcesMigration.AdditionalInformation DETAILS = new MappingsSourcesMigration.AdditionalInformation(42L, 10, TIMESTAMP); private static final String SERIALIZED_ADDITIONAL_INFORMATION = "{\"type\": \"mappings-sources-migration\", \"successfulMappingsCount\":42,\"errorMappingsCount\":10,\"timestamp\":\"2018-11-13T12:00:55Z\"}"; - private static final JsonTaskSerializer TASK_SERIALIZER = new JsonTaskSerializer(MappingsSourcesMigrationTaskDTO.MODULE.apply(MIGRATION)); - private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = new JsonTaskAdditionalInformationSerializer(MappingsSourcesMigrationTaskAdditionalInformationDTO.serializationModule(MappingsSourcesMigration.TYPE)); + private static final JsonTaskSerializer TASK_SERIALIZER = JsonTaskSerializer.of(MappingsSourcesMigrationTaskDTO.MODULE.apply(MIGRATION)); + private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = JsonTaskAdditionalInformationSerializer.of(MappingsSourcesMigrationTaskAdditionalInformationDTO.serializationModule(MappingsSourcesMigration.TYPE)); @Test void taskShouldBeSerializable() throws JsonProcessingException { diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java index 68be998..555581e 100644 --- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java +++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/filtering/CassandraEventSourcingFilteringManagementTest.java @@ -20,10 +20,12 @@ package org.apache.james.jmap.cassandra.filtering; import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreExtension; +import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer; import org.apache.james.jmap.api.filtering.FilteringManagementContract; import org.junit.jupiter.api.extension.RegisterExtension; class CassandraEventSourcingFilteringManagementTest implements FilteringManagementContract { @RegisterExtension - static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(FilteringRuleSetDefineDTOModules.FILTERING_RULE_SET_DEFINED); + static CassandraEventStoreExtension eventStoreExtension = + new CassandraEventStoreExtension(JsonEventSerializer.forModules(FilteringRuleSetDefineDTOModules.FILTERING_RULE_SET_DEFINED).withoutNestedType()); } diff --git a/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java b/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java index 9aa17cb..5faaa81 100644 --- a/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java +++ b/server/protocols/webadmin/webadmin-cassandra-data/src/test/java/org/apache/james/webadmin/service/CassandraMappingsSolveInconsistenciesTaskTest.java @@ -24,20 +24,20 @@ import static org.mockito.Mockito.mock; import java.io.IOException; -import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.james.rrt.cassandra.CassandraMappingsSourcesDAO; import org.apache.james.rrt.cassandra.migration.MappingsSourcesMigration; import org.apache.james.server.task.json.JsonTaskSerializer; +import org.junit.jupiter.api.Test; +import com.fasterxml.jackson.core.JsonProcessingException; import net.javacrumbs.jsonunit.assertj.JsonAssertions; -import org.junit.jupiter.api.Test; class CassandraMappingsSolveInconsistenciesTaskTest { private static final String SERIALIZED = "{\"type\":\"cassandra-mappings-solve-inconsistencies\"}"; private static final MappingsSourcesMigration MAPPINGS_SOURCES_MIGRATION = mock(MappingsSourcesMigration.class); private static final CassandraMappingsSourcesDAO CASSANDRA_MAPPINGS_SOURCES_DAO = mock(CassandraMappingsSourcesDAO.class); private static final CassandraMappingsSolveInconsistenciesTask TASK = new CassandraMappingsSolveInconsistenciesTask(MAPPINGS_SOURCES_MIGRATION, CASSANDRA_MAPPINGS_SOURCES_DAO); - private static final JsonTaskSerializer TESTEE = new JsonTaskSerializer(CassandraMappingsSolveInconsistenciesTask.module(MAPPINGS_SOURCES_MIGRATION, CASSANDRA_MAPPINGS_SOURCES_DAO)); + private static final JsonTaskSerializer TESTEE = JsonTaskSerializer.of(CassandraMappingsSolveInconsistenciesTask.module(MAPPINGS_SOURCES_MIGRATION, CASSANDRA_MAPPINGS_SOURCES_DAO)); @Test void taskShouldBeSerializable() throws JsonProcessingException { diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultDeleteTaskSerializationTest.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultDeleteTaskSerializationTest.java index 8706f96..38277cc 100644 --- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultDeleteTaskSerializationTest.java +++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultDeleteTaskSerializationTest.java @@ -56,8 +56,8 @@ class DeletedMessagesVaultDeleteTaskSerializationTest { void setUp() { deletedMessageVault = mock(DeletedMessageVault.class); DeletedMessagesVaultDeleteTask.Factory factory = new DeletedMessagesVaultDeleteTask.Factory(deletedMessageVault, messageIdFactory); - taskSerializer = new JsonTaskSerializer(DeletedMessagesVaultDeleteTaskDTO.module(factory)); - jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer(DeletedMessagesVaultDeleteTaskAdditionalInformationDTO.serializationModule(messageIdFactory)); + taskSerializer = JsonTaskSerializer.of(DeletedMessagesVaultDeleteTaskDTO.module(factory)); + jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of(DeletedMessagesVaultDeleteTaskAdditionalInformationDTO.serializationModule(messageIdFactory)); } @Test diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultExportTaskSerializationTest.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultExportTaskSerializationTest.java index 65f0b0f..bee616e 100644 --- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultExportTaskSerializationTest.java +++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultExportTaskSerializationTest.java @@ -65,7 +65,7 @@ class DeletedMessagesVaultExportTaskSerializationTest { "\"exportTo\":\"[email protected]\"}\n"; private static final String SERIALIZED_ADDITIONAL_INFORMATION_TASK = "{\"type\":\"deleted-messages-export\", \"exportTo\":\"[email protected]\",\"userExportFrom\":\"james\",\"totalExportedMessages\":42, \"timestamp\":\"2018-11-13T12:00:55Z\"}"; - private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = new JsonTaskAdditionalInformationSerializer(DeletedMessagesVaultExportTaskAdditionalInformationDTO.MODULE); + private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = JsonTaskAdditionalInformationSerializer.of(DeletedMessagesVaultExportTaskAdditionalInformationDTO.MODULE); @BeforeAll static void init() throws AddressException { @@ -77,7 +77,7 @@ class DeletedMessagesVaultExportTaskSerializationTest { void setUp() { exportService = mock(ExportService.class); DeletedMessagesVaultExportTaskDTO.Factory factory = new DeletedMessagesVaultExportTaskDTO.Factory(exportService, queryTranslator); - taskSerializer = new JsonTaskSerializer(DeletedMessagesVaultExportTaskDTO.module(factory)); + taskSerializer = JsonTaskSerializer.of(DeletedMessagesVaultExportTaskDTO.module(factory)); } @Test diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRestoreTaskSerializationTest.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRestoreTaskSerializationTest.java index 4bfa982..42e6f20 100644 --- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRestoreTaskSerializationTest.java +++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRestoreTaskSerializationTest.java @@ -59,13 +59,13 @@ class DeletedMessagesVaultRestoreTaskSerializationTest { "}"; private static final String SERIALIZED_ADDITIONAL_INFORMATION_TASK = "{\"type\":\"deleted-messages-restore\", \"user\":\"james\",\"successfulRestoreCount\":42,\"errorRestoreCount\":10, \"timestamp\":\"2018-11-13T12:00:55Z\"}"; - private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = new JsonTaskAdditionalInformationSerializer(DeletedMessagesVaultRestoreTaskAdditionalInformationDTO.MODULE); + private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = JsonTaskAdditionalInformationSerializer.of(DeletedMessagesVaultRestoreTaskAdditionalInformationDTO.MODULE); @BeforeEach void setUp() { exportService = mock(RestoreService.class); DeletedMessagesVaultRestoreTaskDTO.Factory factory = new DeletedMessagesVaultRestoreTaskDTO.Factory(exportService, queryTranslator); - taskSerializer = new JsonTaskSerializer(DeletedMessagesVaultRestoreTaskDTO.module(factory)); + taskSerializer = JsonTaskSerializer.of(DeletedMessagesVaultRestoreTaskDTO.module(factory)); } @Test 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 0dadb58..ef5b656 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 @@ -94,7 +94,7 @@ class WebadminApiQuerySerializationContractTest { private final static QueryTranslator queryTranslator = new QueryTranslator(mailboxIdFactory); private final static RestoreService restoreService = Mockito.mock(RestoreService.class); private final static DeletedMessagesVaultRestoreTaskDTO.Factory factory = new DeletedMessagesVaultRestoreTaskDTO.Factory(restoreService, queryTranslator); - private final static JsonTaskSerializer taskSerializer = new JsonTaskSerializer(DeletedMessagesVaultRestoreTaskDTO.module(factory)); + private final static JsonTaskSerializer taskSerializer = JsonTaskSerializer.of(DeletedMessagesVaultRestoreTaskDTO.module(factory)); /** * Enforce that the format of the query serialized in json in the body of the request to the webadmin is stable. diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTaskTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTaskTest.java index 9764739..0c24d8a 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTaskTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/service/EventDeadLettersRedeliverTaskTest.java @@ -58,12 +58,12 @@ class EventDeadLettersRedeliverTaskTest { private static final EventDeadLettersRedeliverAllTask TASK_ALL = new EventDeadLettersRedeliverAllTask(SERVICE); private static final EventDeadLettersRedeliverGroupTask TASK_GROUP = new EventDeadLettersRedeliverGroupTask(SERVICE, new GenericGroup("abc")); private static final EventDeadLettersRedeliverOneTask TASK_ONE = new EventDeadLettersRedeliverOneTask(SERVICE, new GenericGroup("abc"), EventDeadLetters.InsertionId.of("fcbc3c92-e9a0-4ece-94ed-6e6b45045258")); - private static final JsonTaskSerializer TESTEE = new JsonTaskSerializer( + private static final JsonTaskSerializer TESTEE = JsonTaskSerializer.of( EventDeadLettersRedeliverAllTaskDTO.module(SERVICE), EventDeadLettersRedeliverGroupTaskDTO.module(SERVICE), EventDeadLettersRedeliverOneTaskDTO.module(SERVICE)); - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer( + private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of( EventDeadLettersRedeliveryTaskAdditionalInformationForAll.MODULE, EventDeadLettersRedeliveryTaskAdditionalInformationForGroup.MODULE, EventDeadLettersRedeliveryTaskAdditionalInformationForOne.MODULE); diff --git a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java index cdde343..54d2c95 100644 --- a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java +++ b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java @@ -44,7 +44,7 @@ class ClearMailQueueTaskTest { private static final String QUEUE_NAME = "anyQueue"; private static final long INITIAL_COUNT = 0L; private static final long REMAINING_COUNT = 10L; - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer( + private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of( ClearMailQueueTaskAdditionalInformationDTO.SERIALIZATION_MODULE); private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION = "{\"type\": \"clear-mail-queue\", \"mailQueueName\":\"anyQueue\",\"initialCount\":0,\"remainingCount\":10, \"timestamp\":\"2018-11-13T12:00:55Z\"}"; @@ -54,7 +54,7 @@ class ClearMailQueueTaskTest { ManageableMailQueue mockedQueue = mock(ManageableMailQueue.class); when(mockedQueue.getName()).thenReturn(QUEUE_NAME); when(mailQueueFactory.getQueue(anyString())).thenAnswer(arg -> Optional.of(mockedQueue)); - JsonTaskSerializer testee = new JsonTaskSerializer(ClearMailQueueTaskDTO.module(mailQueueFactory)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ClearMailQueueTaskDTO.module(mailQueueFactory)); ManageableMailQueue queue = mailQueueFactory.getQueue(QUEUE_NAME).get(); ClearMailQueueTask task = new ClearMailQueueTask(queue); @@ -67,7 +67,7 @@ class ClearMailQueueTaskTest { ManageableMailQueue mockedQueue = mock(ManageableMailQueue.class); when(mockedQueue.getName()).thenReturn(QUEUE_NAME); when(mailQueueFactory.getQueue(anyString())).thenAnswer(arg -> Optional.of(mockedQueue)); - JsonTaskSerializer testee = new JsonTaskSerializer(ClearMailQueueTaskDTO.module(mailQueueFactory)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ClearMailQueueTaskDTO.module(mailQueueFactory)); ManageableMailQueue queue = mailQueueFactory.getQueue(QUEUE_NAME).get(); ClearMailQueueTask task = new ClearMailQueueTask(queue); @@ -78,7 +78,7 @@ class ClearMailQueueTaskTest { void taskShouldThrowWhenDeserializeAnUnknownQueue() throws Exception { MailQueueFactory<ManageableMailQueue> mailQueueFactory = mock(MailQueueFactory.class); when(mailQueueFactory.getQueue(anyString())).thenReturn(Optional.empty()); - JsonTaskSerializer testee = new JsonTaskSerializer(ClearMailQueueTaskDTO.module(mailQueueFactory)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ClearMailQueueTaskDTO.module(mailQueueFactory)); String serializedJson = "{\"type\": \"clear-mail-queue\", \"queue\": \"anyQueue\"}"; assertThatThrownBy(() -> testee.deserialize(serializedJson)) diff --git a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java index 098a1f6..edd4c54 100644 --- a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java +++ b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskTest.java @@ -50,7 +50,7 @@ class DeleteMailsFromMailQueueTaskTest { private MailQueueFactory<ManageableMailQueue> mailQueueFactory; private ManageableMailQueue mockedQueue; private final static String queueName = "anyQueue"; - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer(DeleteMailsFromMailQueueTaskAdditionalInformationDTO.MODULE); + private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of(DeleteMailsFromMailQueueTaskAdditionalInformationDTO.MODULE); @BeforeEach private void setUp() { @@ -64,7 +64,7 @@ class DeleteMailsFromMailQueueTaskTest { @MethodSource void taskShouldBeSerializable(Optional<MailAddress> sender, Optional<String> name, Optional<MailAddress> recipient, String serializedJson) throws Exception { - JsonTaskSerializer testee = new JsonTaskSerializer(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory)); + JsonTaskSerializer testee = JsonTaskSerializer.of(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory)); ManageableMailQueue queue = mailQueueFactory.getQueue(queueName).get(); DeleteMailsFromMailQueueTask task = new DeleteMailsFromMailQueueTask(queue, sender, name, recipient); @@ -78,7 +78,7 @@ class DeleteMailsFromMailQueueTaskTest { @ParameterizedTest @MethodSource void taskShouldBeDeserializable(Optional<MailAddress> sender, Optional<String> name, Optional<MailAddress> recipient, String serializedJson) throws Exception { - JsonTaskSerializer testee = new JsonTaskSerializer(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory)); + JsonTaskSerializer testee = JsonTaskSerializer.of(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory)); ManageableMailQueue queue = mailQueueFactory.getQueue(queueName).get(); DeleteMailsFromMailQueueTask task = new DeleteMailsFromMailQueueTask(queue, sender, name, recipient); @@ -101,7 +101,7 @@ class DeleteMailsFromMailQueueTaskTest { void taskShouldThrowWhenDeserializeAnUnknownQueue() throws Exception { MailQueueFactory<ManageableMailQueue> mailQueueFactory = mock(MailQueueFactory.class); when(mailQueueFactory.getQueue(anyString())).thenReturn(Optional.empty()); - JsonTaskSerializer testee = new JsonTaskSerializer(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory)); + JsonTaskSerializer testee = JsonTaskSerializer.of(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory)); String serializedJson = "{\"type\": \"delete-mails-from-mail-queue\", \"queue\": \"anyQueue\", \"sender\": \"[email protected]\"}"; assertThatThrownBy(() -> testee.deserialize(serializedJson)) @@ -110,7 +110,7 @@ class DeleteMailsFromMailQueueTaskTest { @Test void taskShouldThrowWhenDeserializeAMalformedMailAddress() throws Exception { - JsonTaskSerializer testee = new JsonTaskSerializer(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory)); + JsonTaskSerializer testee = JsonTaskSerializer.of(DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory)); String serializedJson = "{\"type\": \"delete-mails-from-mail-queue\", \"queue\": \"" + queueName + "\", \"sender\": \"a.b.c\"}"; assertThatThrownBy(() -> testee.deserialize(serializedJson)) diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskTest.java index 33b47f4..fdaf67f 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskTest.java @@ -50,19 +50,19 @@ class ClearMailRepositoryTaskTest { private static final ClearMailRepositoryTask TASK = new ClearMailRepositoryTask(MAIL_REPOSITORIES, MAIL_REPOSITORY_PATH); private static final long INITIAL_COUNT = 0L; private static final long REMAINING_COUNT = 10L; - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer( + private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of( ClearMailRepositoryTaskAdditionalInformationDTO.SERIALIZATION_MODULE); @Test void taskShouldBeSerializable() throws JsonProcessingException { - JsonTaskSerializer testee = new JsonTaskSerializer(ClearMailRepositoryTaskDTO.module(FACTORY)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ClearMailRepositoryTaskDTO.module(FACTORY)); JsonAssertions.assertThatJson(testee.serialize(TASK)) .isEqualTo(SERIALIZED); } @Test void taskShouldBeDeserializable() throws IOException { - JsonTaskSerializer testee = new JsonTaskSerializer(ClearMailRepositoryTaskDTO.module(FACTORY)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ClearMailRepositoryTaskDTO.module(FACTORY)); assertThat(testee.deserialize(SERIALIZED)) .isEqualToComparingFieldByFieldRecursively(TASK); @@ -70,7 +70,7 @@ class ClearMailRepositoryTaskTest { @Test void taskShouldThrowOnDeserializationUrlDecodingError() { - JsonTaskSerializer testee = new JsonTaskSerializer(ClearMailRepositoryTaskDTO.module(FACTORY)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ClearMailRepositoryTaskDTO.module(FACTORY)); assertThatThrownBy(() -> testee.deserialize("{\"type\":\"clear-mail-repository\",\"mailRepositoryPath\":\"%\"}")) .isInstanceOf(ClearMailRepositoryTask.InvalidMailRepositoryPathDeserializationException.class); diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java index f05c984..c419a1c 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java @@ -44,7 +44,7 @@ class ReprocessingAllMailsTaskTest { private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); private static final ReprocessingService REPROCESSING_SERVICE = mock(ReprocessingService.class); - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer(ReprocessingAllMailsTaskAdditionalInformationDTO.SERIALIZATION_MODULE); + private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of(ReprocessingAllMailsTaskAdditionalInformationDTO.SERIALIZATION_MODULE); private static final long REPOSITORY_SIZE = 5L; private static final MailRepositoryPath REPOSITORY_PATH = MailRepositoryPath.from("a"); private static final String TARGET_QUEUE = "queue"; @@ -63,7 +63,7 @@ class ReprocessingAllMailsTaskTest { String targetQueue, Optional<String> targetProcessor, String serialized) throws JsonProcessingException { - JsonTaskSerializer testee = new JsonTaskSerializer(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE)); ReprocessingAllMailsTask task = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, repositorySize, repositoryPath, targetQueue, targetProcessor); assertThatJson(testee.serialize(task)) .isEqualTo(serialized); @@ -80,7 +80,7 @@ class ReprocessingAllMailsTaskTest { String targetQueue, Optional<String> targetProcessor, String serialized) throws IOException { - JsonTaskSerializer testee = new JsonTaskSerializer(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE)); ReprocessingAllMailsTask task = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, repositorySize, repositoryPath, targetQueue, targetProcessor); assertThat(testee.deserialize(serialized)) @@ -101,7 +101,7 @@ class ReprocessingAllMailsTaskTest { @ParameterizedTest @ValueSource(strings = {"{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"%\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\"}", "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"%\",\"targetQueue\":\"queue\"}"}) void taskShouldThrowOnDeserializationUrlDecodingError(String serialized) { - JsonTaskSerializer testee = new JsonTaskSerializer(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE)); assertThatThrownBy(() -> testee.deserialize(serialized)) .isInstanceOf(ReprocessingAllMailsTask.InvalidMailRepositoryPathDeserializationException.class); diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java index b23c4cf..434a16b 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java @@ -55,7 +55,7 @@ class ReprocessingOneMailTaskTest { private static final String TARGET_QUEUE = "queue"; private static final MailKey MAIL_KEY = new MailKey("myMail"); private static final Optional<String> TARGET_PROCESSOR = Optional.of("targetProcessor"); - private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = new JsonTaskAdditionalInformationSerializer(ReprocessingOneMailTaskAdditionalInformationDTO.SERIALIZATION_MODULE); + private JsonTaskAdditionalInformationSerializer jsonAdditionalInformationSerializer = JsonTaskAdditionalInformationSerializer.of(ReprocessingOneMailTaskAdditionalInformationDTO.SERIALIZATION_MODULE); @ParameterizedTest @MethodSource @@ -64,7 +64,7 @@ class ReprocessingOneMailTaskTest { MailKey mailKey, Optional<String> targetProcessor, String serialized) throws JsonProcessingException { - JsonTaskSerializer testee = new JsonTaskSerializer(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE)); ReprocessingOneMailTask task = new ReprocessingOneMailTask(REPROCESSING_SERVICE, repositoryPath, targetQueue, mailKey, targetProcessor, CLOCK); JsonAssertions.assertThatJson(testee.serialize(task)) .isEqualTo(serialized); @@ -81,7 +81,7 @@ class ReprocessingOneMailTaskTest { MailKey mailKey, Optional<String> targetProcessor, String serialized) throws IOException { - JsonTaskSerializer testee = new JsonTaskSerializer(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE)); ReprocessingOneMailTask task = new ReprocessingOneMailTask(REPROCESSING_SERVICE, repositoryPath, targetQueue, mailKey, targetProcessor, CLOCK); assertThat(testee.deserialize(serialized)) @@ -102,7 +102,7 @@ class ReprocessingOneMailTaskTest { @ParameterizedTest @ValueSource(strings = {"{\"type\":\"reprocessing-one\",\"repositoryPath\":\"%\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\",\"targetProcessor\":\"targetProcessor\"}", "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"%\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\"}"}) void taskShouldThrowOnDeserializationUrlDecodingError(String serialized) { - JsonTaskSerializer testee = new JsonTaskSerializer(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE)); + JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE)); assertThatThrownBy(() -> testee.deserialize(serialized)) .isInstanceOf(ReprocessingOneMailTask.InvalidMailRepositoryPathDeserializationException.class); diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java index 5ce44f7..a43c6c6 100644 --- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java +++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java @@ -33,8 +33,6 @@ import org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMai import org.apache.james.queue.rabbitmq.view.cassandra.configuration.EventsourcingConfigurationManagement; import com.datastax.driver.core.Session; -import com.google.common.collect.ImmutableSet; - import reactor.core.publisher.Mono; public class CassandraMailQueueViewTestFactory { @@ -54,7 +52,7 @@ public class CassandraMailQueueViewTestFactory { EventsourcingConfigurationManagement eventsourcingConfigurationManagement = new EventsourcingConfigurationManagement(new CassandraEventStore(new EventStoreDao(session, - new JsonEventSerializer(CassandraMailQueueViewConfigurationModule.MAIL_QUEUE_VIEW_CONFIGURATION)))); + JsonEventSerializer.forModules(CassandraMailQueueViewConfigurationModule.MAIL_QUEUE_VIEW_CONFIGURATION).withoutNestedType()))); return new CassandraMailQueueView.Factory( cassandraMailQueueMailStore, diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/EventsourcingConfigurationManagementTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/EventsourcingConfigurationManagementTest.java index 5f96ef3..960c421 100644 --- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/EventsourcingConfigurationManagementTest.java +++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/EventsourcingConfigurationManagementTest.java @@ -29,14 +29,16 @@ import java.util.List; import org.apache.james.eventsourcing.Event; import org.apache.james.eventsourcing.eventstore.EventStore; import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreExtension; +import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; class EventsourcingConfigurationManagementTest { @RegisterExtension - static CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension( - CassandraMailQueueViewConfigurationModule.MAIL_QUEUE_VIEW_CONFIGURATION); + static CassandraEventStoreExtension eventStoreExtension = + new CassandraEventStoreExtension( + JsonEventSerializer.forModules(CassandraMailQueueViewConfigurationModule.MAIL_QUEUE_VIEW_CONFIGURATION).withoutNestedType()); private static final int DEFAULT_BUCKET_COUNT = 10; private static final int DEFAULT_UPDATE_PACE = 100; diff --git a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionDAOTest.java b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionDAOTest.java index 2247d4c..991c2d0 100644 --- a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionDAOTest.java +++ b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionDAOTest.java @@ -47,7 +47,7 @@ class CassandraTaskExecutionDetailsProjectionDAOTest { @RegisterExtension static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension( CassandraModule.aggregateModules(CassandraSchemaVersionModule.MODULE, CassandraZonedDateTimeModule.MODULE, CassandraTaskExecutionDetailsProjectionModule.MODULE())); - private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = new JsonTaskAdditionalInformationSerializer(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE); + private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = JsonTaskAdditionalInformationSerializer.of(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE); private CassandraTaskExecutionDetailsProjectionDAO testee; diff --git a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java index a2dcf15..0492207 100644 --- a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java +++ b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/cassandra/CassandraTaskExecutionDetailsProjectionTest.java @@ -30,9 +30,6 @@ import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer import org.apache.james.server.task.json.dto.MemoryReferenceWithCounterTaskAdditionalInformationDTO; import org.apache.james.task.eventsourcing.TaskExecutionDetailsProjection; import org.apache.james.task.eventsourcing.TaskExecutionDetailsProjectionContract; - -import org.apache.james.task.eventsourcing.cassandra.CassandraTaskExecutionDetailsProjection; -import org.apache.james.task.eventsourcing.cassandra.CassandraTaskExecutionDetailsProjectionDAO; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.RegisterExtension; @@ -41,7 +38,7 @@ class CassandraTaskExecutionDetailsProjectionTest implements TaskExecutionDetail @RegisterExtension static CassandraClusterExtension cassandraCluster = new CassandraClusterExtension( CassandraModule.aggregateModules(CassandraSchemaVersionModule.MODULE, CassandraZonedDateTimeModule.MODULE, CassandraTaskExecutionDetailsProjectionModule.MODULE())); - private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = new JsonTaskAdditionalInformationSerializer(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE); + private static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = JsonTaskAdditionalInformationSerializer.of(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE); private Supplier<CassandraTaskExecutionDetailsProjection> testeeSupplier; diff --git a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java index ff98f90..02c6024 100644 --- a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java +++ b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/DistributedTaskManagerTest.java @@ -45,6 +45,7 @@ import org.apache.james.json.DTOConverter; import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer; import org.apache.james.server.task.json.JsonTaskSerializer; import org.apache.james.server.task.json.dto.AdditionalInformationDTO; +import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; import org.apache.james.server.task.json.dto.MemoryReferenceTaskStore; import org.apache.james.server.task.json.dto.MemoryReferenceWithCounterTaskAdditionalInformationDTO; import org.apache.james.server.task.json.dto.MemoryReferenceWithCounterTaskStore; @@ -72,8 +73,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import com.google.common.collect.ImmutableSet; - class DistributedTaskManagerTest implements TaskManagerContract { static class TrackedRabbitMQWorkQueueSupplier implements WorkQueueSupplier { @@ -99,8 +98,9 @@ class DistributedTaskManagerTest implements TaskManagerContract { } } - static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = new JsonTaskAdditionalInformationSerializer(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE); - static final DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> DTO_CONVERTER = DTOConverter.of(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE); + public static final AdditionalInformationDTOModule<?, ?> ADDITIONAL_INFORMATION_MODULE = MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE; + static final JsonTaskAdditionalInformationSerializer JSON_TASK_ADDITIONAL_INFORMATION_SERIALIZER = JsonTaskAdditionalInformationSerializer.of(ADDITIONAL_INFORMATION_MODULE); + static final DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> DTO_CONVERTER = DTOConverter.of(ADDITIONAL_INFORMATION_MODULE); static final Hostname HOSTNAME = new Hostname("foo"); static final Hostname HOSTNAME_2 = new Hostname("bar"); @@ -116,7 +116,7 @@ class DistributedTaskManagerTest implements TaskManagerContract { CassandraZonedDateTimeModule.MODULE, CassandraTaskExecutionDetailsProjectionModule.MODULE())); - JsonTaskSerializer taskSerializer = new JsonTaskSerializer( + JsonTaskSerializer taskSerializer = JsonTaskSerializer.of( TestTaskDTOModules.COMPLETED_TASK_MODULE, TestTaskDTOModules.FAILED_TASK_MODULE, TestTaskDTOModules.THROWING_TASK_MODULE, @@ -126,7 +126,8 @@ class DistributedTaskManagerTest implements TaskManagerContract { Set<EventDTOModule<?, ?>> eventDtoModule = TasksSerializationModule.list(taskSerializer, DTO_CONVERTER); @RegisterExtension - CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(CASSANDRA_CLUSTER, eventDtoModule); + CassandraEventStoreExtension eventStoreExtension = new CassandraEventStoreExtension(CASSANDRA_CLUSTER, + JsonEventSerializer.forModules(eventDtoModule).withNestedTypeModules(ADDITIONAL_INFORMATION_MODULE)); @RegisterExtension CountDownLatchExtension countDownLatchExtension = new CountDownLatchExtension(); @@ -145,7 +146,7 @@ class DistributedTaskManagerTest implements TaskManagerContract { this.workQueueSupplier = new TrackedRabbitMQWorkQueueSupplier(RABBIT_MQ_EXTENSION.getRabbitChannelPool(), taskSerializer); this.eventStore = eventStore; this.terminationSubscribers = new ArrayList<>(); - this.eventSerializer = new JsonEventSerializer(new DTOConverter<>(eventDtoModule), eventDtoModule, ImmutableSet.of()); + this.eventSerializer = JsonEventSerializer.forModules(eventDtoModule).withoutNestedType(); } @AfterEach diff --git a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriberTest.java b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriberTest.java index db2c02b..7e358cd 100644 --- a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriberTest.java +++ b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQTerminationSubscriberTest.java @@ -39,13 +39,12 @@ import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import com.google.common.collect.ImmutableSet; import reactor.core.publisher.Flux; class RabbitMQTerminationSubscriberTest implements TerminationSubscriberContract { - private static final JsonTaskSerializer TASK_SERIALIZER = new JsonTaskSerializer(); + private static final JsonTaskSerializer TASK_SERIALIZER = JsonTaskSerializer.of(); private static final Set<EventDTOModule<?, ?>> MODULES = TasksSerializationModule.list(TASK_SERIALIZER, DTOConverter.of()); - private static final JsonEventSerializer SERIALIZER = new JsonEventSerializer(new DTOConverter<>(MODULES), MODULES, ImmutableSet.of()); + private static final JsonEventSerializer SERIALIZER = JsonEventSerializer.forModules(MODULES).withoutNestedType(); @RegisterExtension static RabbitMQExtension rabbitMQExtension = RabbitMQExtension.singletonRabbitMQ(); diff --git a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueTest.java b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueTest.java index fefb6f1..3d8b17e 100644 --- a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueTest.java +++ b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/RabbitMQWorkQueueTest.java @@ -100,7 +100,7 @@ class RabbitMQWorkQueueTest { @BeforeEach void setUp() { worker = spy(new ImmediateWorker()); - serializer = new JsonTaskSerializer(TestTaskDTOModules.COMPLETED_TASK_MODULE); + serializer = JsonTaskSerializer.of(TestTaskDTOModules.COMPLETED_TASK_MODULE); testee = new RabbitMQWorkQueue(worker, rabbitMQExtension.getRabbitChannelPool(), serializer); testee.start(); } @@ -150,7 +150,7 @@ class RabbitMQWorkQueueTest { TaskWithId taskWithId = new TaskWithId(taskId, task); ImmediateWorker otherTaskManagerWorker = new ImmediateWorker(); - JsonTaskSerializer otherTaskSerializer = new JsonTaskSerializer(TestTaskDTOModules.TEST_TYPE); + JsonTaskSerializer otherTaskSerializer = JsonTaskSerializer.of(TestTaskDTOModules.TEST_TYPE); try (RabbitMQWorkQueue otherWorkQueue = new RabbitMQWorkQueue(otherTaskManagerWorker, rabbitMQExtension.getRabbitChannelPool(), otherTaskSerializer)) { //wait to be sur that the first workqueue has subscribed as an exclusive consumer of the RabbitMQ queue. Thread.sleep(200); diff --git a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/TaskEventsSerializationTest.java b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/TaskEventsSerializationTest.java index 4edfa51..0b5d1e0 100644 --- a/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/TaskEventsSerializationTest.java +++ b/server/task/task-distributed/src/test/java/org/apache/james/task/eventsourcing/distributed/TaskEventsSerializationTest.java @@ -53,14 +53,13 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import com.google.common.collect.ImmutableSet; import net.javacrumbs.jsonunit.assertj.JsonAssertions; import scala.Option; class TaskEventsSerializationTest { static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); static final DTOConverter<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> ADDITIONAL_INFORMATION_CONVERTER = DTOConverter.of(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE); - static final JsonTaskAdditionalInformationSerializer TASK_ADDITIONNAL_INFORMATION_SERIALIZER = new JsonTaskAdditionalInformationSerializer(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE); + static final JsonTaskAdditionalInformationSerializer TASK_ADDITIONNAL_INFORMATION_SERIALIZER = JsonTaskAdditionalInformationSerializer.of(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE); static final TaskAggregateId AGGREGATE_ID = new TaskAggregateId(TaskId.fromString("2c7f4081-aa30-11e9-bf6c-2d3b9e84aafd")); static final EventId EVENT_ID = EventId.fromSerialized(42); static final Task TASK = new CompletedTask(); @@ -68,12 +67,14 @@ class TaskEventsSerializationTest { static final MemoryReferenceWithCounterTask.AdditionalInformation COUNTER_ADDITIONAL_INFORMATION = new MemoryReferenceWithCounterTask.AdditionalInformation(3, TIMESTAMP); private final Set<EventDTOModule<?, ?>> list = TasksSerializationModule.list( - new JsonTaskSerializer( + JsonTaskSerializer.of( TestTaskDTOModules.COMPLETED_TASK_MODULE, TestTaskDTOModules.MEMORY_REFERENCE_WITH_COUNTER_TASK_MODULE.apply(new MemoryReferenceWithCounterTaskStore())), ADDITIONAL_INFORMATION_CONVERTER); - JsonEventSerializer serializer = new JsonEventSerializer(new DTOConverter<>(list), list, ImmutableSet.of(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE)); + JsonEventSerializer serializer = JsonEventSerializer + .forModules(list) + .withNestedTypeModules(MemoryReferenceWithCounterTaskAdditionalInformationDTO.SERIALIZATION_MODULE); @ParameterizedTest @MethodSource diff --git a/server/task/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskAdditionalInformationSerializer.java b/server/task/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskAdditionalInformationSerializer.java index eb68ef9..52c0608 100644 --- a/server/task/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskAdditionalInformationSerializer.java +++ b/server/task/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskAdditionalInformationSerializer.java @@ -23,7 +23,6 @@ import java.util.Set; import javax.inject.Inject; -import org.apache.james.json.DTOConverter; import org.apache.james.json.JsonGenericSerializer; import org.apache.james.server.task.json.dto.AdditionalInformationDTO; import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; @@ -34,6 +33,10 @@ import com.google.common.collect.ImmutableSet; public class JsonTaskAdditionalInformationSerializer { + public static JsonTaskAdditionalInformationSerializer of(AdditionalInformationDTOModule<?, ?>... modules) { + return new JsonTaskAdditionalInformationSerializer(ImmutableSet.copyOf(modules)); + } + public static class InvalidAdditionalInformationException extends RuntimeException { public InvalidAdditionalInformationException(JsonGenericSerializer.InvalidTypeException original) { super(original); @@ -49,12 +52,8 @@ public class JsonTaskAdditionalInformationSerializer { private JsonGenericSerializer<TaskExecutionDetails.AdditionalInformation, AdditionalInformationDTO> jsonGenericSerializer; @Inject - public JsonTaskAdditionalInformationSerializer(Set<AdditionalInformationDTOModule<?, ?>> modules) { - jsonGenericSerializer = new JsonGenericSerializer(modules, ImmutableSet.of(), new DTOConverter<>(modules)); - } - - public JsonTaskAdditionalInformationSerializer(@SuppressWarnings("rawtypes") AdditionalInformationDTOModule... modules) { - this(ImmutableSet.copyOf(modules)); + private JsonTaskAdditionalInformationSerializer(Set<AdditionalInformationDTOModule<?, ?>> modules) { + jsonGenericSerializer = JsonGenericSerializer.forModules(modules).withoutNestedType(); } public String serialize(TaskExecutionDetails.AdditionalInformation additionalInformation) throws JsonProcessingException { diff --git a/server/task/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskSerializer.java b/server/task/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskSerializer.java index 313aa50..31f4a77 100644 --- a/server/task/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskSerializer.java +++ b/server/task/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskSerializer.java @@ -24,7 +24,6 @@ import java.util.Set; import javax.inject.Inject; -import org.apache.james.json.DTOConverter; import org.apache.james.json.JsonGenericSerializer; import org.apache.james.server.task.json.dto.TaskDTO; import org.apache.james.server.task.json.dto.TaskDTOModule; @@ -35,6 +34,10 @@ import com.google.common.collect.ImmutableSet; public class JsonTaskSerializer { + public static JsonTaskSerializer of(TaskDTOModule<?, ?>... modules) { + return new JsonTaskSerializer(ImmutableSet.copyOf(modules)); + } + public static class InvalidTaskException extends RuntimeException { public InvalidTaskException(JsonGenericSerializer.InvalidTypeException original) { super(original); @@ -50,12 +53,8 @@ public class JsonTaskSerializer { private JsonGenericSerializer<Task, TaskDTO> jsonGenericSerializer; @Inject - public JsonTaskSerializer(DTOConverter<Task, TaskDTO> converter, Set<TaskDTOModule<?, ?>> modules) { - jsonGenericSerializer = new JsonGenericSerializer(modules, ImmutableSet.of(), converter); - } - - public JsonTaskSerializer(@SuppressWarnings("rawtypes") TaskDTOModule... modules) { - this(DTOConverter.of(modules), ImmutableSet.copyOf(modules)); + private JsonTaskSerializer(Set<TaskDTOModule<?, ?>> modules) { + jsonGenericSerializer = JsonGenericSerializer.forModules(modules).withoutNestedType(); } public String serialize(Task task) throws JsonProcessingException { diff --git a/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskDeserializerTest.java b/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskDeserializerTest.java index 4d2a947..305593f 100644 --- a/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskDeserializerTest.java +++ b/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskDeserializerTest.java @@ -52,7 +52,7 @@ class TaskDeserializerTest { @BeforeEach void setUp() { - testee = new JsonTaskSerializer(TestTaskDTOModules.TEST_TYPE); + testee = JsonTaskSerializer.of(TestTaskDTOModules.TEST_TYPE); } @Test diff --git a/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskSerializationTest.java b/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskSerializationTest.java index 85205ad..09e11ce 100644 --- a/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskSerializationTest.java +++ b/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskSerializationTest.java @@ -51,7 +51,7 @@ class TaskSerializationTest { @ParameterizedTest @MethodSource void taskShouldBeSerializable(Task task, TaskDTOModule<?, ?> module, String expectedJson) throws Exception { - String actual = new JsonTaskSerializer(module).serialize(task); + String actual = JsonTaskSerializer.of(module).serialize(task); assertThatJson(actual).isEqualTo(expectedJson); } @@ -62,7 +62,7 @@ class TaskSerializationTest { @ParameterizedTest @MethodSource void taskShouldBeDeserializable(Task task, TaskDTOModule<?, ?> module, String serializedJson) throws Exception { - assertThat(new JsonTaskSerializer(module).deserialize(serializedJson)) + assertThat(JsonTaskSerializer.of(module).deserialize(serializedJson)) .isInstanceOf(task.getClass()); } @@ -82,7 +82,7 @@ class TaskSerializationTest { void memoryReferenceTaskShouldSerialize() throws JsonProcessingException { MemoryReferenceTask memoryReferenceTask = new MemoryReferenceTask(() -> Task.Result.COMPLETED); - String actual = new JsonTaskSerializer(MEMORY_REFERENCE_TASK_MODULE.apply(new MemoryReferenceTaskStore())).serialize(memoryReferenceTask); + String actual = JsonTaskSerializer.of(MEMORY_REFERENCE_TASK_MODULE.apply(new MemoryReferenceTaskStore())).serialize(memoryReferenceTask); assertThatJson(actual).isEqualTo(SERIALIZED_MEMORY_REFERENCE_TASK); } @@ -92,7 +92,7 @@ class TaskSerializationTest { MemoryReferenceTask memoryReferenceTask = new MemoryReferenceTask(() -> Task.Result.COMPLETED); memoryReferenceTaskStore.add(memoryReferenceTask); - Task task = new JsonTaskSerializer(MEMORY_REFERENCE_TASK_MODULE.apply(memoryReferenceTaskStore)).deserialize(SERIALIZED_MEMORY_REFERENCE_TASK); + Task task = JsonTaskSerializer.of(MEMORY_REFERENCE_TASK_MODULE.apply(memoryReferenceTaskStore)).deserialize(SERIALIZED_MEMORY_REFERENCE_TASK); assertThat(task).isInstanceOf(MemoryReferenceTask.class); } } diff --git a/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskSerializerTest.java b/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskSerializerTest.java index 38983bc..d018068 100644 --- a/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskSerializerTest.java +++ b/server/task/task-json/src/test/java/org/apache/james/server/task/json/TaskSerializerTest.java @@ -30,7 +30,7 @@ class TaskSerializerTest { @Test void shouldSerializeTaskWithItsType() throws Exception { - JsonTaskSerializer testee = new JsonTaskSerializer(TestTaskDTOModules.TEST_TYPE); + JsonTaskSerializer testee = JsonTaskSerializer.of(TestTaskDTOModules.TEST_TYPE); long parameter = 1L; TestTask task = new TestTask(parameter); JsonAssertions.assertThatJson(testee.serialize(task)).isEqualTo(TASK_AS_STRING); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
