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 54abe1ec644004fdcdd86a7c30f9431a2ab32e74
Author: Rémi Kowalski <rkowal...@linagora.com>
AuthorDate: Tue Sep 3 17:17:54 2019 +0200

    JAMES-2813 extract ClearMailRepositoryTaskDTO
---
 .../webadmin/service/ClearMailRepositoryTask.java  | 53 ++-------------
 .../service/ClearMailRepositoryTaskDTO.java        | 75 ++++++++++++++++++++++
 .../service/ClearMailRepositoryTaskTest.java       | 14 ++--
 3 files changed, 88 insertions(+), 54 deletions(-)

diff --git 
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTask.java
 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTask.java
index bb5d530..84b1985 100644
--- 
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTask.java
+++ 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTask.java
@@ -29,13 +29,11 @@ import javax.mail.MessagingException;
 import org.apache.james.json.DTOModule;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mailrepository.api.MailRepositoryPath;
-import org.apache.james.server.task.json.dto.TaskDTO;
 import org.apache.james.server.task.json.dto.TaskDTOModule;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
 import org.apache.james.task.TaskType;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
 import com.github.fge.lambdas.Throwing;
 
 public class ClearMailRepositoryTask implements Task {
@@ -80,56 +78,13 @@ public class ClearMailRepositoryTask implements Task {
         }
     }
 
-    private static class ClearMailRepositoryTaskDTO implements TaskDTO {
-
-        public static ClearMailRepositoryTaskDTO toDTO(ClearMailRepositoryTask 
domainObject, String typeName) {
-            try {
-                return new ClearMailRepositoryTaskDTO(typeName, 
domainObject.additionalInformation.repositoryPath.urlEncoded());
-            } catch (Exception e) {
-                throw new 
UrlEncodingFailureSerializationException(domainObject.additionalInformation.repositoryPath);
-            }
-        }
-
-        private final String type;
-        private final String mailRepositoryPath;
-
-        public ClearMailRepositoryTaskDTO(@JsonProperty("type") String type, 
@JsonProperty("mailRepositoryPath") String mailRepositoryPath) {
-            this.type = type;
-            this.mailRepositoryPath = mailRepositoryPath;
-        }
-
-        public ClearMailRepositoryTask fromDTO(List<MailRepository> 
mailRepositories) {
-            try {
-                return new ClearMailRepositoryTask(mailRepositories, 
MailRepositoryPath.fromEncoded(mailRepositoryPath));
-            } catch (Exception e) {
-                throw new 
InvalidMailRepositoryPathDeserializationException(mailRepositoryPath);
-            }
-        }
-
-        @Override
-        public String getType() {
-            return type;
-        }
-
-        public String getMailRepositoryPath() {
-            return mailRepositoryPath;
-        }
-    }
-
-    public static final Function<List<MailRepository>, 
TaskDTOModule<ClearMailRepositoryTask, ClearMailRepositoryTaskDTO>> MODULE = 
(mailRepositories) ->
-        DTOModule
-            .forDomainObject(ClearMailRepositoryTask.class)
-            .convertToDTO(ClearMailRepositoryTaskDTO.class)
-            .toDomainObjectConverter(dto -> dto.fromDTO(mailRepositories))
-            .toDTOConverter(ClearMailRepositoryTaskDTO::toDTO)
-            .typeName(TYPE.asString())
-            .withFactory(TaskDTOModule::new);
-
     private final List<MailRepository> mailRepositories;
+    private final MailRepositoryPath mailRepositoryPath;
     private final AdditionalInformation additionalInformation;
 
     public ClearMailRepositoryTask(List<MailRepository> mailRepositories, 
MailRepositoryPath path) {
         this.mailRepositories = mailRepositories;
+        this.mailRepositoryPath = path;
         this.additionalInformation = new AdditionalInformation(path, 
this::getRemainingSize);
     }
 
@@ -153,6 +108,10 @@ public class ClearMailRepositoryTask implements Task {
         return TYPE;
     }
 
