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 dbe820e499f8e525049aa147876ed23ab2330212
Author: Rémi Kowalski <rkowal...@linagora.com>
AuthorDate: Wed Sep 4 11:36:54 2019 +0200

    JAMES-2813 serialize EventDeadLettersRedeliverTaskAdditionalInformation
---
 ...tersRedeliveryTaskAdditionalInformationDTO.java | 74 ++++++++++++++++++++++
 .../service/EventDeadLettersRedeliverTaskTest.java | 62 ++++++++++++++++++
 2 files changed, 136 insertions(+)

diff --git 
a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliveryTaskAdditionalInformationDTO.java
 
b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliveryTaskAdditionalInformationDTO.java
new file mode 100644
index 0000000..d1ed9f5
--- /dev/null
+++ 
b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersRedeliveryTaskAdditionalInformationDTO.java
@@ -0,0 +1,74 @@
+package org.apache.james.webadmin.service;
+
+import java.util.Optional;
+
+import org.apache.james.json.DTOModule;
+import org.apache.james.mailbox.events.EventDeadLetters;
+import org.apache.james.mailbox.events.Group;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTO;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.fge.lambdas.Throwing;
+
+public class EventDeadLettersRedeliveryTaskAdditionalInformationDTO implements 
AdditionalInformationDTO {
+
+    public static final 
AdditionalInformationDTOModule<EventDeadLettersRedeliverTask.AdditionalInformation,
 EventDeadLettersRedeliveryTaskAdditionalInformationDTO> MODULE =
+        DTOModule
+            
.forDomainObject(EventDeadLettersRedeliverTask.AdditionalInformation.class)
+            
.convertToDTO(EventDeadLettersRedeliveryTaskAdditionalInformationDTO.class)
+            
.toDomainObjectConverter(EventDeadLettersRedeliveryTaskAdditionalInformationDTO::fromDTO)
+            
.toDTOConverter(EventDeadLettersRedeliveryTaskAdditionalInformationDTO::toDTO)
+            .typeName(EventDeadLettersRedeliverTask.TYPE.asString())
+            .withFactory(AdditionalInformationDTOModule::new);
+
+    private static EventDeadLettersRedeliveryTaskAdditionalInformationDTO 
toDTO(EventDeadLettersRedeliverTask.AdditionalInformation domainObject, String 
typeName) {
+        return new EventDeadLettersRedeliveryTaskAdditionalInformationDTO(
+            domainObject.getSuccessfulRedeliveriesCount(),
+            domainObject.getFailedRedeliveriesCount(),
+            domainObject.getGroup(),
+            domainObject.getInsertionId());
+    }
+
+    private static EventDeadLettersRedeliverTask.AdditionalInformation 
fromDTO(EventDeadLettersRedeliveryTaskAdditionalInformationDTO dto) {
+        return new EventDeadLettersRedeliverTask.AdditionalInformation(
+            dto.successfulRedeliveriesCount,
+            dto.failedRedeliveriesCount,
+            dto.group.map(Throwing.function(Group::deserialize).sneakyThrow()),
+            dto.insertionId.map(EventDeadLetters.InsertionId::of));
+    }
+
+
+    private final long successfulRedeliveriesCount;
+    private final long failedRedeliveriesCount;
+    private final Optional<String> group;
+    private final Optional<String> insertionId;
+
+    public 
EventDeadLettersRedeliveryTaskAdditionalInformationDTO(@JsonProperty("successfulRedeliveriesCount")
 long successfulRedeliveriesCount,
+                                                                  
@JsonProperty("failedRedeliveriesCount") long failedRedeliveriesCount,
+                                                                  
@JsonProperty("group") Optional<String> group,
+                                                                  
@JsonProperty("insertionId") Optional<String> insertionId
+    ) {
+        this.successfulRedeliveriesCount = successfulRedeliveriesCount;
+        this.failedRedeliveriesCount = failedRedeliveriesCount;
+        this.group = group;
+        this.insertionId = insertionId;
+    }
+
+
+    public long getSuccessfulRedeliveriesCount() {
+        return successfulRedeliveriesCount;
+    }
+
+    public long getFailedRedeliveriesCount() {
+        return failedRedeliveriesCount;
+    }
+
+    public Optional<String> getGroup() {
+        return group;
+    }
+
+    public Optional<String> getInsertionId() {
+        return insertionId;
+    }
+}
\ No newline at end of file
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 f3382a3..a3dd8ba 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
@@ -19,12 +19,18 @@
 
 package org.apache.james.webadmin.service;
 
+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 java.util.Optional;
 
