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 0d404642802aa3360476ac07f7f2dc343a3c83cf
Author: Rémi Kowalski <rkowal...@linagora.com>
AuthorDate: Wed Sep 4 15:00:24 2019 +0200

    JAMES-2813 serialize ClearMailQueueAdditionalInformation
---
 ...ClearMailQueueTaskAdditionalInformationDTO.java | 68 ++++++++++++++++++++++
 .../webadmin/service/ClearMailQueueTaskTest.java   | 35 ++++++++---
 2 files changed, 96 insertions(+), 7 deletions(-)

diff --git 
a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTaskAdditionalInformationDTO.java
 
b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTaskAdditionalInformationDTO.java
new file mode 100644
index 0000000..4a4f5b0
--- /dev/null
+++ 
b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTaskAdditionalInformationDTO.java
@@ -0,0 +1,68 @@
+/****************************************************************
+ * 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.server.task.json.dto.AdditionalInformationDTO;
+import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ClearMailQueueTaskAdditionalInformationDTO implements 
AdditionalInformationDTO {
+
+    static final 
AdditionalInformationDTOModule<ClearMailQueueTask.AdditionalInformation, 
ClearMailQueueTaskAdditionalInformationDTO> SERIALIZATION_MODULE =
+        
DTOModule.forDomainObject(ClearMailQueueTask.AdditionalInformation.class)
+            .convertToDTO(ClearMailQueueTaskAdditionalInformationDTO.class)
+            .toDomainObjectConverter(dto -> new 
ClearMailQueueTask.AdditionalInformation(
+                dto.mailQueueName,
+                dto.initialCount,
+                dto.remainingCount
+            ))
+            .toDTOConverter((details, type) -> new 
ClearMailQueueTaskAdditionalInformationDTO(
+                details.getMailQueueName(),
+                details.getInitialCount(),
+                details.getRemainingCount()))
+            .typeName(ClearMailQueueTask.TYPE.asString())
+            .withFactory(AdditionalInformationDTOModule::new);
+
+    private final String mailQueueName;
+    private final long initialCount;
+    private final long remainingCount;
+
+    public 
ClearMailQueueTaskAdditionalInformationDTO(@JsonProperty("mailQueueName") 
String mailQueueName,
+                                                      
@JsonProperty("initialCount") long initialCount,
+                                                      
@JsonProperty("remainingCount") long remainingCount) {
+        this.mailQueueName = mailQueueName;
+        this.initialCount = initialCount;
+        this.remainingCount = remainingCount;
+    }
+
+    public String getMailQueueName() {
+        return mailQueueName;
+    }
+
+    public long getInitialCount() {
+        return initialCount;
+    }
+
+    public long getRemainingCount() {
+        return remainingCount;
+    }
+
+}
diff --git 
a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java
 
b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java
index 71aa869..c6b3c29 100644
--- 
a/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java
+++ 
b/server/protocols/webadmin/webadmin-mailqueue/src/test/java/org/apache/james/webadmin/service/ClearMailQueueTaskTest.java
@@ -17,35 +17,44 @@
 
 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.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.io.IOException;
 import java.util.Optional;
 
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.ManageableMailQueue;
+import 
org.apache.james.server.task.json.JsonTaskAdditionalInformationsSerializer;
 import org.apache.james.server.task.json.JsonTaskSerializer;
 import org.junit.jupiter.api.Test;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import net.javacrumbs.jsonunit.assertj.JsonAssertions;
 
 class ClearMailQueueTaskTest {
 
     private static final String SERIALIZED = "{\"type\": \"clear-mail-queue\", 
\"queue\": \"anyQueue\"}";
+    private static final String QUEUE_NAME = "anyQueue";
+    private static final long INITIAL_COUNT = 0L;
+    private static final long REMAINING_COUNT = 10L;
+    private JsonTaskAdditionalInformationsSerializer 
jsonAdditionalInformationSerializer = new 
JsonTaskAdditionalInformationsSerializer(
+        ClearMailQueueTaskAdditionalInformationDTO.SERIALIZATION_MODULE);
+    private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION = 
"{\"mailQueueName\":\"anyQueue\",\"initialCount\":0,\"remainingCount\":10}";
 
     @Test
     void taskShouldBeSerializable() throws Exception {
         MailQueueFactory<ManageableMailQueue> mailQueueFactory = 
mock(MailQueueFactory.class);
         ManageableMailQueue mockedQueue = mock(ManageableMailQueue.class);
-        String queueName = "anyQueue";
-        when(mockedQueue.getName()).thenReturn(queueName);
+        when(mockedQueue.getName()).thenReturn(QUEUE_NAME);
         when(mailQueueFactory.getQueue(anyString())).thenAnswer(arg -> 
Optional.of(mockedQueue));
         JsonTaskSerializer testee = new 
JsonTaskSerializer(ClearMailQueueTaskDTO.MODULE.apply(mailQueueFactory));
 
-        ManageableMailQueue queue = mailQueueFactory.getQueue(queueName).get();
+        ManageableMailQueue queue = 
mailQueueFactory.getQueue(QUEUE_NAME).get();
         ClearMailQueueTask task = new ClearMailQueueTask(queue);
         
JsonAssertions.assertThatJson(testee.serialize(task)).isEqualTo(SERIALIZED);
     }
@@ -54,12 +63,11 @@ class ClearMailQueueTaskTest {
     void taskShouldBeDeserializable() throws Exception {
         MailQueueFactory<ManageableMailQueue> mailQueueFactory = 
mock(MailQueueFactory.class);
         ManageableMailQueue mockedQueue = mock(ManageableMailQueue.class);
-        String queueName = "anyQueue";
-        when(mockedQueue.getName()).thenReturn(queueName);
+        when(mockedQueue.getName()).thenReturn(QUEUE_NAME);
         when(mailQueueFactory.getQueue(anyString())).thenAnswer(arg -> 
Optional.of(mockedQueue));
         JsonTaskSerializer testee = new 
JsonTaskSerializer(ClearMailQueueTaskDTO.MODULE.apply(mailQueueFactory));
 
-        ManageableMailQueue queue = mailQueueFactory.getQueue(queueName).get();
+        ManageableMailQueue queue = 
mailQueueFactory.getQueue(QUEUE_NAME).get();
         ClearMailQueueTask task = new ClearMailQueueTask(queue);
         
assertThat(testee.deserialize(SERIALIZED)).isEqualToIgnoringGivenFields(task, 
"additionalInformation");
     }
@@ -72,6 +80,19 @@ class ClearMailQueueTaskTest {
 
         String serializedJson = "{\"type\": \"clear-mail-queue\", \"queue\": 
\"anyQueue\"}";
         assertThatThrownBy(() -> testee.deserialize(serializedJson))
-                .isInstanceOf(ClearMailQueueTask.UnknownSerializedQueue.class);
+            .isInstanceOf(ClearMailQueueTask.UnknownSerializedQueue.class);
+    }
+
+    @Test
+    void additionalInformationShouldBeSerializable() throws 
JsonProcessingException {
+        ClearMailQueueTask.AdditionalInformation details = new 
ClearMailQueueTask.AdditionalInformation(QUEUE_NAME, INITIAL_COUNT, 
REMAINING_COUNT);
+        
assertThatJson(jsonAdditionalInformationSerializer.serialize(details)).isEqualTo(SERIALIZED_TASK_ADDITIONAL_INFORMATION);
+    }
+
+    @Test
+    void additionalInformationShouldBeDeserializable() throws IOException {
+        ClearMailQueueTask.AdditionalInformation details = new 
ClearMailQueueTask.AdditionalInformation(QUEUE_NAME, INITIAL_COUNT, 
REMAINING_COUNT);
+        
assertThat(jsonAdditionalInformationSerializer.deserialize("clear-mail-queue", 
SERIALIZED_TASK_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