Slight refactoring

This commit is contained in:
Eugene Zadyra
2018-07-04 11:00:46 +02:00
parent 1ac00eaa06
commit 55c12c0e6c

View File

@@ -27,25 +27,21 @@ trait Conversation[D] extends Actor with Domain[D] with Logger {
override def receive: Receive = {
case InitConversation => init()
case StartConversation | ContinueConversation =>
try {
currentStep match {
case qa: QuestionAnswer => qa.question.questionFn(currentData)
case InternalConfiguration(fn) =>
val nextStep = fn(currentData)
moveToNextStep(nextStep)
case _ => //do nothing
}
} catch {
case NonFatal(ex) => error("Step execution failed", ex)
}
case StartConversation | ContinueConversation => execute()
case any => makeTransition(any)
}
private def moveToNextStep(nextStep: NextStep): Unit = {
currentStep = nextStep.step
nextStep.data.foreach { data =>
currentData = data
def execute(): Unit = {
try {
currentStep match {
case qa: QuestionAnswer => qa.question.questionFn(currentData)
case InternalConfiguration(fn) =>
val nextStep = fn(currentData)
moveToNextStep(nextStep)
case _ => //do nothing
}
} catch {
case NonFatal(ex) => error("Step execution failed", ex)
}
}
@@ -73,6 +69,13 @@ trait Conversation[D] extends Actor with Domain[D] with Logger {
}
}
private def moveToNextStep(nextStep: NextStep): Unit = {
currentStep = nextStep.step
nextStep.data.foreach { data =>
currentData = data
}
}
private def init(): Unit = {
require(startWithStep != null, "Entry point must be defined")
currentStep = startWithStep