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 1ec14e7eed18557c815f12bec84c1c1e7011bffa
Author: RĂ©mi Kowalski <rkowal...@linagora.com>
AuthorDate: Mon Sep 2 15:01:25 2019 +0200

    JAMES-2813 serialize ReprocessingOneMailTaskAdditionalInformationDTO
---
 ...cessingOneMailTaskAdditionalInformationDTO.java | 80 ++++++++++++++++++++++
 .../service/ReprocessingOneMailTaskTest.java       | 35 ++++++++--
 2 files changed, 109 insertions(+), 6 deletions(-)

diff --git 
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskAdditionalInformationDTO.java
 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskAdditionalInformationDTO.java
new file mode 100644
index 0000000..045ca81
--- /dev/null
+++ 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskAdditionalInformationDTO.java
@@ -0,0 +1,80 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.webadmin.service;
+
+import java.util.Optional;
+
+import org.apache.james.json.DTOModule;
+import org.apache.james.mailrepository.api.MailKey;
+import org.apache.james.mailrepository.api.MailRepositoryPath;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTO;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ReprocessingOneMailTaskAdditionalInformationDTO implements 
AdditionalInformationDTO {
+
+    static final 
AdditionalInformationDTOModule<ReprocessingOneMailTask.AdditionalInformation, 
ReprocessingOneMailTaskAdditionalInformationDTO> SERIALIZATION_MODULE =
+        
DTOModule.forDomainObject(ReprocessingOneMailTask.AdditionalInformation.class)
+            
.convertToDTO(ReprocessingOneMailTaskAdditionalInformationDTO.class)
+            .toDomainObjectConverter(dto -> new 
ReprocessingOneMailTask.AdditionalInformation(
+                MailRepositoryPath.from(dto.repositoryPath),
+                dto.targetQueue,
+                new MailKey(dto.mailKey),
+                dto.targetProcessor
+            ))
+            .toDTOConverter((details, type) -> new 
ReprocessingOneMailTaskAdditionalInformationDTO(
+                details.getRepositoryPath(),
+                details.getTargetQueue(),
+                details.getMailKey(),
+                details.getTargetProcessor()))
+            .typeName(ReprocessingOneMailTask.TYPE.asString())
+            .withFactory(AdditionalInformationDTOModule::new);
+
+    private final String repositoryPath;
+    private final String targetQueue;
+    private final String mailKey;
+    private final Optional<String> targetProcessor;
+
+    public 
ReprocessingOneMailTaskAdditionalInformationDTO(@JsonProperty("repositoryPath") 
String repositoryPath,
+                                                           
@JsonProperty("targetQueue") String targetQueue,
+                                                           
@JsonProperty("mailKey") String mailKey,
+                                                           
@JsonProperty("targetProcessor") Optional<String> targetProcessor) {
+        this.repositoryPath = repositoryPath;
+        this.targetQueue = targetQueue;
+        this.mailKey = mailKey;
+        this.targetProcessor = targetProcessor;
+    }
+
+    public String getRepositoryPath() {
+        return repositoryPath;
+    }
+
+    public String getTargetQueue() {
+        return targetQueue;
+    }
+
+    public String getMailKey() {
+        return mailKey;
+    }
+
+    public Optional<String> getTargetProcessor() {
+        return targetProcessor;
+    }
+}
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 af25067..b9cec70 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
@@ -19,27 +19,37 @@
 
 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.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Mockito.mock;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import java.io.IOException;
 import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.apache.james.mailrepository.api.MailKey;
 import org.apache.james.mailrepository.api.MailRepositoryPath;
+import 
org.apache.james.server.task.json.JsonTaskAdditionalInformationsSerializer;
 import org.apache.james.server.task.json.JsonTaskSerializer;
-
-import net.javacrumbs.jsonunit.assertj.JsonAssertions;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
 import org.junit.jupiter.params.provider.ValueSource;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import net.javacrumbs.jsonunit.assertj.JsonAssertions;
+
 class ReprocessingOneMailTaskTest {
     private static final ReprocessingService REPROCESSING_SERVICE = 
mock(ReprocessingService.class);
+    private static final String SERIALIZED_TASK_1 = 
"{\"type\":\"reprocessingOneTask\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\":
 \"myMail\",\"targetProcessor\":\"targetProcessor\"}";
+    private static final String SERIALIZED_TASK_1_ADDITIONAL_INFORMATION = 
"{\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": 
\"myMail\",\"targetProcessor\":\"targetProcessor\"}";
+    private static final MailRepositoryPath REPOSITORY_PATH = 
MailRepositoryPath.from("a");
+    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 JsonTaskAdditionalInformationsSerializer 
jsonAdditionalInformationSerializer = new 
JsonTaskAdditionalInformationsSerializer(ReprocessingOneMailTaskAdditionalInformationDTO.SERIALIZATION_MODULE);
 
     @ParameterizedTest
     @MethodSource
@@ -78,8 +88,8 @@ class ReprocessingOneMailTaskTest {
 
     private static Stream<Arguments> allValidTasks() {
         return Stream.of(
-            Arguments.of(MailRepositoryPath.from("a"), "queue", new 
MailKey("myMail"), Optional.of("targetProcessor"), 
"{\"type\":\"reprocessingOneTask\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\":
 \"myMail\",\"targetProcessor\":\"targetProcessor\"}"),
-            Arguments.of(MailRepositoryPath.from("a"), "queue", new 
MailKey("myMail"), Optional.empty(), 
"{\"type\":\"reprocessingOneTask\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\":
 \"myMail\"}")
+            Arguments.of(REPOSITORY_PATH, TARGET_QUEUE, MAIL_KEY, 
TARGET_PROCESSOR, SERIALIZED_TASK_1),
+            Arguments.of(REPOSITORY_PATH, TARGET_QUEUE, new MailKey("myMail"), 
Optional.empty(), 
"{\"type\":\"reprocessingOneTask\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\":
 \"myMail\"}")
         );
     }
 
@@ -89,6 +99,19 @@ class ReprocessingOneMailTaskTest {
         JsonTaskSerializer testee = new 
JsonTaskSerializer(ReprocessingOneMailTaskDTO.MODULE.apply(REPROCESSING_SERVICE));
 
         assertThatThrownBy(() -> testee.deserialize(serialized))
-                
.isInstanceOf(ReprocessingOneMailTask.InvalidMailRepositoryPathDeserializationException.class);
+            
.isInstanceOf(ReprocessingOneMailTask.InvalidMailRepositoryPathDeserializationException.class);
+    }
+
+    @Test
+    void additionalInformationShouldBeSerializable() throws 
JsonProcessingException {
+        ReprocessingOneMailTask.AdditionalInformation details = new 
ReprocessingOneMailTask.AdditionalInformation(REPOSITORY_PATH, TARGET_QUEUE, 
MAIL_KEY, TARGET_PROCESSOR);
+        
assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_TASK_1_ADDITIONAL_INFORMATION);
+    }
+
+    @Test
+    void additonalInformationShouldBeDeserializable() throws IOException {
+        ReprocessingOneMailTask.AdditionalInformation details = new 
ReprocessingOneMailTask.AdditionalInformation(REPOSITORY_PATH, TARGET_QUEUE, 
MAIL_KEY, TARGET_PROCESSOR);
+        
assertThat(jsonAdditionalInformationSerializer.deserialize("reprocessingOneTask",
 SERIALIZED_TASK_1_ADDITIONAL_INFORMATION))
+            .isEqualToComparingFieldByField(details);
     }
 }


---------------------------------------------------------------------
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