You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2019/10/18 06:40:39 UTC

[james-project] 06/17: JAMES-2813 handle additional information in projection

This is an automated email from the ASF dual-hosted git repository.

rouazana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit c58f80a721424504f6300ac3e799883ee49e619f
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Wed Oct 9 11:12:13 2019 +0200

    JAMES-2813 handle additional information in projection
---
 .../org/apache/james/task/TaskExecutionDetails.scala  | 19 +++++++++++++++++++
 .../TaskExecutionDetailsProjection.scala              |  2 ++
 2 files changed, 21 insertions(+)

diff --git a/server/task/task-api/src/main/scala/org/apache/james/task/TaskExecutionDetails.scala b/server/task/task-api/src/main/scala/org/apache/james/task/TaskExecutionDetails.scala
index 499e9d1..b331907 100644
--- a/server/task/task-api/src/main/scala/org/apache/james/task/TaskExecutionDetails.scala
+++ b/server/task/task-api/src/main/scala/org/apache/james/task/TaskExecutionDetails.scala
@@ -100,6 +100,12 @@ class TaskExecutionDetails(val taskId: TaskId,
     case _ => this
   }
 
+  def updateInformation(information: AdditionalInformation): TaskExecutionDetails = status match {
+    case IN_PROGRESS => update(information)
+    case CANCEL_REQUESTED => update(information)
+    case _ => this
+  }
+
   def canEqual(other: Any): Boolean = other.isInstanceOf[TaskExecutionDetails]
 
   override def equals(other: Any): Boolean = other match {
@@ -145,6 +151,7 @@ class TaskExecutionDetails(val taskId: TaskId,
     additionalInformation = additionalInformation,
     startedDate = Optional.of(ZonedDateTime.now),
     ranNode = Optional.of(hostname))
+
   private def complete(finalAdditionalInformation: Optional[AdditionalInformation]) = new TaskExecutionDetails(taskId, `type`, TaskManager.Status.COMPLETED,
     submittedDate = submittedDate,
     submittedNode = submittedNode,
@@ -153,6 +160,7 @@ class TaskExecutionDetails(val taskId: TaskId,
     ranNode = ranNode,
     cancelRequestedNode = cancelRequestedNode,
     completedDate = Optional.of(ZonedDateTime.now))
+
   private def fail(finalAdditionalInformation: Optional[AdditionalInformation]) = new TaskExecutionDetails(taskId, `type`, TaskManager.Status.FAILED,
     submittedDate = submittedDate,
     submittedNode = submittedNode,
@@ -161,6 +169,7 @@ class TaskExecutionDetails(val taskId: TaskId,
     ranNode = ranNode,
     cancelRequestedNode = cancelRequestedNode,
     failedDate = Optional.of(ZonedDateTime.now))
+
   private def requestCancel(hostname: Hostname) = new TaskExecutionDetails(taskId, `type`, TaskManager.Status.CANCEL_REQUESTED,
     submittedDate = submittedDate,
     submittedNode = submittedNode,
@@ -169,6 +178,16 @@ class TaskExecutionDetails(val taskId: TaskId,
     ranNode = ranNode,
     cancelRequestedNode = Optional.of(hostname),
     canceledDate = Optional.of(ZonedDateTime.now))
+
+  private def update(updatedInformation: AdditionalInformation) = new TaskExecutionDetails(taskId, `type`, status,
+    submittedDate = submittedDate,
+    submittedNode = submittedNode,
+    additionalInformation = () => Optional.of(updatedInformation),
+    startedDate = startedDate,
+    ranNode = ranNode,
+    cancelRequestedNode = cancelRequestedNode,
+    canceledDate = canceledDate)
+
   private def cancel(finalAdditionalInformation: Optional[AdditionalInformation]) = new TaskExecutionDetails(taskId, `type`, TaskManager.Status.CANCELLED,
     submittedDate = submittedDate,
     submittedNode = submittedNode,
diff --git a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjection.scala b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjection.scala
index 0af572e..df28da4 100644
--- a/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjection.scala
+++ b/server/task/task-memory/src/main/scala/org/apache/james/task/eventsourcing/TaskExecutionDetailsProjection.scala
@@ -40,6 +40,8 @@ trait TaskExecutionDetailsProjection {
       update(failed.aggregateId.taskId)(_.failed(failed.additionalInformation.asJava))
     case canceled: Cancelled =>
       update(canceled.aggregateId.taskId)(_.cancelEffectively(canceled.additionalInformation.asJava))
+    case updated: AdditionalInformationUpdated =>
+      update(updated.aggregateId.taskId)(_.updateInformation(updated.additionalInformation))
   }
 
   private def update(taskId: TaskId)(updater: TaskExecutionDetails => TaskExecutionDetails): Unit =


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org