This is an automated email from the ASF dual-hosted git repository. rouazana pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 179aa3e1006125aed86c5693c07e0dcd12a1f1de Author: Rémi Kowalski <[email protected]> AuthorDate: Tue Jul 16 16:23:48 2019 +0200 JAMES-2813 Add DTOMdule.toDomainObjectConverter --- .../eventstore/cassandra/JsonEventSerializer.java | 2 +- .../eventstore/cassandra/dto/EventDTO.java | 8 +-- .../eventstore/cassandra/dto/EventDTOModule.java | 6 +- .../cassandra/dto/OtherTestEventDTO.java | 3 +- .../eventstore/cassandra/dto/TestEventDTO.java | 3 +- .../cassandra/dto/TestEventDTOModules.java | 6 +- json/src/main/java/org/apache/james/json/DTO.java | 3 +- .../main/java/org/apache/james/json/DTOModule.java | 68 ++++++++++++------- .../apache/james/json/JsonGenericSerializer.java | 14 ++-- .../java/org/apache/JsonGenericSerializerTest.java | 2 +- json/src/test/java/org/apache/dto/FirstDTO.java | 3 +- json/src/test/java/org/apache/dto/SecondDTO.java | 3 +- json/src/test/java/org/apache/dto/TestModule.java | 6 +- json/src/test/java/org/apache/dto/TestModules.java | 36 +++++----- .../quota/cassandra/dto/QuotaEventDTOModules.java | 3 +- .../dto/QuotaThresholdChangedEventDTO.java | 3 +- mailbox/tools/indexer/pom.xml | 6 +- .../tools/indexer/SingleMailboxReindexingTask.java | 26 ++++---- .../dto/SingleMailboxReindexingTaskDTO.java | 29 +++------ .../indexer/SingleMailboxReindexingTaskTest.java | 21 ------ .../tools/indexer/TasksSerializationTest.java | 76 ++++++++++++++++++++++ .../cassandra/DLPConfigurationItemAddedDTO.java | 3 +- .../cassandra/DLPConfigurationItemsRemovedDTO.java | 3 +- .../cassandra/DLPConfigurationModules.java | 6 +- .../FilteringRuleSetDefineDTOModules.java | 3 +- .../filtering/FilteringRuleSetDefinedDTO.java | 3 +- .../CassandraMailQueueViewConfigurationModule.java | 3 +- .../configuration/ConfigurationChangedDTO.java | 3 +- .../james/server/task/json/JsonTaskSerializer.java | 2 +- .../apache/james/server/task/json/dto/TaskDTO.java | 9 +-- .../james/server/task/json/dto/TaskDTOModule.java | 6 +- .../apache/james/server/task/json/TestTask.java | 2 +- .../james/server/task/json/dto/TestTaskDTO.java | 3 +- .../server/task/json/dto/TestTaskDTOModules.java | 3 +- 34 files changed, 214 insertions(+), 162 deletions(-) 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 943abc4..acf5976 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 @@ -46,7 +46,7 @@ public class JsonEventSerializer { } } - private JsonGenericSerializer<Event, EventDTO<Event>> jsonGenericSerializer; + private JsonGenericSerializer<Event, EventDTO> jsonGenericSerializer; @Inject public JsonEventSerializer(Set<EventDTOModule> modules) { diff --git a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/EventDTO.java b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/EventDTO.java index eeb448a..8e849c1 100644 --- a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/EventDTO.java +++ b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/EventDTO.java @@ -19,13 +19,7 @@ package org.apache.james.eventsourcing.eventstore.cassandra.dto; -import org.apache.james.eventsourcing.Event; import org.apache.james.json.DTO; -public interface EventDTO<T extends Event> extends DTO<T> { - T toEvent(); - - default T toDomainObject() { - return toEvent(); - } +public interface EventDTO extends DTO { } diff --git a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/EventDTOModule.java b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/EventDTOModule.java index f68d13a..fc0d675 100644 --- a/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/EventDTOModule.java +++ b/event-sourcing/event-store-cassandra/src/main/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/EventDTOModule.java @@ -22,14 +22,14 @@ package org.apache.james.eventsourcing.eventstore.cassandra.dto; import org.apache.james.eventsourcing.Event; import org.apache.james.json.DTOModule; -public class EventDTOModule<T extends Event, U extends EventDTO<T>> extends DTOModule<T, U> { +public class EventDTOModule<T extends Event, U extends EventDTO> extends DTOModule<T, U> { public static <EventTypeT extends Event> DTOModule.Builder<EventTypeT> forEvent(Class<EventTypeT> eventType) { return new DTOModule.Builder<>(eventType); } - public EventDTOModule(DTOConverter<T, U> converter, Class<T> domainObjectType, Class<U> dtoType, String typeName) { - super(converter, domainObjectType, dtoType, typeName); + public EventDTOModule(DTOConverter<T, U> converter, DomainObjectConverter<T, U> toDomainObjectConverter, Class<T> domainObjectType, Class<U> dtoType, String typeName) { + super(converter, toDomainObjectConverter, domainObjectType, dtoType, typeName); } @Override diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/OtherTestEventDTO.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/OtherTestEventDTO.java index 222c911..cb68fd6 100644 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/OtherTestEventDTO.java +++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/OtherTestEventDTO.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -public class OtherTestEventDTO implements EventDTO<OtherEvent> { +public class OtherTestEventDTO implements EventDTO { private final String type; private final long data; private final int eventId; @@ -61,7 +61,6 @@ public class OtherTestEventDTO implements EventDTO<OtherEvent> { } @JsonIgnore - @Override public OtherEvent toEvent() { return new OtherEvent( EventId.fromSerialized(eventId), diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/TestEventDTO.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/TestEventDTO.java index 17d191a..d01cd32 100644 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/TestEventDTO.java +++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/TestEventDTO.java @@ -28,7 +28,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -public class TestEventDTO implements EventDTO<TestEvent> { +public class TestEventDTO implements EventDTO { private final String type; private final String data; private final int eventId; @@ -63,7 +63,6 @@ public class TestEventDTO implements EventDTO<TestEvent> { } @JsonIgnore - @Override public TestEvent toEvent() { return new TestEvent( EventId.fromSerialized(eventId), diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/TestEventDTOModules.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/TestEventDTOModules.java index 2aed742..966cbed 100644 --- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/TestEventDTOModules.java +++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/dto/TestEventDTOModules.java @@ -27,7 +27,8 @@ public interface TestEventDTOModules { EventDTOModule TEST_TYPE = EventDTOModule .forEvent(TestEvent.class) .convertToDTO(TestEventDTO.class) - .convertWith((event, typeName) -> new TestEventDTO( + .toDomainObjectConverter(TestEventDTO::toEvent) + .toDTOConverter((event, typeName) -> new TestEventDTO( typeName, event.getData(), event.eventId().serialize(), @@ -39,7 +40,8 @@ public interface TestEventDTOModules { EventDTOModule .forEvent(OtherEvent.class) .convertToDTO(OtherTestEventDTO.class) - .convertWith((event, typeName) -> new OtherTestEventDTO( + .toDomainObjectConverter(OtherTestEventDTO::toEvent) + .toDTOConverter((event, typeName) -> new OtherTestEventDTO( typeName, event.getPayload(), event.eventId().serialize(), diff --git a/json/src/main/java/org/apache/james/json/DTO.java b/json/src/main/java/org/apache/james/json/DTO.java index b0e8564..1984716 100644 --- a/json/src/main/java/org/apache/james/json/DTO.java +++ b/json/src/main/java/org/apache/james/json/DTO.java @@ -1,5 +1,4 @@ package org.apache.james.json; -public interface DTO<T> { - T toDomainObject(); +public interface DTO { } diff --git a/json/src/main/java/org/apache/james/json/DTOModule.java b/json/src/main/java/org/apache/james/json/DTOModule.java index 8baeb8f..2810cff 100644 --- a/json/src/main/java/org/apache/james/json/DTOModule.java +++ b/json/src/main/java/org/apache/james/json/DTOModule.java @@ -19,14 +19,18 @@ package org.apache.james.json; -public class DTOModule<T, U extends DTO<T>> { +public class DTOModule<T, U extends DTO> { - public interface DTOConverter<T, U extends DTO<T>> { + public interface DTOConverter<T, U extends DTO> { U convert(T domainObject, String typeName); } - public interface ModuleFactory<T, U extends DTO<T>, ModuleTypeT extends DTOModule<T, U>> { - ModuleTypeT create(DTOConverter<T, U> converter, Class<T> domainObjectType, Class<U> dtoType, String typeName); + public interface DomainObjectConverter<T, U extends DTO> { + T convert(U dto); + } + + public interface ModuleFactory<T, U extends DTO, ModuleTypeT extends DTOModule<T, U>> { + ModuleTypeT create(DTOConverter<T, U> converter, DomainObjectConverter<T, U> toDomainObjectConverter, Class<T> domainObjectType, Class<U> dtoType, String typeName); } public static <T> Builder<T> forDomainObject(Class<T> domainObjectType) { @@ -41,43 +45,55 @@ public class DTOModule<T, U extends DTO<T>> { this.type = type; } - public <U extends DTO<T>> RequireConversionFunctionBuilder<U> convertToDTO(Class<U> dtoType) { - return new RequireConversionFunctionBuilder<>(dtoType); + public <U extends DTO> RequireToDomainObjectConverterBuilder<U> convertToDTO(Class<U> dtoType) { + return new RequireToDomainObjectConverterBuilder<>(dtoType); } - public class RequireConversionFunctionBuilder<U extends DTO<T>> { + public class RequireToDomainObjectConverterBuilder<U extends DTO> { private final Class<U> dtoType; - private RequireConversionFunctionBuilder(Class<U> dtoType) { + RequireToDomainObjectConverterBuilder(Class<U> dtoType) { this.dtoType = dtoType; } - public RequireTypeNameBuilder convertWith(DTOConverter<T, U> converter) { - return new RequireTypeNameBuilder(converter); + public RequireToDTOConverterBuilder toDomainObjectConverter(DomainObjectConverter<T, U> converter) { + return new RequireToDTOConverterBuilder(converter); } - public class RequireTypeNameBuilder { - private final DTOConverter<T, U> converter; + public class RequireToDTOConverterBuilder { + private DomainObjectConverter<T, U> toDomainObjectConverter; - private RequireTypeNameBuilder(DTOConverter<T, U> converter) { - this.converter = converter; + private RequireToDTOConverterBuilder(DomainObjectConverter<T, U> toDomainObjectConverter) { + this.toDomainObjectConverter = toDomainObjectConverter; } - public RequireModuleFactory typeName(String typeName) { - return new RequireModuleFactory(typeName); + public RequireTypeNameBuilder toDTOConverter(DTOConverter<T, U> converter) { + return new RequireTypeNameBuilder(converter); } - public class RequireModuleFactory { + public class RequireTypeNameBuilder { + private final DTOConverter<T, U> converter; - private final String typeName; + private RequireTypeNameBuilder(DTOConverter<T, U> converter) { + this.converter = converter; + } - private RequireModuleFactory(String typeName) { - this.typeName = typeName; + public RequireModuleFactory typeName(String typeName) { + return new RequireModuleFactory(typeName); } - public <ModuleTypeT extends DTOModule<T, U>> ModuleTypeT withFactory(ModuleFactory<T, U, ModuleTypeT> factory) { - return factory.create(converter, type, dtoType, typeName); + public class RequireModuleFactory { + + private final String typeName; + + private RequireModuleFactory(String typeName) { + this.typeName = typeName; + } + + public <ModuleTypeT extends DTOModule<T, U>> ModuleTypeT withFactory(ModuleFactory<T, U, ModuleTypeT> factory) { + return factory.create(converter, toDomainObjectConverter, type, dtoType, typeName); + } } } } @@ -85,17 +101,23 @@ public class DTOModule<T, U extends DTO<T>> { } private final DTOConverter<T, U> converter; + private final DomainObjectConverter<T, U> toDomainObjectConverter; private final Class<T> domainObjectType; private final Class<U> dtoType; private final String typeName; - protected DTOModule(DTOConverter<T, U> converter, Class<T> domainObjectType, Class<U> dtoType, String typeName) { + protected DTOModule(DTOConverter<T, U> converter, DomainObjectConverter<T, U> toDomainObjectConverter, Class<T> domainObjectType, Class<U> dtoType, String typeName) { this.converter = converter; + this.toDomainObjectConverter = toDomainObjectConverter; this.domainObjectType = domainObjectType; this.dtoType = dtoType; this.typeName = typeName; } + public DomainObjectConverter<T, U> getToDomainObjectConverter() { + return toDomainObjectConverter; + } + public String getDomainObjectType() { return typeName; } 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 6934320..4cf19d2 100644 --- a/json/src/main/java/org/apache/james/json/JsonGenericSerializer.java +++ b/json/src/main/java/org/apache/james/json/JsonGenericSerializer.java @@ -37,7 +37,7 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.github.steveash.guavate.Guavate; import com.google.common.collect.ImmutableSet; -public class JsonGenericSerializer<T, U extends DTO<T>> { +public class JsonGenericSerializer<T, U extends DTO> { public static class InvalidTypeException extends RuntimeException { public InvalidTypeException(String message) { @@ -60,7 +60,7 @@ public class JsonGenericSerializer<T, U extends DTO<T>> { private final ObjectMapper objectMapper; @SafeVarargs - public static <T, U extends DTO<T>> JsonGenericSerializer of(DTOModule<T, U>... modules) { + public static <T, U extends DTO> JsonGenericSerializer of(DTOModule<T, U>... modules) { return new JsonGenericSerializer<>(ImmutableSet.copyOf(modules)); } @@ -99,18 +99,16 @@ public class JsonGenericSerializer<T, U extends DTO<T>> { throw new InvalidTypeException("No \"type\" property found in the json document"); } - U dto = objectMapper.readValue( - objectMapper.treeAsTokens(jsonNode), - retrieveDTOClass(typeNode.asText())); - return dto.toDomainObject(); + DTOModule<T, U> dtoModule = retrieveModuleForType(typeNode.asText()); + U dto = objectMapper.readValue(objectMapper.treeAsTokens(jsonNode), dtoModule.getDTOClass()); + return dtoModule.getToDomainObjectConverter().convert(dto); } catch (MismatchedInputException e) { throw new InvalidTypeException("Duplicate \"type\" properties found in the json document", e); } } - private Class<? extends U> retrieveDTOClass(String type) { + private DTOModule<T, U> retrieveModuleForType(String type) { return Optional.ofNullable(typeToModule.get(type)) - .map(DTOModule::getDTOClass) .orElseThrow(() -> new UnknownTypeException("unknown type " + type)); } diff --git a/json/src/test/java/org/apache/JsonGenericSerializerTest.java b/json/src/test/java/org/apache/JsonGenericSerializerTest.java index c450e68..6334a74 100644 --- a/json/src/test/java/org/apache/JsonGenericSerializerTest.java +++ b/json/src/test/java/org/apache/JsonGenericSerializerTest.java @@ -81,7 +81,7 @@ class JsonGenericSerializerTest { @ParameterizedTest @MethodSource void serializeShouldHandleAllKnownTypes(BaseType domainObject, String serializedJson) throws Exception { - JsonGenericSerializer<BaseType, DTO<BaseType>> serializer = JsonGenericSerializer.of( + JsonGenericSerializer<BaseType, DTO> serializer = JsonGenericSerializer.of( TestModules.FIRST_TYPE, TestModules.SECOND_TYPE); diff --git a/json/src/test/java/org/apache/dto/FirstDTO.java b/json/src/test/java/org/apache/dto/FirstDTO.java index f8b1496..9e4f46b 100644 --- a/json/src/test/java/org/apache/dto/FirstDTO.java +++ b/json/src/test/java/org/apache/dto/FirstDTO.java @@ -28,7 +28,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -public class FirstDTO implements DTO<FirstDomainObject> { +public class FirstDTO implements DTO { private final String type; private final Optional<Long> id; private final String time; @@ -63,7 +63,6 @@ public class FirstDTO implements DTO<FirstDomainObject> { } @JsonIgnore - @Override public FirstDomainObject toDomainObject() { return new FirstDomainObject(id, ZonedDateTime.parse(time), payload); } diff --git a/json/src/test/java/org/apache/dto/SecondDTO.java b/json/src/test/java/org/apache/dto/SecondDTO.java index b900100..d31929a 100644 --- a/json/src/test/java/org/apache/dto/SecondDTO.java +++ b/json/src/test/java/org/apache/dto/SecondDTO.java @@ -27,7 +27,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -public class SecondDTO implements DTO<SecondDomainObject> { +public class SecondDTO implements DTO { private final String type; private final String id; private final String payload; @@ -55,7 +55,6 @@ public class SecondDTO implements DTO<SecondDomainObject> { } @JsonIgnore - @Override public SecondDomainObject toDomainObject() { return new SecondDomainObject(UUID.fromString(id), payload); } diff --git a/json/src/test/java/org/apache/dto/TestModule.java b/json/src/test/java/org/apache/dto/TestModule.java index afa4f2c..ef81042 100644 --- a/json/src/test/java/org/apache/dto/TestModule.java +++ b/json/src/test/java/org/apache/dto/TestModule.java @@ -22,9 +22,9 @@ package org.apache.dto; import org.apache.james.json.DTO; import org.apache.james.json.DTOModule; -public class TestModule<T extends BaseType, U extends DTO<T>> extends DTOModule<T, U> { +public class TestModule<T extends BaseType, U extends DTO> extends DTOModule<T, U> { - protected TestModule(DTOConverter<T, U> converter, Class<T> domainObjectType, Class<U> dtoType, String typeName) { - super(converter, domainObjectType, dtoType, typeName); + protected TestModule(DTOConverter<T, U> converter, DomainObjectConverter<T, U> toDomainObjectConverter, Class<T> domainObjectType, Class<U> dtoType, String typeName) { + super(converter, toDomainObjectConverter, domainObjectType, dtoType, typeName); } } diff --git a/json/src/test/java/org/apache/dto/TestModules.java b/json/src/test/java/org/apache/dto/TestModules.java index 534f6ed..6810997 100644 --- a/json/src/test/java/org/apache/dto/TestModules.java +++ b/json/src/test/java/org/apache/dto/TestModules.java @@ -24,24 +24,26 @@ import org.apache.james.json.DTOModule; public interface TestModules { TestModule FIRST_TYPE = DTOModule - .forDomainObject(FirstDomainObject.class) - .convertToDTO(FirstDTO.class) - .convertWith((domainObject, typeName) -> new FirstDTO( - typeName, - domainObject.getId(), - domainObject.getTime().toString(), - domainObject.getPayload())) - .typeName("first") - .withFactory(TestModule::new); + .forDomainObject(FirstDomainObject.class) + .convertToDTO(FirstDTO.class) + .toDomainObjectConverter(FirstDTO::toDomainObject) + .toDTOConverter((domainObject, typeName) -> new FirstDTO( + typeName, + domainObject.getId(), + domainObject.getTime().toString(), + domainObject.getPayload())) + .typeName("first") + .withFactory(TestModule::new); TestModule SECOND_TYPE = DTOModule - .forDomainObject(SecondDomainObject.class) - .convertToDTO(SecondDTO.class) - .convertWith((domainObject, typeName) -> new SecondDTO( - typeName, - domainObject.getId().toString(), - domainObject.getPayload())) - .typeName("second") - .withFactory(TestModule::new); + .forDomainObject(SecondDomainObject.class) + .convertToDTO(SecondDTO.class) + .toDomainObjectConverter(SecondDTO::toDomainObject) + .toDTOConverter((domainObject, typeName) -> new SecondDTO( + typeName, + domainObject.getId().toString(), + domainObject.getPayload())) + .typeName("second") + .withFactory(TestModule::new); } diff --git a/mailbox/plugin/quota-mailing-cassandra/src/main/java/org/apache/james/mailbox/quota/cassandra/dto/QuotaEventDTOModules.java b/mailbox/plugin/quota-mailing-cassandra/src/main/java/org/apache/james/mailbox/quota/cassandra/dto/QuotaEventDTOModules.java index 8012a00..85266d4 100644 --- a/mailbox/plugin/quota-mailing-cassandra/src/main/java/org/apache/james/mailbox/quota/cassandra/dto/QuotaEventDTOModules.java +++ b/mailbox/plugin/quota-mailing-cassandra/src/main/java/org/apache/james/mailbox/quota/cassandra/dto/QuotaEventDTOModules.java @@ -28,7 +28,8 @@ public interface QuotaEventDTOModules { EventDTOModule .forEvent(QuotaThresholdChangedEvent.class) .convertToDTO(QuotaThresholdChangedEventDTO.class) - .convertWith(QuotaThresholdChangedEventDTO::from) + .toDomainObjectConverter(QuotaThresholdChangedEventDTO::toEvent) + .toDTOConverter(QuotaThresholdChangedEventDTO::from) .typeName("quota-threshold-change") .withFactory(EventDTOModule::new); diff --git a/mailbox/plugin/quota-mailing-cassandra/src/main/java/org/apache/james/mailbox/quota/cassandra/dto/QuotaThresholdChangedEventDTO.java b/mailbox/plugin/quota-mailing-cassandra/src/main/java/org/apache/james/mailbox/quota/cassandra/dto/QuotaThresholdChangedEventDTO.java index 499f28f..fe058f8 100644 --- a/mailbox/plugin/quota-mailing-cassandra/src/main/java/org/apache/james/mailbox/quota/cassandra/dto/QuotaThresholdChangedEventDTO.java +++ b/mailbox/plugin/quota-mailing-cassandra/src/main/java/org/apache/james/mailbox/quota/cassandra/dto/QuotaThresholdChangedEventDTO.java @@ -28,7 +28,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -class QuotaThresholdChangedEventDTO implements EventDTO<QuotaThresholdChangedEvent> { +class QuotaThresholdChangedEventDTO implements EventDTO { @JsonIgnore public static QuotaThresholdChangedEventDTO from(QuotaThresholdChangedEvent event, String type) { @@ -96,7 +96,6 @@ class QuotaThresholdChangedEventDTO implements EventDTO<QuotaThresholdChangedEve } @JsonIgnore - @Override public QuotaThresholdChangedEvent toEvent() { return new QuotaThresholdChangedEvent( EventId.fromSerialized(eventId), diff --git a/mailbox/tools/indexer/pom.xml b/mailbox/tools/indexer/pom.xml index 27c8b2e..38c1a6a 100644 --- a/mailbox/tools/indexer/pom.xml +++ b/mailbox/tools/indexer/pom.xml @@ -91,6 +91,10 @@ <scope>test</scope> </dependency> <dependency> + <groupId>${james.groupId}</groupId> + <artifactId>james-server-task-json</artifactId> + </dependency> + <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-guava</artifactId> <scope>test</scope> @@ -163,4 +167,4 @@ </plugins> </build> -</project> \ No newline at end of file +</project> diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java index 43d1849..cdda208 100644 --- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java +++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java @@ -19,7 +19,6 @@ package org.apache.mailbox.tools.indexer; -import java.util.Map; import java.util.Optional; import javax.inject.Inject; @@ -27,9 +26,7 @@ import javax.inject.Inject; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.task.Task; import org.apache.james.task.TaskExecutionDetails; - -import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.collect.ImmutableMap; +import org.apache.mailbox.tools.indexer.dto.SingleMailboxReindexingTaskDTO; public class SingleMailboxReindexingTask implements Task { @@ -50,16 +47,18 @@ public class SingleMailboxReindexingTask implements Task { public static class Factory { - private MailboxId.Factory mailboxIdFactory; + private final ReIndexerPerformer reIndexerPerformer; + private final MailboxId.Factory mailboxIdFactory; @Inject - public Factory(MailboxId.Factory mailboxIdFactory) { + public Factory(ReIndexerPerformer reIndexerPerformer, MailboxId.Factory mailboxIdFactory) { + this.reIndexerPerformer = reIndexerPerformer; this.mailboxIdFactory = mailboxIdFactory; } - public Task create(JsonNode parameters) { - MailboxId mailboxId = mailboxIdFactory.fromString(parameters.get("mailboxId").asText()); - return new SingleMailboxReindexingTask(null, mailboxId); + public SingleMailboxReindexingTask create(SingleMailboxReindexingTaskDTO dto) { + MailboxId mailboxId = mailboxIdFactory.fromString(dto.getMailboxId()); + return new SingleMailboxReindexingTask(reIndexerPerformer, mailboxId); } } @@ -90,14 +89,13 @@ public class SingleMailboxReindexingTask implements Task { return MAILBOX_RE_INDEXING; } - @Override - public Optional<TaskExecutionDetails.AdditionalInformation> details() { - return Optional.of(additionalInformation); + public MailboxId getMailboxId() { + return mailboxId; } @Override - public Map<String, String> parameters() { - return ImmutableMap.of("mailboxId", mailboxId.serialize()); + public Optional<TaskExecutionDetails.AdditionalInformation> details() { + return Optional.of(additionalInformation); } } diff --git a/server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/dto/SingleMailboxReindexingTaskDTO.java similarity index 69% copy from server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTO.java copy to mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/dto/SingleMailboxReindexingTaskDTO.java index ae8928f..de7100b 100644 --- a/server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTO.java +++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/dto/SingleMailboxReindexingTaskDTO.java @@ -17,27 +17,20 @@ * under the License. * ****************************************************************/ -package org.apache.james.server.task.json.dto; +package org.apache.mailbox.tools.indexer.dto; -import org.apache.james.server.task.json.TestTask; +import org.apache.james.server.task.json.dto.TaskDTO; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -public class TestTaskDTO implements TaskDTO<TestTask> { - private final long parameter; - private final String type; +public class SingleMailboxReindexingTaskDTO implements TaskDTO { + private final String type; + private final String mailboxId; - @JsonCreator - public TestTaskDTO(@JsonProperty("type") String type, @JsonProperty("parameter") long parameter) { + public SingleMailboxReindexingTaskDTO(@JsonProperty("type") String type, @JsonProperty("mailboxId") String mailboxId) { this.type = type; - this.parameter = parameter; - } - - public long getParameter() { - return parameter; + this.mailboxId = mailboxId; } @Override @@ -45,11 +38,7 @@ public class TestTaskDTO implements TaskDTO<TestTask> { return type; } - @JsonIgnore - @Override - public TestTask toTask() { - return new TestTask(parameter); + public String getMailboxId() { + return mailboxId; } - - } diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskTest.java deleted file mode 100644 index ccda108..0000000 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.apache.mailbox.tools.indexer; - -import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; - -import org.apache.james.mailbox.model.TestId; -import org.junit.jupiter.api.Test; -import org.testcontainers.shaded.com.google.common.collect.ImmutableMap; - -class SingleMailboxReindexingTaskTest { - - @Test - void parametersShouldReturnMapWithStringValues() { - ReIndexerPerformer reIndexerPerformer = mock(ReIndexerPerformer.class); - TestId mailboxId = TestId.of(1L); - SingleMailboxReindexingTask task = new SingleMailboxReindexingTask(reIndexerPerformer, mailboxId); - assertThat(task.parameters()).isEqualTo(ImmutableMap.of("mailboxId", "1")); - } - -} \ No newline at end of file diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/TasksSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/TasksSerializationTest.java new file mode 100644 index 0000000..15826d1 --- /dev/null +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/TasksSerializationTest.java @@ -0,0 +1,76 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.mailbox.tools.indexer; + +import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +import java.io.IOException; + +import org.apache.james.mailbox.model.TestId; +import org.apache.james.server.task.json.JsonTaskSerializer; +import org.apache.james.server.task.json.dto.TaskDTOModule; +import org.apache.mailbox.tools.indexer.dto.SingleMailboxReindexingTaskDTO; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.core.JsonProcessingException; + +class TasksSerializationTest { + + private SingleMailboxReindexingTask.Factory factory; + private TaskDTOModule module; + private ReIndexerPerformer reIndexerPerformer; + + @BeforeEach + void setUp() { + reIndexerPerformer = mock(ReIndexerPerformer.class); + factory = new SingleMailboxReindexingTask.Factory(reIndexerPerformer, new TestId.Factory()); + module = TaskDTOModule + .forTask(SingleMailboxReindexingTask.class) + .convertToDTO(SingleMailboxReindexingTaskDTO.class) + .toDomainObjectConverter(factory::create) + .toDTOConverter((task, typeName) -> + new SingleMailboxReindexingTaskDTO(typeName, task.getMailboxId().serialize()) + ) + .typeName("mailbox-reindexer") + .withFactory(TaskDTOModule::new); + } + + @Test + void singleMailboxReindexingShouldBeSerializable() throws JsonProcessingException { + TestId mailboxId = TestId.of(1L); + SingleMailboxReindexingTask task = new SingleMailboxReindexingTask(reIndexerPerformer, mailboxId); + + assertThatJson(new JsonTaskSerializer(module).serialize(task)) + .isEqualTo("{\"type\": \"mailbox-reindexer\", \"mailboxId\": \"1\"}"); + } + + @Test + void singleMailboxReindexingShouldBeDeserializable() throws IOException { + TestId mailboxId = TestId.of(1L); + SingleMailboxReindexingTask task = new SingleMailboxReindexingTask(reIndexerPerformer, mailboxId); + + String serializedTask = "{\"type\": \"mailbox-reindexer\", \"mailboxId\": \"1\"}"; + assertThat(new JsonTaskSerializer(module).deserialize(serializedTask)) + .isEqualToComparingOnlyGivenFields(task, "reIndexerPerformer", "mailboxId"); + } +} diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemAddedDTO.java b/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemAddedDTO.java index 1545679..f42bd39 100644 --- a/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemAddedDTO.java +++ b/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemAddedDTO.java @@ -34,7 +34,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; -class DLPConfigurationItemAddedDTO implements EventDTO<ConfigurationItemsAdded> { +class DLPConfigurationItemAddedDTO implements EventDTO { public static DLPConfigurationItemAddedDTO from(ConfigurationItemsAdded event, String type) { return new DLPConfigurationItemAddedDTO( @@ -83,7 +83,6 @@ class DLPConfigurationItemAddedDTO implements EventDTO<ConfigurationItemsAdded> } @JsonIgnore - @Override public ConfigurationItemsAdded toEvent() { return new ConfigurationItemsAdded( DLPAggregateId.parse(aggregateId), diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemsRemovedDTO.java b/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemsRemovedDTO.java index 5d3a80a..c6c2ccb 100644 --- a/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemsRemovedDTO.java +++ b/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationItemsRemovedDTO.java @@ -34,7 +34,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; -class DLPConfigurationItemsRemovedDTO implements EventDTO<ConfigurationItemsRemoved> { +class DLPConfigurationItemsRemovedDTO implements EventDTO { public static DLPConfigurationItemsRemovedDTO from(ConfigurationItemsRemoved event, String type) { return new DLPConfigurationItemsRemovedDTO( @@ -83,7 +83,6 @@ class DLPConfigurationItemsRemovedDTO implements EventDTO<ConfigurationItemsRemo } @JsonIgnore - @Override public ConfigurationItemsRemoved toEvent() { return new ConfigurationItemsRemoved( DLPAggregateId.parse(aggregateId), diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationModules.java b/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationModules.java index 692aa0d..36c0217 100644 --- a/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationModules.java +++ b/server/data/data-cassandra/src/main/java/org/apache/james/dlp/eventsourcing/cassandra/DLPConfigurationModules.java @@ -29,7 +29,8 @@ public interface DLPConfigurationModules { EventDTOModule .forEvent(ConfigurationItemsAdded.class) .convertToDTO(DLPConfigurationItemAddedDTO.class) - .convertWith(DLPConfigurationItemAddedDTO::from) + .toDomainObjectConverter(DLPConfigurationItemAddedDTO::toEvent) + .toDTOConverter(DLPConfigurationItemAddedDTO::from) .typeName("dlp-configuration-store") .withFactory(EventDTOModule::new); @@ -37,7 +38,8 @@ public interface DLPConfigurationModules { EventDTOModule .forEvent(ConfigurationItemsRemoved.class) .convertToDTO(DLPConfigurationItemsRemovedDTO.class) - .convertWith(DLPConfigurationItemsRemovedDTO::from) + .toDomainObjectConverter(DLPConfigurationItemsRemovedDTO::toEvent) + .toDTOConverter(DLPConfigurationItemsRemovedDTO::from) .typeName("dlp-configuration-clear") .withFactory(EventDTOModule::new); diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/FilteringRuleSetDefineDTOModules.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/FilteringRuleSetDefineDTOModules.java index f8002f6..3f8314a 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/FilteringRuleSetDefineDTOModules.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/FilteringRuleSetDefineDTOModules.java @@ -30,7 +30,8 @@ public interface FilteringRuleSetDefineDTOModules { EventDTOModule .forEvent(RuleSetDefined.class) .convertToDTO(FilteringRuleSetDefinedDTO.class) - .convertWith(FilteringRuleSetDefinedDTO::from) + .toDomainObjectConverter(FilteringRuleSetDefinedDTO::toEvent) + .toDTOConverter(FilteringRuleSetDefinedDTO::from) .typeName(TYPE) .withFactory(EventDTOModule::new); diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/FilteringRuleSetDefinedDTO.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/FilteringRuleSetDefinedDTO.java index b655711..e35e6ae 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/FilteringRuleSetDefinedDTO.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/FilteringRuleSetDefinedDTO.java @@ -31,7 +31,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.collect.ImmutableList; -public class FilteringRuleSetDefinedDTO implements EventDTO<RuleSetDefined> { +public class FilteringRuleSetDefinedDTO implements EventDTO { public static FilteringRuleSetDefinedDTO from(RuleSetDefined event, String type) { return new FilteringRuleSetDefinedDTO( @@ -77,7 +77,6 @@ public class FilteringRuleSetDefinedDTO implements EventDTO<RuleSetDefined> { } @JsonIgnore - @Override public RuleSetDefined toEvent() { return new RuleSetDefined( FilteringAggregateId.parse(aggregateId), diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/CassandraMailQueueViewConfigurationModule.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/CassandraMailQueueViewConfigurationModule.java index e3b4fc6..cb0df9a 100644 --- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/CassandraMailQueueViewConfigurationModule.java +++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/CassandraMailQueueViewConfigurationModule.java @@ -29,7 +29,8 @@ public interface CassandraMailQueueViewConfigurationModule { EventDTOModule .forEvent(ConfigurationChanged.class) .convertToDTO(ConfigurationChangedDTO.class) - .convertWith(ConfigurationChangedDTO::from) + .toDomainObjectConverter(ConfigurationChangedDTO::toEvent) + .toDTOConverter(ConfigurationChangedDTO::from) .typeName(TYPE_NAME) .withFactory(EventDTOModule::new); } diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/ConfigurationChangedDTO.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/ConfigurationChangedDTO.java index 80a8ab7..a621e2a 100644 --- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/ConfigurationChangedDTO.java +++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/configuration/ConfigurationChangedDTO.java @@ -30,7 +30,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; -class ConfigurationChangedDTO implements EventDTO<ConfigurationChanged> { +class ConfigurationChangedDTO implements EventDTO { static ConfigurationChangedDTO from(ConfigurationChanged configurationChanged, String type) { Preconditions.checkNotNull(configurationChanged); @@ -74,7 +74,6 @@ class ConfigurationChangedDTO implements EventDTO<ConfigurationChanged> { } @JsonIgnore - @Override public ConfigurationChanged toEvent() { return new ConfigurationChanged( () -> aggregateKey, diff --git a/server/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskSerializer.java b/server/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskSerializer.java index 21b048e..3f616c2 100644 --- a/server/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskSerializer.java +++ b/server/task-json/src/main/java/org/apache/james/server/task/json/JsonTaskSerializer.java @@ -46,7 +46,7 @@ public class JsonTaskSerializer { } } - private JsonGenericSerializer<Task, TaskDTO<Task>> jsonGenericSerializer; + private JsonGenericSerializer<Task, TaskDTO> jsonGenericSerializer; @Inject public JsonTaskSerializer(@SuppressWarnings("rawtypes") Set<TaskDTOModule> modules) { diff --git a/server/task-json/src/main/java/org/apache/james/server/task/json/dto/TaskDTO.java b/server/task-json/src/main/java/org/apache/james/server/task/json/dto/TaskDTO.java index 3dc3670..2217abd 100644 --- a/server/task-json/src/main/java/org/apache/james/server/task/json/dto/TaskDTO.java +++ b/server/task-json/src/main/java/org/apache/james/server/task/json/dto/TaskDTO.java @@ -1,15 +1,8 @@ package org.apache.james.server.task.json.dto; import org.apache.james.json.DTO; -import org.apache.james.task.Task; -public interface TaskDTO<T extends Task> extends DTO<T> { - - T toTask(); +public interface TaskDTO extends DTO { String getType(); - - default T toDomainObject() { - return toTask(); - } } \ No newline at end of file diff --git a/server/task-json/src/main/java/org/apache/james/server/task/json/dto/TaskDTOModule.java b/server/task-json/src/main/java/org/apache/james/server/task/json/dto/TaskDTOModule.java index 0737025..5e5393e 100644 --- a/server/task-json/src/main/java/org/apache/james/server/task/json/dto/TaskDTOModule.java +++ b/server/task-json/src/main/java/org/apache/james/server/task/json/dto/TaskDTOModule.java @@ -21,13 +21,13 @@ package org.apache.james.server.task.json.dto; import org.apache.james.json.DTOModule; import org.apache.james.task.Task; -public class TaskDTOModule<T extends Task, U extends TaskDTO<T>> extends DTOModule<T, U> { +public class TaskDTOModule<T extends Task, U extends TaskDTO> extends DTOModule<T, U> { public static <TaskTypeT extends Task> Builder<TaskTypeT> forTask(Class<TaskTypeT> taskType) { return new Builder<>(taskType); } - public TaskDTOModule(DTOConverter<T, U> converter, Class<T> domainObjectType, Class<U> dtoType, String typeName) { - super(converter, domainObjectType, dtoType, typeName); + public TaskDTOModule(DTOConverter<T, U> converter, DomainObjectConverter<T, U> toDomainObjectConverter, Class<T> domainObjectType, Class<U> dtoType, String typeName) { + super(converter, toDomainObjectConverter, domainObjectType, dtoType, typeName); } } diff --git a/server/task-json/src/test/java/org/apache/james/server/task/json/TestTask.java b/server/task-json/src/test/java/org/apache/james/server/task/json/TestTask.java index 84aa4a4..f83ea0b 100644 --- a/server/task-json/src/test/java/org/apache/james/server/task/json/TestTask.java +++ b/server/task-json/src/test/java/org/apache/james/server/task/json/TestTask.java @@ -34,7 +34,7 @@ public class TestTask implements Task { } @Override - public Result run() throws InterruptedException { + public Result run() { return null; } diff --git a/server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTO.java b/server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTO.java index ae8928f..3a67475 100644 --- a/server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTO.java +++ b/server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTO.java @@ -25,7 +25,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -public class TestTaskDTO implements TaskDTO<TestTask> { +public class TestTaskDTO implements TaskDTO { private final long parameter; private final String type; @@ -46,7 +46,6 @@ public class TestTaskDTO implements TaskDTO<TestTask> { } @JsonIgnore - @Override public TestTask toTask() { return new TestTask(parameter); } diff --git a/server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTOModules.java b/server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTOModules.java index 499b96c..18ace22 100644 --- a/server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTOModules.java +++ b/server/task-json/src/test/java/org/apache/james/server/task/json/dto/TestTaskDTOModules.java @@ -26,7 +26,8 @@ public interface TestTaskDTOModules { TaskDTOModule TEST_TYPE = TaskDTOModule .forTask(TestTask.class) .convertToDTO(TestTaskDTO.class) - .convertWith((task, typeName) -> new TestTaskDTO( + .toDomainObjectConverter(TestTaskDTO::toTask) + .toDTOConverter((task, typeName) -> new TestTaskDTO( typeName, task.getParameter())) .typeName("testTask") --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
