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 5f6506257a55599cd5359a85a891f77f3d578271
Author: RĂ©mi Kowalski <rkowal...@linagora.com>
AuthorDate: Wed Sep 4 13:35:50 2019 +0200

    JAMES-2813 make ReprocessingAllMailsTask.AdditionalInformation immutable
---
 .../webadmin/service/ReprocessingAllMailsTask.java | 31 +++++++++++-----------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git 
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java
 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java
index 2c669bf..02fd99a 100644
--- 
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java
+++ 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java
@@ -35,7 +35,6 @@ import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
 import org.apache.james.task.TaskType;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 public class ReprocessingAllMailsTask implements Task {
@@ -47,14 +46,14 @@ public class ReprocessingAllMailsTask implements Task {
         private final String targetQueue;
         private final Optional<String> targetProcessor;
         private final long initialCount;
-        private final AtomicLong processedCount;
+        private final long remainingCount;
 
-        public AdditionalInformation(MailRepositoryPath repositoryPath, String 
targetQueue, Optional<String> targetProcessor, long initialCount) {
+        public AdditionalInformation(MailRepositoryPath repositoryPath, String 
targetQueue, Optional<String> targetProcessor, long initialCount, long 
remainingCount) {
             this.repositoryPath = repositoryPath;
             this.targetQueue = targetQueue;
             this.targetProcessor = targetProcessor;
             this.initialCount = initialCount;
-            this.processedCount = new AtomicLong(0);
+            this.remainingCount = remainingCount;
         }
 
         public String getTargetQueue() {
@@ -70,17 +69,13 @@ public class ReprocessingAllMailsTask implements Task {
         }
 
         public long getRemainingCount() {
-            return initialCount - processedCount.get();
+            return remainingCount;
         }
 
         public long getInitialCount() {
             return initialCount;
         }
 
-        @JsonIgnore
-        public void notifyProgress(MailKey key) {
-            processedCount.incrementAndGet();
-        }
     }
 
     public static class UrlEncodingFailureSerializationException extends 
RuntimeException {
@@ -103,7 +98,7 @@ public class ReprocessingAllMailsTask implements Task {
             try {
                 return new ReprocessingAllMailsTaskDTO(
                     typeName,
-                    domainObject.additionalInformation.initialCount,
+                    domainObject.repositorySize,
                     domainObject.repositoryPath.urlEncoded(),
                     domainObject.targetQueue,
                     domainObject.targetProcessor
@@ -180,7 +175,8 @@ public class ReprocessingAllMailsTask implements Task {
     private final MailRepositoryPath repositoryPath;
     private final String targetQueue;
     private final Optional<String> targetProcessor;
-    private final AdditionalInformation additionalInformation;
+    private final long repositorySize;
+    private final AtomicLong processedCount;
 
     public ReprocessingAllMailsTask(ReprocessingService reprocessingService, 
long repositorySize,
                                     MailRepositoryPath repositoryPath, String 
targetQueue, Optional<String> targetProcessor) {
@@ -188,14 +184,18 @@ public class ReprocessingAllMailsTask implements Task {
         this.repositoryPath = repositoryPath;
         this.targetQueue = targetQueue;
         this.targetProcessor = targetProcessor;
-        this.additionalInformation = new AdditionalInformation(
-            repositoryPath, targetQueue, targetProcessor, repositorySize);
+        this.repositorySize = repositorySize;
+        this.processedCount = new AtomicLong(0);
+    }
+
+    private void notifyProgress(MailKey key) {
+        processedCount.incrementAndGet();
     }
 
     @Override
     public Result run() {
         try {
-            reprocessingService.reprocessAll(repositoryPath, targetProcessor, 
targetQueue, additionalInformation::notifyProgress);
+            reprocessingService.reprocessAll(repositoryPath, targetProcessor, 
targetQueue, this::notifyProgress);
             return Result.COMPLETED;
         } catch (MessagingException | 
MailRepositoryStore.MailRepositoryStoreException e) {
             LOGGER.error("Encountered error while reprocessing repository", e);
@@ -210,7 +210,8 @@ public class ReprocessingAllMailsTask implements Task {
 
     @Override
     public Optional<TaskExecutionDetails.AdditionalInformation> details() {
-        return Optional.of(additionalInformation);
+        return Optional.of(new AdditionalInformation(
+            repositoryPath, targetQueue, targetProcessor, repositorySize, 
repositorySize - processedCount.get()));
     }
 
 }


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