+import org.apache.james.mailbox.events.EventDeadLetters;
+import org.apache.james.mailbox.events.Group;
+import 
org.apache.james.server.task.json.JsonTaskAdditionalInformationsSerializer;
 import org.apache.james.server.task.json.JsonTaskSerializer;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -32,11 +38,29 @@ import net.javacrumbs.jsonunit.assertj.JsonAssertions;
 
 class EventDeadLettersRedeliverTaskTest {
     private static final String SERIALIZED = 
"{\"type\":\"eventDeadLettersRedeliverTask\"}";
+    private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION = 
"{\"successfulRedeliveriesCount\":10,\"failedRedeliveriesCount\":4,\"group\":\"org.apache.james.mailbox.events.GenericGroup-foo\",\"insertionId\":\"53db3dd9-80eb-476f-b25a-722ad364905a\"}";
+    private static final String 
SERIALIZED_TASK_ADDITIONAL_INFORMATION_EMPTY_FIELDS = 
"{\"successfulRedeliveriesCount\":10,\"failedRedeliveriesCount\":4}";
     private static final EventDeadLettersRedeliverService SERVICE = 
mock(EventDeadLettersRedeliverService.class);
     private static final EventRetriever EVENT_RETRIEVER = 
mock(EventRetriever.class);
     private static final EventDeadLettersRedeliverTask TASK = new 
EventDeadLettersRedeliverTask(SERVICE, EVENT_RETRIEVER);
     private static final JsonTaskSerializer TESTEE = new 
JsonTaskSerializer(EventDeadLettersRedeliverTaskDTO.MODULE.apply(SERVICE, 
EVENT_RETRIEVER));
 
+    private JsonTaskAdditionalInformationsSerializer 
jsonAdditionalInformationSerializer = new 
JsonTaskAdditionalInformationsSerializer(
+        EventDeadLettersRedeliveryTaskAdditionalInformationDTO.MODULE);
+
+    private static final long SUCCESSFUL_REDELIVERY_COUNT = 10L;
+    private static final long FAILED_REDELIVERY_COUNT = 4L;
+    private static Optional<Group> SOME_GROUP;
+
+    private static final Optional<EventDeadLetters.InsertionId> 
SOME_INSERTION_ID = 
Optional.of(EventDeadLetters.InsertionId.of("53db3dd9-80eb-476f-b25a-722ad364905a"));
+    private static final Optional<Group> NO_GROUP = Optional.empty();
+    private static final Optional<EventDeadLetters.InsertionId> 
NO_INSERTION_ID = Optional.empty();
+
+    @BeforeAll
+    static void setUp() throws Exception {
+        SOME_GROUP = 
Optional.of(Group.deserialize("org.apache.james.mailbox.events.GenericGroup-foo"));
+    }
+
     @Test
     void taskShouldBeSerializable() throws JsonProcessingException {
         JsonAssertions.assertThatJson(TESTEE.serialize(TASK))
@@ -48,4 +72,42 @@ class EventDeadLettersRedeliverTaskTest {
         assertThat(TESTEE.deserialize(SERIALIZED))
             .isEqualToComparingFieldByFieldRecursively(TASK);
     }
+
+    @Test
+    void additionalInformationShouldBeSerializable() throws 
JsonProcessingException {
+        EventDeadLettersRedeliverTask.AdditionalInformation details = new 
EventDeadLettersRedeliverTask.AdditionalInformation(SUCCESSFUL_REDELIVERY_COUNT,
+            FAILED_REDELIVERY_COUNT,
+            SOME_GROUP,
+            SOME_INSERTION_ID);
+        
assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_TASK_ADDITIONAL_INFORMATION);
+    }
+
+    @Test
+    void additionalInformationShouldBeDeserializable() throws IOException {
+        EventDeadLettersRedeliverTask.AdditionalInformation details = new 
EventDeadLettersRedeliverTask.AdditionalInformation(SUCCESSFUL_REDELIVERY_COUNT,
+            FAILED_REDELIVERY_COUNT,
+            SOME_GROUP,
+            SOME_INSERTION_ID);
+        
assertThat(jsonAdditionalInformationSerializer.deserialize("eventDeadLettersRedeliverTask",
 SERIALIZED_TASK_ADDITIONAL_INFORMATION))
+            .isEqualToComparingFieldByField(details);
+    }
+
+    @Test
+    void additionalInformationShouldBeSerializableWithEmptyFields() throws 
JsonProcessingException {
+        EventDeadLettersRedeliverTask.AdditionalInformation details = new 
EventDeadLettersRedeliverTask.AdditionalInformation(SUCCESSFUL_REDELIVERY_COUNT,
+            FAILED_REDELIVERY_COUNT,
+            NO_GROUP,
+            NO_INSERTION_ID);
+        
assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_TASK_ADDITIONAL_INFORMATION_EMPTY_FIELDS);
+    }
+
+    @Test
+    void additionalInformationShouldBeDeserializableWithEmptyFields() throws 
IOException {
+        EventDeadLettersRedeliverTask.AdditionalInformation details = new 
EventDeadLettersRedeliverTask.AdditionalInformation(SUCCESSFUL_REDELIVERY_COUNT,
+            FAILED_REDELIVERY_COUNT,
+            NO_GROUP,
+            NO_INSERTION_ID);
+        
assertThat(jsonAdditionalInformationSerializer.deserialize("eventDeadLettersRedeliverTask",
 SERIALIZED_TASK_ADDITIONAL_INFORMATION_EMPTY_FIELDS))
+            .isEqualToComparingFieldByField(details);
+    }
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to