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