diff --git a/akka-actor/src/main/scala/actor/Actor.scala b/akka-actor/src/main/scala/actor/Actor.scala
index d3e7699403..872997c760 100644
--- a/akka-actor/src/main/scala/actor/Actor.scala
+++ b/akka-actor/src/main/scala/actor/Actor.scala
@@ -410,14 +410,14 @@ trait Actor extends Logging {
*
* Is called when an Actor is started by invoking 'actor.start'.
*/
- def init {}
+ def preStart {}
/**
* User overridable callback.
*
* Is called when 'actor.stop' is invoked.
*/
- def shutdown {}
+ def postStop {}
/**
* User overridable callback.
@@ -433,13 +433,6 @@ trait Actor extends Logging {
*/
def postRestart(reason: Throwable) {}
- /**
- * User overridable callback.
- *
- * Is called during initialization. Can be used to initialize transactional state. Will be invoked within a transaction.
- */
- def initTransactionalState {}
-
/**
* Is the actor able to handle the message passed in as arguments?
*/
diff --git a/akka-actor/src/main/scala/actor/ActorRef.scala b/akka-actor/src/main/scala/actor/ActorRef.scala
index c41408a1de..5dce8b11cd 100644
--- a/akka-actor/src/main/scala/actor/ActorRef.scala
+++ b/akka-actor/src/main/scala/actor/ActorRef.scala
@@ -826,7 +826,7 @@ class LocalActorRef private[akka](
_transactionFactory = None
_isRunning = false
_isShutDown = true
- actor.shutdown
+ actor.postStop
ActorRegistry.unregister(this)
if (isRemotingEnabled) {
if(remoteAddress.isDefined)
@@ -1132,8 +1132,7 @@ class LocalActorRef private[akka](
failedActor.preRestart(reason)
nullOutActorRefReferencesFor(failedActor)
val freshActor = newActor
- freshActor.init
- freshActor.initTransactionalState
+ freshActor.preStart
actorInstance.set(freshActor)
if (failedActor.isInstanceOf[Proxyable])
failedActor.asInstanceOf[Proxyable].swapProxiedActor(freshActor)
@@ -1301,8 +1300,7 @@ class LocalActorRef private[akka](
}
private def initializeActorInstance = {
- actor.init // run actor init and initTransactionalState callbacks
- actor.initTransactionalState
+ actor.preStart // run actor preStart
Actor.log.trace("[%s] has started", toString)
ActorRegistry.register(this)
if (id == "N/A") id = actorClass.getName // if no name set, then use default name (class name)
diff --git a/akka-actor/src/main/scala/actor/Supervisor.scala b/akka-actor/src/main/scala/actor/Supervisor.scala
index 1af351a33d..f575cda299 100644
--- a/akka-actor/src/main/scala/actor/Supervisor.scala
+++ b/akka-actor/src/main/scala/actor/Supervisor.scala
@@ -187,7 +187,7 @@ final class SupervisorActor private[akka] (
trapExit = trapExceptions
faultHandler = Some(handler)
- override def shutdown(): Unit = shutdownLinkedActors
+ override def postStop(): Unit = shutdownLinkedActors
def receive = {
// FIXME add a way to respond to MaximumNumberOfRestartsWithinTimeRangeReached in declaratively configured Supervisor
diff --git a/akka-actor/src/test/scala/actor/actor/Bench.scala b/akka-actor/src/test/scala/actor/actor/Bench.scala
index 8e3a44f3a0..ded90edad5 100644
--- a/akka-actor/src/test/scala/actor/actor/Bench.scala
+++ b/akka-actor/src/test/scala/actor/actor/Bench.scala
@@ -78,7 +78,7 @@ object Chameneos {
var sumMeetings = 0
var numFaded = 0
- override def init = {
+ override def preStart = {
for (i <- 0 until numChameneos) actorOf(new Chameneo(self, colours(i % 3), i))
}
diff --git a/akka-actor/src/test/scala/actor/supervisor/RestartStrategySpec.scala b/akka-actor/src/test/scala/actor/supervisor/RestartStrategySpec.scala
index 5023c756e1..234a0bd25d 100644
--- a/akka-actor/src/test/scala/actor/supervisor/RestartStrategySpec.scala
+++ b/akka-actor/src/test/scala/actor/supervisor/RestartStrategySpec.scala
@@ -42,7 +42,7 @@ class RestartStrategySpec extends JUnitSuite {
restartLatch.open
}
- override def shutdown = {
+ override def postStop = {
if (restartLatch.isOpen) {
secondRestartLatch.open
}
diff --git a/akka-actor/src/test/scala/dispatch/HawtDispatcherEchoServer.scala b/akka-actor/src/test/scala/dispatch/HawtDispatcherEchoServer.scala
index 97f2e0df9d..8d4c8dedc1 100644
--- a/akka-actor/src/test/scala/dispatch/HawtDispatcherEchoServer.scala
+++ b/akka-actor/src/test/scala/dispatch/HawtDispatcherEchoServer.scala
@@ -53,7 +53,7 @@ object HawtDispatcherEchoServer {
var accept_source:DispatchSource = _
var sessions = ListBuffer[ActorRef]()
- override def init = {
+ override def preStart = {
channel = ServerSocketChannel.open();
channel.socket().bind(new InetSocketAddress(port));
channel.configureBlocking(false);
@@ -122,7 +122,7 @@ object HawtDispatcherEchoServer {
var writeCounter = 0L
var closed = false
- override def init = {
+ override def preStart = {
if(useReactorPattern) {
// Then we will be using the reactor pattern for handling IO:
@@ -154,7 +154,7 @@ object HawtDispatcherEchoServer {
println("Accepted connection from: "+remote_address);
}
- override def shutdown = {
+ override def postStop = {
closed = true
read_source.release
write_source.release
diff --git a/akka-actor/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala b/akka-actor/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala
index 44cd9aade3..7ecef80e39 100644
--- a/akka-actor/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala
+++ b/akka-actor/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala
@@ -85,7 +85,7 @@ class ThreadBasedDispatcherSpec extends JUnitSuite {
}
assert(handleLatch.await(5, TimeUnit.SECONDS))
assert(!threadingIssueDetected.get)
- dispatcher.shutdown
+ dispatcher.postStop
}
}
*/
diff --git a/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/ConsumerActor.scala b/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/ConsumerActor.scala
index d3f0acd1cf..0ca9046093 100644
--- a/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/ConsumerActor.scala
+++ b/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/ConsumerActor.scala
@@ -108,10 +108,10 @@ private[amqp] class ConsumerActor(consumerParameters: ConsumerParameters)
super.preRestart(reason)
}
- override def shutdown = {
+ override def postStop = {
listenerTag.foreach(tag => channel.foreach(_.basicCancel(tag)))
self.shutdownLinkedActors
- super.shutdown
+ super.postStop
}
override def toString =
diff --git a/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/ExampleSession.scala b/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/ExampleSession.scala
index f45553520d..ecb3029444 100644
--- a/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/ExampleSession.scala
+++ b/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/ExampleSession.scala
@@ -46,7 +46,7 @@ object ExampleSession {
printTopic("Happy hAkking :-)")
- // shutdown everything the amqp tree except the main AMQP supervisor
+ // postStop everything the amqp tree except the main AMQP supervisor
// all connections/consumers/producers will be stopped
AMQP.shutdownAll
diff --git a/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/FaultTolerantChannelActor.scala b/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/FaultTolerantChannelActor.scala
index 5ecae4c6d3..4d642df554 100644
--- a/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/FaultTolerantChannelActor.scala
+++ b/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/FaultTolerantChannelActor.scala
@@ -103,5 +103,5 @@ abstract private[amqp] class FaultTolerantChannelActor(
closeChannel
}
- override def shutdown = closeChannel
+ override def postStop = closeChannel
}
diff --git a/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/FaultTolerantConnectionActor.scala b/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/FaultTolerantConnectionActor.scala
index 1e50a985be..0fd3f715b5 100644
--- a/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/FaultTolerantConnectionActor.scala
+++ b/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/FaultTolerantConnectionActor.scala
@@ -104,9 +104,9 @@ private[amqp] class FaultTolerantConnectionActor(connectionParameters: Connectio
connectionCallback.foreach(cb => if (cb.isRunning) cb ! message)
}
- override def shutdown = {
+ override def postStop = {
reconnectionTimer.cancel
- // make sure shutdown is called on all linked actors so they can do channel cleanup before connection is killed
+ // make sure postStop is called on all linked actors so they can do channel cleanup before connection is killed
self.shutdownLinkedActors
disconnect
}
diff --git a/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/rpc/RpcClientActor.scala b/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/rpc/RpcClientActor.scala
index 5c717cb8bb..10596e393f 100644
--- a/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/rpc/RpcClientActor.scala
+++ b/akka-amqp/src/main/scala/se/scalablesolutions/akka/amqp/rpc/RpcClientActor.scala
@@ -40,9 +40,9 @@ class RpcClientActor[I,O](
}
- override def shutdown = {
+ override def postStop = {
rpcClient.foreach(rpc => rpc.close)
- super.shutdown
+ super.postStop
}
override def toString = "AMQP.RpcClient[exchange=" +exchangeName + ", routingKey=" + routingKey+ "]"
diff --git a/akka-camel/src/main/scala/Producer.scala b/akka-camel/src/main/scala/Producer.scala
index 8764b91b4c..0be07e9737 100644
--- a/akka-camel/src/main/scala/Producer.scala
+++ b/akka-camel/src/main/scala/Producer.scala
@@ -54,10 +54,10 @@ trait ProducerSupport { this: Actor =>
def headersToCopy: Set[String] = headersToCopyDefault
/**
- * Default implementation of Actor.shutdown for freeing resources needed
+ * Default implementation of Actor.postStop for freeing resources needed
* to actually send messages to endpointUri.
*/
- override def shutdown {
+ override def postStop {
processor.stop
}
diff --git a/akka-http/src/main/scala/AkkaClusterBroadcastFilter.scala b/akka-http/src/main/scala/AkkaClusterBroadcastFilter.scala
index 775c8b554d..7ea963872f 100644
--- a/akka-http/src/main/scala/AkkaClusterBroadcastFilter.scala
+++ b/akka-http/src/main/scala/AkkaClusterBroadcastFilter.scala
@@ -24,6 +24,11 @@ class AkkaClusterBroadcastFilter extends Actor with ClusterBroadcastFilter {
@BeanProperty var clusterName = ""
@BeanProperty var broadcaster : Broadcaster = null
+ def init() {
+ //Since this class is instantiated by Atmosphere, we need to make sure it's started
+ self.start
+ }
+
/**
* Stops the actor
*/
@@ -48,7 +53,4 @@ class AkkaClusterBroadcastFilter extends Actor with ClusterBroadcastFilter {
case b @ ClusterCometBroadcast(c, _) if (c == clusterName) && (broadcaster ne null) => broadcaster broadcast b
case _ =>
}
-
- //Since this class is instantiated by Atmosphere, we need to make sure it's started
- self.start
}
diff --git a/akka-http/src/main/scala/Initializer.scala b/akka-http/src/main/scala/Initializer.scala
index da95a39b77..c1cd8bfc87 100644
--- a/akka-http/src/main/scala/Initializer.scala
+++ b/akka-http/src/main/scala/Initializer.scala
@@ -13,7 +13,7 @@ import se.scalablesolutions.akka.util.{Logging, Bootable}
import javax.servlet.{ServletContextListener, ServletContextEvent}
/**
- * This class can be added to web.xml mappings as a listener to start and shutdown Akka.
+ * This class can be added to web.xml mappings as a listener to start and postStop Akka.
*
*
* ...
diff --git a/akka-jta/src/main/scala/AtomikosTransactionService.scala b/akka-jta/src/main/scala/AtomikosTransactionService.scala
index 305ddb6ace..4acbb1a013 100644
--- a/akka-jta/src/main/scala/AtomikosTransactionService.scala
+++ b/akka-jta/src/main/scala/AtomikosTransactionService.scala
@@ -36,6 +36,6 @@ class AtomikosTransactionService extends TransactionService with TransactionProt
"Could not create a new Atomikos J2EE Transaction Manager, due to: " + e.toString)
}
)))
- // TODO: gracefully shutdown of the TM
- //txService.shutdown(false)
+ // TODO: gracefully postStop of the TM
+ //txService.postStop(false)
}
diff --git a/akka-kernel/src/main/scala/Kernel.scala b/akka-kernel/src/main/scala/Kernel.scala
index 6489a60680..646ca34bcc 100644
--- a/akka-kernel/src/main/scala/Kernel.scala
+++ b/akka-kernel/src/main/scala/Kernel.scala
@@ -15,7 +15,7 @@ object Main {
}
/**
- * The Akka Kernel, is used to start And shutdown Akka in standalone/kernel mode.
+ * The Akka Kernel, is used to start And postStop Akka in standalone/kernel mode.
*
* @author Jonas Bonér
*/
diff --git a/akka-remote/src/main/scala/remote/Cluster.scala b/akka-remote/src/main/scala/remote/Cluster.scala
index 88807f3ba1..6e1e99f0b2 100644
--- a/akka-remote/src/main/scala/remote/Cluster.scala
+++ b/akka-remote/src/main/scala/remote/Cluster.scala
@@ -86,11 +86,11 @@ abstract class BasicClusterActor extends ClusterActor with Logging {
@volatile private var local: Node = Node(Nil)
@volatile private var remotes: Map[ADDR_T, Node] = Map()
- override def init = {
+ override def preStart = {
remotes = new HashMap[ADDR_T, Node]
}
- override def shutdown = {
+ override def postStop = {
remotes = Map()
}
diff --git a/akka-remote/src/main/scala/remote/JGroupsClusterActor.scala b/akka-remote/src/main/scala/remote/JGroupsClusterActor.scala
index 54ef3807d4..07cbf4d65b 100644
--- a/akka-remote/src/main/scala/remote/JGroupsClusterActor.scala
+++ b/akka-remote/src/main/scala/remote/JGroupsClusterActor.scala
@@ -54,8 +54,8 @@ class JGroupsClusterActor extends BasicClusterActor {
protected def toAllNodes(msg : Array[Byte]): Unit =
for (c <- channel) c.send(new JG_MSG(null, null, msg))
- override def shutdown = {
- super.shutdown
+ override def postStop = {
+ super.postStop
log info ("Shutting down %s", toString)
isActive = false
channel.foreach(Util shutdown _)
diff --git a/akka-remote/src/main/scala/remote/RemoteClient.scala b/akka-remote/src/main/scala/remote/RemoteClient.scala
index f61a5d63a1..62fec595d3 100644
--- a/akka-remote/src/main/scala/remote/RemoteClient.scala
+++ b/akka-remote/src/main/scala/remote/RemoteClient.scala
@@ -185,7 +185,7 @@ class RemoteClient private[akka] (
extends Logging with ListenerManagement {
val name = "RemoteClient@" + hostname + "::" + port
- //FIXME Should these be clear:ed on shutdown?
+ //FIXME Should these be clear:ed on postStop?
private val futures = new ConcurrentHashMap[Long, CompletableFuture[_]]
private val supervisors = new ConcurrentHashMap[String, ActorRef]
diff --git a/akka-remote/src/main/scala/remote/RemoteServer.scala b/akka-remote/src/main/scala/remote/RemoteServer.scala
index b10d8e5825..f68e602866 100644
--- a/akka-remote/src/main/scala/remote/RemoteServer.scala
+++ b/akka-remote/src/main/scala/remote/RemoteServer.scala
@@ -398,7 +398,7 @@ class RemoteServerHandler(
applicationLoader.foreach(MessageSerializer.setClassLoader(_))
/**
- * ChannelOpen overridden to store open channels for a clean shutdown of a RemoteServer.
+ * ChannelOpen overridden to store open channels for a clean postStop of a RemoteServer.
* If a channel is closed before, it is automatically removed from the open channels group.
*/
override def channelOpen(ctx: ChannelHandlerContext, event: ChannelStateEvent) = openChannels.add(ctx.getChannel)
diff --git a/akka-remote/src/test/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java b/akka-remote/src/test/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java
index 0ab1a0aa10..3c8a60aecc 100644
--- a/akka-remote/src/test/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java
+++ b/akka-remote/src/test/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java
@@ -3920,7 +3920,7 @@ public final class RemoteProtocol {
public boolean hasInit() { return hasInit; }
public java.lang.String getInit() { return init_; }
- // optional string shutdown = 5;
+ // optional string postStop = 5;
public static final int SHUTDOWN_FIELD_NUMBER = 5;
private boolean hasShutdown;
private java.lang.String shutdown_ = "";
@@ -4295,7 +4295,7 @@ public final class RemoteProtocol {
return this;
}
- // optional string shutdown = 5;
+ // optional string postStop = 5;
public boolean hasShutdown() {
return result.hasShutdown();
}
diff --git a/akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala b/akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala
index 5baa799258..4ef1abf0c4 100644
--- a/akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala
+++ b/akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala
@@ -67,7 +67,7 @@ class ServerInitiatedRemoteActorSpec extends JUnitSuite {
Thread.sleep(1000)
}
- // make sure the servers shutdown cleanly after the test has finished
+ // make sure the servers postStop cleanly after the test has finished
@After
def finished {
try {
diff --git a/akka-remote/src/test/scala/serialization/ProtobufActorMessageSerializationSpec.scala b/akka-remote/src/test/scala/serialization/ProtobufActorMessageSerializationSpec.scala
index 011c656f8d..e05e4b0394 100644
--- a/akka-remote/src/test/scala/serialization/ProtobufActorMessageSerializationSpec.scala
+++ b/akka-remote/src/test/scala/serialization/ProtobufActorMessageSerializationSpec.scala
@@ -47,7 +47,7 @@ class ProtobufActorMessageSerializationSpec extends JUnitSuite {
Thread.sleep(1000)
}
- // make sure the servers shutdown cleanly after the test has finished
+ // make sure the servers postStop cleanly after the test has finished
@After
def finished() {
server.shutdown
diff --git a/akka-samples/akka-sample-chat/src/main/scala/ChatServer.scala b/akka-samples/akka-sample-chat/src/main/scala/ChatServer.scala
index e3fd76a344..6f70d8071a 100644
--- a/akka-samples/akka-sample-chat/src/main/scala/ChatServer.scala
+++ b/akka-samples/akka-sample-chat/src/main/scala/ChatServer.scala
@@ -185,7 +185,7 @@ trait ChatServer extends Actor {
protected def sessionManagement: Receive
protected def shutdownSessions(): Unit
- override def shutdown = {
+ override def postStop = {
log.info("Chat server is shutting down...")
shutdownSessions
self.unlink(storage)
@@ -205,7 +205,7 @@ class ChatService extends
SessionManagement with
ChatManagement with
RedisChatStorageFactory {
- override def init = {
+ override def preStart = {
RemoteNode.start("localhost", 9999)
RemoteNode.register("chat:service", self)
}
diff --git a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/Pojo.java b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/Pojo.java
index 24c0fea352..6046f2bb5d 100644
--- a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/Pojo.java
+++ b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/Pojo.java
@@ -14,7 +14,7 @@ public class Pojo extends TypedActor implements PojoInf, ApplicationContextAware
private String stringFromRef;
private boolean gotApplicationContext = false;
- private boolean initInvoked = false;
+ private boolean preStartInvoked = false;
public boolean gotApplicationContext() {
return gotApplicationContext;
@@ -41,11 +41,11 @@ public class Pojo extends TypedActor implements PojoInf, ApplicationContextAware
}
@Override
- public void init() {
- initInvoked = true;
+ public void preStart() {
+ preStartInvoked = true;
}
- public boolean isInitInvoked() {
- return initInvoked;
+ public boolean isPreStartInvoked() {
+ return preStartInvoked;
}
}
diff --git a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/PojoInf.java b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/PojoInf.java
index 9ebf80e89b..0a313ceb18 100644
--- a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/PojoInf.java
+++ b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/PojoInf.java
@@ -8,6 +8,6 @@ public interface PojoInf {
public String getStringFromVal();
public String getStringFromRef();
public boolean gotApplicationContext();
- public boolean isInitInvoked();
+ public boolean isPreStartInvoked();
}
diff --git a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/SampleBean.java b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/SampleBean.java
index f9d3381436..29e80d1c65 100644
--- a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/SampleBean.java
+++ b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/SampleBean.java
@@ -19,7 +19,7 @@ public class SampleBean extends TypedActor implements SampleBeanIntf {
}
@Override
- public void shutdown() {
+ public void postStop() {
down = true;
}
}
diff --git a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/foo/StatefulPojo.java b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/foo/StatefulPojo.java
index 3b4e05453b..ce85267edc 100644
--- a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/foo/StatefulPojo.java
+++ b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/foo/StatefulPojo.java
@@ -5,6 +5,7 @@ import se.scalablesolutions.akka.stm.TransactionalMap;
import se.scalablesolutions.akka.stm.TransactionalVector;
import se.scalablesolutions.akka.stm.Ref;
import se.scalablesolutions.akka.actor.*;
+import se.scalablesolutions.akka.stm.local.Atomic;
public class StatefulPojo extends TypedActor {
private TransactionalMap mapState;
@@ -13,12 +14,16 @@ public class StatefulPojo extends TypedActor {
private boolean isInitialized = false;
@Override
- public void initTransactionalState() {
- if (!isInitialized) {
- mapState = new TransactionalMap();
- vectorState = new TransactionalVector();
- refState = new Ref();
- isInitialized = true;
+ public void preStart() {
+ if(!isInitialized) {
+ isInitialized = new Atomic() {
+ public Boolean atomically() {
+ mapState = new TransactionalMap();
+ vectorState = new TransactionalVector();
+ refState = new Ref();
+ return true;
+ }
+ }.execute();
}
}
diff --git a/akka-spring/src/test/scala/ActorFactoryBeanTest.scala b/akka-spring/src/test/scala/ActorFactoryBeanTest.scala
index 13c6203929..0bd373a408 100644
--- a/akka-spring/src/test/scala/ActorFactoryBeanTest.scala
+++ b/akka-spring/src/test/scala/ActorFactoryBeanTest.scala
@@ -68,7 +68,7 @@ class ActorFactoryBeanTest extends Spec with ShouldMatchers with BeforeAndAfterA
it("should create an application context and verify dependency injection for typed") {
var ctx = new ClassPathXmlApplicationContext("appContext.xml");
val ta = ctx.getBean("typedActor").asInstanceOf[PojoInf];
- assert(ta.isInitInvoked)
+ assert(ta.isPreStartInvoked)
assert(ta.getStringFromVal === "akka rocks")
assert(ta.getStringFromRef === "spring rocks")
assert(ta.gotApplicationContext)
diff --git a/akka-typed-actor/src/main/scala/actor/TypedActor.scala b/akka-typed-actor/src/main/scala/actor/TypedActor.scala
index b27f5b4b4d..d3c6a56f9f 100644
--- a/akka-typed-actor/src/main/scala/actor/TypedActor.scala
+++ b/akka-typed-actor/src/main/scala/actor/TypedActor.scala
@@ -41,12 +41,12 @@ import scala.reflect.BeanProperty
* }
*
* @Override
- * public void init() {
+ * public void preStart() {
* ... // optional initialization on start
* }
*
* @Override
- * public void shutdown() {
+ * public void postStop() {
* ... // optional cleanup on stop
* }
*
@@ -79,11 +79,11 @@ import scala.reflect.BeanProperty
*
* def square(x: Int): Future[Integer] = future(x * x)
*
- * override def init = {
+ * override def preStart = {
* ... // optional initialization on start
* }
*
- * override def shutdown = {
+ * override def postStop = {
* ... // optional cleanup on stop
* }
*
@@ -519,11 +519,7 @@ object TypedActor extends Logging {
val typedActor =
if (instance.isInstanceOf[TypedActor]) instance.asInstanceOf[TypedActor]
else throw new IllegalArgumentException("Actor [" + targetClass.getName + "] is not a sub class of 'TypedActor'")
- typedActor.init
- import se.scalablesolutions.akka.stm.local.atomic
- atomic {
- typedActor.initTransactionalState
- }
+ typedActor.preStart
typedActor
}
diff --git a/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java
index 1b95517c22..cb002b0a9e 100644
--- a/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java
+++ b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java
@@ -10,7 +10,7 @@ public class NestedTransactionalTypedActorImpl extends TypedTransactor implement
private boolean isInitialized = false;
@Override
- public void init() {
+ public void preStart() {
if (!isInitialized) {
mapState = new TransactionalMap();
vectorState = new TransactionalVector();
diff --git a/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java
index 12985c72ce..1e567014d9 100644
--- a/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java
+++ b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java
@@ -38,7 +38,7 @@ public class SamplePojoImpl extends TypedActor implements SamplePojo {
}
@Override
- public void shutdown() {
+ public void postStop() {
_down = true;
latch.countDown();
}
diff --git a/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java
index 9b32f5d329..45bda4a675 100644
--- a/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java
+++ b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java
@@ -2,6 +2,8 @@ package se.scalablesolutions.akka.actor;
import se.scalablesolutions.akka.actor.*;
import se.scalablesolutions.akka.stm.*;
+import se.scalablesolutions.akka.stm.local.*;
+import se.scalablesolutions.akka.stm.local.Atomic;
public class TransactionalTypedActorImpl extends TypedTransactor implements TransactionalTypedActor {
private TransactionalMap mapState;
@@ -10,12 +12,16 @@ public class TransactionalTypedActorImpl extends TypedTransactor implements Tran
private boolean isInitialized = false;
@Override
- public void initTransactionalState() {
+ public void preStart() {
if (!isInitialized) {
- mapState = new TransactionalMap();
- vectorState = new TransactionalVector();
- refState = new Ref();
- isInitialized = true;
+ isInitialized = new Atomic() {
+ public Boolean atomically() {
+ mapState = new TransactionalMap();
+ vectorState = new TransactionalVector();
+ refState = new Ref();
+ return true;
+ }
+ }.execute();
}
}
diff --git a/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala
index 10fc40493b..9a21af06da 100644
--- a/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala
+++ b/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala
@@ -95,7 +95,7 @@ class TypedActorLifecycleSpec extends Spec with ShouldMatchers with BeforeAndAft
}
/*
- it("should shutdown non-supervised, annotated typed actor on TypedActor.stop") {
+ it("should postStop non-supervised, annotated typed actor on TypedActor.stop") {
val obj = TypedActor.newInstance(classOf[SamplePojoAnnotated])
assert(AspectInitRegistry.initFor(obj) ne null)
assert("hello akka" === obj.greet("akka"))
@@ -112,7 +112,7 @@ class TypedActorLifecycleSpec extends Spec with ShouldMatchers with BeforeAndAft
}
}
- it("should shutdown non-supervised, annotated typed actor on ActorRegistry.shutdownAll") {
+ it("should postStop non-supervised, annotated typed actor on ActorRegistry.shutdownAll") {
val obj = TypedActor.newInstance(classOf[SamplePojoAnnotated])
assert(AspectInitRegistry.initFor(obj) ne null)
assert("hello akka" === obj.greet("akka"))
@@ -147,7 +147,7 @@ class TypedActorLifecycleSpec extends Spec with ShouldMatchers with BeforeAndAft
}
}
- it("should shutdown supervised, annotated typed actor on failure") {
+ it("should postStop supervised, annotated typed actor on failure") {
val obj = conf2.getInstance[SamplePojoAnnotated](classOf[SamplePojoAnnotated])
val cdl = obj.newCountdownLatch(1)
assert(AspectInitRegistry.initFor(obj) ne null)