Closed svalaskevicius closed 8 years ago
Something like this:
val closedState = handler {
pass[Open, Opened] switchTo(openState) orElse
pass[Lock, Locked] switchTo(ev => lockedState(ev.key))
}
def lockedState(key: String) = handler {
guard[Unlock, Unlocked]
.rule(cmd => cmd.key.nonEmpty, "Key is not allowed to be empty!")
.rule(cmd => cmd.key == key, "Key is invalid") switchTo(closedState)
}
val openState = handler {
pass[Close, Closed] switchTo(closedState)
}
Shorter, more succinct syntax