diff --git a/akka-actor-tests/src/test/scala/akka/actor/actor/FSMActorSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/actor/FSMActorSpec.scala index 0d06561d48..e30e76541a 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/actor/FSMActorSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/actor/FSMActorSpec.scala @@ -12,6 +12,7 @@ import akka.testkit._ import FSM._ import akka.util.Duration import akka.util.duration._ +import akka.event._ object FSMActorSpec { @@ -57,8 +58,9 @@ object FSMActorSpec { } whenUnhandled { - case Event(_, stateData) ⇒ { + case Ev(msg) ⇒ { unhandledLatch.open + EventHandler.info(this, "unhandled event " + msg + " in state " + stateName + " with data " + stateData) stay } } diff --git a/akka-actor/src/main/scala/akka/actor/FSM.scala b/akka-actor/src/main/scala/akka/actor/FSM.scala index 802f369e7a..ed3533c6d5 100644 --- a/akka-actor/src/main/scala/akka/actor/FSM.scala +++ b/akka-actor/src/main/scala/akka/actor/FSM.scala @@ -306,7 +306,7 @@ trait FSM[S, D] extends ListenerManagement { * function literal. To be used with onTransition. */ implicit protected final def total2pf(transitionHandler: (S, S) ⇒ Unit) = - new PartialFunction[(S, S), Unit] { + new TransitionHandler { def isDefinedAt(in: (S, S)) = true def apply(in: (S, S)) { transitionHandler(in._1, in._2) } } @@ -334,6 +334,16 @@ trait FSM[S, D] extends ListenerManagement { } /** + * Return current state name (i.e. object of type S) + */ + def stateName: S = currentState.stateName + + /** + * Return current state data (i.e. object of type D) + */ + def stateData: D = currentState.stateData + + /* * **************************************************************** * PRIVATE IMPLEMENTATION DETAILS * ****************************************************************