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 f45501fb25ad7b50824bf679cd26f1439fff16a9
Author: Rémi Kowalski <rkowal...@linagora.com>
AuthorDate: Wed Sep 4 14:34:33 2019 +0200

    JAMES-2813 serialize ReprocessingAllMailstaskAdditionalInformation
---
 ...essingAllMailsTaskAdditionalInformationDTO.java | 89 ++++++++++++++++++++++
 .../service/ReprocessingAllMailsTaskTest.java      | 64 ++++++++++++++--
 2 files changed, 148 insertions(+), 5 deletions(-)

diff --git 
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskAdditionalInformationDTO.java
 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskAdditionalInformationDTO.java
new file mode 100644
index 0000000..3b117ed
--- /dev/null
+++ 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskAdditionalInformationDTO.java
@@ -0,0 +1,89 @@
+/****************************************************************
+ * 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.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 ReprocessingAllMailsTaskAdditionalInformationDTO implements 
AdditionalInformationDTO {
+
+    public static final 
AdditionalInformationDTOModule<ReprocessingAllMailsTask.AdditionalInformation, 
ReprocessingAllMailsTaskAdditionalInformationDTO> SERIALIZATION_MODULE =
+        
DTOModule.forDomainObject(ReprocessingAllMailsTask.AdditionalInformation.class)
+            
.convertToDTO(ReprocessingAllMailsTaskAdditionalInformationDTO.class)
+            .toDomainObjectConverter(dto -> new 
ReprocessingAllMailsTask.AdditionalInformation(
+                MailRepositoryPath.from(dto.repositoryPath),
+                dto.targetQueue,
+                dto.targetProcessor,
+                dto.initialCount,
+                dto.remainingCount
+            ))
+            .toDTOConverter((details, type) -> new 
ReprocessingAllMailsTaskAdditionalInformationDTO(
+                details.getRepositoryPath(),
+                details.getTargetQueue(),
+                details.getTargetProcessor(),
+                details.getInitialCount(),
+                details.getRemainingCount()))
+            .typeName(ReprocessingAllMailsTask.TYPE.asString())
+            .withFactory(AdditionalInformationDTOModule::new);
+
+    private final String repositoryPath;
+    private final String targetQueue;
+    private final Optional<String> targetProcessor;
+    private final long initialCount;
+    private final long remainingCount;
+
+    public ReprocessingAllMailsTaskAdditionalInformationDTO(
+        @JsonProperty("repositoryPath") String repositoryPath,
+        @JsonProperty("targetQueue") String targetQueue,
+        @JsonProperty("targetProcessor") Optional<String> targetProcessor,
+        @JsonProperty("initialCount") long initialCount,
+        @JsonProperty("remainingCount") long remainingCount) {
+        this.repositoryPath = repositoryPath;
+        this.targetQueue = targetQueue;
+        this.targetProcessor = targetProcessor;
+        this.initialCount = initialCount;
+        this.remainingCount = remainingCount;
+    }
+
+    public long getInitialCount() {
+        return initialCount;
+    }
+
+    public long getRemainingCount() {
+        return remainingCount;
+    }
+
+    public String getRepositoryPath() {
+        return repositoryPath;
+    }
+
+    public String getTargetQueue() {
+        return targetQueue;
+    }
+
+    public Optional<String> getTargetProcessor() {
+        return targetProcessor;
+    }
+}
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 4f41a74..810bafe 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
@@ -19,6 +19,7 @@
 
 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;
@@ -27,7 +28,9 @@ 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 org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
@@ -35,10 +38,20 @@ 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 ReprocessingAllMailsTaskTest {
     private static final ReprocessingService REPROCESSING_SERVICE = 
mock(ReprocessingService.class);
+    private JsonTaskAdditionalInformationsSerializer 
jsonAdditionalInformationSerializer = new 
JsonTaskAdditionalInformationsSerializer(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";
+    private static final MailKey MAIL_KEY = new MailKey("myMail");
+    private static final Optional<String> SOME_TARGET_PROCESSOR = 
Optional.of("targetProcessor");
+    private static final long REMAINING_COUNT = 3L;
+    private static final String SERIALIZED_TASK_WITH_TARGET_PROCESSOR = 
"{\"type\":\"reprocessingAllTask\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\"}";
+    private static final String SERIALIZED_TASK_WITHOUT_TARGET_PROCESSOR = 
"{\"type\":\"reprocessingAllTask\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\"}";
+    private static final String 
SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITH_TARGET_PROCESSOR = 
"{\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\",\"initialCount\":5,\"remainingCount\":3}";
+    private static final String 
SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITHOUT_TARGET_PROCESSOR = 
"{\"repositoryPath\":\"a\",\"targetQueue\":\"queue\", 
\"initialCount\":5,\"remainingCount\":3}";
 
     @ParameterizedTest
     @MethodSource
@@ -49,7 +62,7 @@ class ReprocessingAllMailsTaskTest {
                                   String serialized) throws 
JsonProcessingException {
         JsonTaskSerializer testee = new 
JsonTaskSerializer(ReprocessingAllMailsTaskDTO.MODULE.apply(REPROCESSING_SERVICE));
         ReprocessingAllMailsTask task = new 
ReprocessingAllMailsTask(REPROCESSING_SERVICE, repositorySize, repositoryPath, 
targetQueue, targetProcessor);
-        JsonAssertions.assertThatJson(testee.serialize(task))
+        assertThatJson(testee.serialize(task))
             .isEqualTo(serialized);
     }
 
@@ -77,8 +90,8 @@ class ReprocessingAllMailsTaskTest {
 
     private static Stream<Arguments> allValidTasks() {
         return Stream.of(
-            Arguments.of(5L, MailRepositoryPath.from("a"), "queue", 
Optional.of("targetProcessor"), 
"{\"type\":\"reprocessingAllTask\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\"}"),
-            Arguments.of(5L, MailRepositoryPath.from("a"), "queue", 
Optional.empty(), 
"{\"type\":\"reprocessingAllTask\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\"}")
+            Arguments.of(REPOSITORY_SIZE, REPOSITORY_PATH, TARGET_QUEUE, 
SOME_TARGET_PROCESSOR, SERIALIZED_TASK_WITH_TARGET_PROCESSOR),
+            Arguments.of(REPOSITORY_SIZE, REPOSITORY_PATH, TARGET_QUEUE, 
Optional.empty(), SERIALIZED_TASK_WITHOUT_TARGET_PROCESSOR)
         );
     }
 
@@ -88,6 +101,47 @@ class ReprocessingAllMailsTaskTest {
         JsonTaskSerializer testee = new 
JsonTaskSerializer(ReprocessingAllMailsTaskDTO.MODULE.apply(REPROCESSING_SERVICE));
 
         assertThatThrownBy(() -> testee.deserialize(serialized))
-                
.isInstanceOf(ReprocessingAllMailsTask.InvalidMailRepositoryPathDeserializationException.class);
+            
.isInstanceOf(ReprocessingAllMailsTask.InvalidMailRepositoryPathDeserializationException.class);
+    }
+
+    private static Stream<Arguments> allAdditionalInformations() {
+        return Stream.of(
+            Arguments.of(REPOSITORY_PATH, TARGET_QUEUE, SOME_TARGET_PROCESSOR, 
REPOSITORY_SIZE, REMAINING_COUNT, 
SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITH_TARGET_PROCESSOR),
+            Arguments.of(REPOSITORY_PATH, TARGET_QUEUE, Optional.empty(), 
REPOSITORY_SIZE, REMAINING_COUNT, 
SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITHOUT_TARGET_PROCESSOR)
+        );
+    }
+
+
+    @ParameterizedTest
+    @MethodSource
+    void additionalInformationShouldBeSerializable(MailRepositoryPath 
repositoryPath,
+                                                   String targetQueue,
+                                                   Optional<String> 
targetProcessor,
+                                                   long repositorySize,
+                                                   long remainingCount,
+                                                   String serialized) throws 
JsonProcessingException {
+        ReprocessingAllMailsTask.AdditionalInformation details = new 
ReprocessingAllMailsTask.AdditionalInformation(repositoryPath, targetQueue, 
targetProcessor, repositorySize, remainingCount);
+        
assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(serialized);
+    }
+
+    private static Stream<Arguments> 
additionalInformationShouldBeSerializable() {
+        return allAdditionalInformations();
+    }
+
+    @ParameterizedTest
+    @MethodSource
+    void additionalInformationShouldBeDeserializable(MailRepositoryPath 
repositoryPath,
+                                                     String targetQueue,
+                                                     Optional<String> 
targetProcessor,
+                                                     long repositorySize,
+                                                     long remainingCount,
+                                                     String serialized) throws 
IOException {
+        ReprocessingAllMailsTask.AdditionalInformation details = new 
ReprocessingAllMailsTask.AdditionalInformation(repositoryPath, targetQueue, 
targetProcessor, repositorySize, remainingCount);
+        
assertThat(jsonAdditionalInformationSerializer.deserialize("reprocessingAllTask",
 serialized))
+            .isEqualToComparingFieldByField(details);
+    }
+
+    private static Stream<Arguments> 
additionalInformationShouldBeDeserializable() {
+        return allAdditionalInformations();
     }
 }
\ 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