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 478a417eb7390715835c48a903b7ba05307a6c6e
Author: RĂ©mi Kowalski <rkowal...@linagora.com>
AuthorDate: Tue Sep 3 18:06:42 2019 +0200

    JAMES-2813 serialize ClearMailRepositoryTaskAdditionalInformation
---
 ...MailRepositoryTaskAdditionalInformationDTO.java | 69 ++++++++++++++++++++++
 .../service/ClearMailRepositoryTaskTest.java       | 24 +++++++-
 2 files changed, 92 insertions(+), 1 deletion(-)

diff --git 
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskAdditionalInformationDTO.java
 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskAdditionalInformationDTO.java
new file mode 100644
index 0000000..d73adbc
--- /dev/null
+++ 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskAdditionalInformationDTO.java
@@ -0,0 +1,69 @@
+/****************************************************************
+ * 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 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 ClearMailRepositoryTaskAdditionalInformationDTO implements 
AdditionalInformationDTO {
+
+    static final 
AdditionalInformationDTOModule<ClearMailRepositoryTask.AdditionalInformation, 
ClearMailRepositoryTaskAdditionalInformationDTO> SERIALIZATION_MODULE =
+        
DTOModule.forDomainObject(ClearMailRepositoryTask.AdditionalInformation.class)
+            
.convertToDTO(ClearMailRepositoryTaskAdditionalInformationDTO.class)
+            .toDomainObjectConverter(dto -> new 
ClearMailRepositoryTask.AdditionalInformation(
+                MailRepositoryPath.from(dto.mailRepositoryPath),
+                dto.initialCount,
+                dto.remainingCount
+            ))
+            .toDTOConverter((details, type) -> new 
ClearMailRepositoryTaskAdditionalInformationDTO(
+                details.getRepositoryPath(),
+                details.getInitialCount(),
+                details.getRemainingCount()))
+            .typeName(ClearMailRepositoryTask.TYPE.asString())
+            .withFactory(AdditionalInformationDTOModule::new);
+
+    private final String mailRepositoryPath;
+    private final long initialCount;
+    private final long remainingCount;
+
+    public 
ClearMailRepositoryTaskAdditionalInformationDTO(@JsonProperty("mailRepositoryPath")
 String mailRepositoryPath,
+                                                           
@JsonProperty("initialCount") long initialCount,
+                                                           
@JsonProperty("remainingCount") long remainingCount) {
+        this.mailRepositoryPath = mailRepositoryPath;
+        this.initialCount = initialCount;
+        this.remainingCount = remainingCount;
+    }
+
+    public String getMailRepositoryPath() {
+        return mailRepositoryPath;
+    }
+
+    public long getInitialCount() {
+        return initialCount;
+    }
+
+    public long getRemainingCount() {
+        return remainingCount;
+    }
+
+}
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 0a127b1..f3c48e7 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
@@ -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;
 
@@ -26,6 +27,7 @@ import java.io.IOException;
 
 import org.apache.james.mailrepository.api.MailRepository;
 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.api.Test;
 
@@ -35,8 +37,15 @@ import net.javacrumbs.jsonunit.assertj.JsonAssertions;
 
 class ClearMailRepositoryTaskTest {
     private static final String SERIALIZED = 
"{\"type\":\"clearMailRepository\",\"mailRepositoryPath\":\"a\"}";
+    private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION = 
"{\"mailRepositoryPath\":\"a\", \"initialCount\": 0, \"remainingCount\": 10}";
     private static final ImmutableList<MailRepository> MAIL_REPOSITORIES = 
ImmutableList.of();
-    private static final ClearMailRepositoryTask TASK = new 
ClearMailRepositoryTask(MAIL_REPOSITORIES, MailRepositoryPath.from("a"));
+    private static final MailRepositoryPath MAIL_REPOSITORY_PATH = 
MailRepositoryPath.from("a");
+    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 JsonTaskAdditionalInformationsSerializer 
jsonAdditionalInformationSerializer = new 
JsonTaskAdditionalInformationsSerializer(
+        ClearMailRepositoryTaskAdditionalInformationDTO.SERIALIZATION_MODULE);
+
 
     @Test
     void taskShouldBeSerializable() throws JsonProcessingException {
@@ -60,4 +69,17 @@ class ClearMailRepositoryTaskTest {
         assertThatThrownBy(() -> 
testee.deserialize("{\"type\":\"clearMailRepository\",\"mailRepositoryPath\":\"%\"}"))
             
.isInstanceOf(ClearMailRepositoryTask.InvalidMailRepositoryPathDeserializationException.class);
     }
+
+    @Test
+    void additionalInformationShouldBeSerializable() throws 
JsonProcessingException {
+        ClearMailRepositoryTask.AdditionalInformation details = new 
ClearMailRepositoryTask.AdditionalInformation(MAIL_REPOSITORY_PATH, 
INITIAL_COUNT, REMAINING_COUNT);
+        
assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_TASK_ADDITIONAL_INFORMATION);
+    }
+
+    @Test
+    void additionalInformationShouldBeDeserializable() throws IOException {
+        ClearMailRepositoryTask.AdditionalInformation details = new 
ClearMailRepositoryTask.AdditionalInformation(MAIL_REPOSITORY_PATH, 
INITIAL_COUNT, REMAINING_COUNT);
+        
assertThat(jsonAdditionalInformationSerializer.deserialize("clearMailRepository",
 SERIALIZED_TASK_ADDITIONAL_INFORMATION))
+            .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