From 87138b7a0d935fefc1e0f12e7ce5e57ff7071aa5 Mon Sep 17 00:00:00 2001 From: Peter Vlugter Date: Mon, 20 Dec 2010 11:11:52 +1300 Subject: [PATCH] Refine transactor doNothing (fixes #582) --- .../scala/akka/transactor/Transactor.scala | 5 +++- .../scala/transactor/TransactorSpec.scala | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/akka-stm/src/main/scala/akka/transactor/Transactor.scala b/akka-stm/src/main/scala/akka/transactor/Transactor.scala index 72ba139d85..98871e42a4 100644 --- a/akka-stm/src/main/scala/akka/transactor/Transactor.scala +++ b/akka-stm/src/main/scala/akka/transactor/Transactor.scala @@ -175,5 +175,8 @@ trait Transactor extends Actor { /** * Default catch-all for the different Receive methods. */ - def doNothing: Receive = { case _ => } + def doNothing: Receive = new Receive { + def apply(any: Any) = {} + def isDefinedAt(any: Any) = false + } } diff --git a/akka-stm/src/test/scala/transactor/TransactorSpec.scala b/akka-stm/src/test/scala/transactor/TransactorSpec.scala index c329672486..f10a0e1d2c 100644 --- a/akka-stm/src/test/scala/transactor/TransactorSpec.scala +++ b/akka-stm/src/test/scala/transactor/TransactorSpec.scala @@ -59,8 +59,22 @@ object TransactorIncrement { } } +object SimpleTransactor { + case class Set(ref: Ref[Int], value: Int, latch: CountDownLatch) + + class Setter extends Transactor { + def atomically = { + case Set(ref, value, latch) => { + ref.set(value) + latch.countDown + } + } + } +} + class TransactorSpec extends WordSpec with MustMatchers { import TransactorIncrement._ + import SimpleTransactor._ val numCounters = 5 val timeout = 5 seconds @@ -97,4 +111,17 @@ class TransactorSpec extends WordSpec with MustMatchers { failer.stop } } + + "Transactor" should { + "be usable without overriding normally" in { + val transactor = Actor.actorOf(new Setter).start + val ref = Ref(0) + val latch = new CountDownLatch(1) + transactor ! Set(ref, 5, latch) + latch.await(timeout.length, timeout.unit) + val value = atomic { ref.get } + value must be === 5 + transactor.stop + } + } }