From 253f77cc5691b1ef9402dafbefdd2bdedcb5c775 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 25 Oct 2010 01:46:42 +0200 Subject: [PATCH] Closing ticket #460 --- akka-actor/src/main/scala/actor/Actor.scala | 5 ++++- akka-actor/src/main/scala/actor/UntypedActor.scala | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/akka-actor/src/main/scala/actor/Actor.scala b/akka-actor/src/main/scala/actor/Actor.scala index c242a2318f..8087ecb889 100644 --- a/akka-actor/src/main/scala/actor/Actor.scala +++ b/akka-actor/src/main/scala/actor/Actor.scala @@ -15,6 +15,7 @@ import java.net.InetSocketAddress import scala.reflect.BeanProperty import se.scalablesolutions.akka.util. {ReflectiveAccess, Logging, Duration} +import se.scalablesolutions.akka.japi.Procedure /** * Implements the Transactor abstraction. E.g. a transactional actor. @@ -44,7 +45,9 @@ abstract class RemoteActor(address: InetSocketAddress) extends Actor { */ @serializable sealed trait LifeCycleMessage -case class HotSwap(code: Actor.Receive) extends LifeCycleMessage +case class HotSwap(code: Actor.Receive) extends LifeCycleMessage { + def this(behavior: Procedure[Any]) = this({ case msg => behavior.apply(msg) }: Actor.Receive) +} case object RevertHotSwap extends LifeCycleMessage diff --git a/akka-actor/src/main/scala/actor/UntypedActor.scala b/akka-actor/src/main/scala/actor/UntypedActor.scala index a1d724a566..91b93b7a88 100644 --- a/akka-actor/src/main/scala/actor/UntypedActor.scala +++ b/akka-actor/src/main/scala/actor/UntypedActor.scala @@ -11,6 +11,7 @@ import se.scalablesolutions.akka.config.Supervision._ import java.net.InetSocketAddress import scala.reflect.BeanProperty +import se.scalablesolutions.akka.japi.Procedure /** * Subclass this abstract class to create a MDB-style untyped actor. @@ -67,6 +68,11 @@ abstract class UntypedActor extends Actor { case msg => onReceive(msg) } + /** + * Java API for become + */ + def become(behavior: Procedure[Any]): Unit = super.become { case msg => behavior.apply(msg) } + @throws(classOf[Exception]) def onReceive(message: Any): Unit }