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 b8b635479d571862df7be4fa489f4a230ed10756
Author: Gautier DI FOLCO <gdifo...@linagora.com>
AuthorDate: Wed Sep 4 14:52:39 2019 +0200

    JAMES-2813 Add MappingsSourcesMigrationTask.AdditionalInformation 
serialization
---
 ...urcesMigrationTaskAdditionalInformationDTO.java | 69 ++++++++++++++++++++++
 ...pingsSourcesMigrationTaskSerializationTest.java | 16 +++++
 2 files changed, 85 insertions(+)

diff --git 
a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskAdditionalInformationDTO.java
 
b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskAdditionalInformationDTO.java
new file mode 100644
index 0000000..e84bc05
--- /dev/null
+++ 
b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskAdditionalInformationDTO.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.rrt.cassandra.migration;
+
+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 MappingsSourcesMigrationTaskAdditionalInformationDTO implements 
AdditionalInformationDTO {
+
+    private static MappingsSourcesMigrationTaskAdditionalInformationDTO 
fromDomainObject(MappingsSourcesMigration.AdditionalInformation 
additionalInformation, String type) {
+        return new MappingsSourcesMigrationTaskAdditionalInformationDTO(
+            additionalInformation.getSuccessfulMappingsCount(),
+            additionalInformation.getErrorMappingsCount()
+        );
+    }
+
+    public static final 
AdditionalInformationDTOModule<MappingsSourcesMigration.AdditionalInformation, 
MappingsSourcesMigrationTaskAdditionalInformationDTO> MODULE =
+        DTOModule
+            
.forDomainObject(MappingsSourcesMigration.AdditionalInformation.class)
+            
.convertToDTO(MappingsSourcesMigrationTaskAdditionalInformationDTO.class)
+            
.toDomainObjectConverter(MappingsSourcesMigrationTaskAdditionalInformationDTO::toDomainObject)
+            
.toDTOConverter(MappingsSourcesMigrationTaskAdditionalInformationDTO::fromDomainObject)
+            .typeName(MappingsSourcesMigration.TYPE.asString())
+            .withFactory(AdditionalInformationDTOModule::new);
+
+    private final long successfulMappingsCount;
+    private final long errorMappinsCount;
+
+    public 
MappingsSourcesMigrationTaskAdditionalInformationDTO(@JsonProperty("successfulMappingsCount")
 long successfulMappingsCount, @JsonProperty("errorMappinsCount") long 
errorMappinsCount) {
+        this.successfulMappingsCount = successfulMappingsCount;
+        this.errorMappinsCount = errorMappinsCount;
+    }
+
+    public long getSuccessfulMappingsCount() {
+        return successfulMappingsCount;
+    }
+
+    public long getErrorMappinsCount() {
+        return errorMappinsCount;
+    }
+
+    private MappingsSourcesMigration.AdditionalInformation toDomainObject() {
+        return new MappingsSourcesMigration.AdditionalInformation(
+            successfulMappingsCount,
+            errorMappinsCount
+        );
+    }
+}
diff --git 
a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskSerializationTest.java
 
b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskSerializationTest.java
index 7853b9c..c60acd9 100644
--- 
a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskSerializationTest.java
+++ 
b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/migration/MappingsSourcesMigrationTaskSerializationTest.java
@@ -26,7 +26,9 @@ import static org.mockito.Mockito.mock;
 
 import java.io.IOException;
 
+import 
org.apache.james.server.task.json.JsonTaskAdditionalInformationsSerializer;
 import org.apache.james.server.task.json.JsonTaskSerializer;
+import org.apache.james.task.TaskExecutionDetails;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import org.junit.jupiter.api.Test;
@@ -35,8 +37,11 @@ class MappingsSourcesMigrationTaskSerializationTest {
     private static final MappingsSourcesMigration MIGRATION = 
mock(MappingsSourcesMigration.class);
     private static final MappingsSourcesMigration.MappingsSourcesMigrationTask 
TASK = new MappingsSourcesMigration.MappingsSourcesMigrationTask(MIGRATION);
     private static final String SERIALIZED_TASK = "{\"type\": 
\"mappingsSourcesMigration\"}";
+    private static final MappingsSourcesMigration.AdditionalInformation 
DETAILS = new MappingsSourcesMigration.AdditionalInformation(42L, 10);
+    private static final String SERIALIZED_ADDITIONAL_INFORMATION = 
"{\"successfulMappingsCount\":42,\"errorMappinsCount\":10}";
 
     private static final JsonTaskSerializer TASK_SERIALIZER = new 
JsonTaskSerializer(MappingsSourcesMigrationTaskDTO.MODULE.apply(MIGRATION));
+    private static final JsonTaskAdditionalInformationsSerializer 
JSON_TASK_ADDITIONAL_INFORMATIONS_SERIALIZER = new 
JsonTaskAdditionalInformationsSerializer(MappingsSourcesMigrationTaskAdditionalInformationDTO.MODULE);
 
     @Test
     void taskShouldBeSerializable() throws JsonProcessingException {
@@ -49,4 +54,15 @@ class MappingsSourcesMigrationTaskSerializationTest {
         assertThat(TASK_SERIALIZER.deserialize(SERIALIZED_TASK))
             .isEqualToComparingFieldByField(TASK);
     }
+
+    @Test
+    void additionalInformationShouldBeSerializable() throws 
JsonProcessingException {
+        
assertThatJson(JSON_TASK_ADDITIONAL_INFORMATIONS_SERIALIZER.serialize(DETAILS)).isEqualTo(SERIALIZED_ADDITIONAL_INFORMATION);
+    }
+
+    @Test
+    void additonalInformationShouldBeDeserializable() throws IOException {
+        
assertThat(JSON_TASK_ADDITIONAL_INFORMATIONS_SERIALIZER.deserialize("mappingsSourcesMigration",
 SERIALIZED_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