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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