+    MailRepositoryPath getMailRepositoryPath() {
+        return mailRepositoryPath;
+    }
+
     @Override
     public Optional<TaskExecutionDetails.AdditionalInformation> details() {
         return Optional.of(additionalInformation);
diff --git 
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskDTO.java
 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskDTO.java
new file mode 100644
index 0000000..719c73f
--- /dev/null
+++ 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ClearMailRepositoryTaskDTO.java
@@ -0,0 +1,75 @@
+/****************************************************************
+ * 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.List;
+import java.util.function.Function;
+
+import org.apache.james.json.DTOModule;
+import org.apache.james.mailrepository.api.MailRepository;
+import org.apache.james.mailrepository.api.MailRepositoryPath;
+import org.apache.james.server.task.json.dto.TaskDTO;
+import org.apache.james.server.task.json.dto.TaskDTOModule;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ClearMailRepositoryTaskDTO implements TaskDTO {
+
+    public static final Function<List<MailRepository>, 
TaskDTOModule<ClearMailRepositoryTask, ClearMailRepositoryTaskDTO>> MODULE = 
(mailRepositories) ->
+        DTOModule
+            .forDomainObject(ClearMailRepositoryTask.class)
+            .convertToDTO(ClearMailRepositoryTaskDTO.class)
+            .toDomainObjectConverter(dto -> dto.fromDTO(mailRepositories))
+            .toDTOConverter(ClearMailRepositoryTaskDTO::toDTO)
+            .typeName(ClearMailRepositoryTask.TYPE.asString())
+            .withFactory(TaskDTOModule::new);
+
+    public static ClearMailRepositoryTaskDTO toDTO(ClearMailRepositoryTask 
domainObject, String typeName) {
+        try {
+            return new ClearMailRepositoryTaskDTO(typeName, 
domainObject.getMailRepositoryPath().urlEncoded());
+        } catch (Exception e) {
+            throw new 
ClearMailRepositoryTask.UrlEncodingFailureSerializationException(domainObject.getMailRepositoryPath());
+        }
+    }
+
+    private final String type;
+    private final String mailRepositoryPath;
+
+    public ClearMailRepositoryTaskDTO(@JsonProperty("type") String type, 
@JsonProperty("mailRepositoryPath") String mailRepositoryPath) {
+        this.type = type;
+        this.mailRepositoryPath = mailRepositoryPath;
+    }
+
+    public ClearMailRepositoryTask fromDTO(List<MailRepository> 
mailRepositories) {
+        try {
+            return new ClearMailRepositoryTask(mailRepositories, 
MailRepositoryPath.fromEncoded(mailRepositoryPath));
+        } catch (Exception e) {
+            throw new 
ClearMailRepositoryTask.InvalidMailRepositoryPathDeserializationException(mailRepositoryPath);
+        }
+    }
+
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    public String getMailRepositoryPath() {
+        return mailRepositoryPath;
+    }
+}
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 fe02c84..0a127b1 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
@@ -22,16 +22,16 @@ package org.apache.james.webadmin.service;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
+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.JsonTaskSerializer;
+import org.junit.jupiter.api.Test;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.common.collect.ImmutableList;
 import net.javacrumbs.jsonunit.assertj.JsonAssertions;
-import org.junit.jupiter.api.Test;
-
-import java.io.IOException;
 
 class ClearMailRepositoryTaskTest {
     private static final String SERIALIZED = 
"{\"type\":\"clearMailRepository\",\"mailRepositoryPath\":\"a\"}";
@@ -40,14 +40,14 @@ class ClearMailRepositoryTaskTest {
 
     @Test
     void taskShouldBeSerializable() throws JsonProcessingException {
-        JsonTaskSerializer testee = new 
JsonTaskSerializer(ClearMailRepositoryTask.MODULE.apply(MAIL_REPOSITORIES));
+        JsonTaskSerializer testee = new 
JsonTaskSerializer(ClearMailRepositoryTaskDTO.MODULE.apply(MAIL_REPOSITORIES));
         JsonAssertions.assertThatJson(testee.serialize(TASK))
             .isEqualTo(SERIALIZED);
     }
 
     @Test
     void taskShouldBeDeserializable() throws IOException {
-        JsonTaskSerializer testee = new 
JsonTaskSerializer(ClearMailRepositoryTask.MODULE.apply(MAIL_REPOSITORIES));
+        JsonTaskSerializer testee = new 
JsonTaskSerializer(ClearMailRepositoryTaskDTO.MODULE.apply(MAIL_REPOSITORIES));
 
         assertThat(testee.deserialize(SERIALIZED))
             .isEqualToComparingFieldByFieldRecursively(TASK);
@@ -55,7 +55,7 @@ class ClearMailRepositoryTaskTest {
 
     @Test
     void taskShouldThrowOnDeserializationUrlDecodingError() {
-        JsonTaskSerializer testee = new 
JsonTaskSerializer(ClearMailRepositoryTask.MODULE.apply(MAIL_REPOSITORIES));
+        JsonTaskSerializer testee = new 
JsonTaskSerializer(ClearMailRepositoryTaskDTO.MODULE.apply(MAIL_REPOSITORIES));
 
         assertThatThrownBy(() -> 
testee.deserialize("{\"type\":\"clearMailRepository\",\"mailRepositoryPath\":\"%\"}"))
             
.isInstanceOf(ClearMailRepositoryTask.InvalidMailRepositoryPathDeserializationException.class);


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