diff --git a/akka-actor/src/main/scala/akka/actor/FSM.scala b/akka-actor/src/main/scala/akka/actor/FSM.scala index 80c0fba49f..2763e1c0bb 100755 --- a/akka-actor/src/main/scala/akka/actor/FSM.scala +++ b/akka-actor/src/main/scala/akka/actor/FSM.scala @@ -10,6 +10,7 @@ import java.util.concurrent.ScheduledFuture object FSM { + case class CurrentState[S](fsmRef: ActorRef, state: S) case class Transition[S](fsmRef: ActorRef, from: S, to: S) case class SubscribeTransitionCallBack(actorRef: ActorRef) case class UnsubscribeTransitionCallBack(actorRef: ActorRef) @@ -319,7 +320,7 @@ trait FSM[S, D] { } case SubscribeTransitionCallBack(actorRef) => // send current state back as reference point - actorRef ! currentState.stateName + actorRef ! CurrentState(self, currentState.stateName) transitionCallBackList ::= actorRef case UnsubscribeTransitionCallBack(actorRef) => transitionCallBackList = transitionCallBackList.filterNot(_ == actorRef) diff --git a/akka-actor/src/test/scala/akka/actor/actor/FSMActorSpec.scala b/akka-actor/src/test/scala/akka/actor/actor/FSMActorSpec.scala index 47378c24a6..b25e96e87c 100644 --- a/akka-actor/src/test/scala/akka/actor/actor/FSMActorSpec.scala +++ b/akka-actor/src/test/scala/akka/actor/actor/FSMActorSpec.scala @@ -108,7 +108,7 @@ class FSMActorSpec extends JUnitSuite { val transitionTester = Actor.actorOf(new Actor { def receive = { case Transition(_, _, _) => transitionCallBackLatch.open - case Locked => initialStateLatch.open + case CurrentState(_, Locked) => initialStateLatch.open }}).start lock ! SubscribeTransitionCallBack(transitionTester) diff --git a/akka-actor/src/test/scala/akka/actor/actor/FSMTimingSpec.scala b/akka-actor/src/test/scala/akka/actor/actor/FSMTimingSpec.scala index 6d9df1c388..c565f07447 100644 --- a/akka-actor/src/test/scala/akka/actor/actor/FSMTimingSpec.scala +++ b/akka-actor/src/test/scala/akka/actor/actor/FSMTimingSpec.scala @@ -16,7 +16,7 @@ class FSMTimingSpec val fsm = Actor.actorOf(new StateMachine(testActor)).start fsm ! SubscribeTransitionCallBack(testActor) - expectMsg(50 millis, Initial) + expectMsg(50 millis, CurrentState(fsm, Initial)) ignoreMsg { case Transition(_, Initial, _) => true