diff --git a/akka-core/src/main/scala/actor/Actor.scala b/akka-core/src/main/scala/actor/Actor.scala index b99ce22a93..1de3997c12 100644 --- a/akka-core/src/main/scala/actor/Actor.scala +++ b/akka-core/src/main/scala/actor/Actor.scala @@ -436,12 +436,12 @@ trait Actor extends Logging { } private val lifeCycles: Receive = { - case HotSwap(code) => become(code) - case Exit(dead, reason) => self.handleTrapExit(dead, reason) - case Link(child) => self.link(child) - case Unlink(child) => self.unlink(child) + case HotSwap(code) => become(code) + case Exit(dead, reason) => self.handleTrapExit(dead, reason) + case Link(child) => self.link(child) + case Unlink(child) => self.unlink(child) case UnlinkAndStop(child) => self.unlink(child); child.stop - case Restart(reason) => throw reason + case Restart(reason) => throw reason } } diff --git a/akka-core/src/main/scala/actor/TypedActor.scala b/akka-core/src/main/scala/actor/TypedActor.scala index 7d41775b60..de204bab5b 100644 --- a/akka-core/src/main/scala/actor/TypedActor.scala +++ b/akka-core/src/main/scala/actor/TypedActor.scala @@ -714,7 +714,7 @@ private[akka] sealed class TypedActorAspect { object Dispatcher { val ZERO_ITEM_CLASS_ARRAY = Array[Class[_]]() val ZERO_ITEM_OBJECT_ARRAY = Array[Object]() - var crashedActorTl:ThreadLocal[Dispatcher] = new ThreadLocal(); +// var crashedActorTl: ThreadLocal[Dispatcher] = new ThreadLocal(); } /** @@ -771,7 +771,7 @@ private[akka] class Dispatcher(transactionalRequired: Boolean) extends Actor { } override def preRestart(reason: Throwable) { - crashedActorTl.set(this) +// crashedActorTl.set(this) targetInstance.preRestart(reason) // rewrite target instance in Dispatcher and AspectWerkz Proxy @@ -786,11 +786,11 @@ private[akka] class Dispatcher(transactionalRequired: Boolean) extends Actor { override def init { // Get the crashed dispatcher from thread local and intitialize this actor with the // contents of the old dispatcher - val oldActor = crashedActorTl.get - if (oldActor != null) { - initialize(oldActor.targetClass, oldActor.targetInstance, oldActor.proxy, oldActor.context) - crashedActorTl.set(null) - } +// val oldActor = crashedActorTl.get +// if (oldActor != null) { +// initialize(oldActor.targetClass, oldActor.targetInstance, oldActor.proxy, oldActor.context) +// crashedActorTl.set(null) +// } } override def shutdown { diff --git a/akka-core/src/main/scala/actor/UntypedActor.scala b/akka-core/src/main/scala/actor/UntypedActor.scala new file mode 100644 index 0000000000..7e45dee40d --- /dev/null +++ b/akka-core/src/main/scala/actor/UntypedActor.scala @@ -0,0 +1,34 @@ +/** + * Copyright (C) 2009-2010 Scalable Solutions AB + */ + +package se.scalablesolutions.akka.actor + +/** + * FIXME: document + * + * @author Jonas Bonér + */ +abstract class UntypedActor extends Actor { + protected[akka] var context: Option[ActorContext] = None + + protected def receive = { + case msg => + if (context.isEmpty) { + val ctx = new ActorContext(self) + context = Some(ctx) + onReceive(msg, ctx) + } else onReceive(msg, context.get) + } + + def onReceive(message: Any, context: ActorContext): Unit +} + +/** + * FIXME: document + * + * @author Jonas Bonér + */ +class ActorContext(self: ActorRef) { + +} \ No newline at end of file diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/TestUntypedActor.java b/akka-core/src/test/java/se/scalablesolutions/akka/actor/TestUntypedActor.java new file mode 100644 index 0000000000..7a1d2982e9 --- /dev/null +++ b/akka-core/src/test/java/se/scalablesolutions/akka/actor/TestUntypedActor.java @@ -0,0 +1,9 @@ +package se.scalablesolutions.akka.actor; + +import se.scalablesolutions.akka.actor.*; + +public class TestUntypedActor extends UntypedActor { + public void onReceive(Object message, ActorContext context) { + System.out.println("TestUntypedActor got " + message); + } +} \ No newline at end of file