From 9606dbfe3f4ccae303468cbdcb7a650d8566157d Mon Sep 17 00:00:00 2001 From: jboner Date: Fri, 20 Nov 2009 11:12:03 +0100 Subject: [PATCH] added stop method to actor --- akka-actors/src/main/scala/actor/Actor.scala | 8 ++++- .../src/main/scala/actor/Supervisor.scala | 30 +++++++++---------- .../EventBasedSingleThreadActorTest.scala | 8 ++--- .../scala/EventBasedThreadPoolActorTest.scala | 8 ++--- .../src/test/scala/RemoteActorTest.scala | 8 ++--- .../src/test/scala/SchedulerTest.scala | 2 +- .../src/test/scala/ThreadBasedActorTest.scala | 8 ++--- akka-amqp/src/main/scala/AMQP.scala | 2 +- .../src/main/scala/SimpleService.scala | 2 +- 9 files changed, 40 insertions(+), 36 deletions(-) diff --git a/akka-actors/src/main/scala/actor/Actor.scala b/akka-actors/src/main/scala/actor/Actor.scala index 5aba208a28..4f63d8aa26 100644 --- a/akka-actors/src/main/scala/actor/Actor.scala +++ b/akka-actors/src/main/scala/actor/Actor.scala @@ -283,8 +283,14 @@ trait Actor extends Logging with TransactionManagement { /** * Shuts down the actor its dispatcher and message queue. + * Delegates to 'stop' */ - def exit = synchronized { + protected def exit = stop + + /** + * Shuts down the actor its dispatcher and message queue. + */ + def stop = synchronized { if (_isRunning) { messageDispatcher.unregisterHandler(this) if (messageDispatcher.isInstanceOf[ThreadBasedDispatcher]) messageDispatcher.shutdown diff --git a/akka-actors/src/main/scala/actor/Supervisor.scala b/akka-actors/src/main/scala/actor/Supervisor.scala index d08150364e..1dadd2cdac 100644 --- a/akka-actors/src/main/scala/actor/Supervisor.scala +++ b/akka-actors/src/main/scala/actor/Supervisor.scala @@ -106,26 +106,24 @@ sealed class Supervisor private[akka] (handler: FaultHandlingStrategy) override def start = { ConfiguratorRepository.registerConfigurator(this) actors.values.toArray.toList.foreach(println) + _linkedActors.toArray.toList.asInstanceOf[List[Actor]].foreach { actor => + actor.start + log.info("Starting actor: %s", actor) + } super[Actor].start - this ! StartSupervisor } - def stop = this !? StopSupervisor + override def stop = { + super[Actor].stop + _linkedActors.toArray.toList.asInstanceOf[List[Actor]].foreach { actor => + actor.stop + log.info("Shutting actor down: %s", actor) + } + log.info("Stopping supervisor: %s", this) + } - protected def receive = { - case StartSupervisor => - _linkedActors.toArray.toList.asInstanceOf[List[Actor]].foreach { actor => - actor.start - log.info("Starting actor: %s", actor) - } - - case StopSupervisor => - _linkedActors.toArray.toList.asInstanceOf[List[Actor]].foreach { actor => - actor.exit - log.info("Shutting actor down: %s", actor) - } - log.info("Stopping supervisor: %s", this) - exit + def receive = { + case _ => throw new IllegalArgumentException("Supervisor does not respond to any messages") } def configure(config: SupervisorConfig, factory: SupervisorFactory) = config match { diff --git a/akka-actors/src/test/scala/EventBasedSingleThreadActorTest.scala b/akka-actors/src/test/scala/EventBasedSingleThreadActorTest.scala index fd9e20e95c..67fbf89da8 100644 --- a/akka-actors/src/test/scala/EventBasedSingleThreadActorTest.scala +++ b/akka-actors/src/test/scala/EventBasedSingleThreadActorTest.scala @@ -33,7 +33,7 @@ class EventBasedSingleThreadActorTest extends JUnitSuite { val result = actor ! "OneWay" Thread.sleep(100) assert("received" === oneWay) - actor.exit + actor.stop } @Test def shouldSendReplySync = { @@ -42,7 +42,7 @@ class EventBasedSingleThreadActorTest extends JUnitSuite { actor.start val result: String = actor !? "Hello" assert("World" === result) - actor.exit + actor.stop } @Test def shouldSendReplyAsync = { @@ -51,7 +51,7 @@ class EventBasedSingleThreadActorTest extends JUnitSuite { actor.start val result = actor !! "Hello" assert("World" === result.get.asInstanceOf[String]) - actor.exit + actor.stop } @Test def shouldSendReceiveException = { @@ -65,6 +65,6 @@ class EventBasedSingleThreadActorTest extends JUnitSuite { case e => assert("expected" === e.getMessage()) } - actor.exit + actor.stop } } diff --git a/akka-actors/src/test/scala/EventBasedThreadPoolActorTest.scala b/akka-actors/src/test/scala/EventBasedThreadPoolActorTest.scala index b6747a9119..e82784cc67 100644 --- a/akka-actors/src/test/scala/EventBasedThreadPoolActorTest.scala +++ b/akka-actors/src/test/scala/EventBasedThreadPoolActorTest.scala @@ -29,7 +29,7 @@ class EventBasedThreadPoolActorTest extends JUnitSuite { val result = actor ! "OneWay" Thread.sleep(100) assert("received" === oneWay) - actor.exit + actor.stop } @Test def shouldSendReplySync = { @@ -38,7 +38,7 @@ class EventBasedThreadPoolActorTest extends JUnitSuite { actor.start val result: String = actor !? "Hello" assert("World" === result) - actor.exit + actor.stop } @Test def shouldSendReplyAsync = { @@ -47,7 +47,7 @@ class EventBasedThreadPoolActorTest extends JUnitSuite { actor.start val result = actor !! "Hello" assert("World" === result.get.asInstanceOf[String]) - actor.exit + actor.stop } @Test def shouldSendReceiveException = { @@ -61,6 +61,6 @@ class EventBasedThreadPoolActorTest extends JUnitSuite { case e => assert("expected" === e.getMessage()) } - actor.exit + actor.stop } } diff --git a/akka-actors/src/test/scala/RemoteActorTest.scala b/akka-actors/src/test/scala/RemoteActorTest.scala index 447ada87f6..1b6cb5bd76 100644 --- a/akka-actors/src/test/scala/RemoteActorTest.scala +++ b/akka-actors/src/test/scala/RemoteActorTest.scala @@ -46,7 +46,7 @@ class RemoteActorTest extends JUnitSuite { val result = actor ! "OneWay" Thread.sleep(100) assert("received" === Global.oneWay) - actor.exit + actor.stop } @Test @@ -57,7 +57,7 @@ class RemoteActorTest extends JUnitSuite { actor.start val result: String = actor !? "Hello" assert("World" === result) - actor.exit + actor.stop } @Test @@ -68,7 +68,7 @@ class RemoteActorTest extends JUnitSuite { actor.start val result = actor !! "Hello" assert("World" === result.get.asInstanceOf[String]) - actor.exit + actor.stop } @Test @@ -84,6 +84,6 @@ class RemoteActorTest extends JUnitSuite { case e => assert("expected" === e.getMessage()) } - actor.exit + actor.stop } } diff --git a/akka-actors/src/test/scala/SchedulerTest.scala b/akka-actors/src/test/scala/SchedulerTest.scala index 389fba7012..383e1f5206 100644 --- a/akka-actors/src/test/scala/SchedulerTest.scala +++ b/akka-actors/src/test/scala/SchedulerTest.scala @@ -18,7 +18,7 @@ class SchedulerTest extends JUnitSuite { Thread.sleep(1000) Scheduler.schedule(actor, Tick, 0L, 1L, TimeUnit.SECONDS) Thread.sleep(5000) - Scheduler.shutdown + Scheduler.stop assert(count > 0) } } \ No newline at end of file diff --git a/akka-actors/src/test/scala/ThreadBasedActorTest.scala b/akka-actors/src/test/scala/ThreadBasedActorTest.scala index 56762a7321..e39b9322f1 100644 --- a/akka-actors/src/test/scala/ThreadBasedActorTest.scala +++ b/akka-actors/src/test/scala/ThreadBasedActorTest.scala @@ -33,7 +33,7 @@ class ThreadBasedActorTest extends JUnitSuite { val result = actor ! "OneWay" Thread.sleep(100) assert("received" === oneWay) - actor.exit + actor.stop } @Test def shouldSendReplySync = { @@ -42,7 +42,7 @@ class ThreadBasedActorTest extends JUnitSuite { actor.start val result: String = actor !? "Hello" assert("World" === result) - actor.exit + actor.stop } @Test def shouldSendReplyAsync = { @@ -51,7 +51,7 @@ class ThreadBasedActorTest extends JUnitSuite { actor.start val result = actor !! "Hello" assert("World" === result.get.asInstanceOf[String]) - actor.exit + actor.stop } @Test def shouldSendReceiveException = { @@ -65,6 +65,6 @@ class ThreadBasedActorTest extends JUnitSuite { case e => assert("expected" === e.getMessage()) } - actor.exit + actor.stop } } diff --git a/akka-amqp/src/main/scala/AMQP.scala b/akka-amqp/src/main/scala/AMQP.scala index 0c2376a905..3143f41ee6 100644 --- a/akka-amqp/src/main/scala/AMQP.scala +++ b/akka-amqp/src/main/scala/AMQP.scala @@ -401,7 +401,7 @@ object AMQP extends Actor { case Some(tag) => channel.basicCancel(tag) unlink(listener.actor) - listener.actor.exit + listener.actor.stop log.debug("Message consumer is cancelled and shut down [%s]", listener) } } diff --git a/akka-samples-security/src/main/scala/SimpleService.scala b/akka-samples-security/src/main/scala/SimpleService.scala index a0950a2f38..cca4246933 100644 --- a/akka-samples-security/src/main/scala/SimpleService.scala +++ b/akka-samples-security/src/main/scala/SimpleService.scala @@ -33,7 +33,7 @@ class Boot { val supervisor = factory.newInstance - supervisor.start + supervisor.start } /*