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 09a896b53866c6f542c38a58ee94187ac5dcbb45
Author: Gautier DI FOLCO <gdifo...@linagora.com>
AuthorDate: Wed Sep 4 14:06:01 2019 +0200

    JAMES-2813 Add MailboxPathV2MigrationTask.AdditionalInformation 
serialization
---
 ...athV2MigrationTaskAdditionalInformationDTO.java | 69 ++++++++++++++++++++++
 ...ailboxPathV2MigrationTaskSerializationTest.java | 20 +++++++
 2 files changed, 89 insertions(+)

diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskAdditionalInformationDTO.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskAdditionalInformationDTO.java
new file mode 100644
index 0000000..d6c021d
--- /dev/null
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskAdditionalInformationDTO.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.mailbox.cassandra.mail.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 MailboxPathV2MigrationTaskAdditionalInformationDTO implements 
AdditionalInformationDTO {
+
+    private static MailboxPathV2MigrationTaskAdditionalInformationDTO 
fromDomainObject(MailboxPathV2Migration.AdditionalInformation 
additionalInformation, String type) {
+        return new MailboxPathV2MigrationTaskAdditionalInformationDTO(
+            additionalInformation.getRemainingCount(),
+            additionalInformation.getInitialCount()
+        );
+    }
+
+    public static final 
AdditionalInformationDTOModule<MailboxPathV2Migration.AdditionalInformation, 
MailboxPathV2MigrationTaskAdditionalInformationDTO> MODULE =
+        DTOModule
+            
.forDomainObject(MailboxPathV2Migration.AdditionalInformation.class)
+            
.convertToDTO(MailboxPathV2MigrationTaskAdditionalInformationDTO.class)
+            
.toDomainObjectConverter(MailboxPathV2MigrationTaskAdditionalInformationDTO::toDomainObject)
+            
.toDTOConverter(MailboxPathV2MigrationTaskAdditionalInformationDTO::fromDomainObject)
+            .typeName(MailboxPathV2Migration.TYPE.asString())
+            .withFactory(AdditionalInformationDTOModule::new);
+
+    private final long remainingCount;
+    private final long initialCount;
+
+    public 
MailboxPathV2MigrationTaskAdditionalInformationDTO(@JsonProperty("remainingCount")
 long remainingCount, @JsonProperty("initialCount") long initialCount) {
+        this.remainingCount = remainingCount;
+        this.initialCount = initialCount;
+    }
+
+    public long getRemainingCount() {
+        return remainingCount;
+    }
+
+    public long getInitialCount() {
+        return initialCount;
+    }
+
+    private MailboxPathV2Migration.AdditionalInformation toDomainObject() {
+        return new MailboxPathV2Migration.AdditionalInformation(
+            remainingCount,
+            initialCount
+        );
+    }
+}
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskSerializationTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskSerializationTest.java
index 34a8070..0c98977 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskSerializationTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTaskSerializationTest.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 MailboxPathV2MigrationTaskSerializationTest {
     private static final MailboxPathV2Migration MIGRATION = 
mock(MailboxPathV2Migration.class);
     private static final MailboxPathV2Migration.MailboxPathV2MigrationTask 
TASK = new MailboxPathV2Migration.MailboxPathV2MigrationTask(MIGRATION);
     private static final String SERIALIZED_TASK = "{\"type\": 
\"Cassandra_mailboxPathV2Migration\"}";
+    private static final MailboxPathV2Migration.AdditionalInformation DETAILS 
= new MailboxPathV2Migration.AdditionalInformation(42L, 10);
+    private static final String SERIALIZED_ADDITIONAL_INFORMATION = 
"{\"remainingCount\":42,\"initialCount\":10}";
 
     private static final JsonTaskSerializer TASK_SERIALIZER = new 
JsonTaskSerializer(MailboxPathV2MigrationTaskDTO.MODULE.apply(MIGRATION));
+    private static final JsonTaskAdditionalInformationsSerializer 
JSON_TASK_ADDITIONAL_INFORMATIONS_SERIALIZER = new 
JsonTaskAdditionalInformationsSerializer(MailboxPathV2MigrationTaskAdditionalInformationDTO.MODULE);
 
     @Test
     void taskShouldBeSerializable() throws JsonProcessingException {
@@ -49,4 +54,19 @@ class MailboxPathV2MigrationTaskSerializationTest {
         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 {
+        TaskExecutionDetails.AdditionalInformation deserialized = 
JSON_TASK_ADDITIONAL_INFORMATIONS_SERIALIZER.deserialize("Cassandra_mailboxPathV2Migration",
 SERIALIZED_ADDITIONAL_INFORMATION);
+        
assertThat(deserialized).isInstanceOf(MailboxPathV2Migration.AdditionalInformation.class);
+
+        MailboxPathV2Migration.AdditionalInformation additionalInformation = 
(MailboxPathV2Migration.AdditionalInformation) deserialized;
+        
assertThat(additionalInformation.getRemainingCount()).isEqualTo(DETAILS.getRemainingCount());
+        
assertThat(additionalInformation.getInitialCount()).isEqualTo(DETAILS.getInitialCount());
+    }
 }


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