diff --git a/akka-actors/src/main/resources/logback.xml b/akka-actor/src/main/resources/logback.xml
similarity index 100%
rename from akka-actors/src/main/resources/logback.xml
rename to akka-actor/src/main/resources/logback.xml
diff --git a/akka-actors/src/main/scala/actor/Actor.scala b/akka-actor/src/main/scala/actor/Actor.scala
similarity index 97%
rename from akka-actors/src/main/scala/actor/Actor.scala
rename to akka-actor/src/main/scala/actor/Actor.scala
index 6db8304fb4..24a04c3eb3 100644
--- a/akka-actors/src/main/scala/actor/Actor.scala
+++ b/akka-actor/src/main/scala/actor/Actor.scala
@@ -502,6 +502,22 @@ private[actor] class AnyOptionAsTypedOption(anyOption: Option[Any]) {
def asSilently[T: Manifest]: Option[T] = narrowSilently[T](anyOption)
}
+/**
+ * Marker interface for proxyable actors (such as typed actor).
+ *
+ * @author Jonas Bonér
+ */
trait Proxyable {
- def swapProxiedActor(newInstance: Actor)
+ private[actor] def swapProxiedActor(newInstance: Actor)
+}
+
+/**
+ * Represents the different Actor types.
+ *
+ * @author Jonas Bonér
+ */
+sealed trait ActorType
+object ActorType {
+ case object ScalaActor extends ActorType
+ case object TypedActor extends ActorType
}
diff --git a/akka-actors/src/main/scala/actor/ActorRef.scala b/akka-actor/src/main/scala/actor/ActorRef.scala
similarity index 97%
rename from akka-actors/src/main/scala/actor/ActorRef.scala
rename to akka-actor/src/main/scala/actor/ActorRef.scala
index 2d687e3738..cec8d18d84 100644
--- a/akka-actors/src/main/scala/actor/ActorRef.scala
+++ b/akka-actor/src/main/scala/actor/ActorRef.scala
@@ -11,9 +11,9 @@ import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.stm.global._
import se.scalablesolutions.akka.stm.TransactionManagement._
import se.scalablesolutions.akka.stm.{TransactionManagement, TransactionSetAbortedException}
-import se.scalablesolutions.akka.util.{HashCode, Logging, UUID, ReentrantGuard}
-import se.scalablesolutions.akka.remote.{RemoteClientModule, RemoteServerModule}
import se.scalablesolutions.akka.AkkaException
+import se.scalablesolutions.akka.util._
+import ReflectiveAccess._
import org.multiverse.api.ThreadLocalTransaction._
import org.multiverse.commitbarriers.CountDownCommitBarrier
@@ -743,7 +743,7 @@ class LocalActorRef private[akka](
* Invoking 'makeRemote' means that an actor will be moved to and invoked on a remote host.
*/
def makeRemote(hostname: String, port: Int): Unit = {
- RemoteClientModule.ensureRemotingEnabled
+ ensureRemotingEnabled
if (!isRunning || isBeingRestarted) makeRemote(new InetSocketAddress(hostname, port))
else throw new ActorInitializationException(
"Can't make a running actor remote. Make sure you call 'makeRemote' before 'start'.")
@@ -753,7 +753,7 @@ class LocalActorRef private[akka](
* Invoking 'makeRemote' means that an actor will be moved to and invoked on a remote host.
*/
def makeRemote(address: InetSocketAddress): Unit = guard.withGuard {
- RemoteClientModule.ensureRemotingEnabled
+ ensureRemotingEnabled
if (!isRunning || isBeingRestarted) {
_remoteAddress = Some(address)
RemoteClientModule.register(address, uuid)
@@ -829,10 +829,12 @@ class LocalActorRef private[akka](
_isShutDown = true
actor.shutdown
ActorRegistry.unregister(this)
- remoteAddress.foreach { address =>
- RemoteClientModule.unregister(address, uuid)
+ if (isRemotingEnabled) {
+ remoteAddress.foreach { address =>
+ RemoteClientModule.unregister(address, uuid)
+ }
+ RemoteServerModule.unregister(this)
}
- RemoteClientModule.unregister(this)
nullOutActorRefReferencesFor(actorInstance.get)
} //else if (isBeingRestarted) throw new ActorKilledException("Actor [" + toString + "] is being restarted.")
}
@@ -887,7 +889,7 @@ class LocalActorRef private[akka](
* To be invoked from within the actor itself.
*/
def startLinkRemote(actorRef: ActorRef, hostname: String, port: Int) = guard.withGuard {
- RemoteClientModule.ensureRemotingEnabled
+ ensureRemotingEnabled
try {
actorRef.makeRemote(hostname, port)
actorRef.start
@@ -913,7 +915,7 @@ class LocalActorRef private[akka](
* To be invoked from within the actor itself.
*/
def spawnRemote(clazz: Class[_ <: Actor], hostname: String, port: Int): ActorRef = guard.withGuard {
- RemoteClientModule.ensureRemotingEnabled
+ ensureRemotingEnabled
val actor = spawnButDoNotStart(clazz)
actor.makeRemote(hostname, port)
actor.start
@@ -941,7 +943,7 @@ class LocalActorRef private[akka](
* To be invoked from within the actor itself.
*/
def spawnLinkRemote(clazz: Class[_ <: Actor], hostname: String, port: Int): ActorRef = guard.withGuard {
- RemoteClientModule.ensureRemotingEnabled
+ ensureRemotingEnabled
val actor = spawnButDoNotStart(clazz)
try {
actor.makeRemote(hostname, port)
@@ -978,8 +980,10 @@ class LocalActorRef private[akka](
protected[akka] def postMessageToMailbox(message: Any, senderOption: Option[ActorRef]): Unit = {
joinTransaction(message)
- if (remoteAddress.isDefined) RemoteClientModule.send(message, senderOption, None, remoteAddress.get, this)
- else {
+ if (isRemotingEnabled && remoteAddress.isDefined) {
+ RemoteClientModule.send[Any](
+ message, senderOption, None, remoteAddress.get, timeout, true, this, None, ActorType.ScalaActor)
+ } else {
val invocation = new MessageInvocation(this, message, senderOption, None, transactionSet.get)
invocation.send
}
@@ -992,9 +996,12 @@ class LocalActorRef private[akka](
senderFuture: Option[CompletableFuture[T]]): CompletableFuture[T] = {
joinTransaction(message)
- if (remoteAddress.isDefined) RemoteClientModule.send(
- message, senderOption, senderFuture, remoteAddress.get, this)
- else {
+ if (isRemotingEnabled && remoteAddress.isDefined) {
+ val future = RemoteClientModule.send[T](
+ message, senderOption, senderFuture, remoteAddress.get, timeout, false, this, None, ActorType.ScalaActor)
+ if (future.isDefined) future.get
+ else throw new IllegalActorStateException("Expected a future from remote call to actor " + toString)
+ } else {
val future = if (senderFuture.isDefined) senderFuture.get
else new DefaultCompletableFuture[T](timeout)
val invocation = new MessageInvocation(
@@ -1096,7 +1103,7 @@ class LocalActorRef private[akka](
}
protected[akka] def registerSupervisorAsRemoteActor: Option[String] = guard.withGuard {
- RemoteClientModule.ensureRemotingEnabled
+ ensureRemotingEnabled
if (_supervisor.isDefined) {
remoteAddress.foreach(address => RemoteClientModule.registerSupervisorForActor(address, this))
Some(_supervisor.get.uuid)
@@ -1358,7 +1365,7 @@ private[akka] case class RemoteActorRef private[akka] (
loader: Option[ClassLoader])
extends ActorRef with ScalaActorRef {
- RemoteClientModule.ensureRemotingEnabled
+ ensureRemotingEnabled
_uuid = uuuid
timeout = _timeout
@@ -1367,14 +1374,16 @@ private[akka] case class RemoteActorRef private[akka] (
lazy val remoteClient = RemoteClientModule.clientFor(hostname, port, loader)
def postMessageToMailbox(message: Any, senderOption: Option[ActorRef]): Unit =
- RemoteClientModule.send(message, senderOption, None, remoteAddress.get, this)
+ RemoteClientModule.send[Any](
+ message, senderOption, None, remoteAddress.get, timeout, true, this, None, ActorType.ScalaActor)
def postMessageToMailboxAndCreateFutureResultWithTimeout[T](
message: Any,
timeout: Long,
senderOption: Option[ActorRef],
senderFuture: Option[CompletableFuture[T]]): CompletableFuture[T] = {
- val future = RemoteClientModule.send(message, senderOption, None, remoteAddress.get, this)
+ val future = RemoteClientModule.send[T](
+ message, senderOption, senderFuture, remoteAddress.get, timeout, false, this, None, ActorType.ScalaActor)
if (future.isDefined) future.get
else throw new IllegalActorStateException("Expected a future from remote call to actor " + toString)
}
@@ -1397,6 +1406,8 @@ private[akka] case class RemoteActorRef private[akka] (
protected[akka] def registerSupervisorAsRemoteActor: Option[String] = None
+ val remoteAddress: Option[InetSocketAddress] = Some(new InetSocketAddress(hostname, port))
+
// ==== NOT SUPPORTED ====
def actorClass: Class[_ <: Actor] = unsupported
def dispatcher_=(md: MessageDispatcher): Unit = unsupported
@@ -1407,7 +1418,6 @@ private[akka] case class RemoteActorRef private[akka] (
def makeRemote(hostname: String, port: Int): Unit = unsupported
def makeRemote(address: InetSocketAddress): Unit = unsupported
def homeAddress_=(address: InetSocketAddress): Unit = unsupported
- def remoteAddress: Option[InetSocketAddress] = unsupported
def link(actorRef: ActorRef): Unit = unsupported
def unlink(actorRef: ActorRef): Unit = unsupported
def startLink(actorRef: ActorRef): Unit = unsupported
@@ -1460,6 +1470,7 @@ trait ActorRefShared {
* from ActorRef -> ScalaActorRef and back
*/
trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
+
/**
* Identifier for actor, does not have to be a unique one. Default is the 'uuid'.
*
@@ -1469,7 +1480,8 @@ trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
* upon restart, remote restart etc.
*/
def id: String
- def id_=(id: String):Unit
+
+ def id_=(id: String): Unit
/**
* User overridable callback/setting.
@@ -1529,7 +1541,7 @@ trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
def sender: Option[ActorRef] = {
// Five lines of map-performance-avoidance, could be just: currentMessage map { _.sender }
val msg = currentMessage
- if(msg.isEmpty) None
+ if (msg.isEmpty) None
else msg.get.sender
}
@@ -1540,7 +1552,7 @@ trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
def senderFuture(): Option[CompletableFuture[Any]] = {
// Five lines of map-performance-avoidance, could be just: currentMessage map { _.senderFuture }
val msg = currentMessage
- if(msg.isEmpty) None
+ if (msg.isEmpty) None
else msg.get.senderFuture
}
@@ -1580,7 +1592,8 @@ trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
def !!(message: Any, timeout: Long = this.timeout)(implicit sender: Option[ActorRef] = None): Option[Any] = {
if (isRunning) {
val future = postMessageToMailboxAndCreateFutureResultWithTimeout[Any](message, timeout, sender, None)
- val isMessageJoinPoint = TypedActorModule.resolveFutureIfMessageIsJoinPoint(message, future)
+ val isMessageJoinPoint = if (isTypedActorEnabled) TypedActorModule.resolveFutureIfMessageIsJoinPoint(message, future)
+ else false
try {
future.await
} catch {
@@ -1664,8 +1677,10 @@ trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
/**
* Atomically create (from actor class), start and make an actor remote.
*/
- def spawnRemote[T <: Actor: Manifest](hostname: String, port: Int): ActorRef =
+ def spawnRemote[T <: Actor: Manifest](hostname: String, port: Int): ActorRef = {
+ ensureRemotingEnabled
spawnRemote(manifest[T].erasure.asInstanceOf[Class[_ <: Actor]],hostname,port)
+ }
/**
@@ -1674,10 +1689,11 @@ trait ScalaActorRef extends ActorRefShared { ref: ActorRef =>
def spawnLink[T <: Actor: Manifest]: ActorRef =
spawnLink(manifest[T].erasure.asInstanceOf[Class[_ <: Actor]])
-
/**
* Atomically create (from actor class), start, link and make an actor remote.
*/
- def spawnLinkRemote[T <: Actor : Manifest](hostname: String, port: Int): ActorRef =
+ def spawnLinkRemote[T <: Actor : Manifest](hostname: String, port: Int): ActorRef = {
+ ensureRemotingEnabled
spawnLinkRemote(manifest[T].erasure.asInstanceOf[Class[_ <: Actor]],hostname,port)
+ }
}
diff --git a/akka-actors/src/main/scala/actor/ActorRegistry.scala b/akka-actor/src/main/scala/actor/ActorRegistry.scala
similarity index 95%
rename from akka-actors/src/main/scala/actor/ActorRegistry.scala
rename to akka-actor/src/main/scala/actor/ActorRegistry.scala
index 51de155723..b14ff45f48 100644
--- a/akka-actors/src/main/scala/actor/ActorRegistry.scala
+++ b/akka-actor/src/main/scala/actor/ActorRegistry.scala
@@ -8,10 +8,15 @@ import scala.collection.mutable.ListBuffer
import scala.reflect.Manifest
import java.util.concurrent.{ConcurrentSkipListSet, ConcurrentHashMap}
-import java.util.{Set=>JSet}
+import java.util.{Set => JSet}
import se.scalablesolutions.akka.util.ListenerManagement
+/**
+ * Base trait for ActorRegistry events, allows listen to when an actor is added and removed from the ActorRegistry.
+ *
+ * @author Jonas Bonér
+ */
sealed trait ActorRegistryEvent
case class ActorRegistered(actor: ActorRef) extends ActorRegistryEvent
case class ActorUnregistered(actor: ActorRef) extends ActorRegistryEvent
diff --git a/akka-actors/src/main/scala/actor/Agent.scala b/akka-actor/src/main/scala/actor/Agent.scala
similarity index 100%
rename from akka-actors/src/main/scala/actor/Agent.scala
rename to akka-actor/src/main/scala/actor/Agent.scala
diff --git a/akka-actor/src/main/scala/actor/BootableActorLoaderService.scala b/akka-actor/src/main/scala/actor/BootableActorLoaderService.scala
new file mode 100644
index 0000000000..dfb8541396
--- /dev/null
+++ b/akka-actor/src/main/scala/actor/BootableActorLoaderService.scala
@@ -0,0 +1,101 @@
+/**
+ * Copyright (C) 2009-2010 Scalable Solutions AB
+ */
+
+package se.scalablesolutions.akka.actor
+
+import java.io.File
+import java.net.{URL, URLClassLoader}
+import java.util.jar.JarFile
+import java.util.Enumeration
+
+import se.scalablesolutions.akka.util.{Bootable, Logging}
+import se.scalablesolutions.akka.config.Config._
+
+class AkkaDeployClassLoader(urls : List[URL], parent : ClassLoader) extends URLClassLoader(urls.toArray.asInstanceOf[Array[URL]],parent)
+{
+ override def findResources(resource : String) = {
+ val normalResult = super.findResources(resource)
+ if(normalResult.hasMoreElements) normalResult else findDeployed(resource)
+ }
+
+ def findDeployed(resource : String) = new Enumeration[URL]{
+ private val it = getURLs.flatMap( listClassesInPackage(_,resource) ).iterator
+ def hasMoreElements = it.hasNext
+ def nextElement = it.next
+ }
+
+ def listClassesInPackage(jar : URL, pkg : String) = {
+ val f = new File(jar.getFile)
+ val jf = new JarFile(f)
+ try {
+ val es = jf.entries
+ var result = List[URL]()
+ while(es.hasMoreElements)
+ {
+ val e = es.nextElement
+ if(!e.isDirectory && e.getName.startsWith(pkg) && e.getName.endsWith(".class"))
+ result ::= new URL("jar:" + f.toURI.toURL + "!/" + e)
+ }
+ result
+ } finally {
+ jf.close
+ }
+ }
+}
+
+/**
+ * Handles all modules in the deploy directory (load and unload)
+ */
+trait BootableActorLoaderService extends Bootable with Logging {
+
+ val BOOT_CLASSES = config.getList("akka.boot")
+ lazy val applicationLoader: Option[ClassLoader] = createApplicationClassLoader
+
+ protected def createApplicationClassLoader : Option[ClassLoader] = {
+ Some(
+ if (HOME.isDefined) {
+ val CONFIG = HOME.get + "/config"
+ val DEPLOY = HOME.get + "/deploy"
+ val DEPLOY_DIR = new File(DEPLOY)
+ if (!DEPLOY_DIR.exists) {
+ log.error("Could not find a deploy directory at [%s]", DEPLOY)
+ System.exit(-1)
+ }
+ val filesToDeploy = DEPLOY_DIR.listFiles.toArray.toList
+ .asInstanceOf[List[File]].filter(_.getName.endsWith(".jar"))
+ var dependencyJars: List[URL] = Nil
+ filesToDeploy.map { file =>
+ val jarFile = new JarFile(file)
+ val en = jarFile.entries
+ while (en.hasMoreElements) {
+ val name = en.nextElement.getName
+ if (name.endsWith(".jar")) dependencyJars ::= new File(
+ String.format("jar:file:%s!/%s", jarFile.getName, name)).toURI.toURL
+ }
+ }
+ val toDeploy = filesToDeploy.map(_.toURI.toURL)
+ log.info("Deploying applications from [%s]: [%s]", DEPLOY, toDeploy)
+ log.debug("Loading dependencies [%s]", dependencyJars)
+ val allJars = toDeploy ::: dependencyJars
+
+ new AkkaDeployClassLoader(allJars,Thread.currentThread.getContextClassLoader)
+ } else Thread.currentThread.getContextClassLoader)
+ }
+
+ abstract override def onLoad = {
+ applicationLoader.foreach(_ => log.info("Creating /deploy class-loader"))
+
+ super.onLoad
+
+ for (loader <- applicationLoader; clazz <- BOOT_CLASSES) {
+ log.info("Loading boot class [%s]", clazz)
+ loader.loadClass(clazz).newInstance
+ }
+ }
+
+ abstract override def onUnload = {
+ super.onUnload
+ ActorRegistry.shutdownAll
+ }
+}
diff --git a/akka-actors/src/main/scala/actor/FSM.scala b/akka-actor/src/main/scala/actor/FSM.scala
similarity index 93%
rename from akka-actors/src/main/scala/actor/FSM.scala
rename to akka-actor/src/main/scala/actor/FSM.scala
index 6248a2575c..0bdc04fc48 100644
--- a/akka-actors/src/main/scala/actor/FSM.scala
+++ b/akka-actor/src/main/scala/actor/FSM.scala
@@ -1,11 +1,15 @@
+/**
+ * Copyright (C) 2009-2010 Scalable Solutions AB
+ */
+
package se.scalablesolutions.akka.actor
import se.scalablesolutions.akka.stm.Ref
import se.scalablesolutions.akka.stm.local._
+
import java.util.concurrent.{ScheduledFuture, TimeUnit}
-trait FSM[S] {
- this: Actor =>
+trait FSM[S] { this: Actor =>
type StateFunction = scala.PartialFunction[Event, State]
@@ -20,7 +24,6 @@ trait FSM[S] {
State(NextState, currentState.stateFunction, stateData, currentState.timeout)
}
-
override final protected def receive: Receive = {
case value => {
timeoutFuture = timeoutFuture.flatMap {ref => ref.cancel(true); None}
diff --git a/akka-actors/src/main/scala/actor/Implicits.scala b/akka-actor/src/main/scala/actor/Implicits.scala
similarity index 100%
rename from akka-actors/src/main/scala/actor/Implicits.scala
rename to akka-actor/src/main/scala/actor/Implicits.scala
diff --git a/akka-actors/src/main/scala/actor/Scheduler.scala b/akka-actor/src/main/scala/actor/Scheduler.scala
similarity index 99%
rename from akka-actors/src/main/scala/actor/Scheduler.scala
rename to akka-actor/src/main/scala/actor/Scheduler.scala
index 50db44a1d0..5dc57056cc 100644
--- a/akka-actors/src/main/scala/actor/Scheduler.scala
+++ b/akka-actor/src/main/scala/actor/Scheduler.scala
@@ -16,6 +16,7 @@
package se.scalablesolutions.akka.actor
import scala.collection.JavaConversions
+
import java.util.concurrent._
import se.scalablesolutions.akka.util.Logging
diff --git a/akka-actors/src/main/scala/actor/Supervisor.scala b/akka-actor/src/main/scala/actor/Supervisor.scala
similarity index 98%
rename from akka-actors/src/main/scala/actor/Supervisor.scala
rename to akka-actor/src/main/scala/actor/Supervisor.scala
index 27baedbab3..5493f35c56 100644
--- a/akka-actors/src/main/scala/actor/Supervisor.scala
+++ b/akka-actor/src/main/scala/actor/Supervisor.scala
@@ -6,9 +6,9 @@ package se.scalablesolutions.akka.actor
import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.config.{AllForOneStrategy, OneForOneStrategy, FaultHandlingStrategy}
-import se.scalablesolutions.akka.util.Logging
-import se.scalablesolutions.akka.remote.RemoteServerModule
import se.scalablesolutions.akka.AkkaException
+import se.scalablesolutions.akka.util._
+import ReflectiveAccess._
import Actor._
import java.util.concurrent.{CopyOnWriteArrayList, ConcurrentHashMap}
diff --git a/akka-actors/src/main/scala/actor/UntypedActor.scala b/akka-actor/src/main/scala/actor/UntypedActor.scala
similarity index 100%
rename from akka-actors/src/main/scala/actor/UntypedActor.scala
rename to akka-actor/src/main/scala/actor/UntypedActor.scala
diff --git a/akka-actors/src/main/scala/config/Config.scala b/akka-actor/src/main/scala/config/Config.scala
similarity index 100%
rename from akka-actors/src/main/scala/config/Config.scala
rename to akka-actor/src/main/scala/config/Config.scala
diff --git a/akka-actors/src/main/scala/config/Configuration.scala b/akka-actor/src/main/scala/config/Configuration.scala
similarity index 100%
rename from akka-actors/src/main/scala/config/Configuration.scala
rename to akka-actor/src/main/scala/config/Configuration.scala
diff --git a/akka-actors/src/main/scala/config/Configurator.scala b/akka-actor/src/main/scala/config/Configurator.scala
similarity index 100%
rename from akka-actors/src/main/scala/config/Configurator.scala
rename to akka-actor/src/main/scala/config/Configurator.scala
diff --git a/akka-actors/src/main/scala/config/SupervisionConfig.scala b/akka-actor/src/main/scala/config/SupervisionConfig.scala
similarity index 100%
rename from akka-actors/src/main/scala/config/SupervisionConfig.scala
rename to akka-actor/src/main/scala/config/SupervisionConfig.scala
diff --git a/akka-actors/src/main/scala/dataflow/DataFlowVariable.scala b/akka-actor/src/main/scala/dataflow/DataFlowVariable.scala
similarity index 100%
rename from akka-actors/src/main/scala/dataflow/DataFlowVariable.scala
rename to akka-actor/src/main/scala/dataflow/DataFlowVariable.scala
diff --git a/akka-actors/src/main/scala/dispatch/AbstractReactorBasedEventDrivenDispatcher.scala b/akka-actor/src/main/scala/dispatch/AbstractReactorBasedEventDrivenDispatcher.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/AbstractReactorBasedEventDrivenDispatcher.scala
rename to akka-actor/src/main/scala/dispatch/AbstractReactorBasedEventDrivenDispatcher.scala
diff --git a/akka-actors/src/main/scala/dispatch/Dispatchers.scala b/akka-actor/src/main/scala/dispatch/Dispatchers.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/Dispatchers.scala
rename to akka-actor/src/main/scala/dispatch/Dispatchers.scala
diff --git a/akka-actors/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala b/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala
rename to akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala
diff --git a/akka-actors/src/main/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala b/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala
rename to akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcher.scala
diff --git a/akka-actors/src/main/scala/dispatch/Future.scala b/akka-actor/src/main/scala/dispatch/Future.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/Future.scala
rename to akka-actor/src/main/scala/dispatch/Future.scala
diff --git a/akka-actors/src/main/scala/dispatch/HawtDispatcher.scala b/akka-actor/src/main/scala/dispatch/HawtDispatcher.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/HawtDispatcher.scala
rename to akka-actor/src/main/scala/dispatch/HawtDispatcher.scala
diff --git a/akka-actors/src/main/scala/dispatch/MessageHandling.scala b/akka-actor/src/main/scala/dispatch/MessageHandling.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/MessageHandling.scala
rename to akka-actor/src/main/scala/dispatch/MessageHandling.scala
diff --git a/akka-actors/src/main/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcher.scala b/akka-actor/src/main/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcher.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcher.scala
rename to akka-actor/src/main/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcher.scala
diff --git a/akka-actors/src/main/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcher.scala b/akka-actor/src/main/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcher.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcher.scala
rename to akka-actor/src/main/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcher.scala
diff --git a/akka-actors/src/main/scala/dispatch/ThreadBasedDispatcher.scala b/akka-actor/src/main/scala/dispatch/ThreadBasedDispatcher.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/ThreadBasedDispatcher.scala
rename to akka-actor/src/main/scala/dispatch/ThreadBasedDispatcher.scala
diff --git a/akka-actors/src/main/scala/dispatch/ThreadPoolBuilder.scala b/akka-actor/src/main/scala/dispatch/ThreadPoolBuilder.scala
similarity index 100%
rename from akka-actors/src/main/scala/dispatch/ThreadPoolBuilder.scala
rename to akka-actor/src/main/scala/dispatch/ThreadPoolBuilder.scala
diff --git a/akka-actors/src/main/scala/routing/Iterators.scala b/akka-actor/src/main/scala/routing/Iterators.scala
similarity index 100%
rename from akka-actors/src/main/scala/routing/Iterators.scala
rename to akka-actor/src/main/scala/routing/Iterators.scala
diff --git a/akka-actors/src/main/scala/routing/Listeners.scala b/akka-actor/src/main/scala/routing/Listeners.scala
similarity index 100%
rename from akka-actors/src/main/scala/routing/Listeners.scala
rename to akka-actor/src/main/scala/routing/Listeners.scala
diff --git a/akka-actors/src/main/scala/routing/Routers.scala b/akka-actor/src/main/scala/routing/Routers.scala
similarity index 100%
rename from akka-actors/src/main/scala/routing/Routers.scala
rename to akka-actor/src/main/scala/routing/Routers.scala
diff --git a/akka-actors/src/main/scala/routing/Routing.scala b/akka-actor/src/main/scala/routing/Routing.scala
similarity index 100%
rename from akka-actors/src/main/scala/routing/Routing.scala
rename to akka-actor/src/main/scala/routing/Routing.scala
diff --git a/akka-actors/src/main/scala/stm/JTA.scala b/akka-actor/src/main/scala/stm/JTA.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/JTA.scala
rename to akka-actor/src/main/scala/stm/JTA.scala
diff --git a/akka-actors/src/main/scala/stm/Ref.scala b/akka-actor/src/main/scala/stm/Ref.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/Ref.scala
rename to akka-actor/src/main/scala/stm/Ref.scala
diff --git a/akka-actors/src/main/scala/stm/Transaction.scala b/akka-actor/src/main/scala/stm/Transaction.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/Transaction.scala
rename to akka-actor/src/main/scala/stm/Transaction.scala
diff --git a/akka-actors/src/main/scala/stm/TransactionFactory.scala b/akka-actor/src/main/scala/stm/TransactionFactory.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/TransactionFactory.scala
rename to akka-actor/src/main/scala/stm/TransactionFactory.scala
diff --git a/akka-actors/src/main/scala/stm/TransactionFactoryBuilder.scala b/akka-actor/src/main/scala/stm/TransactionFactoryBuilder.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/TransactionFactoryBuilder.scala
rename to akka-actor/src/main/scala/stm/TransactionFactoryBuilder.scala
diff --git a/akka-actors/src/main/scala/stm/TransactionManagement.scala b/akka-actor/src/main/scala/stm/TransactionManagement.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/TransactionManagement.scala
rename to akka-actor/src/main/scala/stm/TransactionManagement.scala
diff --git a/akka-actors/src/main/scala/stm/TransactionalMap.scala b/akka-actor/src/main/scala/stm/TransactionalMap.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/TransactionalMap.scala
rename to akka-actor/src/main/scala/stm/TransactionalMap.scala
diff --git a/akka-actors/src/main/scala/stm/TransactionalVector.scala b/akka-actor/src/main/scala/stm/TransactionalVector.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/TransactionalVector.scala
rename to akka-actor/src/main/scala/stm/TransactionalVector.scala
diff --git a/akka-actors/src/main/scala/stm/global/Atomic.scala b/akka-actor/src/main/scala/stm/global/Atomic.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/global/Atomic.scala
rename to akka-actor/src/main/scala/stm/global/Atomic.scala
diff --git a/akka-actors/src/main/scala/stm/global/GlobalStm.scala b/akka-actor/src/main/scala/stm/global/GlobalStm.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/global/GlobalStm.scala
rename to akka-actor/src/main/scala/stm/global/GlobalStm.scala
diff --git a/akka-actors/src/main/scala/stm/global/package.scala b/akka-actor/src/main/scala/stm/global/package.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/global/package.scala
rename to akka-actor/src/main/scala/stm/global/package.scala
diff --git a/akka-actors/src/main/scala/stm/local/Atomic.scala b/akka-actor/src/main/scala/stm/local/Atomic.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/local/Atomic.scala
rename to akka-actor/src/main/scala/stm/local/Atomic.scala
diff --git a/akka-actors/src/main/scala/stm/local/LocalStm.scala b/akka-actor/src/main/scala/stm/local/LocalStm.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/local/LocalStm.scala
rename to akka-actor/src/main/scala/stm/local/LocalStm.scala
diff --git a/akka-actors/src/main/scala/stm/local/package.scala b/akka-actor/src/main/scala/stm/local/package.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/local/package.scala
rename to akka-actor/src/main/scala/stm/local/package.scala
diff --git a/akka-actors/src/main/scala/stm/transactional.scala b/akka-actor/src/main/scala/stm/transactional.scala
similarity index 100%
rename from akka-actors/src/main/scala/stm/transactional.scala
rename to akka-actor/src/main/scala/stm/transactional.scala
diff --git a/akka-actors/src/main/scala/util/AkkaException.scala b/akka-actor/src/main/scala/util/AkkaException.scala
similarity index 100%
rename from akka-actors/src/main/scala/util/AkkaException.scala
rename to akka-actor/src/main/scala/util/AkkaException.scala
diff --git a/akka-actors/src/main/scala/util/Bootable.scala b/akka-actor/src/main/scala/util/Bootable.scala
similarity index 100%
rename from akka-actors/src/main/scala/util/Bootable.scala
rename to akka-actor/src/main/scala/util/Bootable.scala
diff --git a/akka-actors/src/main/scala/util/Duration.scala b/akka-actor/src/main/scala/util/Duration.scala
similarity index 100%
rename from akka-actors/src/main/scala/util/Duration.scala
rename to akka-actor/src/main/scala/util/Duration.scala
diff --git a/akka-actors/src/main/scala/util/HashCode.scala b/akka-actor/src/main/scala/util/HashCode.scala
similarity index 100%
rename from akka-actors/src/main/scala/util/HashCode.scala
rename to akka-actor/src/main/scala/util/HashCode.scala
diff --git a/akka-actors/src/main/scala/util/Helpers.scala b/akka-actor/src/main/scala/util/Helpers.scala
similarity index 100%
rename from akka-actors/src/main/scala/util/Helpers.scala
rename to akka-actor/src/main/scala/util/Helpers.scala
diff --git a/akka-actors/src/main/scala/util/ListenerManagement.scala b/akka-actor/src/main/scala/util/ListenerManagement.scala
similarity index 100%
rename from akka-actors/src/main/scala/util/ListenerManagement.scala
rename to akka-actor/src/main/scala/util/ListenerManagement.scala
diff --git a/akka-actors/src/main/scala/util/LockUtil.scala b/akka-actor/src/main/scala/util/LockUtil.scala
similarity index 100%
rename from akka-actors/src/main/scala/util/LockUtil.scala
rename to akka-actor/src/main/scala/util/LockUtil.scala
diff --git a/akka-actors/src/main/scala/util/Logging.scala b/akka-actor/src/main/scala/util/Logging.scala
similarity index 100%
rename from akka-actors/src/main/scala/util/Logging.scala
rename to akka-actor/src/main/scala/util/Logging.scala
diff --git a/akka-actor/src/main/scala/util/ReflectiveAccess.scala b/akka-actor/src/main/scala/util/ReflectiveAccess.scala
new file mode 100644
index 0000000000..72909457b0
--- /dev/null
+++ b/akka-actor/src/main/scala/util/ReflectiveAccess.scala
@@ -0,0 +1,193 @@
+/**
+ * Copyright (C) 2009-2010 Scalable Solutions AB
+ */
+
+package se.scalablesolutions.akka.util
+
+import se.scalablesolutions.akka.actor.{ActorRef, IllegalActorStateException, ActorType}
+import se.scalablesolutions.akka.dispatch.{Future, CompletableFuture}
+import se.scalablesolutions.akka.config.{Config, ModuleNotAvailableException}
+
+import java.net.InetSocketAddress
+
+/**
+ * Helper class for reflective access to different modules in order to allow optional loading of modules.
+ *
+ * @author Jonas Bonér
+ */
+object ReflectiveAccess {
+
+ val loader = getClass.getClassLoader
+
+ lazy val isRemotingEnabled = RemoteClientModule.isRemotingEnabled
+ lazy val isTypedActorEnabled = TypedActorModule.isTypedActorEnabled
+
+ def ensureRemotingEnabled = RemoteClientModule.ensureRemotingEnabled
+ def ensureTypedActorEnabled = TypedActorModule.ensureTypedActorEnabled
+
+ /**
+ * Reflective access to the RemoteClient module.
+ *
+ * @author Jonas Bonér
+ */
+ object RemoteClientModule {
+
+ type RemoteClient = {
+ def send[T](
+ message: Any,
+ senderOption: Option[ActorRef],
+ senderFuture: Option[CompletableFuture[_]],
+ remoteAddress: InetSocketAddress,
+ timeout: Long,
+ isOneWay: Boolean,
+ actorRef: ActorRef,
+ typedActorInfo: Option[Tuple2[String, String]],
+ actorType: ActorType): Option[CompletableFuture[T]]
+ def registerSupervisorForActor(actorRef: ActorRef)
+ }
+
+ type RemoteClientObject = {
+ def register(hostname: String, port: Int, uuid: String): Unit
+ def unregister(hostname: String, port: Int, uuid: String): Unit
+ def clientFor(address: InetSocketAddress): RemoteClient
+ def clientFor(hostname: String, port: Int, loader: Option[ClassLoader]): RemoteClient
+ }
+
+ lazy val isRemotingEnabled = remoteClientObjectInstance.isDefined
+
+ def ensureRemotingEnabled = if (!isRemotingEnabled) throw new ModuleNotAvailableException(
+ "Can't load the remoting module, make sure that akka-remote.jar is on the classpath")
+
+ val remoteClientObjectInstance: Option[RemoteClientObject] = {
+ try {
+ val clazz = loader.loadClass("se.scalablesolutions.akka.remote.RemoteClient$")
+ val ctor = clazz.getDeclaredConstructor(Array[Class[_]](): _*)
+ ctor.setAccessible(true)
+ Some(ctor.newInstance(Array[AnyRef](): _*).asInstanceOf[RemoteClientObject])
+ } catch { case e => None }
+ }
+
+ def register(address: InetSocketAddress, uuid: String) = {
+ ensureRemotingEnabled
+ remoteClientObjectInstance.get.register(address.getHostName, address.getPort, uuid)
+ }
+
+ def unregister(address: InetSocketAddress, uuid: String) = {
+ ensureRemotingEnabled
+ remoteClientObjectInstance.get.unregister(address.getHostName, address.getPort, uuid)
+ }
+
+ def registerSupervisorForActor(remoteAddress: InetSocketAddress, actorRef: ActorRef) = {
+ ensureRemotingEnabled
+ val remoteClient = remoteClientObjectInstance.get.clientFor(remoteAddress)
+ remoteClient.registerSupervisorForActor(actorRef)
+ }
+
+ def clientFor(hostname: String, port: Int, loader: Option[ClassLoader]): RemoteClient = {
+ ensureRemotingEnabled
+ remoteClientObjectInstance.get.clientFor(hostname, port, loader)
+ }
+
+ def send[T](
+ message: Any,
+ senderOption: Option[ActorRef],
+ senderFuture: Option[CompletableFuture[_]],
+ remoteAddress: InetSocketAddress,
+ timeout: Long,
+ isOneWay: Boolean,
+ actorRef: ActorRef,
+ typedActorInfo: Option[Tuple2[String, String]],
+ actorType: ActorType): Option[CompletableFuture[T]] = {
+ ensureRemotingEnabled
+ clientFor(remoteAddress.getHostName, remoteAddress.getPort, None).send[T](
+ message, senderOption, senderFuture, remoteAddress, timeout, isOneWay, actorRef, typedActorInfo, actorType)
+ }
+ }
+
+ /**
+ * Reflective access to the RemoteServer module.
+ *
+ * @author Jonas Bonér
+ */
+ object RemoteServerModule {
+ val HOSTNAME = Config.config.getString("akka.remote.server.hostname", "localhost")
+ val PORT = Config.config.getInt("akka.remote.server.port", 9999)
+
+ type RemoteServerObject = {
+ def registerActor(address: InetSocketAddress, uuid: String, actor: ActorRef): Unit
+ def registerTypedActor(address: InetSocketAddress, name: String, typedActor: AnyRef): Unit
+ }
+
+ type RemoteNodeObject = {
+ def unregister(actorRef: ActorRef): Unit
+ }
+
+ val remoteServerObjectInstance: Option[RemoteServerObject] = {
+ try {
+ val clazz = loader.loadClass("se.scalablesolutions.akka.remote.RemoteServer$")
+ val ctor = clazz.getDeclaredConstructor(Array[Class[_]](): _*)
+ ctor.setAccessible(true)
+ Some(ctor.newInstance(Array[AnyRef](): _*).asInstanceOf[RemoteServerObject])
+ } catch { case e => None }
+ }
+
+ val remoteNodeObjectInstance: Option[RemoteNodeObject] = {
+ try {
+ val clazz = loader.loadClass("se.scalablesolutions.akka.remote.RemoteNode$")
+ val ctor = clazz.getDeclaredConstructor(Array[Class[_]](): _*)
+ ctor.setAccessible(true)
+ Some(ctor.newInstance(Array[AnyRef](): _*).asInstanceOf[RemoteNodeObject])
+ } catch { case e => None }
+ }
+
+ def registerActor(address: InetSocketAddress, uuid: String, actorRef: ActorRef) = {
+ ensureRemotingEnabled
+ remoteServerObjectInstance.get.registerActor(address, uuid, actorRef)
+ }
+
+ def registerTypedActor(address: InetSocketAddress, implementationClassName: String, proxy: AnyRef) = {
+ ensureRemotingEnabled
+ remoteServerObjectInstance.get.registerTypedActor(address, implementationClassName, proxy)
+ }
+
+ def unregister(actorRef: ActorRef) = {
+ ensureRemotingEnabled
+ remoteNodeObjectInstance.get.unregister(actorRef)
+ }
+ }
+
+ /**
+ * Reflective access to the TypedActors module.
+ *
+ * @author Jonas Bonér
+ */
+ object TypedActorModule {
+
+ type TypedActorObject = {
+ def isJoinPoint(message: Any): Boolean
+ def isJoinPointAndOneWay(message: Any): Boolean
+ }
+
+ lazy val isTypedActorEnabled = typedActorObjectInstance.isDefined
+
+ def ensureTypedActorEnabled = if (!isTypedActorEnabled) throw new ModuleNotAvailableException(
+ "Can't load the typed actor module, make sure that akka-typed-actor.jar is on the classpath")
+
+ val typedActorObjectInstance: Option[TypedActorObject] = {
+ try {
+ val clazz = loader.loadClass("se.scalablesolutions.akka.actor.TypedActor$")
+ val ctor = clazz.getDeclaredConstructor(Array[Class[_]](): _*)
+ ctor.setAccessible(true)
+ Some(ctor.newInstance(Array[AnyRef](): _*).asInstanceOf[TypedActorObject])
+ } catch { case e => None }
+ }
+
+ def resolveFutureIfMessageIsJoinPoint(message: Any, future: Future[_]): Boolean = {
+ ensureTypedActorEnabled
+ if (typedActorObjectInstance.get.isJoinPointAndOneWay(message)) {
+ future.asInstanceOf[CompletableFuture[Option[_]]].completeWithResult(None)
+ }
+ typedActorObjectInstance.get.isJoinPoint(message)
+ }
+ }
+}
diff --git a/akka-actors/src/main/scala/util/Uuid.scala b/akka-actor/src/main/scala/util/Uuid.scala
similarity index 100%
rename from akka-actors/src/main/scala/util/Uuid.scala
rename to akka-actor/src/main/scala/util/Uuid.scala
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/stm/Address.java b/akka-actor/src/test/java/se/scalablesolutions/akka/stm/Address.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/stm/Address.java
rename to akka-actor/src/test/java/se/scalablesolutions/akka/stm/Address.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/stm/CounterExample.java b/akka-actor/src/test/java/se/scalablesolutions/akka/stm/CounterExample.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/stm/CounterExample.java
rename to akka-actor/src/test/java/se/scalablesolutions/akka/stm/CounterExample.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/stm/JavaStmTests.java b/akka-actor/src/test/java/se/scalablesolutions/akka/stm/JavaStmTests.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/stm/JavaStmTests.java
rename to akka-actor/src/test/java/se/scalablesolutions/akka/stm/JavaStmTests.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/stm/RefExample.java b/akka-actor/src/test/java/se/scalablesolutions/akka/stm/RefExample.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/stm/RefExample.java
rename to akka-actor/src/test/java/se/scalablesolutions/akka/stm/RefExample.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/stm/StmExamples.java b/akka-actor/src/test/java/se/scalablesolutions/akka/stm/StmExamples.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/stm/StmExamples.java
rename to akka-actor/src/test/java/se/scalablesolutions/akka/stm/StmExamples.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/stm/TransactionFactoryExample.java b/akka-actor/src/test/java/se/scalablesolutions/akka/stm/TransactionFactoryExample.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/stm/TransactionFactoryExample.java
rename to akka-actor/src/test/java/se/scalablesolutions/akka/stm/TransactionFactoryExample.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/stm/TransactionalMapExample.java b/akka-actor/src/test/java/se/scalablesolutions/akka/stm/TransactionalMapExample.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/stm/TransactionalMapExample.java
rename to akka-actor/src/test/java/se/scalablesolutions/akka/stm/TransactionalMapExample.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/stm/TransactionalVectorExample.java b/akka-actor/src/test/java/se/scalablesolutions/akka/stm/TransactionalVectorExample.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/stm/TransactionalVectorExample.java
rename to akka-actor/src/test/java/se/scalablesolutions/akka/stm/TransactionalVectorExample.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/stm/User.java b/akka-actor/src/test/java/se/scalablesolutions/akka/stm/User.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/stm/User.java
rename to akka-actor/src/test/java/se/scalablesolutions/akka/stm/User.java
diff --git a/akka-actors/src/test/resources/logback-test.xml b/akka-actor/src/test/resources/logback-test.xml
similarity index 100%
rename from akka-actors/src/test/resources/logback-test.xml
rename to akka-actor/src/test/resources/logback-test.xml
diff --git a/akka-actor/src/test/scala/Messages.scala b/akka-actor/src/test/scala/Messages.scala
new file mode 100644
index 0000000000..7e22dd9d7c
--- /dev/null
+++ b/akka-actor/src/test/scala/Messages.scala
@@ -0,0 +1,13 @@
+/**
+ * Copyright (C) 2009-2010 Scalable Solutions AB
+ */
+
+package se.scalablesolutions.akka
+
+abstract class TestMessage
+
+case object Ping extends TestMessage
+case object Pong extends TestMessage
+case object OneWay extends TestMessage
+case object Die extends TestMessage
+case object NotifySupervisorExit extends TestMessage
diff --git a/akka-actors/src/test/scala/actor/actor/ActorFireForgetRequestReplySpec.scala b/akka-actor/src/test/scala/actor/actor/ActorFireForgetRequestReplySpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/actor/actor/ActorFireForgetRequestReplySpec.scala
rename to akka-actor/src/test/scala/actor/actor/ActorFireForgetRequestReplySpec.scala
diff --git a/akka-actors/src/test/scala/actor/actor/AgentSpec.scala b/akka-actor/src/test/scala/actor/actor/AgentSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/actor/actor/AgentSpec.scala
rename to akka-actor/src/test/scala/actor/actor/AgentSpec.scala
diff --git a/akka-actors/src/test/scala/actor/actor/Bench.scala b/akka-actor/src/test/scala/actor/actor/Bench.scala
similarity index 100%
rename from akka-actors/src/test/scala/actor/actor/Bench.scala
rename to akka-actor/src/test/scala/actor/actor/Bench.scala
diff --git a/akka-actors/src/test/scala/actor/actor/FSMActorSpec.scala b/akka-actor/src/test/scala/actor/actor/FSMActorSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/actor/actor/FSMActorSpec.scala
rename to akka-actor/src/test/scala/actor/actor/FSMActorSpec.scala
diff --git a/akka-actors/src/test/scala/actor/actor/ForwardActorSpec.scala b/akka-actor/src/test/scala/actor/actor/ForwardActorSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/actor/actor/ForwardActorSpec.scala
rename to akka-actor/src/test/scala/actor/actor/ForwardActorSpec.scala
diff --git a/akka-actors/src/test/scala/actor/actor/ReceiveTimeoutSpec.scala b/akka-actor/src/test/scala/actor/actor/ReceiveTimeoutSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/actor/actor/ReceiveTimeoutSpec.scala
rename to akka-actor/src/test/scala/actor/actor/ReceiveTimeoutSpec.scala
diff --git a/akka-actors/src/test/scala/actor/actor/TransactorSpec.scala b/akka-actor/src/test/scala/actor/actor/TransactorSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/actor/actor/TransactorSpec.scala
rename to akka-actor/src/test/scala/actor/actor/TransactorSpec.scala
diff --git a/akka-actors/src/test/scala/actor/supervisor/RestartStrategySpec.scala b/akka-actor/src/test/scala/actor/supervisor/RestartStrategySpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/actor/supervisor/RestartStrategySpec.scala
rename to akka-actor/src/test/scala/actor/supervisor/RestartStrategySpec.scala
diff --git a/akka-actors/src/test/scala/actor/supervisor/SupervisorHierarchySpec.scala b/akka-actor/src/test/scala/actor/supervisor/SupervisorHierarchySpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/actor/supervisor/SupervisorHierarchySpec.scala
rename to akka-actor/src/test/scala/actor/supervisor/SupervisorHierarchySpec.scala
diff --git a/akka-actors/src/test/scala/actor/supervisor/SupervisorSpec.scala b/akka-actor/src/test/scala/actor/supervisor/SupervisorSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/actor/supervisor/SupervisorSpec.scala
rename to akka-actor/src/test/scala/actor/supervisor/SupervisorSpec.scala
diff --git a/akka-core/src/test/scala/dataflow/DataFlowSpec.scala b/akka-actor/src/test/scala/dataflow/DataFlowSpec.scala
similarity index 98%
rename from akka-core/src/test/scala/dataflow/DataFlowSpec.scala
rename to akka-actor/src/test/scala/dataflow/DataFlowSpec.scala
index ce54699a6f..c5d3c32e63 100644
--- a/akka-core/src/test/scala/dataflow/DataFlowSpec.scala
+++ b/akka-actor/src/test/scala/dataflow/DataFlowSpec.scala
@@ -22,7 +22,7 @@ import se.scalablesolutions.akka.actor.ActorRegistry
@RunWith(classOf[JUnitRunner])
class DataFlowTest extends Spec with ShouldMatchers with BeforeAndAfterAll {
describe("DataflowVariable") {
- it("should work and generate correct results") {
+ /* it("should work and generate correct results") {
import DataFlow._
val latch = new CountDownLatch(1)
@@ -73,8 +73,8 @@ class DataFlowTest extends Spec with ShouldMatchers with BeforeAndAfterAll {
result.get should equal (sum(0,ints(0,1000)))
ActorRegistry.shutdownAll
}
+ */
}
-
/*it("should be able to join streams") {
import DataFlow._
diff --git a/akka-actors/src/test/scala/dispatch/DispatchersSpec.scala b/akka-actor/src/test/scala/dispatch/DispatchersSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/DispatchersSpec.scala
rename to akka-actor/src/test/scala/dispatch/DispatchersSpec.scala
diff --git a/akka-actors/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala b/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala
rename to akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala
diff --git a/akka-actors/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorsSpec.scala b/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorsSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorsSpec.scala
rename to akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorsSpec.scala
diff --git a/akka-actors/src/test/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcherSpec.scala b/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcherSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcherSpec.scala
rename to akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcherSpec.scala
diff --git a/akka-actors/src/test/scala/dispatch/FutureSpec.scala b/akka-actor/src/test/scala/dispatch/FutureSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/FutureSpec.scala
rename to akka-actor/src/test/scala/dispatch/FutureSpec.scala
diff --git a/akka-actors/src/test/scala/dispatch/HawtDispatcherActorSpec.scala b/akka-actor/src/test/scala/dispatch/HawtDispatcherActorSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/HawtDispatcherActorSpec.scala
rename to akka-actor/src/test/scala/dispatch/HawtDispatcherActorSpec.scala
diff --git a/akka-actors/src/test/scala/dispatch/HawtDispatcherEchoServer.scala b/akka-actor/src/test/scala/dispatch/HawtDispatcherEchoServer.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/HawtDispatcherEchoServer.scala
rename to akka-actor/src/test/scala/dispatch/HawtDispatcherEchoServer.scala
diff --git a/akka-actors/src/test/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcherActorSpec.scala b/akka-actor/src/test/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcherActorSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcherActorSpec.scala
rename to akka-actor/src/test/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcherActorSpec.scala
diff --git a/akka-actors/src/test/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcherActorSpec.scala b/akka-actor/src/test/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcherActorSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcherActorSpec.scala
rename to akka-actor/src/test/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcherActorSpec.scala
diff --git a/akka-actors/src/test/scala/dispatch/ThreadBasedActorSpec.scala b/akka-actor/src/test/scala/dispatch/ThreadBasedActorSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/ThreadBasedActorSpec.scala
rename to akka-actor/src/test/scala/dispatch/ThreadBasedActorSpec.scala
diff --git a/akka-actors/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala b/akka-actor/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala
rename to akka-actor/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala
diff --git a/akka-actors/src/test/scala/misc/ActorRegistrySpec.scala b/akka-actor/src/test/scala/misc/ActorRegistrySpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/misc/ActorRegistrySpec.scala
rename to akka-actor/src/test/scala/misc/ActorRegistrySpec.scala
diff --git a/akka-actors/src/test/scala/misc/SchedulerSpec.scala b/akka-actor/src/test/scala/misc/SchedulerSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/misc/SchedulerSpec.scala
rename to akka-actor/src/test/scala/misc/SchedulerSpec.scala
diff --git a/akka-actors/src/test/scala/routing/RoutingSpec.scala b/akka-actor/src/test/scala/routing/RoutingSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/routing/RoutingSpec.scala
rename to akka-actor/src/test/scala/routing/RoutingSpec.scala
diff --git a/akka-actors/src/test/scala/stm/JavaStmSpec.scala b/akka-actor/src/test/scala/stm/JavaStmSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/stm/JavaStmSpec.scala
rename to akka-actor/src/test/scala/stm/JavaStmSpec.scala
diff --git a/akka-actors/src/test/scala/stm/RefSpec.scala b/akka-actor/src/test/scala/stm/RefSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/stm/RefSpec.scala
rename to akka-actor/src/test/scala/stm/RefSpec.scala
diff --git a/akka-actors/src/test/scala/stm/StmSpec.scala b/akka-actor/src/test/scala/stm/StmSpec.scala
similarity index 100%
rename from akka-actors/src/test/scala/stm/StmSpec.scala
rename to akka-actor/src/test/scala/stm/StmSpec.scala
diff --git a/akka-actors/src/test/scala/ticket/Ticket001Spec.scala b/akka-actor/src/test/scala/ticket/Ticket001Spec.scala
similarity index 100%
rename from akka-actors/src/test/scala/ticket/Ticket001Spec.scala
rename to akka-actor/src/test/scala/ticket/Ticket001Spec.scala
diff --git a/akka-actors/src/test/scala/dataflow/DataFlowSpec.scala b/akka-actors/src/test/scala/dataflow/DataFlowSpec.scala
deleted file mode 100644
index ce54699a6f..0000000000
--- a/akka-actors/src/test/scala/dataflow/DataFlowSpec.scala
+++ /dev/null
@@ -1,173 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.dataflow
-
-import org.scalatest.Spec
-import org.scalatest.Assertions
-import org.scalatest.matchers.ShouldMatchers
-import org.scalatest.BeforeAndAfterAll
-import org.scalatest.junit.JUnitRunner
-import org.junit.runner.RunWith
-
-import java.util.concurrent.{TimeUnit, CountDownLatch}
-import java.util.concurrent.atomic.{AtomicLong, AtomicReference, AtomicInteger}
-
-import scala.annotation.tailrec
-
-import se.scalablesolutions.akka.dispatch.DefaultCompletableFuture
-import se.scalablesolutions.akka.actor.ActorRegistry
-
-@RunWith(classOf[JUnitRunner])
-class DataFlowTest extends Spec with ShouldMatchers with BeforeAndAfterAll {
- describe("DataflowVariable") {
- it("should work and generate correct results") {
- import DataFlow._
-
- val latch = new CountDownLatch(1)
- val result = new AtomicInteger(0)
- val x, y, z = new DataFlowVariable[Int]
- thread {
- z << x() + y()
- latch.countDown
- result.set(z())
- }
- thread { x << 40 }
- thread { y << 2 }
-
- latch.await(3,TimeUnit.SECONDS) should equal (true)
- List(x,y,z).foreach(_.shutdown)
- result.get should equal (42)
- ActorRegistry.shutdownAll
- }
-
- it("should be able to transform a stream") {
- import DataFlow._
-
- def ints(n: Int, max: Int): List[Int] =
- if (n == max) Nil
- else n :: ints(n + 1, max)
-
- def sum(s: Int, stream: List[Int]): List[Int] = stream match {
- case Nil => s :: Nil
- case h :: t => s :: sum(h + s, t)
- }
-
- val latch = new CountDownLatch(1)
- val result = new AtomicReference[List[Int]](Nil)
- val x = new DataFlowVariable[List[Int]]
- val y = new DataFlowVariable[List[Int]]
- val z = new DataFlowVariable[List[Int]]
-
- thread { x << ints(0, 1000) }
- thread { y << sum(0, x()) }
-
- thread { z << y()
- result.set(z())
- latch.countDown
- }
-
- latch.await(3,TimeUnit.SECONDS) should equal (true)
- List(x,y,z).foreach(_.shutdown)
- result.get should equal (sum(0,ints(0,1000)))
- ActorRegistry.shutdownAll
- }
- }
-
- /*it("should be able to join streams") {
- import DataFlow._
-
- def ints(n: Int, max: Int, stream: DataFlowStream[Int]): Unit = if (n != max) {
- stream <<< n
- ints(n + 1, max, stream)
- }
-
- def sum(s: Int, in: DataFlowStream[Int], out: DataFlowStream[Int]): Unit = {
- out <<< s
- sum(in() + s, in, out)
- }
-
- val producer = new DataFlowStream[Int]
- val consumer = new DataFlowStream[Int]
- val latch = new CountDownLatch(1)
- val result = new AtomicInteger(0)
-
- thread { ints(0, 1000, producer) }
- thread {
- Thread.sleep(1000)
- result.set(producer.map(x => x * x).foldLeft(0)(_ + _))
- latch.countDown
- }
-
- latch.await(3,TimeUnit.SECONDS) should equal (true)
- result.get should equal (332833500)
- ActorRegistry.shutdownAll
- }
-
- it("should be able to sum streams recursively") {
- import DataFlow._
-
- def ints(n: Int, max: Int, stream: DataFlowStream[Int]): Unit = if (n != max) {
- stream <<< n
- ints(n + 1, max, stream)
- }
-
- def sum(s: Int, in: DataFlowStream[Int], out: DataFlowStream[Int]): Unit = {
- out <<< s
- sum(in() + s, in, out)
- }
-
- val result = new AtomicLong(0)
-
- val producer = new DataFlowStream[Int]
- val consumer = new DataFlowStream[Int]
- val latch = new CountDownLatch(1)
-
- @tailrec def recurseSum(stream: DataFlowStream[Int]): Unit = {
- val x = stream()
-
- if(result.addAndGet(x) == 166666500)
- latch.countDown
-
- recurseSum(stream)
- }
-
- thread { ints(0, 1000, producer) }
- thread { sum(0, producer, consumer) }
- thread { recurseSum(consumer) }
-
- latch.await(15,TimeUnit.SECONDS) should equal (true)
- ActorRegistry.shutdownAll
- }*/
-
- /* Test not ready for prime time, causes some sort of deadlock */
- /* it("should be able to conditionally set variables") {
-
- import DataFlow._
-
- val latch = new CountDownLatch(1)
- val x, y, z, v = new DataFlowVariable[Int]
-
- val main = thread {
- x << 1
- z << Math.max(x(),y())
- latch.countDown
- }
-
- val setY = thread {
- Thread sleep 2000
- y << 2
- }
-
- val setV = thread {
- v << y
- }
-
- latch.await(2,TimeUnit.SECONDS) should equal (true)
- List(x,y,z,v) foreach (_.shutdown)
- List(main,setY,setV) foreach (_ ! Exit)
- println("Foo")
- ActorRegistry.shutdownAll
- }*/
-}
diff --git a/akka-core/.ensime b/akka-core/.ensime
deleted file mode 100644
index 0b21e8eb5c..0000000000
--- a/akka-core/.ensime
+++ /dev/null
@@ -1,79 +0,0 @@
-(
-
- ;; Where you unpacked the ENSIME distribution.
- :server-root "/Users/jboner/config/emacs-config/lib/ensime"
-
- ;; The command with which to invoke the ENSIME server. Change this to
- ;; "bin/server.bat" if your're on Windows.
- :server-cmd "bin/server.sh"
-
-
- ;; The host to connect to. Connecting to remote ENSIME servers is not
- ;; currently supported.
- ;; ------------------------------
- ;; :server-host "localhost"
-
-
- ;; Assume a standard sbt directory structure. Look in default sbt
- ;; locations for dependencies, sources, target, etc.
- ;;
- ;; Note for sbt subprojects: Each subproject needs it's own .ensime
- ;; file.
- ;; -----------------------------
- :use-sbt t
- :sbt-compile-conf "compile"
-
-
- ;; Use an existing pom.xml to determine the dependencies
- ;; for the project. A Maven-style directory structure is assumed.
- ;; -----------------------------
- ;; :use-maven t
- ;; :maven-compile-scopes "compile"
- ;; :maven-runtime-scopes "runtime"
-
-
- ;; Use an existing ivy.xml to determine the dependencies
- ;; for the project. A Maven-style directory structure is assumed.
- ;; -----------------------------
- ;; :use-ivy t
- ;; :ivy-compile-conf "compile"
- ;; :ivy-runtime-conf "compile"
-
-
- ;; The home package for your project.
- ;; Used by ENSIME to populate the project outline view.
- ;; ------------------------------
- :project-package "se.scalablesolutions.akka"
-
-
- ;; :sources ([dir | file]*)
- ;; Include source files by directory(recursively) or by filename.
- ;; ------------------------------
- :sources ("src/main/")
-
-
- ;; :dependency-jars ([dir | file]*)
- ;; Include jars by directory(recursively) or by filename.
- ;; ------------------------------
- ;; :dependency-jars ("lib")
-
-
- ;; :dependency-dirs ([dir | file]*)
- ;; Include directories of .class files.
- ;; ------------------------------
- ;; :dependency-dirs ("target/classes")
-
-
- ;; :target dir
- ;; Specify the target of the project build process. Should be
- ;; the directory where .class files are written
- ;;
- ;; The target is used to populate the classpath when launching
- ;; the inferior scala repl.
- ;; ------------------------------
- ;; :target "target/classes"
-
- )
-
-
-
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/ProtobufProtocol.java b/akka-core/src/test/java/se/scalablesolutions/akka/actor/ProtobufProtocol.java
deleted file mode 100644
index 683f008729..0000000000
--- a/akka-core/src/test/java/se/scalablesolutions/akka/actor/ProtobufProtocol.java
+++ /dev/null
@@ -1,1060 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: ProtobufProtocol.proto
-
-package se.scalablesolutions.akka.actor;
-
-public final class ProtobufProtocol {
- private ProtobufProtocol() {}
- public static void registerAllExtensions(
- com.google.protobuf.ExtensionRegistry registry) {
- }
- public static final class ProtobufPOJO extends
- com.google.protobuf.GeneratedMessage {
- // Use ProtobufPOJO.newBuilder() to construct.
- private ProtobufPOJO() {
- initFields();
- }
- private ProtobufPOJO(boolean noInit) {}
-
- private static final ProtobufPOJO defaultInstance;
- public static ProtobufPOJO getDefaultInstance() {
- return defaultInstance;
- }
-
- public ProtobufPOJO getDefaultInstanceForType() {
- return defaultInstance;
- }
-
- public static final com.google.protobuf.Descriptors.Descriptor
- getDescriptor() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_ProtobufPOJO_descriptor;
- }
-
- protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
- internalGetFieldAccessorTable() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_ProtobufPOJO_fieldAccessorTable;
- }
-
- // required uint64 id = 1;
- public static final int ID_FIELD_NUMBER = 1;
- private boolean hasId;
- private long id_ = 0L;
- public boolean hasId() { return hasId; }
- public long getId() { return id_; }
-
- // required string name = 2;
- public static final int NAME_FIELD_NUMBER = 2;
- private boolean hasName;
- private java.lang.String name_ = "";
- public boolean hasName() { return hasName; }
- public java.lang.String getName() { return name_; }
-
- // required bool status = 3;
- public static final int STATUS_FIELD_NUMBER = 3;
- private boolean hasStatus;
- private boolean status_ = false;
- public boolean hasStatus() { return hasStatus; }
- public boolean getStatus() { return status_; }
-
- private void initFields() {
- }
- public final boolean isInitialized() {
- if (!hasId) return false;
- if (!hasName) return false;
- if (!hasStatus) return false;
- return true;
- }
-
- public void writeTo(com.google.protobuf.CodedOutputStream output)
- throws java.io.IOException {
- getSerializedSize();
- if (hasId()) {
- output.writeUInt64(1, getId());
- }
- if (hasName()) {
- output.writeString(2, getName());
- }
- if (hasStatus()) {
- output.writeBool(3, getStatus());
- }
- getUnknownFields().writeTo(output);
- }
-
- private int memoizedSerializedSize = -1;
- public int getSerializedSize() {
- int size = memoizedSerializedSize;
- if (size != -1) return size;
-
- size = 0;
- if (hasId()) {
- size += com.google.protobuf.CodedOutputStream
- .computeUInt64Size(1, getId());
- }
- if (hasName()) {
- size += com.google.protobuf.CodedOutputStream
- .computeStringSize(2, getName());
- }
- if (hasStatus()) {
- size += com.google.protobuf.CodedOutputStream
- .computeBoolSize(3, getStatus());
- }
- size += getUnknownFields().getSerializedSize();
- memoizedSerializedSize = size;
- return size;
- }
-
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseFrom(
- com.google.protobuf.ByteString data)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseFrom(
- com.google.protobuf.ByteString data,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data, extensionRegistry)
- .buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseFrom(byte[] data)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseFrom(
- byte[] data,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data, extensionRegistry)
- .buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseFrom(java.io.InputStream input)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseFrom(
- java.io.InputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input, extensionRegistry)
- .buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseDelimitedFrom(java.io.InputStream input)
- throws java.io.IOException {
- Builder builder = newBuilder();
- if (builder.mergeDelimitedFrom(input)) {
- return builder.buildParsed();
- } else {
- return null;
- }
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseDelimitedFrom(
- java.io.InputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- Builder builder = newBuilder();
- if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
- return builder.buildParsed();
- } else {
- return null;
- }
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseFrom(
- com.google.protobuf.CodedInputStream input)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseFrom(
- com.google.protobuf.CodedInputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input, extensionRegistry)
- .buildParsed();
- }
-
- public static Builder newBuilder() { return Builder.create(); }
- public Builder newBuilderForType() { return newBuilder(); }
- public static Builder newBuilder(se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO prototype) {
- return newBuilder().mergeFrom(prototype);
- }
- public Builder toBuilder() { return newBuilder(this); }
-
- public static final class Builder extends
- com.google.protobuf.GeneratedMessage.Builder {
- private se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO result;
-
- // Construct using se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO.newBuilder()
- private Builder() {}
-
- private static Builder create() {
- Builder builder = new Builder();
- builder.result = new se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO();
- return builder;
- }
-
- protected se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO internalGetResult() {
- return result;
- }
-
- public Builder clear() {
- if (result == null) {
- throw new IllegalStateException(
- "Cannot call clear() after build().");
- }
- result = new se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO();
- return this;
- }
-
- public Builder clone() {
- return create().mergeFrom(result);
- }
-
- public com.google.protobuf.Descriptors.Descriptor
- getDescriptorForType() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO.getDescriptor();
- }
-
- public se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO getDefaultInstanceForType() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO.getDefaultInstance();
- }
-
- public boolean isInitialized() {
- return result.isInitialized();
- }
- public se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO build() {
- if (result != null && !isInitialized()) {
- throw newUninitializedMessageException(result);
- }
- return buildPartial();
- }
-
- private se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO buildParsed()
- throws com.google.protobuf.InvalidProtocolBufferException {
- if (!isInitialized()) {
- throw newUninitializedMessageException(
- result).asInvalidProtocolBufferException();
- }
- return buildPartial();
- }
-
- public se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO buildPartial() {
- if (result == null) {
- throw new IllegalStateException(
- "build() has already been called on this Builder.");
- }
- se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO returnMe = result;
- result = null;
- return returnMe;
- }
-
- public Builder mergeFrom(com.google.protobuf.Message other) {
- if (other instanceof se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO) {
- return mergeFrom((se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO)other);
- } else {
- super.mergeFrom(other);
- return this;
- }
- }
-
- public Builder mergeFrom(se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO other) {
- if (other == se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO.getDefaultInstance()) return this;
- if (other.hasId()) {
- setId(other.getId());
- }
- if (other.hasName()) {
- setName(other.getName());
- }
- if (other.hasStatus()) {
- setStatus(other.getStatus());
- }
- this.mergeUnknownFields(other.getUnknownFields());
- return this;
- }
-
- public Builder mergeFrom(
- com.google.protobuf.CodedInputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- com.google.protobuf.UnknownFieldSet.Builder unknownFields =
- com.google.protobuf.UnknownFieldSet.newBuilder(
- this.getUnknownFields());
- while (true) {
- int tag = input.readTag();
- switch (tag) {
- case 0:
- this.setUnknownFields(unknownFields.build());
- return this;
- default: {
- if (!parseUnknownField(input, unknownFields,
- extensionRegistry, tag)) {
- this.setUnknownFields(unknownFields.build());
- return this;
- }
- break;
- }
- case 8: {
- setId(input.readUInt64());
- break;
- }
- case 18: {
- setName(input.readString());
- break;
- }
- case 24: {
- setStatus(input.readBool());
- break;
- }
- }
- }
- }
-
-
- // required uint64 id = 1;
- public boolean hasId() {
- return result.hasId();
- }
- public long getId() {
- return result.getId();
- }
- public Builder setId(long value) {
- result.hasId = true;
- result.id_ = value;
- return this;
- }
- public Builder clearId() {
- result.hasId = false;
- result.id_ = 0L;
- return this;
- }
-
- // required string name = 2;
- public boolean hasName() {
- return result.hasName();
- }
- public java.lang.String getName() {
- return result.getName();
- }
- public Builder setName(java.lang.String value) {
- if (value == null) {
- throw new NullPointerException();
- }
- result.hasName = true;
- result.name_ = value;
- return this;
- }
- public Builder clearName() {
- result.hasName = false;
- result.name_ = getDefaultInstance().getName();
- return this;
- }
-
- // required bool status = 3;
- public boolean hasStatus() {
- return result.hasStatus();
- }
- public boolean getStatus() {
- return result.getStatus();
- }
- public Builder setStatus(boolean value) {
- result.hasStatus = true;
- result.status_ = value;
- return this;
- }
- public Builder clearStatus() {
- result.hasStatus = false;
- result.status_ = false;
- return this;
- }
-
- // @@protoc_insertion_point(builder_scope:se.scalablesolutions.akka.actor.ProtobufPOJO)
- }
-
- static {
- defaultInstance = new ProtobufPOJO(true);
- se.scalablesolutions.akka.actor.ProtobufProtocol.internalForceInit();
- defaultInstance.initFields();
- }
-
- // @@protoc_insertion_point(class_scope:se.scalablesolutions.akka.actor.ProtobufPOJO)
- }
-
- public static final class Counter extends
- com.google.protobuf.GeneratedMessage {
- // Use Counter.newBuilder() to construct.
- private Counter() {
- initFields();
- }
- private Counter(boolean noInit) {}
-
- private static final Counter defaultInstance;
- public static Counter getDefaultInstance() {
- return defaultInstance;
- }
-
- public Counter getDefaultInstanceForType() {
- return defaultInstance;
- }
-
- public static final com.google.protobuf.Descriptors.Descriptor
- getDescriptor() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_Counter_descriptor;
- }
-
- protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
- internalGetFieldAccessorTable() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_Counter_fieldAccessorTable;
- }
-
- // required uint32 count = 1;
- public static final int COUNT_FIELD_NUMBER = 1;
- private boolean hasCount;
- private int count_ = 0;
- public boolean hasCount() { return hasCount; }
- public int getCount() { return count_; }
-
- private void initFields() {
- }
- public final boolean isInitialized() {
- if (!hasCount) return false;
- return true;
- }
-
- public void writeTo(com.google.protobuf.CodedOutputStream output)
- throws java.io.IOException {
- getSerializedSize();
- if (hasCount()) {
- output.writeUInt32(1, getCount());
- }
- getUnknownFields().writeTo(output);
- }
-
- private int memoizedSerializedSize = -1;
- public int getSerializedSize() {
- int size = memoizedSerializedSize;
- if (size != -1) return size;
-
- size = 0;
- if (hasCount()) {
- size += com.google.protobuf.CodedOutputStream
- .computeUInt32Size(1, getCount());
- }
- size += getUnknownFields().getSerializedSize();
- memoizedSerializedSize = size;
- return size;
- }
-
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseFrom(
- com.google.protobuf.ByteString data)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseFrom(
- com.google.protobuf.ByteString data,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data, extensionRegistry)
- .buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseFrom(byte[] data)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseFrom(
- byte[] data,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data, extensionRegistry)
- .buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseFrom(java.io.InputStream input)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseFrom(
- java.io.InputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input, extensionRegistry)
- .buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseDelimitedFrom(java.io.InputStream input)
- throws java.io.IOException {
- Builder builder = newBuilder();
- if (builder.mergeDelimitedFrom(input)) {
- return builder.buildParsed();
- } else {
- return null;
- }
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseDelimitedFrom(
- java.io.InputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- Builder builder = newBuilder();
- if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
- return builder.buildParsed();
- } else {
- return null;
- }
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseFrom(
- com.google.protobuf.CodedInputStream input)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseFrom(
- com.google.protobuf.CodedInputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input, extensionRegistry)
- .buildParsed();
- }
-
- public static Builder newBuilder() { return Builder.create(); }
- public Builder newBuilderForType() { return newBuilder(); }
- public static Builder newBuilder(se.scalablesolutions.akka.actor.ProtobufProtocol.Counter prototype) {
- return newBuilder().mergeFrom(prototype);
- }
- public Builder toBuilder() { return newBuilder(this); }
-
- public static final class Builder extends
- com.google.protobuf.GeneratedMessage.Builder {
- private se.scalablesolutions.akka.actor.ProtobufProtocol.Counter result;
-
- // Construct using se.scalablesolutions.akka.actor.ProtobufProtocol.Counter.newBuilder()
- private Builder() {}
-
- private static Builder create() {
- Builder builder = new Builder();
- builder.result = new se.scalablesolutions.akka.actor.ProtobufProtocol.Counter();
- return builder;
- }
-
- protected se.scalablesolutions.akka.actor.ProtobufProtocol.Counter internalGetResult() {
- return result;
- }
-
- public Builder clear() {
- if (result == null) {
- throw new IllegalStateException(
- "Cannot call clear() after build().");
- }
- result = new se.scalablesolutions.akka.actor.ProtobufProtocol.Counter();
- return this;
- }
-
- public Builder clone() {
- return create().mergeFrom(result);
- }
-
- public com.google.protobuf.Descriptors.Descriptor
- getDescriptorForType() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.Counter.getDescriptor();
- }
-
- public se.scalablesolutions.akka.actor.ProtobufProtocol.Counter getDefaultInstanceForType() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.Counter.getDefaultInstance();
- }
-
- public boolean isInitialized() {
- return result.isInitialized();
- }
- public se.scalablesolutions.akka.actor.ProtobufProtocol.Counter build() {
- if (result != null && !isInitialized()) {
- throw newUninitializedMessageException(result);
- }
- return buildPartial();
- }
-
- private se.scalablesolutions.akka.actor.ProtobufProtocol.Counter buildParsed()
- throws com.google.protobuf.InvalidProtocolBufferException {
- if (!isInitialized()) {
- throw newUninitializedMessageException(
- result).asInvalidProtocolBufferException();
- }
- return buildPartial();
- }
-
- public se.scalablesolutions.akka.actor.ProtobufProtocol.Counter buildPartial() {
- if (result == null) {
- throw new IllegalStateException(
- "build() has already been called on this Builder.");
- }
- se.scalablesolutions.akka.actor.ProtobufProtocol.Counter returnMe = result;
- result = null;
- return returnMe;
- }
-
- public Builder mergeFrom(com.google.protobuf.Message other) {
- if (other instanceof se.scalablesolutions.akka.actor.ProtobufProtocol.Counter) {
- return mergeFrom((se.scalablesolutions.akka.actor.ProtobufProtocol.Counter)other);
- } else {
- super.mergeFrom(other);
- return this;
- }
- }
-
- public Builder mergeFrom(se.scalablesolutions.akka.actor.ProtobufProtocol.Counter other) {
- if (other == se.scalablesolutions.akka.actor.ProtobufProtocol.Counter.getDefaultInstance()) return this;
- if (other.hasCount()) {
- setCount(other.getCount());
- }
- this.mergeUnknownFields(other.getUnknownFields());
- return this;
- }
-
- public Builder mergeFrom(
- com.google.protobuf.CodedInputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- com.google.protobuf.UnknownFieldSet.Builder unknownFields =
- com.google.protobuf.UnknownFieldSet.newBuilder(
- this.getUnknownFields());
- while (true) {
- int tag = input.readTag();
- switch (tag) {
- case 0:
- this.setUnknownFields(unknownFields.build());
- return this;
- default: {
- if (!parseUnknownField(input, unknownFields,
- extensionRegistry, tag)) {
- this.setUnknownFields(unknownFields.build());
- return this;
- }
- break;
- }
- case 8: {
- setCount(input.readUInt32());
- break;
- }
- }
- }
- }
-
-
- // required uint32 count = 1;
- public boolean hasCount() {
- return result.hasCount();
- }
- public int getCount() {
- return result.getCount();
- }
- public Builder setCount(int value) {
- result.hasCount = true;
- result.count_ = value;
- return this;
- }
- public Builder clearCount() {
- result.hasCount = false;
- result.count_ = 0;
- return this;
- }
-
- // @@protoc_insertion_point(builder_scope:se.scalablesolutions.akka.actor.Counter)
- }
-
- static {
- defaultInstance = new Counter(true);
- se.scalablesolutions.akka.actor.ProtobufProtocol.internalForceInit();
- defaultInstance.initFields();
- }
-
- // @@protoc_insertion_point(class_scope:se.scalablesolutions.akka.actor.Counter)
- }
-
- public static final class DualCounter extends
- com.google.protobuf.GeneratedMessage {
- // Use DualCounter.newBuilder() to construct.
- private DualCounter() {
- initFields();
- }
- private DualCounter(boolean noInit) {}
-
- private static final DualCounter defaultInstance;
- public static DualCounter getDefaultInstance() {
- return defaultInstance;
- }
-
- public DualCounter getDefaultInstanceForType() {
- return defaultInstance;
- }
-
- public static final com.google.protobuf.Descriptors.Descriptor
- getDescriptor() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_DualCounter_descriptor;
- }
-
- protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
- internalGetFieldAccessorTable() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_DualCounter_fieldAccessorTable;
- }
-
- // required uint32 count1 = 1;
- public static final int COUNT1_FIELD_NUMBER = 1;
- private boolean hasCount1;
- private int count1_ = 0;
- public boolean hasCount1() { return hasCount1; }
- public int getCount1() { return count1_; }
-
- // required uint32 count2 = 2;
- public static final int COUNT2_FIELD_NUMBER = 2;
- private boolean hasCount2;
- private int count2_ = 0;
- public boolean hasCount2() { return hasCount2; }
- public int getCount2() { return count2_; }
-
- private void initFields() {
- }
- public final boolean isInitialized() {
- if (!hasCount1) return false;
- if (!hasCount2) return false;
- return true;
- }
-
- public void writeTo(com.google.protobuf.CodedOutputStream output)
- throws java.io.IOException {
- getSerializedSize();
- if (hasCount1()) {
- output.writeUInt32(1, getCount1());
- }
- if (hasCount2()) {
- output.writeUInt32(2, getCount2());
- }
- getUnknownFields().writeTo(output);
- }
-
- private int memoizedSerializedSize = -1;
- public int getSerializedSize() {
- int size = memoizedSerializedSize;
- if (size != -1) return size;
-
- size = 0;
- if (hasCount1()) {
- size += com.google.protobuf.CodedOutputStream
- .computeUInt32Size(1, getCount1());
- }
- if (hasCount2()) {
- size += com.google.protobuf.CodedOutputStream
- .computeUInt32Size(2, getCount2());
- }
- size += getUnknownFields().getSerializedSize();
- memoizedSerializedSize = size;
- return size;
- }
-
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseFrom(
- com.google.protobuf.ByteString data)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseFrom(
- com.google.protobuf.ByteString data,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data, extensionRegistry)
- .buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseFrom(byte[] data)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseFrom(
- byte[] data,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws com.google.protobuf.InvalidProtocolBufferException {
- return newBuilder().mergeFrom(data, extensionRegistry)
- .buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseFrom(java.io.InputStream input)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseFrom(
- java.io.InputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input, extensionRegistry)
- .buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseDelimitedFrom(java.io.InputStream input)
- throws java.io.IOException {
- Builder builder = newBuilder();
- if (builder.mergeDelimitedFrom(input)) {
- return builder.buildParsed();
- } else {
- return null;
- }
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseDelimitedFrom(
- java.io.InputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- Builder builder = newBuilder();
- if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
- return builder.buildParsed();
- } else {
- return null;
- }
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseFrom(
- com.google.protobuf.CodedInputStream input)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input).buildParsed();
- }
- public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseFrom(
- com.google.protobuf.CodedInputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- return newBuilder().mergeFrom(input, extensionRegistry)
- .buildParsed();
- }
-
- public static Builder newBuilder() { return Builder.create(); }
- public Builder newBuilderForType() { return newBuilder(); }
- public static Builder newBuilder(se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter prototype) {
- return newBuilder().mergeFrom(prototype);
- }
- public Builder toBuilder() { return newBuilder(this); }
-
- public static final class Builder extends
- com.google.protobuf.GeneratedMessage.Builder {
- private se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter result;
-
- // Construct using se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter.newBuilder()
- private Builder() {}
-
- private static Builder create() {
- Builder builder = new Builder();
- builder.result = new se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter();
- return builder;
- }
-
- protected se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter internalGetResult() {
- return result;
- }
-
- public Builder clear() {
- if (result == null) {
- throw new IllegalStateException(
- "Cannot call clear() after build().");
- }
- result = new se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter();
- return this;
- }
-
- public Builder clone() {
- return create().mergeFrom(result);
- }
-
- public com.google.protobuf.Descriptors.Descriptor
- getDescriptorForType() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter.getDescriptor();
- }
-
- public se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter getDefaultInstanceForType() {
- return se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter.getDefaultInstance();
- }
-
- public boolean isInitialized() {
- return result.isInitialized();
- }
- public se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter build() {
- if (result != null && !isInitialized()) {
- throw newUninitializedMessageException(result);
- }
- return buildPartial();
- }
-
- private se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter buildParsed()
- throws com.google.protobuf.InvalidProtocolBufferException {
- if (!isInitialized()) {
- throw newUninitializedMessageException(
- result).asInvalidProtocolBufferException();
- }
- return buildPartial();
- }
-
- public se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter buildPartial() {
- if (result == null) {
- throw new IllegalStateException(
- "build() has already been called on this Builder.");
- }
- se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter returnMe = result;
- result = null;
- return returnMe;
- }
-
- public Builder mergeFrom(com.google.protobuf.Message other) {
- if (other instanceof se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter) {
- return mergeFrom((se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter)other);
- } else {
- super.mergeFrom(other);
- return this;
- }
- }
-
- public Builder mergeFrom(se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter other) {
- if (other == se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter.getDefaultInstance()) return this;
- if (other.hasCount1()) {
- setCount1(other.getCount1());
- }
- if (other.hasCount2()) {
- setCount2(other.getCount2());
- }
- this.mergeUnknownFields(other.getUnknownFields());
- return this;
- }
-
- public Builder mergeFrom(
- com.google.protobuf.CodedInputStream input,
- com.google.protobuf.ExtensionRegistryLite extensionRegistry)
- throws java.io.IOException {
- com.google.protobuf.UnknownFieldSet.Builder unknownFields =
- com.google.protobuf.UnknownFieldSet.newBuilder(
- this.getUnknownFields());
- while (true) {
- int tag = input.readTag();
- switch (tag) {
- case 0:
- this.setUnknownFields(unknownFields.build());
- return this;
- default: {
- if (!parseUnknownField(input, unknownFields,
- extensionRegistry, tag)) {
- this.setUnknownFields(unknownFields.build());
- return this;
- }
- break;
- }
- case 8: {
- setCount1(input.readUInt32());
- break;
- }
- case 16: {
- setCount2(input.readUInt32());
- break;
- }
- }
- }
- }
-
-
- // required uint32 count1 = 1;
- public boolean hasCount1() {
- return result.hasCount1();
- }
- public int getCount1() {
- return result.getCount1();
- }
- public Builder setCount1(int value) {
- result.hasCount1 = true;
- result.count1_ = value;
- return this;
- }
- public Builder clearCount1() {
- result.hasCount1 = false;
- result.count1_ = 0;
- return this;
- }
-
- // required uint32 count2 = 2;
- public boolean hasCount2() {
- return result.hasCount2();
- }
- public int getCount2() {
- return result.getCount2();
- }
- public Builder setCount2(int value) {
- result.hasCount2 = true;
- result.count2_ = value;
- return this;
- }
- public Builder clearCount2() {
- result.hasCount2 = false;
- result.count2_ = 0;
- return this;
- }
-
- // @@protoc_insertion_point(builder_scope:se.scalablesolutions.akka.actor.DualCounter)
- }
-
- static {
- defaultInstance = new DualCounter(true);
- se.scalablesolutions.akka.actor.ProtobufProtocol.internalForceInit();
- defaultInstance.initFields();
- }
-
- // @@protoc_insertion_point(class_scope:se.scalablesolutions.akka.actor.DualCounter)
- }
-
- private static com.google.protobuf.Descriptors.Descriptor
- internal_static_se_scalablesolutions_akka_actor_ProtobufPOJO_descriptor;
- private static
- com.google.protobuf.GeneratedMessage.FieldAccessorTable
- internal_static_se_scalablesolutions_akka_actor_ProtobufPOJO_fieldAccessorTable;
- private static com.google.protobuf.Descriptors.Descriptor
- internal_static_se_scalablesolutions_akka_actor_Counter_descriptor;
- private static
- com.google.protobuf.GeneratedMessage.FieldAccessorTable
- internal_static_se_scalablesolutions_akka_actor_Counter_fieldAccessorTable;
- private static com.google.protobuf.Descriptors.Descriptor
- internal_static_se_scalablesolutions_akka_actor_DualCounter_descriptor;
- private static
- com.google.protobuf.GeneratedMessage.FieldAccessorTable
- internal_static_se_scalablesolutions_akka_actor_DualCounter_fieldAccessorTable;
-
- public static com.google.protobuf.Descriptors.FileDescriptor
- getDescriptor() {
- return descriptor;
- }
- private static com.google.protobuf.Descriptors.FileDescriptor
- descriptor;
- static {
- java.lang.String[] descriptorData = {
- "\n\026ProtobufProtocol.proto\022\037se.scalablesol" +
- "utions.akka.actor\"8\n\014ProtobufPOJO\022\n\n\002id\030" +
- "\001 \002(\004\022\014\n\004name\030\002 \002(\t\022\016\n\006status\030\003 \002(\010\"\030\n\007C" +
- "ounter\022\r\n\005count\030\001 \002(\r\"-\n\013DualCounter\022\016\n\006" +
- "count1\030\001 \002(\r\022\016\n\006count2\030\002 \002(\r"
- };
- com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
- new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
- public com.google.protobuf.ExtensionRegistry assignDescriptors(
- com.google.protobuf.Descriptors.FileDescriptor root) {
- descriptor = root;
- internal_static_se_scalablesolutions_akka_actor_ProtobufPOJO_descriptor =
- getDescriptor().getMessageTypes().get(0);
- internal_static_se_scalablesolutions_akka_actor_ProtobufPOJO_fieldAccessorTable = new
- com.google.protobuf.GeneratedMessage.FieldAccessorTable(
- internal_static_se_scalablesolutions_akka_actor_ProtobufPOJO_descriptor,
- new java.lang.String[] { "Id", "Name", "Status", },
- se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO.class,
- se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO.Builder.class);
- internal_static_se_scalablesolutions_akka_actor_Counter_descriptor =
- getDescriptor().getMessageTypes().get(1);
- internal_static_se_scalablesolutions_akka_actor_Counter_fieldAccessorTable = new
- com.google.protobuf.GeneratedMessage.FieldAccessorTable(
- internal_static_se_scalablesolutions_akka_actor_Counter_descriptor,
- new java.lang.String[] { "Count", },
- se.scalablesolutions.akka.actor.ProtobufProtocol.Counter.class,
- se.scalablesolutions.akka.actor.ProtobufProtocol.Counter.Builder.class);
- internal_static_se_scalablesolutions_akka_actor_DualCounter_descriptor =
- getDescriptor().getMessageTypes().get(2);
- internal_static_se_scalablesolutions_akka_actor_DualCounter_fieldAccessorTable = new
- com.google.protobuf.GeneratedMessage.FieldAccessorTable(
- internal_static_se_scalablesolutions_akka_actor_DualCounter_descriptor,
- new java.lang.String[] { "Count1", "Count2", },
- se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter.class,
- se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter.Builder.class);
- return null;
- }
- };
- com.google.protobuf.Descriptors.FileDescriptor
- .internalBuildGeneratedFileFrom(descriptorData,
- new com.google.protobuf.Descriptors.FileDescriptor[] {
- }, assigner);
- }
-
- public static void internalForceInit() {}
-
- // @@protoc_insertion_point(outer_class_scope)
-}
diff --git a/akka-core/src/test/scala/Messages.scala b/akka-core/src/test/scala/Messages.scala
deleted file mode 100644
index ad1fcf8885..0000000000
--- a/akka-core/src/test/scala/Messages.scala
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka
-
-import se.scalablesolutions.akka.serialization.Serializable
-import sbinary._
-import sbinary.Operations._
-
-sealed abstract class TestMessage
-
-case object Ping extends TestMessage
-case object Pong extends TestMessage
-case object OneWay extends TestMessage
-case object Die extends TestMessage
-case object NotifySupervisorExit extends TestMessage
-
-case class User(val usernamePassword: Tuple2[String, String],
- val email: String,
- val age: Int)
- extends Serializable.SBinary[User] {
- def this() = this(null, null, 0)
- import sbinary.DefaultProtocol._
- implicit object UserFormat extends Format[User] {
- def reads(in : Input) = User(
- read[Tuple2[String, String]](in),
- read[String](in),
- read[Int](in))
- def writes(out: Output, value: User) = {
- write[Tuple2[String, String]](out, value.usernamePassword)
- write[String](out, value.email)
- write[Int](out, value.age)
- }
- }
- def fromBytes(bytes: Array[Byte]) = fromByteArray[User](bytes)
- def toBytes: Array[Byte] = toByteArray(this)
-}
-
-case object RemotePing extends TestMessage
-case object RemotePong extends TestMessage
-case object RemoteOneWay extends TestMessage
-case object RemoteDie extends TestMessage
-case object RemoteNotifySupervisorExit extends TestMessage
diff --git a/akka-core/src/test/scala/actor/actor/ActorFireForgetRequestReplySpec.scala b/akka-core/src/test/scala/actor/actor/ActorFireForgetRequestReplySpec.scala
deleted file mode 100644
index 9d3ce765ec..0000000000
--- a/akka-core/src/test/scala/actor/actor/ActorFireForgetRequestReplySpec.scala
+++ /dev/null
@@ -1,92 +0,0 @@
-package se.scalablesolutions.akka.actor
-
-import java.util.concurrent.{TimeUnit, CyclicBarrier, TimeoutException}
-import se.scalablesolutions.akka.config.ScalaConfig._
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import se.scalablesolutions.akka.dispatch.Dispatchers
-import Actor._
-
-object ActorFireForgetRequestReplySpec {
- class ReplyActor extends Actor {
- self.dispatcher = Dispatchers.newThreadBasedDispatcher(self)
-
- def receive = {
- case "Send" =>
- self.reply("Reply")
- case "SendImplicit" =>
- self.sender.get ! "ReplyImplicit"
- }
- }
-
- class CrashingTemporaryActor extends Actor {
- self.lifeCycle = Some(LifeCycle(Temporary))
-
- def receive = {
- case "Die" =>
- state.finished.await
- throw new Exception("Expected exception")
- }
- }
-
- class SenderActor(replyActor: ActorRef) extends Actor {
- self.dispatcher = Dispatchers.newThreadBasedDispatcher(self)
-
- def receive = {
- case "Init" => replyActor ! "Send"
- case "Reply" => {
- state.s = "Reply"
- state.finished.await
- }
- case "InitImplicit" => replyActor ! "SendImplicit"
- case "ReplyImplicit" => {
- state.s = "ReplyImplicit"
- state.finished.await
- }
- }
- }
-
- object state {
- var s = "NIL"
- val finished = new CyclicBarrier(2)
- }
-}
-
-class ActorFireForgetRequestReplySpec extends JUnitSuite {
- import ActorFireForgetRequestReplySpec._
-
- @Test
- def shouldReplyToBangMessageUsingReply = {
- state.finished.reset
- val replyActor = actorOf[ReplyActor].start
- val senderActor = actorOf(new SenderActor(replyActor)).start
- senderActor ! "Init"
- try { state.finished.await(1L, TimeUnit.SECONDS) }
- catch { case e: TimeoutException => fail("Never got the message") }
- assert("Reply" === state.s)
- }
-
- @Test
- def shouldReplyToBangMessageUsingImplicitSender = {
- state.finished.reset
- val replyActor = actorOf[ReplyActor].start
- val senderActor = actorOf(new SenderActor(replyActor)).start
- senderActor ! "InitImplicit"
- try { state.finished.await(1L, TimeUnit.SECONDS) }
- catch { case e: TimeoutException => fail("Never got the message") }
- assert("ReplyImplicit" === state.s)
- }
-
- @Test
- def shouldShutdownCrashedTemporaryActor = {
- state.finished.reset
- val actor = actorOf[CrashingTemporaryActor].start
- assert(actor.isRunning)
- actor ! "Die"
- try { state.finished.await(1L, TimeUnit.SECONDS) }
- catch { case e: TimeoutException => fail("Never got the message") }
- Thread.sleep(100)
- assert(actor.isShutdown)
- }
-}
diff --git a/akka-core/src/test/scala/actor/actor/AgentSpec.scala b/akka-core/src/test/scala/actor/actor/AgentSpec.scala
deleted file mode 100644
index 71911c3ad8..0000000000
--- a/akka-core/src/test/scala/actor/actor/AgentSpec.scala
+++ /dev/null
@@ -1,111 +0,0 @@
-package se.scalablesolutions.akka.actor
-
-import se.scalablesolutions.akka.actor.Actor.transactor
-import org.scalatest.Suite
-import org.scalatest.junit.JUnitRunner
-import org.scalatest.matchers.MustMatchers
-
-import org.junit.runner.RunWith
-import org.junit.Test
-
-import java.util.concurrent.{TimeUnit, CountDownLatch}
-
-@RunWith(classOf[JUnitRunner])
-class AgentSpec extends junit.framework.TestCase with Suite with MustMatchers {
-
- @Test def testSendFun = {
- val agent = Agent(5)
- agent send (_ + 1)
- agent send (_ * 2)
- val result = agent()
- result must be(12)
- agent.close
- }
-
- @Test def testSendValue = {
- val agent = Agent(5)
- agent send 6
- val result = agent()
- result must be(6)
- agent.close
- }
-
- @Test def testSendProc = {
- val agent = Agent(5)
- var result = 0
- val latch = new CountDownLatch(2)
- agent sendProc { e => result += e; latch.countDown }
- agent sendProc { e => result += e; latch.countDown }
- assert(latch.await(5, TimeUnit.SECONDS))
- result must be(10)
- agent.close
- }
-
- @Test def testOneAgentsendWithinEnlosingTransactionSuccess = {
- case object Go
- val agent = Agent(5)
- val latch = new CountDownLatch(1)
- val tx = transactor {
- case Go => agent send { e => latch.countDown; e + 1 }
- }
- tx ! Go
- assert(latch.await(5, TimeUnit.SECONDS))
- val result = agent()
- result must be(6)
- agent.close
- tx.stop
- }
-
-/*
- // Strange test - do we really need it?
- @Test def testDoingAgentGetInEnlosingTransactionShouldYieldException = {
- case object Go
- val latch = new CountDownLatch(1)
- val agent = Agent(5)
- val tx = transactor {
- case Go =>
- agent send (_ * 2)
- try { agent() }
- catch {
- case _ => latch.countDown
- }
- }
- tx ! Go
- assert(latch.await(5, TimeUnit.SECONDS))
- agent.close
- tx.stop
- assert(true)
- }
-*/
-
- @Test def testAgentForeach = {
- val agent1 = Agent(3)
- var result = 0
- for (first <- agent1) {
- result = first + 1
- }
- result must be(4)
- agent1.close
- }
-
- @Test def testAgentMap = {
- val agent1 = Agent(3)
- val result = for (first <- agent1) yield first + 1
- result() must be(4)
- result.close
- agent1.close
- }
-
- @Test def testAgentFlatMap = {
- val agent1 = Agent(3)
- val agent2 = Agent(5)
- val result = for {
- first <- agent1
- second <- agent2
- } yield second + first
- result() must be(8)
- result.close
- agent1.close
- agent2.close
- }
-}
diff --git a/akka-core/src/test/scala/actor/actor/Bench.scala b/akka-core/src/test/scala/actor/actor/Bench.scala
deleted file mode 100644
index 8e3a44f3a0..0000000000
--- a/akka-core/src/test/scala/actor/actor/Bench.scala
+++ /dev/null
@@ -1,119 +0,0 @@
-/* The Computer Language Benchmarks Game
- http://shootout.alioth.debian.org/
- contributed by Julien Gaugaz
- inspired by the version contributed by Yura Taras and modified by Isaac Gouy
-*/
-package se.scalablesolutions.akka.actor
-
-import se.scalablesolutions.akka.actor.Actor._
-
-object Chameneos {
-
- sealed trait ChameneosEvent
- case class Meet(from: ActorRef, colour: Colour) extends ChameneosEvent
- case class Change(colour: Colour) extends ChameneosEvent
- case class MeetingCount(count: Int) extends ChameneosEvent
- case object Exit extends ChameneosEvent
-
- abstract class Colour
- case object RED extends Colour
- case object YELLOW extends Colour
- case object BLUE extends Colour
- case object FADED extends Colour
-
- val colours = Array[Colour](BLUE, RED, YELLOW)
-
- var start = 0L
- var end = 0L
-
- class Chameneo(var mall: ActorRef, var colour: Colour, cid: Int) extends Actor {
- var meetings = 0
- self.start
- mall ! Meet(self, colour)
-
- def receive = {
- case Meet(from, otherColour) =>
- colour = complement(otherColour)
- meetings = meetings +1
- from ! Change(colour)
- mall ! Meet(self, colour)
-
- case Change(newColour) =>
- colour = newColour
- meetings = meetings +1
- mall ! Meet(self, colour)
-
- case Exit =>
- colour = FADED
- self.sender.get ! MeetingCount(meetings)
- }
-
- def complement(otherColour: Colour): Colour = colour match {
- case RED => otherColour match {
- case RED => RED
- case YELLOW => BLUE
- case BLUE => YELLOW
- case FADED => FADED
- }
- case YELLOW => otherColour match {
- case RED => BLUE
- case YELLOW => YELLOW
- case BLUE => RED
- case FADED => FADED
- }
- case BLUE => otherColour match {
- case RED => YELLOW
- case YELLOW => RED
- case BLUE => BLUE
- case FADED => FADED
- }
- case FADED => FADED
- }
-
- override def toString = cid + "(" + colour + ")"
- }
-
- class Mall(var n: Int, numChameneos: Int) extends Actor {
- var waitingChameneo: Option[ActorRef] = None
- var sumMeetings = 0
- var numFaded = 0
-
- override def init = {
- for (i <- 0 until numChameneos) actorOf(new Chameneo(self, colours(i % 3), i))
- }
-
- def receive = {
- case MeetingCount(i) =>
- numFaded += 1
- sumMeetings += i
- if (numFaded == numChameneos) {
- Chameneos.end = System.currentTimeMillis
- self.stop
- }
-
- case msg @ Meet(a, c) =>
- if (n > 0) {
- waitingChameneo match {
- case Some(chameneo) =>
- n -= 1
- chameneo ! msg
- waitingChameneo = None
- case None => waitingChameneo = self.sender
- }
- } else {
- waitingChameneo.foreach(_ ! Exit)
- self.sender.get ! Exit
- }
- }
- }
-
- def run {
-// System.setProperty("akka.config", "akka.conf")
- Chameneos.start = System.currentTimeMillis
- actorOf(new Mall(1000000, 4)).start
- Thread.sleep(10000)
- println("Elapsed: " + (end - start))
- }
-
- def main(args : Array[String]): Unit = run
-}
diff --git a/akka-core/src/test/scala/actor/actor/ForwardActorSpec.scala b/akka-core/src/test/scala/actor/actor/ForwardActorSpec.scala
deleted file mode 100644
index e3ab0bded7..0000000000
--- a/akka-core/src/test/scala/actor/actor/ForwardActorSpec.scala
+++ /dev/null
@@ -1,81 +0,0 @@
-package se.scalablesolutions.akka.actor
-
-import java.util.concurrent.{TimeUnit, CountDownLatch}
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import Actor._
-
-object ForwardActorSpec {
- object ForwardState {
- var sender: Option[ActorRef] = None
- }
-
- class ReceiverActor extends Actor {
- val latch = new CountDownLatch(1)
- def receive = {
- case "SendBang" => {
- ForwardState.sender = self.sender
- latch.countDown
- }
- case "SendBangBang" => self.reply("SendBangBang")
- }
- }
-
-
- class ForwardActor extends Actor {
- val receiverActor = actorOf[ReceiverActor]
- receiverActor.start
- def receive = {
- case "SendBang" => receiverActor.forward("SendBang")
- case "SendBangBang" => receiverActor.forward("SendBangBang")
- }
- }
-
- class BangSenderActor extends Actor {
- val forwardActor = actorOf[ForwardActor]
- forwardActor.start
- forwardActor ! "SendBang"
- def receive = {
- case _ => {}
- }
- }
-
- class BangBangSenderActor extends Actor {
- val latch = new CountDownLatch(1)
- val forwardActor = actorOf[ForwardActor]
- forwardActor.start
- (forwardActor !! "SendBangBang") match {
- case Some(_) => latch.countDown
- case None => {}
- }
- def receive = {
- case _ => {}
- }
- }
-}
-
-class ForwardActorSpec extends JUnitSuite {
- import ForwardActorSpec._
-
- @Test
- def shouldForwardActorReferenceWhenInvokingForwardOnBang {
- val senderActor = actorOf[BangSenderActor]
- val latch = senderActor.actor.asInstanceOf[BangSenderActor]
- .forwardActor.actor.asInstanceOf[ForwardActor]
- .receiverActor.actor.asInstanceOf[ReceiverActor]
- .latch
- senderActor.start
- assert(latch.await(1L, TimeUnit.SECONDS))
- assert(ForwardState.sender ne null)
- assert(senderActor.toString === ForwardState.sender.get.toString)
- }
-
- @Test
- def shouldForwardActorReferenceWhenInvokingForwardOnBangBang {
- val senderActor = actorOf[BangBangSenderActor]
- senderActor.start
- val latch = senderActor.actor.asInstanceOf[BangBangSenderActor].latch
- assert(latch.await(1L, TimeUnit.SECONDS))
- }
-}
diff --git a/akka-core/src/test/scala/actor/actor/FsmActorSpec.scala b/akka-core/src/test/scala/actor/actor/FsmActorSpec.scala
deleted file mode 100644
index e4515bd3da..0000000000
--- a/akka-core/src/test/scala/actor/actor/FsmActorSpec.scala
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import org.multiverse.api.latches.StandardLatch
-
-import java.util.concurrent.TimeUnit
-
-object FSMActorSpec {
-
- class Lock(code: String,
- timeout: Int,
- unlockedLatch: StandardLatch,
- lockedLatch: StandardLatch) extends Actor with FSM[CodeState] {
-
- def initialState = State(NextState, locked, CodeState("", code))
-
- def locked: StateFunction = {
- case Event(digit: Char, CodeState(soFar, code)) => {
- soFar + digit match {
- case incomplete if incomplete.length < code.length =>
- State(NextState, locked, CodeState(incomplete, code))
- case codeTry if (codeTry == code) => {
- doUnlock
- State(NextState, open, CodeState("", code), Some(timeout))
- }
- case wrong => {
- log.error("Wrong code %s", wrong)
- State(NextState, locked, CodeState("", code))
- }
- }
- }
- }
-
- def open: StateFunction = {
- case Event(StateTimeout, stateData) => {
- doLock
- State(NextState, locked, stateData)
- }
- }
-
- private def doLock() {
- log.info("Locked")
- lockedLatch.open
- }
-
- private def doUnlock = {
- log.info("Unlocked")
- unlockedLatch.open
- }
- }
-
- case class CodeState(soFar: String, code: String)
-}
-
-class FSMActorSpec extends JUnitSuite {
- import FSMActorSpec._
-
- @Test
- def unlockTheLock = {
- val unlockedLatch = new StandardLatch
- val lockedLatch = new StandardLatch
-
- // lock that locked after being open for 1 sec
- val lock = Actor.actorOf(new Lock("33221", 1000, unlockedLatch, lockedLatch)).start
-
- lock ! '3'
- lock ! '3'
- lock ! '2'
- lock ! '2'
- lock ! '1'
-
- assert(unlockedLatch.tryAwait(1, TimeUnit.SECONDS))
- assert(lockedLatch.tryAwait(2, TimeUnit.SECONDS))
- }
-}
-
diff --git a/akka-core/src/test/scala/actor/actor/ReceiveTimeoutSpec.scala b/akka-core/src/test/scala/actor/actor/ReceiveTimeoutSpec.scala
deleted file mode 100644
index ff43467efc..0000000000
--- a/akka-core/src/test/scala/actor/actor/ReceiveTimeoutSpec.scala
+++ /dev/null
@@ -1,77 +0,0 @@
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import java.util.concurrent.TimeUnit
-import org.multiverse.api.latches.StandardLatch
-import Actor._
-
-class ReceiveTimeoutSpec extends JUnitSuite {
-
- @Test def receiveShouldGetTimeout= {
-
- val timeoutLatch = new StandardLatch
-
- val timeoutActor = actorOf(new Actor {
- self.receiveTimeout = Some(500L)
-
- protected def receive = {
- case ReceiveTimeout => timeoutLatch.open
- }
- }).start
-
- assert(timeoutLatch.tryAwait(3, TimeUnit.SECONDS))
- }
-
- @Test def swappedReceiveShouldAlsoGetTimout = {
- val timeoutLatch = new StandardLatch
-
- val timeoutActor = actorOf(new Actor {
- self.receiveTimeout = Some(500L)
-
- protected def receive = {
- case ReceiveTimeout => timeoutLatch.open
- }
- }).start
-
- // after max 1 second the timeout should already been sent
- assert(timeoutLatch.tryAwait(3, TimeUnit.SECONDS))
-
- val swappedLatch = new StandardLatch
- timeoutActor ! HotSwap(Some{
- case ReceiveTimeout => swappedLatch.open
- })
-
- assert(swappedLatch.tryAwait(3, TimeUnit.SECONDS))
- }
-
- @Test def timeoutShouldBeCancelledAfterRegularReceive = {
-
- val timeoutLatch = new StandardLatch
- case object Tick
- val timeoutActor = actorOf(new Actor {
- self.receiveTimeout = Some(500L)
-
- protected def receive = {
- case Tick => ()
- case ReceiveTimeout => timeoutLatch.open
- }
- }).start
- timeoutActor ! Tick
-
- assert(timeoutLatch.tryAwait(2, TimeUnit.SECONDS) == false)
- }
-
- @Test def timeoutShouldNotBeSentWhenNotSpecified = {
- val timeoutLatch = new StandardLatch
- val timeoutActor = actorOf(new Actor {
-
- protected def receive = {
- case ReceiveTimeout => timeoutLatch.open
- }
- }).start
-
- assert(timeoutLatch.tryAwait(1, TimeUnit.SECONDS) == false)
- }
-}
diff --git a/akka-core/src/test/scala/actor/actor/TransactorSpec.scala b/akka-core/src/test/scala/actor/actor/TransactorSpec.scala
deleted file mode 100644
index dd23a76a88..0000000000
--- a/akka-core/src/test/scala/actor/actor/TransactorSpec.scala
+++ /dev/null
@@ -1,255 +0,0 @@
-package se.scalablesolutions.akka.actor
-
-import java.util.concurrent.{TimeUnit, CountDownLatch}
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import se.scalablesolutions.akka.stm.{Ref, TransactionalMap, TransactionalVector}
-import Actor._
-
-object TransactorSpec {
- case class GetMapState(key: String)
- case object GetVectorState
- case object GetVectorSize
- case object GetRefState
-
- case class SetMapState(key: String, value: String)
- case class SetVectorState(key: String)
- case class SetRefState(key: String)
- case class Success(key: String, value: String)
- case class Failure(key: String, value: String, failer: ActorRef)
-
- case class SetMapStateOneWay(key: String, value: String)
- case class SetVectorStateOneWay(key: String)
- case class SetRefStateOneWay(key: String)
- case class SuccessOneWay(key: String, value: String)
- case class FailureOneWay(key: String, value: String, failer: ActorRef)
-
- case object GetNotifier
-}
-import TransactorSpec._
-
-class StatefulTransactor(expectedInvocationCount: Int) extends Transactor {
- def this() = this(0)
- self.timeout = 5000
-
- val notifier = new CountDownLatch(expectedInvocationCount)
-
- private val mapState = TransactionalMap[String, String]()
- private val vectorState = TransactionalVector[String]()
- private val refState = Ref[String]()
-
- def receive = {
- case GetNotifier =>
- self.reply(notifier)
- case GetMapState(key) =>
- self.reply(mapState.get(key).get)
- notifier.countDown
- case GetVectorSize =>
- self.reply(vectorState.length.asInstanceOf[AnyRef])
- notifier.countDown
- case GetRefState =>
- self.reply(refState.get)
- notifier.countDown
- case SetMapState(key, msg) =>
- mapState.put(key, msg)
- self.reply(msg)
- notifier.countDown
- case SetVectorState(msg) =>
- vectorState.add(msg)
- self.reply(msg)
- notifier.countDown
- case SetRefState(msg) =>
- refState.swap(msg)
- self.reply(msg)
- notifier.countDown
- case Success(key, msg) =>
- mapState.put(key, msg)
- vectorState.add(msg)
- refState.swap(msg)
- self.reply(msg)
- notifier.countDown
- case Failure(key, msg, failer) =>
- mapState.put(key, msg)
- vectorState.add(msg)
- refState.swap(msg)
- failer !! "Failure"
- self.reply(msg)
- notifier.countDown
- case SetMapStateOneWay(key, msg) =>
- mapState.put(key, msg)
- notifier.countDown
- case SetVectorStateOneWay(msg) =>
- vectorState.add(msg)
- notifier.countDown
- case SetRefStateOneWay(msg) =>
- refState.swap(msg)
- notifier.countDown
- case SuccessOneWay(key, msg) =>
- mapState.put(key, msg)
- vectorState.add(msg)
- refState.swap(msg)
- notifier.countDown
- case FailureOneWay(key, msg, failer) =>
- mapState.put(key, msg)
- vectorState.add(msg)
- refState.swap(msg)
- notifier.countDown
- failer ! "Failure"
- }
-}
-
-@serializable
-class FailerTransactor extends Transactor {
-
- def receive = {
- case "Failure" =>
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
-}
-
-class TransactorSpec extends JUnitSuite {
-
- @Test
- def shouldOneWayMapShouldNotRollbackStateForStatefulServerInCaseOfSuccess = {
- val stateful = actorOf(new StatefulTransactor(2))
- stateful.start
- stateful ! SetMapStateOneWay("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init") // set init state
- stateful ! SuccessOneWay("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired
- val notifier = (stateful !! GetNotifier).as[CountDownLatch]
- assert(notifier.get.await(1, TimeUnit.SECONDS))
- assert("new state" === (stateful !! GetMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess")).get)
- }
-
- @Test
- def shouldMapShouldNotRollbackStateForStatefulServerInCaseOfSuccess = {
- val stateful = actorOf[StatefulTransactor]
- stateful.start
- stateful !! SetMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init") // set init state
- stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired
- assert("new state" === (stateful !! GetMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess")).get)
- }
-
- @Test
- def shouldOneWayMapShouldRollbackStateForStatefulServerInCaseOfFailure = {
- val stateful = actorOf(new StatefulTransactor(2))
- stateful.start
- val failer = actorOf[FailerTransactor]
- failer.start
- stateful ! SetMapStateOneWay("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init") // set init state
- stateful ! FailureOneWay("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method
- val notifier = (stateful !! GetNotifier).as[CountDownLatch]
- assert(notifier.get.await(5, TimeUnit.SECONDS))
- assert("init" === (stateful !! GetMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure")).get) // check that state is == init state
- }
-
- @Test
- def shouldMapShouldRollbackStateForStatefulServerInCaseOfFailure = {
- val stateful = actorOf[StatefulTransactor]
- stateful.start
- stateful !! SetMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init") // set init state
- val failer = actorOf[FailerTransactor]
- failer.start
- try {
- stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method
- fail("should have thrown an exception")
- } catch {case e: RuntimeException => {}}
- assert("init" === (stateful !! GetMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure")).get) // check that state is == init state
- }
-
- @Test
- def shouldOneWayVectorShouldNotRollbackStateForStatefulServerInCaseOfSuccess = {
- val stateful = actorOf(new StatefulTransactor(2))
- stateful.start
- stateful ! SetVectorStateOneWay("init") // set init state
- stateful ! SuccessOneWay("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired
- val notifier = (stateful !! GetNotifier).as[CountDownLatch]
- assert(notifier.get.await(1, TimeUnit.SECONDS))
- assert(2 === (stateful !! GetVectorSize).get)
- }
-
- @Test
- def shouldVectorShouldNotRollbackStateForStatefulServerInCaseOfSuccess = {
- val stateful = actorOf[StatefulTransactor]
- stateful.start
- stateful !! SetVectorState("init") // set init state
- stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired
- assert(2 === (stateful !! GetVectorSize).get)
- }
-
- @Test
- def shouldOneWayVectorShouldRollbackStateForStatefulServerInCaseOfFailure = {
- val stateful = actorOf(new StatefulTransactor(2))
- stateful.start
- stateful ! SetVectorStateOneWay("init") // set init state
- Thread.sleep(1000)
- val failer = actorOf[FailerTransactor]
- failer.start
- stateful ! FailureOneWay("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method
- val notifier = (stateful !! GetNotifier).as[CountDownLatch]
- assert(notifier.get.await(1, TimeUnit.SECONDS))
- assert(1 === (stateful !! GetVectorSize).get)
- }
-
- @Test
- def shouldVectorShouldRollbackStateForStatefulServerInCaseOfFailure = {
- val stateful = actorOf[StatefulTransactor]
- stateful.start
- stateful !! SetVectorState("init") // set init state
- val failer = actorOf[FailerTransactor]
- failer.start
- try {
- stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method
- fail("should have thrown an exception")
- } catch {case e: RuntimeException => {}}
- assert(1 === (stateful !! GetVectorSize).get)
- }
-
- @Test
- def shouldOneWayRefShouldNotRollbackStateForStatefulServerInCaseOfSuccess = {
- val stateful = actorOf(new StatefulTransactor(2))
- stateful.start
- stateful ! SetRefStateOneWay("init") // set init state
- stateful ! SuccessOneWay("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired
- val notifier = (stateful !! GetNotifier).as[CountDownLatch]
- assert(notifier.get.await(1, TimeUnit.SECONDS))
- assert("new state" === (stateful !! GetRefState).get)
- }
-
- @Test
- def shouldRefShouldNotRollbackStateForStatefulServerInCaseOfSuccess = {
- val stateful = actorOf[StatefulTransactor]
- stateful.start
- stateful !! SetRefState("init") // set init state
- stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired
- assert("new state" === (stateful !! GetRefState).get)
- }
-
- @Test
- def shouldOneWayRefShouldRollbackStateForStatefulServerInCaseOfFailure = {
- val stateful = actorOf(new StatefulTransactor(2))
- stateful.start
- stateful ! SetRefStateOneWay("init") // set init state
- Thread.sleep(1000)
- val failer = actorOf[FailerTransactor]
- failer.start
- stateful ! FailureOneWay("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method
- val notifier = (stateful !! GetNotifier).as[CountDownLatch]
- assert(notifier.get.await(1, TimeUnit.SECONDS))
- assert("init" === (stateful !! (GetRefState, 1000000)).get) // check that state is == init state
- }
-
- @Test
- def shouldRefShouldRollbackStateForStatefulServerInCaseOfFailure = {
- val stateful = actorOf[StatefulTransactor]
- stateful.start
- stateful !! SetRefState("init") // set init state
- val failer = actorOf[FailerTransactor]
- failer.start
- try {
- stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method
- fail("should have thrown an exception")
- } catch {case e: RuntimeException => {}}
- assert("init" === (stateful !! GetRefState).get) // check that state is == init state
- }
-}
diff --git a/akka-core/src/test/scala/actor/supervisor/RestartStrategySpec.scala b/akka-core/src/test/scala/actor/supervisor/RestartStrategySpec.scala
deleted file mode 100644
index 5023c756e1..0000000000
--- a/akka-core/src/test/scala/actor/supervisor/RestartStrategySpec.scala
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import Actor._
-import se.scalablesolutions.akka.config.OneForOneStrategy
-import java.util.concurrent.{TimeUnit, CountDownLatch}
-import se.scalablesolutions.akka.config.ScalaConfig.{Permanent, LifeCycle}
-import org.multiverse.api.latches.StandardLatch
-
-class RestartStrategySpec extends JUnitSuite {
-
- object Ping
- object Crash
-
- @Test
- def slaveShouldStayDeadAfterMaxRestarts = {
-
- val boss = actorOf(new Actor{
- self.trapExit = List(classOf[Throwable])
- self.faultHandler = Some(OneForOneStrategy(1, 1000))
- protected def receive = { case _ => () }
- }).start
-
- val restartLatch = new StandardLatch
- val secondRestartLatch = new StandardLatch
- val countDownLatch = new CountDownLatch(2)
-
-
- val slave = actorOf(new Actor{
-
- protected def receive = {
- case Ping => countDownLatch.countDown
- case Crash => throw new Exception("Crashing...")
- }
- override def postRestart(reason: Throwable) = {
- restartLatch.open
- }
-
- override def shutdown = {
- if (restartLatch.isOpen) {
- secondRestartLatch.open
- }
- }
- })
- boss.startLink(slave)
-
- slave ! Ping
- slave ! Crash
- slave ! Ping
-
- // test restart and post restart ping
- assert(restartLatch.tryAwait(1, TimeUnit.SECONDS))
- assert(countDownLatch.await(1, TimeUnit.SECONDS))
-
- // now crash again... should not restart
- slave ! Crash
-
- assert(secondRestartLatch.tryAwait(1, TimeUnit.SECONDS))
- val exceptionLatch = new StandardLatch
- try {
- slave ! Ping // this should fail
- } catch {
- case e => exceptionLatch.open // expected here
- }
- assert(exceptionLatch.tryAwait(1, TimeUnit.SECONDS))
- }
-}
-
diff --git a/akka-core/src/test/scala/actor/supervisor/SupervisorHierarchySpec.scala b/akka-core/src/test/scala/actor/supervisor/SupervisorHierarchySpec.scala
deleted file mode 100644
index ffc9dbd860..0000000000
--- a/akka-core/src/test/scala/actor/supervisor/SupervisorHierarchySpec.scala
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import Actor._
-import se.scalablesolutions.akka.config.OneForOneStrategy
-
-import java.util.concurrent.{TimeUnit, CountDownLatch}
-
-object SupervisorHierarchySpec {
- class FireWorkerException(msg: String) extends Exception(msg)
-
- class CountDownActor(countDown: CountDownLatch) extends Actor {
- protected def receive = { case _ => () }
- override def postRestart(reason: Throwable) = countDown.countDown
- }
-
- class CrasherActor extends Actor {
- protected def receive = { case _ => () }
- }
-}
-
-class SupervisorHierarchySpec extends JUnitSuite {
- import SupervisorHierarchySpec._
-
- @Test
- def killWorkerShouldRestartMangerAndOtherWorkers = {
- val countDown = new CountDownLatch(4)
-
- val workerOne = actorOf(new CountDownActor(countDown))
- val workerTwo = actorOf(new CountDownActor(countDown))
- val workerThree = actorOf(new CountDownActor(countDown))
-
- val boss = actorOf(new Actor{
- self.trapExit = List(classOf[Throwable])
- self.faultHandler = Some(OneForOneStrategy(5, 1000))
-
- protected def receive = { case _ => () }
- }).start
-
- val manager = actorOf(new CountDownActor(countDown))
- boss.startLink(manager)
-
- manager.startLink(workerOne)
- manager.startLink(workerTwo)
- manager.startLink(workerThree)
-
- workerOne ! Exit(workerOne, new FireWorkerException("Fire the worker!"))
-
- // manager + all workers should be restarted by only killing a worker
- // manager doesn't trap exits, so boss will restart manager
-
- assert(countDown.await(2, TimeUnit.SECONDS))
- }
-
- @Test
- def supervisorShouldReceiveNotificationMessageWhenMaximumNumberOfRestartsWithinTimeRangeIsReached = {
- val countDown = new CountDownLatch(2)
- val crasher = actorOf(new CountDownActor(countDown))
- val boss = actorOf(new Actor{
- self.trapExit = List(classOf[Throwable])
- self.faultHandler = Some(OneForOneStrategy(1, 5000))
- protected def receive = {
- case MaximumNumberOfRestartsWithinTimeRangeReached(_, _, _, _) =>
- countDown.countDown
- }
- }).start
- boss.startLink(crasher)
-
- crasher ! Exit(crasher, new FireWorkerException("Fire the worker!"))
- crasher ! Exit(crasher, new FireWorkerException("Fire the worker!"))
-
- assert(countDown.await(2, TimeUnit.SECONDS))
- }
-}
-
diff --git a/akka-core/src/test/scala/actor/supervisor/SupervisorSpec.scala b/akka-core/src/test/scala/actor/supervisor/SupervisorSpec.scala
deleted file mode 100644
index 01eb9cb006..0000000000
--- a/akka-core/src/test/scala/actor/supervisor/SupervisorSpec.scala
+++ /dev/null
@@ -1,605 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import se.scalablesolutions.akka.config.ScalaConfig._
-import se.scalablesolutions.akka.config.OneForOneStrategy
-import se.scalablesolutions.akka.{OneWay, Die, Ping}
-import Actor._
-
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-import java.util.concurrent.{TimeUnit, LinkedBlockingQueue}
-
-object SupervisorSpec {
- var messageLog = new LinkedBlockingQueue[String]
- var oneWayLog = new LinkedBlockingQueue[String]
-
- def clearMessageLogs {
- messageLog.clear
- oneWayLog.clear
- }
-
- class PingPong1Actor extends Actor {
- import self._
- //dispatcher = Dispatchers.newThreadBasedDispatcher(self)
- def receive = {
- case Ping =>
- messageLog.put("ping")
- reply("pong")
-
- case OneWay =>
- oneWayLog.put("oneway")
-
- case Die =>
- println("******************** GOT DIE 1")
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
- override def postRestart(reason: Throwable) {
- println("******************** restart 1")
- messageLog.put(reason.getMessage)
- }
- }
-
- class PingPong2Actor extends Actor {
- import self._
- def receive = {
- case Ping =>
- messageLog.put("ping")
- reply("pong")
- case Die =>
- println("******************** GOT DIE 2")
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
- override def postRestart(reason: Throwable) {
- println("******************** restart 2")
- messageLog.put(reason.getMessage)
- }
- }
-
- class PingPong3Actor extends Actor {
- import self._
- def receive = {
- case Ping =>
- messageLog.put("ping")
- reply("pong")
- case Die =>
- println("******************** GOT DIE 3")
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
-
- override def postRestart(reason: Throwable) {
- println("******************** restart 3")
- messageLog.put(reason.getMessage)
- }
- }
-
- class TemporaryActor extends Actor {
- import self._
- lifeCycle = Some(LifeCycle(Temporary))
- def receive = {
- case Ping =>
- messageLog.put("ping")
- reply("pong")
- case Die =>
- println("******************** GOT DIE 3")
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
-
- override def postRestart(reason: Throwable) {
- println("******************** restart temporary")
- messageLog.put(reason.getMessage)
- }
- }
-
- class Master extends Actor {
- self.trapExit = classOf[Exception] :: Nil
- self.faultHandler = Some(OneForOneStrategy(5, 1000))
- val temp = self.spawnLink[TemporaryActor]
- override def receive = {
- case Die => temp !! (Die, 5000)
- }
- }
-}
-
-/**
- * @author Jonas Bonér
- */
-class SupervisorSpec extends JUnitSuite {
- import SupervisorSpec._
-
- var pingpong1: ActorRef = _
- var pingpong2: ActorRef = _
- var pingpong3: ActorRef = _
- var temporaryActor: ActorRef = _
-
-/*
- @Test def shouldStartServer = {
- clearMessageLogs
- val sup = getSingleActorAllForOneSupervisor
- sup.start
-
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
- }
-*/
- @Test def shoulNotRestartProgrammaticallyLinkedTemporaryActor = {
- clearMessageLogs
- val master = actorOf[Master].start
-
- intercept[RuntimeException] {
- master !! (Die, 5000)
- }
-
- Thread.sleep(1000)
- assert(messageLog.size === 0)
- }
-
- @Test def shoulNotRestartTemporaryActor = {
- clearMessageLogs
- val sup = getTemporaryActorAllForOneSupervisor
-
- intercept[RuntimeException] {
- temporaryActor !! (Die, 5000)
- }
-
- Thread.sleep(1000)
- assert(messageLog.size === 0)
- }
-
- @Test def shouldStartServerForNestedSupervisorHierarchy = {
- clearMessageLogs
- val sup = getNestedSupervisorsAllForOneConf
- sup.start
-
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
- }
-
- @Test def shouldKillSingleActorOneForOne = {
- clearMessageLogs
- val sup = getSingleActorOneForOneSupervisor
-
- intercept[RuntimeException] {
- pingpong1 !! (Die, 5000)
- }
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldCallKillCallSingleActorOneForOne = {
- clearMessageLogs
- val sup = getSingleActorOneForOneSupervisor
-
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- intercept[RuntimeException] {
- pingpong1 !! (Die, 5000)
- }
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldKillSingleActorAllForOne = {
- clearMessageLogs
- val sup = getSingleActorAllForOneSupervisor
-
- intercept[RuntimeException] {
- pingpong1 !! (Die, 5000)
- }
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldCallKillCallSingleActorAllForOne = {
- clearMessageLogs
- val sup = getSingleActorAllForOneSupervisor
-
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- intercept[RuntimeException] {
- pingpong1 !! (Die, 5000)
- }
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldKillMultipleActorsOneForOne1 = {
- clearMessageLogs
- val sup = getMultipleActorsOneForOneConf
-
- intercept[RuntimeException] {
- pingpong1 !! (Die, 5000)
- }
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldKillMultipleActorsOneForOne2 = {
- clearMessageLogs
- val sup = getMultipleActorsOneForOneConf
-
- intercept[RuntimeException] {
- pingpong3 !! (Die, 5000)
- }
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldKillCallMultipleActorsOneForOne = {
- clearMessageLogs
- val sup = getMultipleActorsOneForOneConf
-
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong2 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong3 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- intercept[RuntimeException] {
- pingpong2 !! (Die, 5000)
- }
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong2 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong3 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldKillMultipleActorsAllForOne = {
- clearMessageLogs
- val sup = getMultipleActorsAllForOneConf
-
- intercept[RuntimeException] {
- pingpong2 !! (Die, 5000)
- }
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldCallKillCallMultipleActorsAllForOne = {
- clearMessageLogs
- val sup = getMultipleActorsAllForOneConf
-
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong2 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong3 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- intercept[RuntimeException] {
- pingpong2 !! (Die, 5000)
- }
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong2 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong3 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldOneWayKillSingleActorOneForOne = {
- clearMessageLogs
- val sup = getSingleActorOneForOneSupervisor
-
- pingpong1 ! Die
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldOneWayCallKillCallSingleActorOneForOne = {
- clearMessageLogs
- val sup = getSingleActorOneForOneSupervisor
-
- pingpong1 ! OneWay
-
- expect("oneway") {
- oneWayLog.poll(5, TimeUnit.SECONDS)
- }
- pingpong1 ! Die
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- pingpong1 ! OneWay
-
- expect("oneway") {
- oneWayLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- @Test def shouldRestartKilledActorsForNestedSupervisorHierarchy = {
- clearMessageLogs
- val sup = getNestedSupervisorsAllForOneConf
-
-
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong2 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong3 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- intercept[RuntimeException] {
- pingpong2 !! (Die, 5000)
- }
-
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5 , TimeUnit.SECONDS)
- }
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("Expected exception; to test fault-tolerance") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("pong") {
- (pingpong1 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong2 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("pong") {
- (pingpong3 !! (Ping, 5000)).getOrElse("nil")
- }
-
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- expect("ping") {
- messageLog.poll(5, TimeUnit.SECONDS)
- }
- }
-
- // =============================================
- // Create some supervisors with different configurations
-
- def getTemporaryActorAllForOneSupervisor: Supervisor = {
- temporaryActor = actorOf[TemporaryActor].start
-
- Supervisor(
- SupervisorConfig(
- RestartStrategy(AllForOne, 3, 5000, List(classOf[Exception])),
- Supervise(
- temporaryActor,
- LifeCycle(Temporary))
- :: Nil))
- }
-
- def getSingleActorAllForOneSupervisor: Supervisor = {
- pingpong1 = actorOf[PingPong1Actor].start
-
- Supervisor(
- SupervisorConfig(
- RestartStrategy(AllForOne, 3, 5000, List(classOf[Exception])),
- Supervise(
- pingpong1,
- LifeCycle(Permanent))
- :: Nil))
- }
-
- def getSingleActorOneForOneSupervisor: Supervisor = {
- pingpong1 = actorOf[PingPong1Actor].start
-
- Supervisor(
- SupervisorConfig(
- RestartStrategy(OneForOne, 3, 5000, List(classOf[Exception])),
- Supervise(
- pingpong1,
- LifeCycle(Permanent))
- :: Nil))
- }
-
- def getMultipleActorsAllForOneConf: Supervisor = {
- pingpong1 = actorOf[PingPong1Actor].start
- pingpong2 = actorOf[PingPong2Actor].start
- pingpong3 = actorOf[PingPong3Actor].start
-
- Supervisor(
- SupervisorConfig(
- RestartStrategy(AllForOne, 3, 5000, List(classOf[Exception])),
- Supervise(
- pingpong1,
- LifeCycle(Permanent))
- ::
- Supervise(
- pingpong2,
- LifeCycle(Permanent))
- ::
- Supervise(
- pingpong3,
- LifeCycle(Permanent))
- :: Nil))
- }
-
- def getMultipleActorsOneForOneConf: Supervisor = {
- pingpong1 = actorOf[PingPong1Actor].start
- pingpong2 = actorOf[PingPong2Actor].start
- pingpong3 = actorOf[PingPong3Actor].start
-
- Supervisor(
- SupervisorConfig(
- RestartStrategy(OneForOne, 3, 5000, List(classOf[Exception])),
- Supervise(
- pingpong1,
- LifeCycle(Permanent))
- ::
- Supervise(
- pingpong2,
- LifeCycle(Permanent))
- ::
- Supervise(
- pingpong3,
- LifeCycle(Permanent))
- :: Nil))
- }
-
- def getNestedSupervisorsAllForOneConf: Supervisor = {
- pingpong1 = actorOf[PingPong1Actor].start
- pingpong2 = actorOf[PingPong2Actor].start
- pingpong3 = actorOf[PingPong3Actor].start
-
- Supervisor(
- SupervisorConfig(
- RestartStrategy(AllForOne, 3, 5000, List(classOf[Exception])),
- Supervise(
- pingpong1,
- LifeCycle(Permanent))
- ::
- SupervisorConfig(
- RestartStrategy(AllForOne, 3, 5000, Nil),
- Supervise(
- pingpong2,
- LifeCycle(Permanent))
- ::
- Supervise(
- pingpong3,
- LifeCycle(Permanent))
- :: Nil)
- :: Nil))
- }
-}
diff --git a/akka-core/src/test/scala/dispatch/DispatchersSpec.scala b/akka-core/src/test/scala/dispatch/DispatchersSpec.scala
deleted file mode 100644
index bb548b9251..0000000000
--- a/akka-core/src/test/scala/dispatch/DispatchersSpec.scala
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-package se.scalablesolutions.akka.actor.dispatch
-
-import java.util.concurrent.{CountDownLatch, TimeUnit}
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import net.lag.configgy.Config
-import scala.reflect.{Manifest}
-import se.scalablesolutions.akka.dispatch._
-
-object DispatchersSpec {
- import Dispatchers._
- //
- val tipe = "type"
- val keepalivems = "keep-alive-ms"
- val corepoolsizefactor = "core-pool-size-factor"
- val maxpoolsizefactor = "max-pool-size-factor"
- val executorbounds = "executor-bounds"
- val allowcoretimeout = "allow-core-timeout"
- val rejectionpolicy = "rejection-policy" // abort, caller-runs, discard-oldest, discard
- val throughput = "throughput" // Throughput for ExecutorBasedEventDrivenDispatcher
- val aggregate = "aggregate" // Aggregate on/off for HawtDispatchers
-
- def instance(dispatcher: MessageDispatcher): (MessageDispatcher) => Boolean = _ == dispatcher
- def ofType[T <: MessageDispatcher : Manifest]: (MessageDispatcher) => Boolean = _.getClass == manifest[T].erasure
-
- def typesAndValidators: Map[String,(MessageDispatcher) => Boolean] = Map(
- "ReactorBasedSingleThreadEventDriven" -> ofType[ReactorBasedSingleThreadEventDrivenDispatcher],
- "ExecutorBasedEventDrivenWorkStealing" -> ofType[ExecutorBasedEventDrivenWorkStealingDispatcher],
- "ExecutorBasedEventDriven" -> ofType[ExecutorBasedEventDrivenDispatcher],
- "ReactorBasedThreadPoolEventDriven" -> ofType[ReactorBasedThreadPoolEventDrivenDispatcher],
- "Hawt" -> ofType[HawtDispatcher],
- "GlobalReactorBasedSingleThreadEventDriven" -> instance(globalReactorBasedSingleThreadEventDrivenDispatcher),
- "GlobalReactorBasedThreadPoolEventDriven" -> instance(globalReactorBasedThreadPoolEventDrivenDispatcher),
- "GlobalExecutorBasedEventDriven" -> instance(globalExecutorBasedEventDrivenDispatcher),
- "GlobalHawt" -> instance(globalHawtDispatcher)
- )
-
- def validTypes = typesAndValidators.keys.toList
-
- lazy val allDispatchers: Map[String,Option[MessageDispatcher]] = {
- validTypes.map(t => (t,from(Config.fromMap(Map(tipe -> t))))).toMap
- }
-}
-
-class DispatchersSpec extends JUnitSuite {
-
- import Dispatchers._
- import DispatchersSpec._
-
- @Test def shouldYieldNoneIfTypeIsMissing {
- assert(from(Config.fromMap(Map())) === None)
- }
-
- @Test(expected = classOf[IllegalArgumentException])
- def shouldThrowIllegalArgumentExceptionIfTypeDoesntExist {
- from(Config.fromMap(Map(tipe -> "typedoesntexist")))
- }
-
- @Test def shouldGetTheCorrectTypesOfDispatchers {
- //It can create/obtain all defined types
- assert(allDispatchers.values.forall(_.isDefined))
- //All created/obtained dispatchers are of the expeced type/instance
- assert(typesAndValidators.forall( tuple => tuple._2(allDispatchers(tuple._1).get) ))
- }
-
- @Test def defaultingToDefaultWhileLoadingTheDefaultShouldWork {
- assert(from(Config.fromMap(Map())).getOrElse(defaultGlobalDispatcher) == defaultGlobalDispatcher)
- }
-
-}
diff --git a/akka-core/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala b/akka-core/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala
deleted file mode 100644
index 9cdf43682e..0000000000
--- a/akka-core/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala
+++ /dev/null
@@ -1,68 +0,0 @@
-package se.scalablesolutions.akka.actor.dispatch
-
-import java.util.concurrent.{CountDownLatch, TimeUnit}
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-import se.scalablesolutions.akka.dispatch.Dispatchers
-import se.scalablesolutions.akka.actor.Actor
-import Actor._
-
-object ExecutorBasedEventDrivenDispatcherActorSpec {
- class TestActor extends Actor {
- self.dispatcher = Dispatchers.newExecutorBasedEventDrivenDispatcher(self.uuid)
- def receive = {
- case "Hello" =>
- self.reply("World")
- case "Failure" =>
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
- }
-
- object OneWayTestActor {
- val oneWay = new CountDownLatch(1)
- }
- class OneWayTestActor extends Actor {
- self.dispatcher = Dispatchers.newExecutorBasedEventDrivenDispatcher(self.uuid)
- def receive = {
- case "OneWay" => OneWayTestActor.oneWay.countDown
- }
- }
-}
-class ExecutorBasedEventDrivenDispatcherActorSpec extends JUnitSuite {
- import ExecutorBasedEventDrivenDispatcherActorSpec._
-
- private val unit = TimeUnit.MILLISECONDS
-
- @Test def shouldSendOneWay = {
- val actor = actorOf[OneWayTestActor].start
- val result = actor ! "OneWay"
- assert(OneWayTestActor.oneWay.await(1, TimeUnit.SECONDS))
- actor.stop
- }
-
- @Test def shouldSendReplySync = {
- val actor = actorOf[TestActor].start
- val result = (actor !! ("Hello", 10000)).as[String]
- assert("World" === result.get)
- actor.stop
- }
-
- @Test def shouldSendReplyAsync = {
- val actor = actorOf[TestActor].start
- val result = actor !! "Hello"
- assert("World" === result.get.asInstanceOf[String])
- actor.stop
- }
-
- @Test def shouldSendReceiveException = {
- val actor = actorOf[TestActor].start
- try {
- actor !! "Failure"
- fail("Should have thrown an exception")
- } catch {
- case e =>
- assert("Expected exception; to test fault-tolerance" === e.getMessage())
- }
- actor.stop
- }
-}
diff --git a/akka-core/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorsSpec.scala b/akka-core/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorsSpec.scala
deleted file mode 100644
index fc8f1aa37f..0000000000
--- a/akka-core/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorsSpec.scala
+++ /dev/null
@@ -1,61 +0,0 @@
-package se.scalablesolutions.akka.actor.dispatch
-
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-import org.scalatest.matchers.MustMatchers
-import java.util.concurrent.CountDownLatch
-import se.scalablesolutions.akka.actor.Actor
-import Actor._
-
-/**
- * Tests the behaviour of the executor based event driven dispatcher when multiple actors are being dispatched on it.
- *
- * @author Jan Van Besien
- */
-class ExecutorBasedEventDrivenDispatcherActorsSpec extends JUnitSuite with MustMatchers {
- class SlowActor(finishedCounter: CountDownLatch) extends Actor {
- self.id = "SlowActor"
-
- def receive = {
- case x: Int => {
- Thread.sleep(50) // slow actor
- finishedCounter.countDown
- }
- }
- }
-
- class FastActor(finishedCounter: CountDownLatch) extends Actor {
- self.id = "FastActor"
-
- def receive = {
- case x: Int => {
- finishedCounter.countDown
- }
- }
- }
-
- @Test def slowActorShouldntBlockFastActor {
- val sFinished = new CountDownLatch(50)
- val fFinished = new CountDownLatch(10)
- val s = actorOf(new SlowActor(sFinished)).start
- val f = actorOf(new FastActor(fFinished)).start
-
- // send a lot of stuff to s
- for (i <- 1 to 50) {
- s ! i
- }
-
- // send some messages to f
- for (i <- 1 to 10) {
- f ! i
- }
-
- // now assert that f is finished while s is still busy
- fFinished.await
- assert(sFinished.getCount > 0)
- sFinished.await
- assert(sFinished.getCount === 0)
- f.stop
- s.stop
- }
-}
diff --git a/akka-core/src/test/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcherSpec.scala b/akka-core/src/test/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcherSpec.scala
deleted file mode 100644
index cde57a0544..0000000000
--- a/akka-core/src/test/scala/dispatch/ExecutorBasedEventDrivenWorkStealingDispatcherSpec.scala
+++ /dev/null
@@ -1,107 +0,0 @@
-package se.scalablesolutions.akka.actor.dispatch
-
-import org.scalatest.matchers.MustMatchers
-import org.scalatest.junit.JUnitSuite
-
-import org.junit.Test
-
-import se.scalablesolutions.akka.dispatch.Dispatchers
-
-import java.util.concurrent.{TimeUnit, CountDownLatch}
-import se.scalablesolutions.akka.actor.{IllegalActorStateException, Actor}
-import Actor._
-
-object ExecutorBasedEventDrivenWorkStealingDispatcherSpec {
- val delayableActorDispatcher = Dispatchers.newExecutorBasedEventDrivenWorkStealingDispatcher("pooled-dispatcher")
- val sharedActorDispatcher = Dispatchers.newExecutorBasedEventDrivenWorkStealingDispatcher("pooled-dispatcher")
- val parentActorDispatcher = Dispatchers.newExecutorBasedEventDrivenWorkStealingDispatcher("pooled-dispatcher")
-
- class DelayableActor(name: String, delay: Int, finishedCounter: CountDownLatch) extends Actor {
- self.dispatcher = delayableActorDispatcher
- var invocationCount = 0
- self.id = name
-
- def receive = {
- case x: Int => {
- Thread.sleep(delay)
- invocationCount += 1
- finishedCounter.countDown
- }
- }
- }
-
- class FirstActor extends Actor {
- self.dispatcher = sharedActorDispatcher
- def receive = {case _ => {}}
- }
-
- class SecondActor extends Actor {
- self.dispatcher = sharedActorDispatcher
- def receive = {case _ => {}}
- }
-
- class ParentActor extends Actor {
- self.dispatcher = parentActorDispatcher
- def receive = {case _ => {}}
- }
-
- class ChildActor extends ParentActor {
- }
-}
-
-/**
- * @author Jan Van Besien
- */
-class ExecutorBasedEventDrivenWorkStealingDispatcherSpec extends JUnitSuite with MustMatchers {
- import ExecutorBasedEventDrivenWorkStealingDispatcherSpec._
-
- @Test def fastActorShouldStealWorkFromSlowActor {
- val finishedCounter = new CountDownLatch(110)
-
- val slow = actorOf(new DelayableActor("slow", 50, finishedCounter)).start
- val fast = actorOf(new DelayableActor("fast", 10, finishedCounter)).start
-
- for (i <- 1 to 100) {
- // send most work to slow actor
- if (i % 20 == 0)
- fast ! i
- else
- slow ! i
- }
-
- // now send some messages to actors to keep the dispatcher dispatching messages
- for (i <- 1 to 10) {
- Thread.sleep(150)
- if (i % 2 == 0)
- fast ! i
- else
- slow ! i
- }
-
- finishedCounter.await(5, TimeUnit.SECONDS)
- fast.actor.asInstanceOf[DelayableActor].invocationCount must be >
- (slow.actor.asInstanceOf[DelayableActor].invocationCount)
- slow.stop
- fast.stop
- }
-
- @Test def canNotUseActorsOfDifferentTypesInSameDispatcher(): Unit = {
- val first = actorOf[FirstActor]
- val second = actorOf[SecondActor]
-
- first.start
- intercept[IllegalActorStateException] {
- second.start
- }
- }
-
- @Test def canNotUseActorsOfDifferentSubTypesInSameDispatcher(): Unit = {
- val parent = actorOf[ParentActor]
- val child = actorOf[ChildActor]
-
- parent.start
- intercept[IllegalActorStateException] {
- child.start
- }
- }
-}
diff --git a/akka-core/src/test/scala/dispatch/FutureSpec.scala b/akka-core/src/test/scala/dispatch/FutureSpec.scala
deleted file mode 100644
index f740763fdf..0000000000
--- a/akka-core/src/test/scala/dispatch/FutureSpec.scala
+++ /dev/null
@@ -1,106 +0,0 @@
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-import se.scalablesolutions.akka.dispatch.Futures
-import Actor._
-
-object FutureSpec {
- class TestActor extends Actor {
- def receive = {
- case "Hello" =>
- self.reply("World")
- case "NoReply" => {}
- case "Failure" =>
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
- }
-}
-
-class FutureSpec extends JUnitSuite {
- import FutureSpec._
-
- @Test def shouldActorReplyResultThroughExplicitFuture {
- val actor = actorOf[TestActor]
- actor.start
- val future = actor !!! "Hello"
- future.await
- assert(future.result.isDefined)
- assert("World" === future.result.get)
- actor.stop
- }
-
- @Test def shouldActorReplyExceptionThroughExplicitFuture {
- val actor = actorOf[TestActor]
- actor.start
- val future = actor !!! "Failure"
- future.await
- assert(future.exception.isDefined)
- assert("Expected exception; to test fault-tolerance" === future.exception.get.getMessage)
- actor.stop
- }
-
- /*
- // FIXME: implement Futures.awaitEither, and uncomment these two tests
- @Test def shouldFutureAwaitEitherLeft = {
- val actor1 = actorOf[TestActor].start
- val actor2 = actorOf[TestActor].start
- val future1 = actor1 !!! "Hello"
- val future2 = actor2 !!! "NoReply"
- val result = Futures.awaitEither(future1, future2)
- assert(result.isDefined)
- assert("World" === result.get)
- actor1.stop
- actor2.stop
- }
-
- @Test def shouldFutureAwaitEitherRight = {
- val actor1 = actorOf[TestActor].start
- val actor2 = actorOf[TestActor].start
- val future1 = actor1 !!! "NoReply"
- val future2 = actor2 !!! "Hello"
- val result = Futures.awaitEither(future1, future2)
- assert(result.isDefined)
- assert("World" === result.get)
- actor1.stop
- actor2.stop
- }
- */
- @Test def shouldFutureAwaitOneLeft = {
- val actor1 = actorOf[TestActor].start
- val actor2 = actorOf[TestActor].start
- val future1 = actor1 !!! "NoReply"
- val future2 = actor2 !!! "Hello"
- val result = Futures.awaitOne(List(future1, future2))
- assert(result.result.isDefined)
- assert("World" === result.result.get)
- actor1.stop
- actor2.stop
- }
-
- @Test def shouldFutureAwaitOneRight = {
- val actor1 = actorOf[TestActor].start
- val actor2 = actorOf[TestActor].start
- val future1 = actor1 !!! "Hello"
- val future2 = actor2 !!! "NoReply"
- val result = Futures.awaitOne(List(future1, future2))
- assert(result.result.isDefined)
- assert("World" === result.result.get)
- actor1.stop
- actor2.stop
- }
-
- @Test def shouldFutureAwaitAll = {
- val actor1 = actorOf[TestActor].start
- val actor2 = actorOf[TestActor].start
- val future1 = actor1 !!! "Hello"
- val future2 = actor2 !!! "Hello"
- Futures.awaitAll(List(future1, future2))
- assert(future1.result.isDefined)
- assert("World" === future1.result.get)
- assert(future2.result.isDefined)
- assert("World" === future2.result.get)
- actor1.stop
- actor2.stop
- }
-}
diff --git a/akka-core/src/test/scala/dispatch/HawtDispatcherActorSpec.scala b/akka-core/src/test/scala/dispatch/HawtDispatcherActorSpec.scala
deleted file mode 100644
index 2c45f3388c..0000000000
--- a/akka-core/src/test/scala/dispatch/HawtDispatcherActorSpec.scala
+++ /dev/null
@@ -1,71 +0,0 @@
-package se.scalablesolutions.akka.actor.dispatch
-
-import java.util.concurrent.{CountDownLatch, TimeUnit}
-
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import se.scalablesolutions.akka.dispatch.{HawtDispatcher, Dispatchers}
-import se.scalablesolutions.akka.actor.Actor
-import Actor._
-
-object HawtDispatcherActorSpec {
- class TestActor extends Actor {
- self.dispatcher = new HawtDispatcher()
- def receive = {
- case "Hello" =>
- self.reply("World")
- case "Failure" =>
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
- }
-
- object OneWayTestActor {
- val oneWay = new CountDownLatch(1)
- }
- class OneWayTestActor extends Actor {
- self.dispatcher = new HawtDispatcher()
- def receive = {
- case "OneWay" => OneWayTestActor.oneWay.countDown
- }
- }
-}
-
-class HawtDispatcherActorSpec extends JUnitSuite {
- import HawtDispatcherActorSpec._
-
- private val unit = TimeUnit.MILLISECONDS
-
- @Test def shouldSendOneWay = {
- val actor = actorOf[OneWayTestActor].start
- val result = actor ! "OneWay"
- assert(OneWayTestActor.oneWay.await(1, TimeUnit.SECONDS))
- actor.stop
- }
-
- @Test def shouldSendReplySync = {
- val actor = actorOf[TestActor].start
- val result = (actor !! ("Hello", 10000)).as[String]
- assert("World" === result.get)
- actor.stop
- }
-
- @Test def shouldSendReplyAsync = {
- val actor = actorOf[TestActor].start
- val result = actor !! "Hello"
- assert("World" === result.get.asInstanceOf[String])
- actor.stop
- }
-
- @Test def shouldSendReceiveException = {
- val actor = actorOf[TestActor].start
- try {
- actor !! "Failure"
- fail("Should have thrown an exception")
- } catch {
- case e =>
- assert("Expected exception; to test fault-tolerance" === e.getMessage())
- }
- actor.stop
- }
-}
diff --git a/akka-core/src/test/scala/dispatch/HawtDispatcherEchoServer.scala b/akka-core/src/test/scala/dispatch/HawtDispatcherEchoServer.scala
deleted file mode 100644
index 97f2e0df9d..0000000000
--- a/akka-core/src/test/scala/dispatch/HawtDispatcherEchoServer.scala
+++ /dev/null
@@ -1,207 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor.dispatch
-
-import scala.collection.mutable.ListBuffer
-
-import java.util.concurrent.TimeUnit
-import java.net.InetSocketAddress
-import java.io.IOException
-import java.nio.ByteBuffer
-import java.nio.channels.{SocketChannel, SelectionKey, ServerSocketChannel}
-
-import se.scalablesolutions.akka.actor._
-import se.scalablesolutions.akka.actor.Actor._
-import se.scalablesolutions.akka.dispatch.HawtDispatcher
-
-import org.fusesource.hawtdispatch.DispatchSource
-import org.fusesource.hawtdispatch.ScalaDispatch._
-
-/**
- * This is an example of how to crate an Akka actor based TCP echo server using
- * the HawtDispatch dispatcher and NIO event sources.
- */
-object HawtDispatcherEchoServer {
-
- private val hawt = new HawtDispatcher
- var port=4444;
- var useReactorPattern=true
-
- def main(args:Array[String]):Unit = run
-
- def run() = {
- val server = actorOf(new Server(port))
- server.start
- Scheduler.schedule(server, DisplayStats, 1, 5, TimeUnit.SECONDS)
-
- println("Press enter to shutdown.");
- System.in.read
- server ! Shutdown
- }
-
- case object Shutdown
- case object DisplayStats
- case class SessionClosed(session:ActorRef)
-
- class Server(val port: Int) extends Actor {
-
- self.dispatcher = hawt
-
- var channel:ServerSocketChannel = _
- var accept_source:DispatchSource = _
- var sessions = ListBuffer[ActorRef]()
-
- override def init = {
- channel = ServerSocketChannel.open();
- channel.socket().bind(new InetSocketAddress(port));
- channel.configureBlocking(false);
-
- // Setup the accept source, it will callback to the handler methods
- // via the actor's mailbox so you don't need to worry about
- // synchronizing with the local variables
- accept_source = createSource(channel, SelectionKey.OP_ACCEPT, HawtDispatcher.queue(self));
- accept_source.setEventHandler(^{ accept });
- accept_source.setDisposer(^{
- channel.close();
- println("Closed port: "+port);
- });
-
- accept_source.resume
-
- println("Listening on port: "+port);
- }
-
-
- private def accept() = {
- var socket = channel.accept();
- while( socket!=null ) {
- try {
- socket.configureBlocking(false);
- val session = actorOf(new Session(self, socket))
- session.start()
- sessions += session
- } catch {
- case e: Exception =>
- socket.close
- }
- socket = channel.accept();
- }
- }
-
- def receive = {
- case SessionClosed(session) =>
- sessions = sessions.filterNot( _ == session )
- session.stop
- case DisplayStats =>
- sessions.foreach { session=>
- session ! DisplayStats
- }
- case Shutdown =>
- sessions.foreach { session=>
- session.stop
- }
- sessions.clear
- accept_source.release
- self.stop
- }
- }
-
- class Session(val server:ActorRef, val channel: SocketChannel) extends Actor {
-
- self.dispatcher = hawt
-
- val buffer = ByteBuffer.allocate(1024);
- val remote_address = channel.socket.getRemoteSocketAddress.toString
-
- var read_source:DispatchSource = _
- var write_source:DispatchSource = _
-
- var readCounter = 0L
- var writeCounter = 0L
- var closed = false
-
- override def init = {
-
- if(useReactorPattern) {
- // Then we will be using the reactor pattern for handling IO:
- // Pin this actor to a single thread. The read/write event sources will poll
- // a Selector on the pinned thread. Since the IO events are generated on the same
- // thread as where the Actor is pinned to, it can avoid a substantial amount
- // thread synchronization. Plus your GC will perform better since all the IO
- // processing is done on a single thread.
- HawtDispatcher.pin(self)
- } else {
- // Then we will be using sing the proactor pattern for handling IO:
- // Then the actor will not be pinned to a specific thread. The read/write
- // event sources will poll a Selector and then asynchronously dispatch the
- // event's to the actor via the thread pool.
- }
-
- // Setup the sources, they will callback to the handler methods
- // via the actor's mailbox so you don't need to worry about
- // synchronizing with the local variables
- read_source = createSource(channel, SelectionKey.OP_READ, HawtDispatcher.queue(self));
- read_source.setEventHandler(^{ read })
- read_source.setCancelHandler(^{ close })
-
- write_source = createSource(channel, SelectionKey.OP_READ, HawtDispatcher.queue(self));
- write_source.setEventHandler(^{ write })
- write_source.setCancelHandler(^{ close })
-
- read_source.resume
- println("Accepted connection from: "+remote_address);
- }
-
- override def shutdown = {
- closed = true
- read_source.release
- write_source.release
- channel.close
- }
-
- private def catchio(func: =>Unit):Unit = {
- try {
- func
- } catch {
- case e:IOException => close
- }
- }
-
- def read():Unit = catchio {
- channel.read(buffer) match {
- case -1 =>
- close // peer disconnected.
- case 0 =>
- case count:Int =>
- readCounter += count
- buffer.flip;
- read_source.suspend
- write_source.resume
- write()
- }
- }
-
- def write() = catchio {
- writeCounter += channel.write(buffer)
- if (buffer.remaining == 0) {
- buffer.clear
- write_source.suspend
- read_source.resume
- }
- }
-
- def close() = {
- if( !closed ) {
- closed = true
- server ! SessionClosed(self)
- }
- }
-
- def receive = {
- case DisplayStats =>
- println("connection to %s reads: %,d bytes, writes: %,d".format(remote_address, readCounter, writeCounter))
- }
- }
-}
diff --git a/akka-core/src/test/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcherActorSpec.scala b/akka-core/src/test/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcherActorSpec.scala
deleted file mode 100644
index de9b912bf5..0000000000
--- a/akka-core/src/test/scala/dispatch/ReactorBasedSingleThreadEventDrivenDispatcherActorSpec.scala
+++ /dev/null
@@ -1,71 +0,0 @@
-package se.scalablesolutions.akka.actor.dispatch
-
-import java.util.concurrent.{CountDownLatch, TimeUnit}
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import se.scalablesolutions.akka.dispatch.Dispatchers
-import se.scalablesolutions.akka.actor.Actor
-import Actor._
-
-object ReactorBasedSingleThreadEventDrivenDispatcherActorSpec {
- class TestActor extends Actor {
- self.dispatcher = Dispatchers.newReactorBasedSingleThreadEventDrivenDispatcher(self.uuid)
-
- def receive = {
- case "Hello" =>
- self.reply("World")
- case "Failure" =>
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
- }
-
- object OneWayTestActor {
- val oneWay = new CountDownLatch(1)
- }
- class OneWayTestActor extends Actor {
- self.dispatcher = Dispatchers.newExecutorBasedEventDrivenDispatcher(self.uuid)
- def receive = {
- case "OneWay" => OneWayTestActor.oneWay.countDown
- }
- }
-}
-
-class ReactorBasedSingleThreadEventDrivenDispatcherActorSpec extends JUnitSuite {
- import ReactorBasedSingleThreadEventDrivenDispatcherActorSpec._
-
- private val unit = TimeUnit.MILLISECONDS
-
- @Test def shouldSendOneWay = {
- val actor = actorOf[OneWayTestActor].start
- val result = actor ! "OneWay"
- assert(OneWayTestActor.oneWay.await(1, TimeUnit.SECONDS))
- actor.stop
- }
-
- @Test def shouldSendReplySync = {
- val actor = actorOf[TestActor].start
- val result = (actor !! ("Hello", 10000)).as[String].get
- assert("World" === result)
- actor.stop
- }
-
- @Test def shouldSendReplyAsync = {
- val actor = actorOf[TestActor].start
- val result = actor !! "Hello"
- assert("World" === result.get.asInstanceOf[String])
- actor.stop
- }
-
- @Test def shouldSendReceiveException = {
- val actor = actorOf[TestActor].start
- try {
- actor !! "Failure"
- fail("Should have thrown an exception")
- } catch {
- case e =>
- assert("Expected exception; to test fault-tolerance" === e.getMessage())
- }
- actor.stop
- }
-}
diff --git a/akka-core/src/test/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcherActorSpec.scala b/akka-core/src/test/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcherActorSpec.scala
deleted file mode 100644
index 4001df8f56..0000000000
--- a/akka-core/src/test/scala/dispatch/ReactorBasedThreadPoolEventDrivenDispatcherActorSpec.scala
+++ /dev/null
@@ -1,66 +0,0 @@
-package se.scalablesolutions.akka.actor.dispatch
-
-import java.util.concurrent.{CountDownLatch, TimeUnit}
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import se.scalablesolutions.akka.dispatch.Dispatchers
-import se.scalablesolutions.akka.actor.Actor
-import Actor._
-
-object ReactorBasedThreadPoolEventDrivenDispatcherActorSpec {
- class TestActor extends Actor {
- self.dispatcher = Dispatchers.newReactorBasedThreadPoolEventDrivenDispatcher(self.uuid)
- def receive = {
- case "Hello" =>
- self.reply("World")
- case "Failure" =>
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
- }
-}
-
-class ReactorBasedThreadPoolEventDrivenDispatcherActorSpec extends JUnitSuite {
- import ReactorBasedThreadPoolEventDrivenDispatcherActorSpec._
-
- private val unit = TimeUnit.MILLISECONDS
-
- @Test def shouldSendOneWay {
- val oneWay = new CountDownLatch(1)
- val actor = actorOf(new Actor {
- self.dispatcher = Dispatchers.newReactorBasedThreadPoolEventDrivenDispatcher(self.uuid)
- def receive = {
- case "OneWay" => oneWay.countDown
- }
- }).start
- val result = actor ! "OneWay"
- assert(oneWay.await(1, TimeUnit.SECONDS))
- actor.stop
- }
-
- @Test def shouldSendReplySync = {
- val actor = actorOf[TestActor].start
- val result = (actor !! ("Hello", 10000)).as[String].get
- assert("World" === result)
- actor.stop
- }
-
- @Test def shouldSendReplyAsync = {
- val actor = actorOf[TestActor].start
- val result = actor !! "Hello"
- assert("World" === result.get.asInstanceOf[String])
- actor.stop
- }
-
- @Test def shouldSendReceiveException = {
- val actor = actorOf[TestActor].start
- try {
- actor !! "Failure"
- fail("Should have thrown an exception")
- } catch {
- case e =>
- assert("Expected exception; to test fault-tolerance" === e.getMessage())
- }
- actor.stop
- }
-}
diff --git a/akka-core/src/test/scala/dispatch/ThreadBasedActorSpec.scala b/akka-core/src/test/scala/dispatch/ThreadBasedActorSpec.scala
deleted file mode 100644
index d69ee984d8..0000000000
--- a/akka-core/src/test/scala/dispatch/ThreadBasedActorSpec.scala
+++ /dev/null
@@ -1,67 +0,0 @@
-package se.scalablesolutions.akka.actor.dispatch
-
-import java.util.concurrent.{CountDownLatch, TimeUnit}
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-
-import se.scalablesolutions.akka.dispatch.Dispatchers
-import se.scalablesolutions.akka.actor.Actor
-import Actor._
-
-object ThreadBasedActorSpec {
- class TestActor extends Actor {
- self.dispatcher = Dispatchers.newThreadBasedDispatcher(self)
-
- def receive = {
- case "Hello" =>
- self.reply("World")
- case "Failure" =>
- throw new RuntimeException("Expected exception; to test fault-tolerance")
- }
- }
-}
-
-class ThreadBasedActorSpec extends JUnitSuite {
- import ThreadBasedActorSpec._
-
- private val unit = TimeUnit.MILLISECONDS
-
- @Test def shouldSendOneWay {
- var oneWay = new CountDownLatch(1)
- val actor = actorOf(new Actor {
- self.dispatcher = Dispatchers.newThreadBasedDispatcher(self)
- def receive = {
- case "OneWay" => oneWay.countDown
- }
- }).start
- val result = actor ! "OneWay"
- assert(oneWay.await(1, TimeUnit.SECONDS))
- actor.stop
- }
-
- @Test def shouldSendReplySync = {
- val actor = actorOf[TestActor].start
- val result = (actor !! ("Hello", 10000)).as[String]
- assert("World" === result.get)
- actor.stop
- }
-
- @Test def shouldSendReplyAsync = {
- val actor = actorOf[TestActor].start
- val result = actor !! "Hello"
- assert("World" === result.get.asInstanceOf[String])
- actor.stop
- }
-
- @Test def shouldSendReceiveException = {
- val actor = actorOf[TestActor].start
- try {
- actor !! "Failure"
- fail("Should have thrown an exception")
- } catch {
- case e =>
- assert("Expected exception; to test fault-tolerance" === e.getMessage())
- }
- actor.stop
- }
-}
diff --git a/akka-core/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala b/akka-core/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala
deleted file mode 100644
index 44cd9aade3..0000000000
--- a/akka-core/src/test/scala/dispatch/ThreadBasedDispatcherSpec.scala
+++ /dev/null
@@ -1,91 +0,0 @@
-package se.scalablesolutions.akka.dispatch
-
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.atomic.AtomicBoolean
-import java.util.concurrent.locks.Lock
-import java.util.concurrent.locks.ReentrantLock
-
-import org.scalatest.junit.JUnitSuite
-import org.junit.{Test, Before}
-
-import se.scalablesolutions.akka.actor.Actor
-import Actor._
-
-// FIXME use this test when we have removed the MessageInvoker classes
-/*
-class ThreadBasedDispatcherSpec extends JUnitSuite {
- private var threadingIssueDetected: AtomicBoolean = null
- val key1 = actorOf(new Actor { def receive = { case _ => {}} })
- val key2 = actorOf(new Actor { def receive = { case _ => {}} })
- val key3 = actorOf(new Actor { def receive = { case _ => {}} })
-
- class TestMessageHandle(handleLatch: CountDownLatch) extends MessageInvoker {
- val guardLock: Lock = new ReentrantLock
-
- def invoke(message: MessageInvocation) {
- try {
- if (threadingIssueDetected.get) return
- if (guardLock.tryLock) {
- handleLatch.countDown
- } else {
- threadingIssueDetected.set(true)
- }
- } catch {
- case e: Exception => threadingIssueDetected.set(true)
- } finally {
- guardLock.unlock
- }
- }
- }
-
- @Before
- def setUp = {
- threadingIssueDetected = new AtomicBoolean(false)
- }
-
- @Test
- def shouldMessagesDispatchedToTheSameHandlerAreExecutedSequentially = {
- internalTestMessagesDispatchedToTheSameHandlerAreExecutedSequentially
- }
-
- @Test
- def shouldMessagesDispatchedToHandlersAreExecutedInFIFOOrder = {
- internalTestMessagesDispatchedToHandlersAreExecutedInFIFOOrder
- }
-
- private def internalTestMessagesDispatchedToTheSameHandlerAreExecutedSequentially(): Unit = {
- val guardLock = new ReentrantLock
- val handleLatch = new CountDownLatch(100)
- val dispatcher = new ThreadBasedDispatcher("name", new TestMessageHandle(handleLatch))
- dispatcher.start
- for (i <- 0 until 100) {
- dispatcher.dispatch(new MessageInvocation(key1, new Object, None, None))
- }
- assert(handleLatch.await(5, TimeUnit.SECONDS))
- assert(!threadingIssueDetected.get)
- }
-
- private def internalTestMessagesDispatchedToHandlersAreExecutedInFIFOOrder(): Unit = {
- val handleLatch = new CountDownLatch(100)
- val dispatcher = new ThreadBasedDispatcher("name", new MessageInvoker {
- var currentValue = -1;
- def invoke(message: MessageInvocation) {
- if (threadingIssueDetected.get) return
- val messageValue = message.message.asInstanceOf[Int]
- if (messageValue.intValue == currentValue + 1) {
- currentValue = messageValue.intValue
- handleLatch.countDown
- } else threadingIssueDetected.set(true)
- }
- })
- dispatcher.start
- for (i <- 0 until 100) {
- dispatcher.dispatch(new MessageInvocation(key1, i, None, None))
- }
- assert(handleLatch.await(5, TimeUnit.SECONDS))
- assert(!threadingIssueDetected.get)
- dispatcher.shutdown
- }
-}
-*/
diff --git a/akka-core/src/test/scala/misc/ActorRegistrySpec.scala b/akka-core/src/test/scala/misc/ActorRegistrySpec.scala
deleted file mode 100644
index 8c9e0778ca..0000000000
--- a/akka-core/src/test/scala/misc/ActorRegistrySpec.scala
+++ /dev/null
@@ -1,255 +0,0 @@
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.junit.JUnitSuite
-import org.junit.Test
-import Actor._
-import java.util.concurrent.{CyclicBarrier, TimeUnit, CountDownLatch}
-
-object ActorRegistrySpec {
- var record = ""
- class TestActor extends Actor {
- self.id = "MyID"
- def receive = {
- case "ping" =>
- record = "pong" + record
- self.reply("got ping")
- }
- }
-
- class TestActor2 extends Actor {
- self.id = "MyID2"
- def receive = {
- case "ping" =>
- record = "pong" + record
- self.reply("got ping")
- case "ping2" =>
- record = "pong" + record
- self.reply("got ping")
- }
- }
-
-}
-
-class ActorRegistrySpec extends JUnitSuite {
- import ActorRegistrySpec._
-
- @Test def shouldGetActorByIdFromActorRegistry {
- ActorRegistry.shutdownAll
- val actor = actorOf[TestActor]
- actor.start
- val actors = ActorRegistry.actorsFor("MyID")
- assert(actors.size === 1)
- assert(actors.head.actor.isInstanceOf[TestActor])
- assert(actors.head.id === "MyID")
- actor.stop
- }
-
- @Test def shouldGetActorByUUIDFromActorRegistry {
- ActorRegistry.shutdownAll
- val actor = actorOf[TestActor]
- val uuid = actor.uuid
- actor.start
- val actorOrNone = ActorRegistry.actorFor(uuid)
- assert(actorOrNone.isDefined)
- assert(actorOrNone.get.uuid === uuid)
- actor.stop
- }
-
- @Test def shouldGetActorByClassFromActorRegistry {
- ActorRegistry.shutdownAll
- val actor = actorOf[TestActor]
- actor.start
- val actors = ActorRegistry.actorsFor(classOf[TestActor])
- assert(actors.size === 1)
- assert(actors.head.actor.isInstanceOf[TestActor])
- assert(actors.head.id === "MyID")
- actor.stop
- }
-
- @Test def shouldGetActorByManifestFromActorRegistry {
- ActorRegistry.shutdownAll
- val actor = actorOf[TestActor]
- actor.start
- val actors = ActorRegistry.actorsFor[TestActor]
- assert(actors.size === 1)
- assert(actors.head.actor.isInstanceOf[TestActor])
- assert(actors.head.id === "MyID")
- actor.stop
- }
-
- @Test def shouldFindThingsFromActorRegistry {
- ActorRegistry.shutdownAll
- val actor = actorOf[TestActor]
- actor.start
- val found = ActorRegistry.find({ case a: ActorRef if a.actor.isInstanceOf[TestActor] => a })
- assert(found.isDefined)
- assert(found.get.actor.isInstanceOf[TestActor])
- assert(found.get.id === "MyID")
- actor.stop
- }
-
- @Test def shouldGetActorsByIdFromActorRegistry {
- ActorRegistry.shutdownAll
- val actor1 = actorOf[TestActor]
- actor1.start
- val actor2 = actorOf[TestActor]
- actor2.start
- val actors = ActorRegistry.actorsFor("MyID")
- assert(actors.size === 2)
- assert(actors.head.actor.isInstanceOf[TestActor])
- assert(actors.head.id === "MyID")
- assert(actors.last.actor.isInstanceOf[TestActor])
- assert(actors.last.id === "MyID")
- actor1.stop
- actor2.stop
- }
-
- @Test def shouldGetActorsByClassFromActorRegistry {
- ActorRegistry.shutdownAll
- val actor1 = actorOf[TestActor]
- actor1.start
- val actor2 = actorOf[TestActor]
- actor2.start
- val actors = ActorRegistry.actorsFor(classOf[TestActor])
- assert(actors.size === 2)
- assert(actors.head.actor.isInstanceOf[TestActor])
- assert(actors.head.id === "MyID")
- assert(actors.last.actor.isInstanceOf[TestActor])
- assert(actors.last.id === "MyID")
- actor1.stop
- actor2.stop
- }
-
- @Test def shouldGetActorsByManifestFromActorRegistry {
- ActorRegistry.shutdownAll
- val actor1 = actorOf[TestActor]
- actor1.start
- val actor2 = actorOf[TestActor]
- actor2.start
- val actors = ActorRegistry.actorsFor[TestActor]
- assert(actors.size === 2)
- assert(actors.head.actor.isInstanceOf[TestActor])
- assert(actors.head.id === "MyID")
- assert(actors.last.actor.isInstanceOf[TestActor])
- assert(actors.last.id === "MyID")
- actor1.stop
- actor2.stop
- }
-
- @Test def shouldGetActorsByMessageFromActorRegistry {
-
- ActorRegistry.shutdownAll
- val actor1 = actorOf[TestActor]
- actor1.start
- val actor2 = actorOf[TestActor2]
- actor2.start
-
- val actorsForAcotrTestActor = ActorRegistry.actorsFor[TestActor]
- assert(actorsForAcotrTestActor.size === 1)
-
- val actorsForAcotrTestActor2 = ActorRegistry.actorsFor[TestActor2]
- assert(actorsForAcotrTestActor2.size === 1)
-
- val actorsForAcotr = ActorRegistry.actorsFor[Actor]
- assert(actorsForAcotr.size === 2)
-
-
- val actorsForMessagePing2 = ActorRegistry.actorsFor[Actor]("ping2")
- assert(actorsForMessagePing2.size === 1)
-
- val actorsForMessagePing = ActorRegistry.actorsFor[Actor]("ping")
- assert(actorsForMessagePing.size === 2)
-
- actor1.stop
- actor2.stop
- }
-
- @Test def shouldGetAllActorsFromActorRegistry {
- ActorRegistry.shutdownAll
- val actor1 = actorOf[TestActor]
- actor1.start
- val actor2 = actorOf[TestActor]
- actor2.start
- val actors = ActorRegistry.actors
- assert(actors.size === 2)
- assert(actors.head.actor.isInstanceOf[TestActor])
- assert(actors.head.id === "MyID")
- assert(actors.last.actor.isInstanceOf[TestActor])
- assert(actors.last.id === "MyID")
- actor1.stop
- actor2.stop
- }
-
- @Test def shouldGetResponseByAllActorsInActorRegistryWhenInvokingForeach {
- ActorRegistry.shutdownAll
- val actor1 = actorOf[TestActor]
- actor1.start
- val actor2 = actorOf[TestActor]
- actor2.start
- record = ""
- ActorRegistry.foreach(actor => actor !! "ping")
- assert(record === "pongpong")
- actor1.stop
- actor2.stop
- }
-
- @Test def shouldShutdownAllActorsInActorRegistry {
- ActorRegistry.shutdownAll
- val actor1 = actorOf[TestActor]
- actor1.start
- val actor2 = actorOf[TestActor]
- actor2.start
- ActorRegistry.shutdownAll
- assert(ActorRegistry.actors.size === 0)
- }
-
- @Test def shouldRemoveUnregisterActorInActorRegistry {
- ActorRegistry.shutdownAll
- val actor1 = actorOf[TestActor]
- actor1.start
- val actor2 = actorOf[TestActor]
- actor2.start
- assert(ActorRegistry.actors.size === 2)
- ActorRegistry.unregister(actor1)
- assert(ActorRegistry.actors.size === 1)
- ActorRegistry.unregister(actor2)
- assert(ActorRegistry.actors.size === 0)
- }
-
- @Test def shouldBeAbleToRegisterActorsConcurrently {
- ActorRegistry.shutdownAll
-
- val latch = new CountDownLatch(3)
- val barrier = new CyclicBarrier(3)
-
- def mkTestActor(i:Int) = actorOf( new Actor {
- self.id = i.toString
- def receive = { case _ => }
- })
-
- def mkTestActors = for(i <- 1 to 10;j <- 1 to 1000) yield mkTestActor(i)
-
- def mkThread(actors: Iterable[ActorRef]) = new Thread {
- start
- override def run {
- barrier.await
- actors foreach { _.start }
- latch.countDown
- }
- }
-
- val testActors1 = mkTestActors
- val testActors2 = mkTestActors
- val testActors3 = mkTestActors
-
- mkThread(testActors1)
- mkThread(testActors2)
- mkThread(testActors3)
-
- assert(latch.await(30,TimeUnit.SECONDS) === true)
-
- for(i <- 1 to 10) {
- assert(ActorRegistry.actorsFor(i.toString).length === 3000)
- }
- }
-}
diff --git a/akka-core/src/test/scala/misc/SchedulerSpec.scala b/akka-core/src/test/scala/misc/SchedulerSpec.scala
deleted file mode 100644
index 16dd21f327..0000000000
--- a/akka-core/src/test/scala/misc/SchedulerSpec.scala
+++ /dev/null
@@ -1,127 +0,0 @@
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.junit.JUnitSuite
-import Actor._
-import java.util.concurrent.{CountDownLatch, TimeUnit}
-import se.scalablesolutions.akka.config.ScalaConfig._
-import org.multiverse.api.latches.StandardLatch
-import org.junit.Test
-
-class SchedulerSpec extends JUnitSuite {
-
- def withCleanEndState(action: => Unit) {
- action
- Scheduler.restart
- ActorRegistry.shutdownAll
- }
-
-
- @Test def schedulerShouldScheduleMoreThanOnce = withCleanEndState {
-
- case object Tick
- val countDownLatch = new CountDownLatch(3)
- val tickActor = actor {
- case Tick => countDownLatch.countDown
- }
- // run every 50 millisec
- Scheduler.schedule(tickActor, Tick, 0, 50, TimeUnit.MILLISECONDS)
-
- // after max 1 second it should be executed at least the 3 times already
- assert(countDownLatch.await(1, TimeUnit.SECONDS))
-
- val countDownLatch2 = new CountDownLatch(3)
-
- Scheduler.schedule( () => countDownLatch2.countDown, 0, 50, TimeUnit.MILLISECONDS)
-
- // after max 1 second it should be executed at least the 3 times already
- assert(countDownLatch2.await(1, TimeUnit.SECONDS))
- }
-
- @Test def schedulerShouldScheduleOnce = withCleanEndState {
- case object Tick
- val countDownLatch = new CountDownLatch(3)
- val tickActor = actor {
- case Tick => countDownLatch.countDown
- }
- // run every 50 millisec
- Scheduler.scheduleOnce(tickActor, Tick, 50, TimeUnit.MILLISECONDS)
- Scheduler.scheduleOnce( () => countDownLatch.countDown, 50, TimeUnit.MILLISECONDS)
-
- // after 1 second the wait should fail
- assert(countDownLatch.await(1, TimeUnit.SECONDS) == false)
- // should still be 1 left
- assert(countDownLatch.getCount == 1)
- }
-
- /**
- * ticket #372
- */
- @Test def schedulerShouldntCreateActors = withCleanEndState {
- object Ping
- val ticks = new CountDownLatch(1000)
- val actor = actorOf(new Actor {
- def receive = { case Ping => ticks.countDown }
- }).start
- val numActors = ActorRegistry.actors.length
- (1 to 1000).foreach( _ => Scheduler.scheduleOnce(actor,Ping,1,TimeUnit.MILLISECONDS) )
- assert(ticks.await(10,TimeUnit.SECONDS))
- assert(ActorRegistry.actors.length === numActors)
- }
-
- /**
- * ticket #372
- */
- @Test def schedulerShouldBeCancellable = withCleanEndState {
- object Ping
- val ticks = new CountDownLatch(1)
-
- val actor = actorOf(new Actor {
- def receive = { case Ping => ticks.countDown }
- }).start
-
- (1 to 10).foreach { i =>
- val future = Scheduler.scheduleOnce(actor,Ping,1,TimeUnit.SECONDS)
- future.cancel(true)
- }
- assert(ticks.await(3,TimeUnit.SECONDS) == false) //No counting down should've been made
- }
-
- /**
- * ticket #307
- */
- @Test def actorRestartShouldPickUpScheduleAgain = withCleanEndState {
-
- object Ping
- object Crash
-
- val restartLatch = new StandardLatch
- val pingLatch = new CountDownLatch(6)
-
- val actor = actorOf(new Actor {
- self.lifeCycle = Some(LifeCycle(Permanent))
-
- def receive = {
- case Ping => pingLatch.countDown
- case Crash => throw new Exception("CRASH")
- }
-
- override def postRestart(reason: Throwable) = restartLatch.open
- })
- Supervisor(
- SupervisorConfig(
- RestartStrategy(AllForOne, 3, 1000,
- List(classOf[Exception])),
- Supervise(
- actor,
- LifeCycle(Permanent))
- :: Nil)).start
-
- Scheduler.schedule(actor, Ping, 500, 500, TimeUnit.MILLISECONDS)
- // appx 2 pings before crash
- Scheduler.scheduleOnce(actor, Crash, 1000, TimeUnit.MILLISECONDS)
-
- assert(restartLatch.tryAwait(2, TimeUnit.SECONDS))
- // should be enough time for the ping countdown to recover and reach 6 pings
- assert(pingLatch.await(4, TimeUnit.SECONDS))
- }
-}
diff --git a/akka-core/src/test/scala/routing/RoutingSpec.scala b/akka-core/src/test/scala/routing/RoutingSpec.scala
deleted file mode 100644
index b51fa11a0e..0000000000
--- a/akka-core/src/test/scala/routing/RoutingSpec.scala
+++ /dev/null
@@ -1,179 +0,0 @@
-package se.scalablesolutions.akka.actor.routing
-
-import se.scalablesolutions.akka.actor.Actor
-import se.scalablesolutions.akka.actor.Actor._
-import se.scalablesolutions.akka.util.Logging
-
-import org.scalatest.Suite
-import org.junit.runner.RunWith
-import org.scalatest.junit.JUnitRunner
-import org.scalatest.matchers.MustMatchers
-import org.junit.Test
-
-import java.util.concurrent.atomic.AtomicInteger
-import java.util.concurrent.{CountDownLatch, TimeUnit}
-import se.scalablesolutions.akka.routing._
-
-@RunWith(classOf[JUnitRunner])
-class RoutingSpec extends junit.framework.TestCase with Suite with MustMatchers with Logging {
- import Routing._
-
- @Test def testDispatcher = {
- val (testMsg1,testMsg2,testMsg3,testMsg4) = ("test1","test2","test3","test4")
- val targetOk = new AtomicInteger(0)
- val t1 = actorOf( new Actor() {
- def receive = {
- case `testMsg1` => self.reply(3)
- case `testMsg2` => self.reply(7)
- }
- } ).start
-
- val t2 = actorOf( new Actor() {
- def receive = {
- case `testMsg3` => self.reply(11)
- }
- }).start
-
- val d = dispatcherActor {
- case `testMsg1`|`testMsg2` => t1
- case `testMsg3` => t2
- }.start
-
- val result = for {
- a <- (d !! (testMsg1, 5000)).as[Int]
- b <- (d !! (testMsg2, 5000)).as[Int]
- c <- (d !! (testMsg3, 5000)).as[Int]
- } yield a + b + c
-
- result.isDefined must be (true)
- result.get must be(21)
-
- for(a <- List(t1,t2,d)) a.stop
- }
-
- @Test def testLogger = {
- val msgs = new java.util.concurrent.ConcurrentSkipListSet[Any]
- val latch = new CountDownLatch(2)
- val t1 = actor {
- case _ =>
- }
- val l = loggerActor(t1,(x) => { msgs.add(x); latch.countDown }).start
- val foo : Any = "foo"
- val bar : Any = "bar"
- l ! foo
- l ! bar
- val done = latch.await(5,TimeUnit.SECONDS)
- done must be (true)
- msgs must ( have size (2) and contain (foo) and contain (bar) )
- t1.stop
- l.stop
- }
-
- @Test def testSmallestMailboxFirstDispatcher = {
- val t1ProcessedCount = new AtomicInteger(0)
- val latch = new CountDownLatch(500)
- val t1 = actor {
- case x =>
- Thread.sleep(50) // slow actor
- t1ProcessedCount.incrementAndGet
- latch.countDown
- }
-
- val t2ProcessedCount = new AtomicInteger(0)
- val t2 = actor {
- case x => t2ProcessedCount.incrementAndGet
- latch.countDown
- }
- val d = loadBalancerActor(new SmallestMailboxFirstIterator(t1 :: t2 :: Nil))
- for (i <- 1 to 500) d ! i
- val done = latch.await(10,TimeUnit.SECONDS)
- done must be (true)
- t1ProcessedCount.get must be < (t2ProcessedCount.get) // because t1 is much slower and thus has a bigger mailbox all the time
- for(a <- List(t1,t2,d)) a.stop
- }
-
- @Test def testListener = {
- val latch = new CountDownLatch(2)
- val foreachListener = new CountDownLatch(2)
- val num = new AtomicInteger(0)
- val i = actorOf(new Actor with Listeners {
- def receive = listenerManagement orElse {
- case "foo" => gossip("bar")
- }
- })
- i.start
-
- def newListener = actor {
- case "bar" =>
- num.incrementAndGet
- latch.countDown
- case "foo" => foreachListener.countDown
- }
-
- val a1 = newListener
- val a2 = newListener
- val a3 = newListener
-
- i ! Listen(a1)
- i ! Listen(a2)
- i ! Listen(a3)
- i ! Deafen(a3)
- i ! WithListeners(_ ! "foo")
- i ! "foo"
-
- val done = latch.await(5,TimeUnit.SECONDS)
- done must be (true)
- num.get must be (2)
- val withListeners = foreachListener.await(5,TimeUnit.SECONDS)
- withListeners must be (true)
- for(a <- List(i,a1,a2,a3)) a.stop
- }
-
- @Test def testIsDefinedAt = {
- import se.scalablesolutions.akka.actor.ActorRef
-
- val (testMsg1,testMsg2,testMsg3,testMsg4) = ("test1","test2","test3","test4")
-
- val t1 = actorOf( new Actor() {
- def receive = {
- case `testMsg1` => self.reply(3)
- case `testMsg2` => self.reply(7)
- }
- } ).start
-
- val t2 = actorOf( new Actor() {
- def receive = {
- case `testMsg1` => self.reply(3)
- case `testMsg2` => self.reply(7)
- }
- } ).start
-
- val t3 = actorOf( new Actor() {
- def receive = {
- case `testMsg1` => self.reply(3)
- case `testMsg2` => self.reply(7)
- }
- } ).start
-
- val t4 = actorOf( new Actor() {
- def receive = {
- case `testMsg1` => self.reply(3)
- case `testMsg2` => self.reply(7)
- }
- } ).start
-
- val d1 = loadBalancerActor(new SmallestMailboxFirstIterator(t1 :: t2 :: Nil))
- val d2 = loadBalancerActor(new CyclicIterator[ActorRef](t3 :: t4 :: Nil))
-
- t1.isDefinedAt(testMsg1) must be (true)
- t1.isDefinedAt(testMsg3) must be (false)
- t2.isDefinedAt(testMsg1) must be (true)
- t2.isDefinedAt(testMsg3) must be (false)
- d1.isDefinedAt(testMsg1) must be (true)
- d1.isDefinedAt(testMsg3) must be (false)
- d2.isDefinedAt(testMsg1) must be (true)
- d2.isDefinedAt(testMsg3) must be (false)
-
- for(a <- List(t1,t2,d1,d2)) a.stop
- }
-}
diff --git a/akka-karaf/akka-features/src/main/resources/features.xml b/akka-karaf/akka-features/src/main/resources/features.xml
index db48a13785..067e64f193 100644
--- a/akka-karaf/akka-features/src/main/resources/features.xml
+++ b/akka-karaf/akka-features/src/main/resources/features.xml
@@ -13,10 +13,10 @@
mvn:sjson.json/sjson/0.6-SNAPSHOT
-
+
sjson
mvn:se.scalablesolutions.akka.akka-wrap/jgroups-wrapper_2.8.0.RC3_osgi/2.9.0.GA
mvn:org.jboss.netty/netty/3.2.0.CR1
- mvn:se.scalablesolutions.akka/akka-core_2.8.0.RC3_osgi/0.9
+ mvn:se.scalablesolutions.akka/akka-remote_2.8.0.RC3_osgi/0.9
diff --git a/akka-core/src/main/protocol/RemoteProtocol.proto b/akka-remote/src/main/protocol/RemoteProtocol.proto
similarity index 98%
rename from akka-core/src/main/protocol/RemoteProtocol.proto
rename to akka-remote/src/main/protocol/RemoteProtocol.proto
index 6cf9bfd534..567bf54eba 100644
--- a/akka-core/src/main/protocol/RemoteProtocol.proto
+++ b/akka-remote/src/main/protocol/RemoteProtocol.proto
@@ -7,7 +7,7 @@ option optimize_for = SPEED;
/******************************************
Compile with:
- cd ./akka-core/src/main/protocol
+ cd ./akka-remote/src/main/protocol
protoc RemoteProtocol.proto --java_out ../java
*******************************************/
diff --git a/akka-core/src/main/scala/remote/BootableRemoteActorService.scala b/akka-remote/src/main/scala/remote/BootableRemoteActorService.scala
similarity index 100%
rename from akka-core/src/main/scala/remote/BootableRemoteActorService.scala
rename to akka-remote/src/main/scala/remote/BootableRemoteActorService.scala
diff --git a/akka-core/src/main/scala/remote/Cluster.scala b/akka-remote/src/main/scala/remote/Cluster.scala
similarity index 100%
rename from akka-core/src/main/scala/remote/Cluster.scala
rename to akka-remote/src/main/scala/remote/Cluster.scala
diff --git a/akka-core/src/main/scala/remote/JGroupsClusterActor.scala b/akka-remote/src/main/scala/remote/JGroupsClusterActor.scala
similarity index 100%
rename from akka-core/src/main/scala/remote/JGroupsClusterActor.scala
rename to akka-remote/src/main/scala/remote/JGroupsClusterActor.scala
diff --git a/akka-core/src/main/scala/remote/MessageSerializer.scala b/akka-remote/src/main/scala/remote/MessageSerializer.scala
similarity index 100%
rename from akka-core/src/main/scala/remote/MessageSerializer.scala
rename to akka-remote/src/main/scala/remote/MessageSerializer.scala
diff --git a/akka-core/src/main/scala/remote/RemoteClient.scala b/akka-remote/src/main/scala/remote/RemoteClient.scala
similarity index 92%
rename from akka-core/src/main/scala/remote/RemoteClient.scala
rename to akka-remote/src/main/scala/remote/RemoteClient.scala
index 6a8245e8b8..8a555bf5a1 100644
--- a/akka-core/src/main/scala/remote/RemoteClient.scala
+++ b/akka-remote/src/main/scala/remote/RemoteClient.scala
@@ -5,12 +5,14 @@
package se.scalablesolutions.akka.remote
import se.scalablesolutions.akka.remote.protocol.RemoteProtocol._
-import se.scalablesolutions.akka.actor.{Exit, Actor, ActorRef, RemoteActorRef, IllegalActorStateException}
+import se.scalablesolutions.akka.actor.{Exit, Actor, ActorRef, ActorType, RemoteActorRef, RemoteActorSerialization, IllegalActorStateException}
import se.scalablesolutions.akka.dispatch.{DefaultCompletableFuture, CompletableFuture}
import se.scalablesolutions.akka.util.{ListenerManagement, UUID, Logging, Duration}
import se.scalablesolutions.akka.config.Config._
import se.scalablesolutions.akka.AkkaException
import Actor._
+import RemoteActorSerialization._
+
import org.jboss.netty.channel._
import group.DefaultChannelGroup
import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory
@@ -118,7 +120,8 @@ object RemoteClient extends Logging {
private[akka] def clientFor(hostname: String, port: Int, loader: Option[ClassLoader]): RemoteClient =
clientFor(new InetSocketAddress(hostname, port), loader)
- private[akka] def clientFor(address: InetSocketAddress, loader: Option[ClassLoader]): RemoteClient = synchronized {
+ private[akka] def clientFor(
+ address: InetSocketAddress, loader: Option[ClassLoader]): RemoteClient = synchronized {
val hostname = address.getHostName
val port = address.getPort
val hash = hostname + ':' + port
@@ -151,7 +154,7 @@ object RemoteClient extends Logging {
remoteClients.clear
}
- private[akka] def register(hostname: String, port: Int, uuid: String) = synchronized {
+ def register(hostname: String, port: Int, uuid: String) = synchronized {
actorsFor(RemoteServer.Address(hostname, port)) += uuid
}
@@ -177,7 +180,8 @@ object RemoteClient extends Logging {
*
* @author Jonas Bonér
*/
-class RemoteClient private[akka] (val hostname: String, val port: Int, val loader: Option[ClassLoader] = None)
+class RemoteClient private[akka] (
+ val hostname: String, val port: Int, val loader: Option[ClassLoader] = None)
extends Logging with ListenerManagement {
val name = "RemoteClient@" + hostname + "::" + port
@@ -200,7 +204,8 @@ class RemoteClient private[akka] (val hostname: String, val port: Int, val loade
Duration(config.getInt("akka.remote.client.reconnection-time-window", 600), TIME_UNIT).toMillis
@volatile private var reconnectionTimeWindowStart = 0L
- bootstrap.setPipelineFactory(new RemoteClientPipelineFactory(name, futures, supervisors, bootstrap, remoteAddress, timer, this))
+ bootstrap.setPipelineFactory(new RemoteClientPipelineFactory(
+ name, futures, supervisors, bootstrap, remoteAddress, timer, this))
bootstrap.setOption("tcpNoDelay", true)
bootstrap.setOption("keepAlive", true)
@@ -242,7 +247,24 @@ class RemoteClient private[akka] (val hostname: String, val port: Int, val loade
protected override def manageLifeCycleOfListeners = false
- def send[T](request: RemoteRequestProtocol, senderFuture: Option[CompletableFuture[T]]): Option[CompletableFuture[T]] = if (isRunning) {
+ def send[T](
+ message: Any,
+ senderOption: Option[ActorRef],
+ senderFuture: Option[CompletableFuture[T]],
+ remoteAddress: InetSocketAddress,
+ timeout: Long,
+ isOneWay: Boolean,
+ actorRef: ActorRef,
+ typedActorInfo: Option[Tuple2[String, String]],
+ actorType: ActorType): Option[CompletableFuture[T]] = {
+ send(createRemoteRequestProtocolBuilder(
+ actorRef, message, isOneWay, senderOption, typedActorInfo, actorType).build, senderFuture)
+ }
+
+ def send[T](
+ request: RemoteRequestProtocol,
+ senderFuture: Option[CompletableFuture[T]]):
+ Option[CompletableFuture[T]] = if (isRunning) {
if (request.getIsOneWay) {
connection.getChannel.write(request)
None
@@ -256,7 +278,8 @@ class RemoteClient private[akka] (val hostname: String, val port: Int, val loade
}
}
} else {
- val exception = new RemoteClientException("Remote client is not running, make sure you have invoked 'RemoteClient.connect' before using it.", this)
+ val exception = new RemoteClientException(
+ "Remote client is not running, make sure you have invoked 'RemoteClient.connect' before using it.", this)
foreachListener(l => l ! RemoteClientError(exception, this))
throw exception
}
diff --git a/akka-core/src/main/scala/remote/RemoteServer.scala b/akka-remote/src/main/scala/remote/RemoteServer.scala
similarity index 98%
rename from akka-core/src/main/scala/remote/RemoteServer.scala
rename to akka-remote/src/main/scala/remote/RemoteServer.scala
index 9c8f7454fa..f20f78cc96 100644
--- a/akka-core/src/main/scala/remote/RemoteServer.scala
+++ b/akka-remote/src/main/scala/remote/RemoteServer.scala
@@ -13,6 +13,7 @@ import se.scalablesolutions.akka.actor._
import se.scalablesolutions.akka.actor.Actor._
import se.scalablesolutions.akka.util._
import se.scalablesolutions.akka.remote.protocol.RemoteProtocol._
+import se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType._
import se.scalablesolutions.akka.config.Config._
import org.jboss.netty.bootstrap.ServerBootstrap
@@ -443,9 +444,9 @@ class RemoteServerHandler(
private def handleRemoteRequestProtocol(request: RemoteRequestProtocol, channel: Channel) = {
log.debug("Received RemoteRequestProtocol[\n%s]", request.toString)
val actorType = request.getActorInfo.getActorType
- if (actorType == ActorType.SCALA_ACTOR) dispatchToActor(request, channel)
- else if (actorType == ActorType.JAVA_ACTOR) throw new IllegalActorStateException("ActorType JAVA_ACTOR is currently not supported")
- else if (actorType == ActorType.TYPED_ACTOR) dispatchToTypedActor(request, channel)
+ if (actorType == SCALA_ACTOR) dispatchToActor(request, channel)
+ else if (actorType == JAVA_ACTOR) throw new IllegalActorStateException("ActorType JAVA_ACTOR is currently not supported")
+ else if (actorType == TYPED_ACTOR) dispatchToTypedActor(request, channel)
else throw new IllegalActorStateException("Unknown ActorType [" + actorType + "]")
}
diff --git a/akka-core/src/main/scala/serialization/Binary.scala b/akka-remote/src/main/scala/serialization/Binary.scala
similarity index 100%
rename from akka-core/src/main/scala/serialization/Binary.scala
rename to akka-remote/src/main/scala/serialization/Binary.scala
diff --git a/akka-core/src/main/scala/serialization/Compression.scala b/akka-remote/src/main/scala/serialization/Compression.scala
similarity index 100%
rename from akka-core/src/main/scala/serialization/Compression.scala
rename to akka-remote/src/main/scala/serialization/Compression.scala
diff --git a/akka-core/src/main/scala/serialization/Serializable.scala b/akka-remote/src/main/scala/serialization/Serializable.scala
similarity index 100%
rename from akka-core/src/main/scala/serialization/Serializable.scala
rename to akka-remote/src/main/scala/serialization/Serializable.scala
diff --git a/akka-remote/src/main/scala/serialization/SerializationProtocol.scala b/akka-remote/src/main/scala/serialization/SerializationProtocol.scala
new file mode 100644
index 0000000000..e7bee8e9b9
--- /dev/null
+++ b/akka-remote/src/main/scala/serialization/SerializationProtocol.scala
@@ -0,0 +1,284 @@
+/**
+ * Copyright (C) 2009-2010 Scalable Solutions AB
+ */
+
+package se.scalablesolutions.akka.actor
+
+import se.scalablesolutions.akka.config.{AllForOneStrategy, OneForOneStrategy, FaultHandlingStrategy}
+import se.scalablesolutions.akka.config.ScalaConfig._
+import se.scalablesolutions.akka.stm.global._
+import se.scalablesolutions.akka.stm.TransactionManagement._
+import se.scalablesolutions.akka.stm.TransactionManagement
+import se.scalablesolutions.akka.remote.protocol.RemoteProtocol._
+import se.scalablesolutions.akka.remote.{RemoteServer, RemoteRequestProtocolIdFactory, MessageSerializer}
+import se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType._
+import se.scalablesolutions.akka.serialization.Serializer
+
+import com.google.protobuf.ByteString
+
+/**
+ * Type class definition for Actor Serialization
+ */
+trait FromBinary[T <: Actor] {
+ def fromBinary(bytes: Array[Byte], act: T): T
+}
+
+trait ToBinary[T <: Actor] {
+ def toBinary(t: T): Array[Byte]
+}
+
+// client needs to implement Format[] for the respective actor
+trait Format[T <: Actor] extends FromBinary[T] with ToBinary[T]
+
+/**
+ * A default implementation for a stateless actor
+ *
+ * Create a Format object with the client actor as the implementation of the type class
+ *
+ *
+ * object BinaryFormatMyStatelessActor {
+ * implicit object MyStatelessActorFormat extends StatelessActorFormat[MyStatelessActor]
+ * }
+ *
+ */
+trait StatelessActorFormat[T <: Actor] extends Format[T] {
+ def fromBinary(bytes: Array[Byte], act: T) = act
+ def toBinary(ac: T) = Array.empty[Byte]
+}
+
+/**
+ * A default implementation of the type class for a Format that specifies a serializer
+ *
+ * Create a Format object with the client actor as the implementation of the type class and
+ * a serializer object
+ *
+ *
+ * object BinaryFormatMyJavaSerializableActor {
+ * implicit object MyJavaSerializableActorFormat extends SerializerBasedActorFormat[MyJavaSerializableActor] {
+ * val serializer = Serializer.Java
+ * }
+ * }
+ *
+ */
+trait SerializerBasedActorFormat[T <: Actor] extends Format[T] {
+ val serializer: Serializer
+ def fromBinary(bytes: Array[Byte], act: T) = serializer.fromBinary(bytes, Some(act.self.actorClass)).asInstanceOf[T]
+ def toBinary(ac: T) = serializer.toBinary(ac)
+}
+
+/**
+ * Module for local actor serialization
+ */
+object ActorSerialization {
+
+ def fromBinary[T <: Actor](bytes: Array[Byte])(implicit format: Format[T]): ActorRef =
+ fromBinaryToLocalActorRef(bytes, format)
+
+ def toBinary[T <: Actor](a: ActorRef)(implicit format: Format[T]): Array[Byte] =
+ toSerializedActorRefProtocol(a, format).toByteArray
+
+ // wrapper for implicits to be used by Java
+ def fromBinaryJ[T <: Actor](bytes: Array[Byte], format: Format[T]): ActorRef =
+ fromBinary(bytes)(format)
+
+ // wrapper for implicits to be used by Java
+ def toBinaryJ[T <: Actor](a: ActorRef, format: Format[T]): Array[Byte] =
+ toBinary(a)(format)
+
+ private def toSerializedActorRefProtocol[T <: Actor](
+ actorRef: ActorRef, format: Format[T]): SerializedActorRefProtocol = {
+ val lifeCycleProtocol: Option[LifeCycleProtocol] = {
+ def setScope(builder: LifeCycleProtocol.Builder, scope: Scope) = scope match {
+ case Permanent => builder.setLifeCycle(LifeCycleType.PERMANENT)
+ case Temporary => builder.setLifeCycle(LifeCycleType.TEMPORARY)
+ }
+ val builder = LifeCycleProtocol.newBuilder
+ actorRef.lifeCycle match {
+ case Some(LifeCycle(scope)) =>
+ setScope(builder, scope)
+ Some(builder.build)
+ case None => None
+ }
+ }
+
+ val originalAddress = AddressProtocol.newBuilder
+ .setHostname(actorRef.homeAddress.getHostName)
+ .setPort(actorRef.homeAddress.getPort)
+ .build
+
+ val builder = SerializedActorRefProtocol.newBuilder
+ .setUuid(actorRef.uuid)
+ .setId(actorRef.id)
+ .setActorClassname(actorRef.actorClass.getName)
+ .setOriginalAddress(originalAddress)
+ .setIsTransactor(actorRef.isTransactor)
+ .setTimeout(actorRef.timeout)
+
+ actorRef.receiveTimeout.foreach(builder.setReceiveTimeout(_))
+ builder.setActorInstance(ByteString.copyFrom(format.toBinary(actorRef.actor.asInstanceOf[T])))
+ lifeCycleProtocol.foreach(builder.setLifeCycle(_))
+ actorRef.supervisor.foreach(s => builder.setSupervisor(RemoteActorSerialization.toRemoteActorRefProtocol(s)))
+ // FIXME: how to serialize the hotswap PartialFunction ??
+ //hotswap.foreach(builder.setHotswapStack(_))
+ builder.build
+ }
+
+ private def fromBinaryToLocalActorRef[T <: Actor](bytes: Array[Byte], format: Format[T]): ActorRef =
+ fromProtobufToLocalActorRef(SerializedActorRefProtocol.newBuilder.mergeFrom(bytes).build, format, None)
+
+ private def fromProtobufToLocalActorRef[T <: Actor](
+ protocol: SerializedActorRefProtocol, format: Format[T], loader: Option[ClassLoader]): ActorRef = {
+ Actor.log.debug("Deserializing SerializedActorRefProtocol to LocalActorRef:\n" + protocol)
+
+ val serializer =
+ if (format.isInstanceOf[SerializerBasedActorFormat[_]])
+ Some(format.asInstanceOf[SerializerBasedActorFormat[_]].serializer)
+ else None
+
+ val lifeCycle =
+ if (protocol.hasLifeCycle) {
+ val lifeCycleProtocol = protocol.getLifeCycle
+ Some(if (lifeCycleProtocol.getLifeCycle == LifeCycleType.PERMANENT) LifeCycle(Permanent)
+ else if (lifeCycleProtocol.getLifeCycle == LifeCycleType.TEMPORARY) LifeCycle(Temporary)
+ else throw new IllegalActorStateException("LifeCycle type is not valid: " + lifeCycleProtocol.getLifeCycle))
+ } else None
+
+ val supervisor =
+ if (protocol.hasSupervisor)
+ Some(RemoteActorSerialization.fromProtobufToRemoteActorRef(protocol.getSupervisor, loader))
+ else None
+
+ val hotswap =
+ if (serializer.isDefined && protocol.hasHotswapStack) Some(serializer.get
+ .fromBinary(protocol.getHotswapStack.toByteArray, Some(classOf[PartialFunction[Any, Unit]]))
+ .asInstanceOf[PartialFunction[Any, Unit]])
+ else None
+
+ val classLoader = loader.getOrElse(getClass.getClassLoader)
+
+ val factory = () => {
+ val actorClass = classLoader.loadClass(protocol.getActorClassname)
+ if (format.isInstanceOf[SerializerBasedActorFormat[_]])
+ format.asInstanceOf[SerializerBasedActorFormat[_]].serializer.fromBinary(
+ protocol.getActorInstance.toByteArray, Some(actorClass)).asInstanceOf[Actor]
+ else actorClass.newInstance.asInstanceOf[Actor]
+ }
+
+ val ar = new LocalActorRef(
+ protocol.getUuid,
+ protocol.getId,
+ protocol.getOriginalAddress.getHostname,
+ protocol.getOriginalAddress.getPort,
+ if (protocol.hasIsTransactor) protocol.getIsTransactor else false,
+ if (protocol.hasTimeout) protocol.getTimeout else Actor.TIMEOUT,
+ if (protocol.hasReceiveTimeout) Some(protocol.getReceiveTimeout) else None,
+ lifeCycle,
+ supervisor,
+ hotswap,
+ classLoader, // TODO: should we fall back to getClass.getClassLoader?
+ factory)
+
+ val messages = protocol.getMessagesList.toArray.toList.asInstanceOf[List[RemoteRequestProtocol]]
+ messages.foreach(message => ar ! MessageSerializer.deserialize(message.getMessage))
+
+ if (format.isInstanceOf[SerializerBasedActorFormat[_]] == false)
+ format.fromBinary(protocol.getActorInstance.toByteArray, ar.actor.asInstanceOf[T])
+ ar
+ }
+}
+
+object RemoteActorSerialization {
+ /**
+ * Deserializes a byte array (Array[Byte]) into an RemoteActorRef instance.
+ */
+ def fromBinaryToRemoteActorRef(bytes: Array[Byte]): ActorRef =
+ fromProtobufToRemoteActorRef(RemoteActorRefProtocol.newBuilder.mergeFrom(bytes).build, None)
+
+ /**
+ * Deserializes a byte array (Array[Byte]) into an RemoteActorRef instance.
+ */
+ def fromBinaryToRemoteActorRef(bytes: Array[Byte], loader: ClassLoader): ActorRef =
+ fromProtobufToRemoteActorRef(RemoteActorRefProtocol.newBuilder.mergeFrom(bytes).build, Some(loader))
+
+ /**
+ * Deserializes a RemoteActorRefProtocol Protocol Buffers (protobuf) Message into an RemoteActorRef instance.
+ */
+ private[akka] def fromProtobufToRemoteActorRef(protocol: RemoteActorRefProtocol, loader: Option[ClassLoader]): ActorRef = {
+ Actor.log.debug("Deserializing RemoteActorRefProtocol to RemoteActorRef:\n" + protocol)
+ RemoteActorRef(
+ protocol.getUuid,
+ protocol.getActorClassname,
+ protocol.getHomeAddress.getHostname,
+ protocol.getHomeAddress.getPort,
+ protocol.getTimeout,
+ loader)
+ }
+
+ /**
+ * Serializes the ActorRef instance into a Protocol Buffers (protobuf) Message.
+ */
+ def toRemoteActorRefProtocol(ar: ActorRef): RemoteActorRefProtocol = {
+ import ar._
+ val host = homeAddress.getHostName
+ val port = homeAddress.getPort
+
+ if (!registeredInRemoteNodeDuringSerialization) {
+ Actor.log.debug("Register serialized Actor [%s] as remote @ [%s:%s]", actorClass.getName, host, port)
+ RemoteServer.getOrCreateServer(homeAddress)
+ RemoteServer.registerActor(homeAddress, uuid, ar)
+ registeredInRemoteNodeDuringSerialization = true
+ }
+
+ RemoteActorRefProtocol.newBuilder
+ .setUuid(uuid)
+ .setActorClassname(actorClass.getName)
+ .setHomeAddress(AddressProtocol.newBuilder.setHostname(host).setPort(port).build)
+ .setTimeout(timeout)
+ .build
+ }
+
+ def createRemoteRequestProtocolBuilder(
+ actorRef: ActorRef,
+ message: Any,
+ isOneWay: Boolean,
+ senderOption: Option[ActorRef],
+ typedActorInfo: Option[Tuple2[String, String]],
+ actorType: ActorType):
+ RemoteRequestProtocol.Builder = {
+ import actorRef._
+
+ val actorInfoBuilder = ActorInfoProtocol.newBuilder
+ .setUuid(uuid)
+ .setTarget(actorClassName)
+ .setTimeout(timeout)
+
+ typedActorInfo.foreach { typedActor =>
+ actorInfoBuilder.setTypedActorInfo(
+ TypedActorInfoProtocol.newBuilder
+ .setInterface(typedActor._1)
+ .setMethod(typedActor._2)
+ .build)
+ }
+
+ actorType match {
+ case ActorType.ScalaActor => actorInfoBuilder.setActorType(SCALA_ACTOR)
+ case ActorType.TypedActor => actorInfoBuilder.setActorType(TYPED_ACTOR)
+ }
+ val actorInfo = actorInfoBuilder.build
+
+ val requestBuilder = RemoteRequestProtocol.newBuilder
+ .setId(RemoteRequestProtocolIdFactory.nextId)
+ .setMessage(MessageSerializer.serialize(message))
+ .setActorInfo(actorInfo)
+ .setIsOneWay(isOneWay)
+
+ val id = registerSupervisorAsRemoteActor
+ if (id.isDefined) requestBuilder.setSupervisorUuid(id.get)
+
+ senderOption.foreach { sender =>
+ RemoteServer.getOrCreateServer(sender.homeAddress).register(sender.uuid, sender)
+ requestBuilder.setSender(toRemoteActorRefProtocol(sender))
+ }
+ requestBuilder
+ }
+}
diff --git a/akka-core/src/main/scala/serialization/Serializer.scala b/akka-remote/src/main/scala/serialization/Serializer.scala
similarity index 100%
rename from akka-core/src/main/scala/serialization/Serializer.scala
rename to akka-remote/src/main/scala/serialization/Serializer.scala
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/ProtobufProtocol.java b/akka-remote/src/test/java/se/scalablesolutions/akka/actor/ProtobufProtocol.java
similarity index 98%
rename from akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/ProtobufProtocol.java
rename to akka-remote/src/test/java/se/scalablesolutions/akka/actor/ProtobufProtocol.java
index 683f008729..183d2025d0 100644
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/ProtobufProtocol.java
+++ b/akka-remote/src/test/java/se/scalablesolutions/akka/actor/ProtobufProtocol.java
@@ -15,47 +15,47 @@ public final class ProtobufProtocol {
initFields();
}
private ProtobufPOJO(boolean noInit) {}
-
+
private static final ProtobufPOJO defaultInstance;
public static ProtobufPOJO getDefaultInstance() {
return defaultInstance;
}
-
+
public ProtobufPOJO getDefaultInstanceForType() {
return defaultInstance;
}
-
+
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_ProtobufPOJO_descriptor;
}
-
+
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_ProtobufPOJO_fieldAccessorTable;
}
-
+
// required uint64 id = 1;
public static final int ID_FIELD_NUMBER = 1;
private boolean hasId;
private long id_ = 0L;
public boolean hasId() { return hasId; }
public long getId() { return id_; }
-
+
// required string name = 2;
public static final int NAME_FIELD_NUMBER = 2;
private boolean hasName;
private java.lang.String name_ = "";
public boolean hasName() { return hasName; }
public java.lang.String getName() { return name_; }
-
+
// required bool status = 3;
public static final int STATUS_FIELD_NUMBER = 3;
private boolean hasStatus;
private boolean status_ = false;
public boolean hasStatus() { return hasStatus; }
public boolean getStatus() { return status_; }
-
+
private void initFields() {
}
public final boolean isInitialized() {
@@ -64,7 +64,7 @@ public final class ProtobufProtocol {
if (!hasStatus) return false;
return true;
}
-
+
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
@@ -79,12 +79,12 @@ public final class ProtobufProtocol {
}
getUnknownFields().writeTo(output);
}
-
+
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
-
+
size = 0;
if (hasId()) {
size += com.google.protobuf.CodedOutputStream
@@ -102,7 +102,7 @@ public final class ProtobufProtocol {
memoizedSerializedSize = size;
return size;
}
-
+
public static se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
@@ -169,31 +169,31 @@ public final class ProtobufProtocol {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
-
+
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
-
+
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder {
private se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO result;
-
+
// Construct using se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO.newBuilder()
private Builder() {}
-
+
private static Builder create() {
Builder builder = new Builder();
builder.result = new se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO();
return builder;
}
-
+
protected se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO internalGetResult() {
return result;
}
-
+
public Builder clear() {
if (result == null) {
throw new IllegalStateException(
@@ -202,20 +202,20 @@ public final class ProtobufProtocol {
result = new se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO();
return this;
}
-
+
public Builder clone() {
return create().mergeFrom(result);
}
-
+
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO.getDescriptor();
}
-
+
public se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO getDefaultInstanceForType() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO.getDefaultInstance();
}
-
+
public boolean isInitialized() {
return result.isInitialized();
}
@@ -225,7 +225,7 @@ public final class ProtobufProtocol {
}
return buildPartial();
}
-
+
private se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO buildParsed()
throws com.google.protobuf.InvalidProtocolBufferException {
if (!isInitialized()) {
@@ -234,7 +234,7 @@ public final class ProtobufProtocol {
}
return buildPartial();
}
-
+
public se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO buildPartial() {
if (result == null) {
throw new IllegalStateException(
@@ -244,7 +244,7 @@ public final class ProtobufProtocol {
result = null;
return returnMe;
}
-
+
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO) {
return mergeFrom((se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO)other);
@@ -253,7 +253,7 @@ public final class ProtobufProtocol {
return this;
}
}
-
+
public Builder mergeFrom(se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO other) {
if (other == se.scalablesolutions.akka.actor.ProtobufProtocol.ProtobufPOJO.getDefaultInstance()) return this;
if (other.hasId()) {
@@ -268,7 +268,7 @@ public final class ProtobufProtocol {
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
-
+
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -305,8 +305,8 @@ public final class ProtobufProtocol {
}
}
}
-
-
+
+
// required uint64 id = 1;
public boolean hasId() {
return result.hasId();
@@ -324,7 +324,7 @@ public final class ProtobufProtocol {
result.id_ = 0L;
return this;
}
-
+
// required string name = 2;
public boolean hasName() {
return result.hasName();
@@ -345,7 +345,7 @@ public final class ProtobufProtocol {
result.name_ = getDefaultInstance().getName();
return this;
}
-
+
// required bool status = 3;
public boolean hasStatus() {
return result.hasStatus();
@@ -363,19 +363,19 @@ public final class ProtobufProtocol {
result.status_ = false;
return this;
}
-
+
// @@protoc_insertion_point(builder_scope:se.scalablesolutions.akka.actor.ProtobufPOJO)
}
-
+
static {
defaultInstance = new ProtobufPOJO(true);
se.scalablesolutions.akka.actor.ProtobufProtocol.internalForceInit();
defaultInstance.initFields();
}
-
+
// @@protoc_insertion_point(class_scope:se.scalablesolutions.akka.actor.ProtobufPOJO)
}
-
+
public static final class Counter extends
com.google.protobuf.GeneratedMessage {
// Use Counter.newBuilder() to construct.
@@ -383,40 +383,40 @@ public final class ProtobufProtocol {
initFields();
}
private Counter(boolean noInit) {}
-
+
private static final Counter defaultInstance;
public static Counter getDefaultInstance() {
return defaultInstance;
}
-
+
public Counter getDefaultInstanceForType() {
return defaultInstance;
}
-
+
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_Counter_descriptor;
}
-
+
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_Counter_fieldAccessorTable;
}
-
+
// required uint32 count = 1;
public static final int COUNT_FIELD_NUMBER = 1;
private boolean hasCount;
private int count_ = 0;
public boolean hasCount() { return hasCount; }
public int getCount() { return count_; }
-
+
private void initFields() {
}
public final boolean isInitialized() {
if (!hasCount) return false;
return true;
}
-
+
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
@@ -425,12 +425,12 @@ public final class ProtobufProtocol {
}
getUnknownFields().writeTo(output);
}
-
+
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
-
+
size = 0;
if (hasCount()) {
size += com.google.protobuf.CodedOutputStream
@@ -440,7 +440,7 @@ public final class ProtobufProtocol {
memoizedSerializedSize = size;
return size;
}
-
+
public static se.scalablesolutions.akka.actor.ProtobufProtocol.Counter parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
@@ -507,31 +507,31 @@ public final class ProtobufProtocol {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
-
+
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(se.scalablesolutions.akka.actor.ProtobufProtocol.Counter prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
-
+
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder {
private se.scalablesolutions.akka.actor.ProtobufProtocol.Counter result;
-
+
// Construct using se.scalablesolutions.akka.actor.ProtobufProtocol.Counter.newBuilder()
private Builder() {}
-
+
private static Builder create() {
Builder builder = new Builder();
builder.result = new se.scalablesolutions.akka.actor.ProtobufProtocol.Counter();
return builder;
}
-
+
protected se.scalablesolutions.akka.actor.ProtobufProtocol.Counter internalGetResult() {
return result;
}
-
+
public Builder clear() {
if (result == null) {
throw new IllegalStateException(
@@ -540,20 +540,20 @@ public final class ProtobufProtocol {
result = new se.scalablesolutions.akka.actor.ProtobufProtocol.Counter();
return this;
}
-
+
public Builder clone() {
return create().mergeFrom(result);
}
-
+
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.Counter.getDescriptor();
}
-
+
public se.scalablesolutions.akka.actor.ProtobufProtocol.Counter getDefaultInstanceForType() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.Counter.getDefaultInstance();
}
-
+
public boolean isInitialized() {
return result.isInitialized();
}
@@ -563,7 +563,7 @@ public final class ProtobufProtocol {
}
return buildPartial();
}
-
+
private se.scalablesolutions.akka.actor.ProtobufProtocol.Counter buildParsed()
throws com.google.protobuf.InvalidProtocolBufferException {
if (!isInitialized()) {
@@ -572,7 +572,7 @@ public final class ProtobufProtocol {
}
return buildPartial();
}
-
+
public se.scalablesolutions.akka.actor.ProtobufProtocol.Counter buildPartial() {
if (result == null) {
throw new IllegalStateException(
@@ -582,7 +582,7 @@ public final class ProtobufProtocol {
result = null;
return returnMe;
}
-
+
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof se.scalablesolutions.akka.actor.ProtobufProtocol.Counter) {
return mergeFrom((se.scalablesolutions.akka.actor.ProtobufProtocol.Counter)other);
@@ -591,7 +591,7 @@ public final class ProtobufProtocol {
return this;
}
}
-
+
public Builder mergeFrom(se.scalablesolutions.akka.actor.ProtobufProtocol.Counter other) {
if (other == se.scalablesolutions.akka.actor.ProtobufProtocol.Counter.getDefaultInstance()) return this;
if (other.hasCount()) {
@@ -600,7 +600,7 @@ public final class ProtobufProtocol {
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
-
+
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -629,8 +629,8 @@ public final class ProtobufProtocol {
}
}
}
-
-
+
+
// required uint32 count = 1;
public boolean hasCount() {
return result.hasCount();
@@ -648,19 +648,19 @@ public final class ProtobufProtocol {
result.count_ = 0;
return this;
}
-
+
// @@protoc_insertion_point(builder_scope:se.scalablesolutions.akka.actor.Counter)
}
-
+
static {
defaultInstance = new Counter(true);
se.scalablesolutions.akka.actor.ProtobufProtocol.internalForceInit();
defaultInstance.initFields();
}
-
+
// @@protoc_insertion_point(class_scope:se.scalablesolutions.akka.actor.Counter)
}
-
+
public static final class DualCounter extends
com.google.protobuf.GeneratedMessage {
// Use DualCounter.newBuilder() to construct.
@@ -668,40 +668,40 @@ public final class ProtobufProtocol {
initFields();
}
private DualCounter(boolean noInit) {}
-
+
private static final DualCounter defaultInstance;
public static DualCounter getDefaultInstance() {
return defaultInstance;
}
-
+
public DualCounter getDefaultInstanceForType() {
return defaultInstance;
}
-
+
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_DualCounter_descriptor;
}
-
+
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.internal_static_se_scalablesolutions_akka_actor_DualCounter_fieldAccessorTable;
}
-
+
// required uint32 count1 = 1;
public static final int COUNT1_FIELD_NUMBER = 1;
private boolean hasCount1;
private int count1_ = 0;
public boolean hasCount1() { return hasCount1; }
public int getCount1() { return count1_; }
-
+
// required uint32 count2 = 2;
public static final int COUNT2_FIELD_NUMBER = 2;
private boolean hasCount2;
private int count2_ = 0;
public boolean hasCount2() { return hasCount2; }
public int getCount2() { return count2_; }
-
+
private void initFields() {
}
public final boolean isInitialized() {
@@ -709,7 +709,7 @@ public final class ProtobufProtocol {
if (!hasCount2) return false;
return true;
}
-
+
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
@@ -721,12 +721,12 @@ public final class ProtobufProtocol {
}
getUnknownFields().writeTo(output);
}
-
+
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
-
+
size = 0;
if (hasCount1()) {
size += com.google.protobuf.CodedOutputStream
@@ -740,7 +740,7 @@ public final class ProtobufProtocol {
memoizedSerializedSize = size;
return size;
}
-
+
public static se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
@@ -807,31 +807,31 @@ public final class ProtobufProtocol {
return newBuilder().mergeFrom(input, extensionRegistry)
.buildParsed();
}
-
+
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
-
+
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder {
private se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter result;
-
+
// Construct using se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter.newBuilder()
private Builder() {}
-
+
private static Builder create() {
Builder builder = new Builder();
builder.result = new se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter();
return builder;
}
-
+
protected se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter internalGetResult() {
return result;
}
-
+
public Builder clear() {
if (result == null) {
throw new IllegalStateException(
@@ -840,20 +840,20 @@ public final class ProtobufProtocol {
result = new se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter();
return this;
}
-
+
public Builder clone() {
return create().mergeFrom(result);
}
-
+
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter.getDescriptor();
}
-
+
public se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter getDefaultInstanceForType() {
return se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter.getDefaultInstance();
}
-
+
public boolean isInitialized() {
return result.isInitialized();
}
@@ -863,7 +863,7 @@ public final class ProtobufProtocol {
}
return buildPartial();
}
-
+
private se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter buildParsed()
throws com.google.protobuf.InvalidProtocolBufferException {
if (!isInitialized()) {
@@ -872,7 +872,7 @@ public final class ProtobufProtocol {
}
return buildPartial();
}
-
+
public se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter buildPartial() {
if (result == null) {
throw new IllegalStateException(
@@ -882,7 +882,7 @@ public final class ProtobufProtocol {
result = null;
return returnMe;
}
-
+
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter) {
return mergeFrom((se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter)other);
@@ -891,7 +891,7 @@ public final class ProtobufProtocol {
return this;
}
}
-
+
public Builder mergeFrom(se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter other) {
if (other == se.scalablesolutions.akka.actor.ProtobufProtocol.DualCounter.getDefaultInstance()) return this;
if (other.hasCount1()) {
@@ -903,7 +903,7 @@ public final class ProtobufProtocol {
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
-
+
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -936,8 +936,8 @@ public final class ProtobufProtocol {
}
}
}
-
-
+
+
// required uint32 count1 = 1;
public boolean hasCount1() {
return result.hasCount1();
@@ -955,7 +955,7 @@ public final class ProtobufProtocol {
result.count1_ = 0;
return this;
}
-
+
// required uint32 count2 = 2;
public boolean hasCount2() {
return result.hasCount2();
@@ -973,19 +973,19 @@ public final class ProtobufProtocol {
result.count2_ = 0;
return this;
}
-
+
// @@protoc_insertion_point(builder_scope:se.scalablesolutions.akka.actor.DualCounter)
}
-
+
static {
defaultInstance = new DualCounter(true);
se.scalablesolutions.akka.actor.ProtobufProtocol.internalForceInit();
defaultInstance.initFields();
}
-
+
// @@protoc_insertion_point(class_scope:se.scalablesolutions.akka.actor.DualCounter)
}
-
+
private static com.google.protobuf.Descriptors.Descriptor
internal_static_se_scalablesolutions_akka_actor_ProtobufPOJO_descriptor;
private static
@@ -1001,7 +1001,7 @@ public final class ProtobufProtocol {
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_se_scalablesolutions_akka_actor_DualCounter_fieldAccessorTable;
-
+
public static com.google.protobuf.Descriptors.FileDescriptor
getDescriptor() {
return descriptor;
@@ -1053,8 +1053,8 @@ public final class ProtobufProtocol {
new com.google.protobuf.Descriptors.FileDescriptor[] {
}, assigner);
}
-
+
public static void internalForceInit() {}
-
+
// @@protoc_insertion_point(outer_class_scope)
}
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOne.java b/akka-remote/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOne.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOne.java
rename to akka-remote/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOne.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOneImpl.java b/akka-remote/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOneImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOneImpl.java
rename to akka-remote/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOneImpl.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwo.java b/akka-remote/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwo.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwo.java
rename to akka-remote/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwo.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwoImpl.java b/akka-remote/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwoImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwoImpl.java
rename to akka-remote/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwoImpl.java
diff --git a/akka-typed-actors/src/main/java/se/scalablesolutions/akka/config/DependencyBinding.java b/akka-remote/src/test/java/se/scalablesolutions/akka/config/DependencyBinding.java
similarity index 100%
rename from akka-typed-actors/src/main/java/se/scalablesolutions/akka/config/DependencyBinding.java
rename to akka-remote/src/test/java/se/scalablesolutions/akka/config/DependencyBinding.java
diff --git a/akka-typed-actors/src/main/java/se/scalablesolutions/akka/config/TypedActorGuiceModule.java b/akka-remote/src/test/java/se/scalablesolutions/akka/config/TypedActorGuiceModule.java
similarity index 100%
rename from akka-typed-actors/src/main/java/se/scalablesolutions/akka/config/TypedActorGuiceModule.java
rename to akka-remote/src/test/java/se/scalablesolutions/akka/config/TypedActorGuiceModule.java
diff --git a/akka-core/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java b/akka-remote/src/test/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java
similarity index 100%
rename from akka-core/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java
rename to akka-remote/src/test/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java
diff --git a/akka-core/src/test/protocol/ProtobufProtocol.proto b/akka-remote/src/test/protocol/ProtobufProtocol.proto
similarity index 92%
rename from akka-core/src/test/protocol/ProtobufProtocol.proto
rename to akka-remote/src/test/protocol/ProtobufProtocol.proto
index 35ffec95e3..a63ebdff62 100644
--- a/akka-core/src/test/protocol/ProtobufProtocol.proto
+++ b/akka-remote/src/test/protocol/ProtobufProtocol.proto
@@ -6,7 +6,7 @@ package se.scalablesolutions.akka.actor;
/*
Compile with:
- cd ./akka-core/src/test/protocol
+ cd ./akka-remote/src/test/protocol
protoc ProtobufProtocol.proto --java_out ../java
*/
diff --git a/akka-core/src/test/resources/META-INF/aop.xml b/akka-remote/src/test/resources/META-INF/aop.xml
similarity index 100%
rename from akka-core/src/test/resources/META-INF/aop.xml
rename to akka-remote/src/test/resources/META-INF/aop.xml
diff --git a/akka-core/src/test/resources/logback-test.xml b/akka-remote/src/test/resources/logback-test.xml
similarity index 100%
rename from akka-core/src/test/resources/logback-test.xml
rename to akka-remote/src/test/resources/logback-test.xml
diff --git a/akka-actors/src/test/scala/Messages.scala b/akka-remote/src/test/scala/Messages.scala
similarity index 83%
rename from akka-actors/src/test/scala/Messages.scala
rename to akka-remote/src/test/scala/Messages.scala
index ad1fcf8885..2b99155626 100644
--- a/akka-actors/src/test/scala/Messages.scala
+++ b/akka-remote/src/test/scala/Messages.scala
@@ -8,14 +8,6 @@ import se.scalablesolutions.akka.serialization.Serializable
import sbinary._
import sbinary.Operations._
-sealed abstract class TestMessage
-
-case object Ping extends TestMessage
-case object Pong extends TestMessage
-case object OneWay extends TestMessage
-case object Die extends TestMessage
-case object NotifySupervisorExit extends TestMessage
-
case class User(val usernamePassword: Tuple2[String, String],
val email: String,
val age: Int)
diff --git a/akka-core/src/test/scala/remote/ClientInitiatedRemoteActorSpec.scala b/akka-remote/src/test/scala/remote/ClientInitiatedRemoteActorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/remote/ClientInitiatedRemoteActorSpec.scala
rename to akka-remote/src/test/scala/remote/ClientInitiatedRemoteActorSpec.scala
diff --git a/akka-core/src/test/scala/remote/RemoteSupervisorSpec.scala b/akka-remote/src/test/scala/remote/RemoteSupervisorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/remote/RemoteSupervisorSpec.scala
rename to akka-remote/src/test/scala/remote/RemoteSupervisorSpec.scala
diff --git a/akka-core/src/test/scala/remote/RemoteTransactionalTypedActorSpec.scala b/akka-remote/src/test/scala/remote/RemoteTransactionalTypedActorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/remote/RemoteTransactionalTypedActorSpec.scala
rename to akka-remote/src/test/scala/remote/RemoteTransactionalTypedActorSpec.scala
diff --git a/akka-core/src/test/scala/remote/RemoteTypedActorSpec.scala b/akka-remote/src/test/scala/remote/RemoteTypedActorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/remote/RemoteTypedActorSpec.scala
rename to akka-remote/src/test/scala/remote/RemoteTypedActorSpec.scala
diff --git a/akka-core/src/test/scala/remote/ServerInitiatedRemoteActorSample.scala b/akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSample.scala
similarity index 100%
rename from akka-core/src/test/scala/remote/ServerInitiatedRemoteActorSample.scala
rename to akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSample.scala
diff --git a/akka-core/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala b/akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala
rename to akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala
diff --git a/akka-core/src/test/scala/remote/ShutdownSpec.scala b/akka-remote/src/test/scala/remote/ShutdownSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/remote/ShutdownSpec.scala
rename to akka-remote/src/test/scala/remote/ShutdownSpec.scala
diff --git a/akka-core/src/test/scala/serialization/ProtobufActorMessageSerializationSpec.scala b/akka-remote/src/test/scala/serialization/ProtobufActorMessageSerializationSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/serialization/ProtobufActorMessageSerializationSpec.scala
rename to akka-remote/src/test/scala/serialization/ProtobufActorMessageSerializationSpec.scala
diff --git a/akka-core/src/test/scala/serialization/SerializableTypeClassActorSpec.scala b/akka-remote/src/test/scala/serialization/SerializableTypeClassActorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/serialization/SerializableTypeClassActorSpec.scala
rename to akka-remote/src/test/scala/serialization/SerializableTypeClassActorSpec.scala
diff --git a/akka-core/src/test/scala/serialization/SerializerSpec.scala b/akka-remote/src/test/scala/serialization/SerializerSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/serialization/SerializerSpec.scala
rename to akka-remote/src/test/scala/serialization/SerializerSpec.scala
diff --git a/akka-core/src/test/scala/serialization/UntypedActorSerializationSpec.scala b/akka-remote/src/test/scala/serialization/UntypedActorSerializationSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/serialization/UntypedActorSerializationSpec.scala
rename to akka-remote/src/test/scala/serialization/UntypedActorSerializationSpec.scala
diff --git a/akka-core/src/test/scala/ticket/Ticket001Spec.scala b/akka-remote/src/test/scala/ticket/Ticket001Spec.scala
similarity index 100%
rename from akka-core/src/test/scala/ticket/Ticket001Spec.scala
rename to akka-remote/src/test/scala/ticket/Ticket001Spec.scala
diff --git a/akka-samples/akka-sample-chat/Buildfile b/akka-samples/akka-sample-chat/Buildfile
index fecc093964..814e6e4149 100644
--- a/akka-samples/akka-sample-chat/Buildfile
+++ b/akka-samples/akka-sample-chat/Buildfile
@@ -7,7 +7,7 @@ repositories.remote << "http://www.ibiblio.org/maven2/"
repositories.remote << "http://www.lag.net/repo"
repositories.remote << "http://multiverse.googlecode.com/svn/maven-repository/releases"
-AKKA = group('akka-core', 'akka-comet', 'akka-util','akka-kernel', 'akka-rest', 'akka-util-java',
+AKKA = group('akka-remote', 'akka-comet', 'akka-util','akka-kernel', 'akka-rest', 'akka-util-java',
'akka-security','akka-persistence-common', 'akka-persistence-redis',
'akka-amqp',
:under=> 'se.scalablesolutions.akka',
diff --git a/akka-sbt-plugin/src/main/scala/AkkaProject.scala b/akka-sbt-plugin/src/main/scala/AkkaProject.scala
index ecf19ae135..ad0f98eee1 100644
--- a/akka-sbt-plugin/src/main/scala/AkkaProject.scala
+++ b/akka-sbt-plugin/src/main/scala/AkkaProject.scala
@@ -46,6 +46,6 @@ trait AkkaProject extends AkkaBaseProject {
// convenience method
def akkaModule(module: String) = "se.scalablesolutions.akka" %% ("akka-" + module) % akkaVersion
- // akka core dependency by default
- val akkaCore = akkaModule("core")
+ // akka remote dependency by default
+ val akkaRemote = akkaModule("remote")
}
diff --git a/akka-typed-actor/src/main/java/se/scalablesolutions/akka/config/DependencyBinding.java b/akka-typed-actor/src/main/java/se/scalablesolutions/akka/config/DependencyBinding.java
new file mode 100644
index 0000000000..2956e6860f
--- /dev/null
+++ b/akka-typed-actor/src/main/java/se/scalablesolutions/akka/config/DependencyBinding.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (C) 2009-2010 Scalable Solutions AB
+ */
+
+package se.scalablesolutions.akka.config;
+
+/**
+ * @author Jonas Bonér
+ */
+public class DependencyBinding {
+ private final Class intf;
+ private final Object target;
+
+ public DependencyBinding(final Class intf, final Object target) {
+ this.intf = intf;
+ this.target = target;
+ }
+ public Class getInterface() {
+ return intf;
+ }
+ public Object getTarget() {
+ return target;
+ }
+}
diff --git a/akka-typed-actor/src/main/java/se/scalablesolutions/akka/config/TypedActorGuiceModule.java b/akka-typed-actor/src/main/java/se/scalablesolutions/akka/config/TypedActorGuiceModule.java
new file mode 100644
index 0000000000..0c2ed11402
--- /dev/null
+++ b/akka-typed-actor/src/main/java/se/scalablesolutions/akka/config/TypedActorGuiceModule.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (C) 2009-2010 Scalable Solutions AB
+ */
+
+package se.scalablesolutions.akka.config;
+
+import java.util.List;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Singleton;
+//import com.google.inject.jsr250.ResourceProviderFactory;
+
+/**
+ * @author Jonas Bonér
+ */
+public class TypedActorGuiceModule extends AbstractModule {
+ private final List bindings;
+
+ public TypedActorGuiceModule(final List bindings) {
+ this.bindings = bindings;
+ }
+
+ protected void configure() {
+ //bind(ResourceProviderFactory.class);
+ for (int i = 0; i < bindings.size(); i++) {
+ final DependencyBinding db = bindings.get(i);
+ //if (db.getInterface() ne null) bind((Class) db.getInterface()).to((Class) db.getTarget()).in(Singleton.class);
+ //else
+ this.bind(db.getInterface()).toInstance(db.getTarget());
+ }
+ }
+}
diff --git a/akka-typed-actors/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java b/akka-typed-actor/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java
similarity index 100%
rename from akka-typed-actors/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java
rename to akka-typed-actor/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java
diff --git a/akka-typed-actors/src/main/scala/actor/TypedActor.scala b/akka-typed-actor/src/main/scala/actor/TypedActor.scala
similarity index 94%
rename from akka-typed-actors/src/main/scala/actor/TypedActor.scala
rename to akka-typed-actor/src/main/scala/actor/TypedActor.scala
index c3d2444e55..96790b590b 100644
--- a/akka-typed-actors/src/main/scala/actor/TypedActor.scala
+++ b/akka-typed-actor/src/main/scala/actor/TypedActor.scala
@@ -6,12 +6,10 @@ package se.scalablesolutions.akka.actor
import Actor._
import se.scalablesolutions.akka.config.FaultHandlingStrategy
-import se.scalablesolutions.akka.remote.protocol.RemoteProtocol._
-import se.scalablesolutions.akka.remote.{MessageSerializer, RemoteClient, RemoteRequestProtocolIdFactory}
import se.scalablesolutions.akka.dispatch.{MessageDispatcher, Future, CompletableFuture, Dispatchers}
import se.scalablesolutions.akka.config.ScalaConfig._
-import se.scalablesolutions.akka.serialization.Serializer
import se.scalablesolutions.akka.util._
+import ReflectiveAccess._
import org.codehaus.aspectwerkz.joinpoint.{MethodRtti, JoinPoint}
import org.codehaus.aspectwerkz.proxy.Proxy
@@ -226,8 +224,11 @@ abstract class TypedActor extends Actor with Proxyable {
if (arg.getClass.getName.contains(TypedActor.AW_PROXY_PREFIX)) unserializable = true
}
if (!unserializable && hasMutableArgument) {
- val copyOfArgs = Serializer.Java.deepClone(args)
- joinPoint.getRtti.asInstanceOf[MethodRtti].setParameterValues(copyOfArgs.asInstanceOf[Array[AnyRef]])
+
+ //FIXME serializeArguments
+ // val copyOfArgs = Serializer.Java.deepClone(args)
+ // joinPoint.getRtti.asInstanceOf[MethodRtti].setParameterValues(copyOfArgs.asInstanceOf[Array[AnyRef]])
+ joinPoint
}
}
}
@@ -538,11 +539,11 @@ object TypedActor extends Logging {
private[akka] def supervise(restartStrategy: RestartStrategy, components: List[Supervise]): Supervisor =
Supervisor(SupervisorConfig(restartStrategy, components))
- private[akka] def isJoinPointAndOneWay(message: AnyRef): Boolean = if (isJoinPoint(message))
+ def isJoinPointAndOneWay(message: Any): Boolean = if (isJoinPoint(message))
isOneWay(message.asInstanceOf[JoinPoint].getRtti.asInstanceOf[MethodRtti])
else false
- private[akka] def isJoinPoint(message: AnyRef): Boolean = message.isInstanceOf[JoinPoint])
+ private[akka] def isJoinPoint(message: Any): Boolean = message.isInstanceOf[JoinPoint]
}
/**
@@ -604,33 +605,14 @@ private[akka] sealed class TypedActorAspect {
private def remoteDispatch(joinPoint: JoinPoint): AnyRef = {
val methodRtti = joinPoint.getRtti.asInstanceOf[MethodRtti]
val isOneWay = TypedActor.isOneWay(methodRtti)
+
val (message: Array[AnyRef], isEscaped) = escapeArguments(methodRtti.getParameterValues)
-
- val typedActorInfo = TypedActorInfoProtocol.newBuilder
- .setInterface(interfaceClass.getName)
- .setMethod(methodRtti.getMethod.getName)
- .build
-
- val actorInfo = ActorInfoProtocol.newBuilder
- .setUuid(uuid)
- .setTarget(typedActor.getClass.getName)
- .setTimeout(timeout)
- .setActorType(ActorType.TYPED_ACTOR)
- .setTypedActorInfo(typedActorInfo)
- .build
-
- val requestBuilder = RemoteRequestProtocol.newBuilder
- .setId(RemoteRequestProtocolIdFactory.nextId)
- .setMessage(MessageSerializer.serialize(message))
- .setActorInfo(actorInfo)
- .setIsOneWay(isOneWay)
-
- val id = actorRef.registerSupervisorAsRemoteActor
- if (id.isDefined) requestBuilder.setSupervisorUuid(id.get)
-
- val remoteMessage = requestBuilder.build
-
- val future = RemoteClient.clientFor(remoteAddress.get).send(remoteMessage, None)
+
+ val future = RemoteClientModule.send[AnyRef](
+ message, None, None, remoteAddress.get,
+ timeout, isOneWay, actorRef,
+ Some((interfaceClass.getName, methodRtti.getMethod.getName)),
+ ActorType.TypedActor)
if (isOneWay) null // for void methods
else {
diff --git a/akka-typed-actors/src/main/scala/config/TypedActorConfigurator.scala b/akka-typed-actor/src/main/scala/config/TypedActorConfigurator.scala
similarity index 100%
rename from akka-typed-actors/src/main/scala/config/TypedActorConfigurator.scala
rename to akka-typed-actor/src/main/scala/config/TypedActorConfigurator.scala
diff --git a/akka-typed-actors/src/main/scala/config/TypedActorGuiceConfigurator.scala b/akka-typed-actor/src/main/scala/config/TypedActorGuiceConfigurator.scala
similarity index 97%
rename from akka-typed-actors/src/main/scala/config/TypedActorGuiceConfigurator.scala
rename to akka-typed-actor/src/main/scala/config/TypedActorGuiceConfigurator.scala
index 718050655c..339c4d297d 100644
--- a/akka-typed-actors/src/main/scala/config/TypedActorGuiceConfigurator.scala
+++ b/akka-typed-actor/src/main/scala/config/TypedActorGuiceConfigurator.scala
@@ -6,8 +6,8 @@ package se.scalablesolutions.akka.config
import se.scalablesolutions.akka.actor._
import se.scalablesolutions.akka.config.ScalaConfig._
-import se.scalablesolutions.akka.remote.RemoteServer
-import se.scalablesolutions.akka.util.Logging
+import se.scalablesolutions.akka.util._
+import ReflectiveAccess._
import org.codehaus.aspectwerkz.proxy.Proxy
@@ -122,7 +122,7 @@ private[akka] class TypedActorGuiceConfigurator extends TypedActorConfiguratorBa
remoteAddress.foreach { address =>
actorRef.makeRemote(remoteAddress.get)
- RemoteServer.registerTypedActor(address, implementationClass.getName, proxy)
+ RemoteServerModule.registerTypedActor(address, implementationClass.getName, proxy)
}
AspectInitRegistry.register(
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/Bar.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/Bar.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/Bar.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/Bar.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/BarImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/BarImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/BarImpl.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/BarImpl.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/Ext.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/Ext.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/Ext.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/Ext.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/ExtImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/ExtImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/ExtImpl.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/ExtImpl.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/Foo.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/Foo.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/Foo.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/Foo.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/FooImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/FooImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/FooImpl.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/FooImpl.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActor.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActor.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActor.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActor.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/SamplePojo.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SamplePojo.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/SamplePojo.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SamplePojo.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojo.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojo.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojo.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojo.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCaller.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCaller.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCaller.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCaller.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCallerImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCallerImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCallerImpl.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCallerImpl.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoImpl.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoImpl.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActor.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActor.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActor.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActor.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailer.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailer.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailer.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailer.java
diff --git a/akka-core/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailerImpl.java b/akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailerImpl.java
similarity index 100%
rename from akka-core/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailerImpl.java
rename to akka-typed-actor/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailerImpl.java
diff --git a/akka-typed-actors/src/test/resources/META-INF/aop.xml b/akka-typed-actor/src/test/resources/META-INF/aop.xml
similarity index 100%
rename from akka-typed-actors/src/test/resources/META-INF/aop.xml
rename to akka-typed-actor/src/test/resources/META-INF/aop.xml
diff --git a/akka-core/src/test/scala/actor/typed-actor/NestedTransactionalTypedActorSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/NestedTransactionalTypedActorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/actor/typed-actor/NestedTransactionalTypedActorSpec.scala
rename to akka-typed-actor/src/test/scala/actor/typed-actor/NestedTransactionalTypedActorSpec.scala
diff --git a/akka-core/src/test/scala/actor/typed-actor/RestartNestedTransactionalTypedActorSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/RestartNestedTransactionalTypedActorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/actor/typed-actor/RestartNestedTransactionalTypedActorSpec.scala
rename to akka-typed-actor/src/test/scala/actor/typed-actor/RestartNestedTransactionalTypedActorSpec.scala
diff --git a/akka-core/src/test/scala/actor/typed-actor/RestartTransactionalTypedActorSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/RestartTransactionalTypedActorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/actor/typed-actor/RestartTransactionalTypedActorSpec.scala
rename to akka-typed-actor/src/test/scala/actor/typed-actor/RestartTransactionalTypedActorSpec.scala
diff --git a/akka-core/src/test/scala/actor/typed-actor/TransactionalTypedActorSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/TransactionalTypedActorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/actor/typed-actor/TransactionalTypedActorSpec.scala
rename to akka-typed-actor/src/test/scala/actor/typed-actor/TransactionalTypedActorSpec.scala
diff --git a/akka-core/src/test/scala/actor/typed-actor/TypedActorContextSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorContextSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/actor/typed-actor/TypedActorContextSpec.scala
rename to akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorContextSpec.scala
diff --git a/akka-core/src/test/scala/actor/typed-actor/TypedActorGuiceConfiguratorSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorGuiceConfiguratorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/actor/typed-actor/TypedActorGuiceConfiguratorSpec.scala
rename to akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorGuiceConfiguratorSpec.scala
diff --git a/akka-core/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala
rename to akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala
diff --git a/akka-core/src/test/scala/actor/typed-actor/TypedActorSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/actor/typed-actor/TypedActorSpec.scala
rename to akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorSpec.scala
diff --git a/akka-core/src/test/scala/actor/typed-actor/TypedActorUtilFunctionsSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorUtilFunctionsSpec.scala
similarity index 100%
rename from akka-core/src/test/scala/actor/typed-actor/TypedActorUtilFunctionsSpec.scala
rename to akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorUtilFunctionsSpec.scala
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/Bar.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/Bar.java
deleted file mode 100644
index 906476b789..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/Bar.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-public interface Bar {
- void bar(String msg);
- Ext getExt();
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/BarImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/BarImpl.java
deleted file mode 100644
index 9cb41a85cf..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/BarImpl.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import com.google.inject.Inject;
-import se.scalablesolutions.akka.actor.*;
-
-public class BarImpl extends TypedActor implements Bar {
- @Inject
- private Ext ext;
-
- public Ext getExt() {
- return ext;
- }
-
- public void bar(String msg) {
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/Ext.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/Ext.java
deleted file mode 100644
index c37219cf00..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/Ext.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-public interface Ext {
- void ext();
-}
-
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/ExtImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/ExtImpl.java
deleted file mode 100644
index dd8ca55089..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/ExtImpl.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-public class ExtImpl implements Ext {
- public void ext() {
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/Foo.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/Foo.java
deleted file mode 100644
index a64f975bce..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/Foo.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-public interface Foo {
- public Foo body();
- public Bar getBar();
-
- public String foo(String msg);
- public void bar(String msg);
-
- public String longRunning();
- public String throwsException();
-
- public int $tag() throws java.rmi.RemoteException;
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/FooImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/FooImpl.java
deleted file mode 100644
index ded09f4e07..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/FooImpl.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import com.google.inject.Inject;
-import se.scalablesolutions.akka.actor.*;
-
-public class FooImpl extends TypedActor implements Foo {
- @Inject
- private Bar bar;
-
- public Foo body() { return this; }
-
- public Bar getBar() {
- return bar;
- }
-
- public String foo(String msg) {
- return msg + "return_foo ";
- }
-
- public void bar(String msg) {
- bar.bar(msg);
- }
-
- public String longRunning() {
- try {
- Thread.sleep(1200);
- } catch (InterruptedException e) {
- }
- return "test";
- }
-
- public String throwsException() {
- if (true) throw new RuntimeException("Expected exception; to test fault-tolerance");
- return "test";
- }
-
- public int $tag() throws java.rmi.RemoteException {
- return 0;
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActor.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActor.java
deleted file mode 100644
index fbd241763f..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActor.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-public interface NestedTransactionalTypedActor {
- public String getMapState(String key);
- public String getVectorState();
- public String getRefState();
- public void setMapState(String key, String msg);
- public void setVectorState(String msg);
- public void setRefState(String msg);
- public void success(String key, String msg);
- public String failure(String key, String msg, TypedActorFailer failer);
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java
deleted file mode 100644
index 1b95517c22..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/NestedTransactionalTypedActorImpl.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import se.scalablesolutions.akka.actor.*;
-import se.scalablesolutions.akka.stm.*;
-
-public class NestedTransactionalTypedActorImpl extends TypedTransactor implements NestedTransactionalTypedActor {
- private TransactionalMap mapState;
- private TransactionalVector vectorState;
- private Ref refState;
- private boolean isInitialized = false;
-
- @Override
- public void init() {
- if (!isInitialized) {
- mapState = new TransactionalMap();
- vectorState = new TransactionalVector();
- refState = new Ref();
- isInitialized = true;
- }
- }
-
- public String getMapState(String key) {
- return (String) mapState.get(key).get();
- }
-
- public String getVectorState() {
- return (String) vectorState.last();
- }
-
- public String getRefState() {
- return (String) refState.get();
- }
-
- public void setMapState(String key, String msg) {
- mapState.put(key, msg);
- }
-
- public void setVectorState(String msg) {
- vectorState.add(msg);
- }
-
- public void setRefState(String msg) {
- refState.swap(msg);
- }
-
- public void success(String key, String msg) {
- mapState.put(key, msg);
- vectorState.add(msg);
- refState.swap(msg);
- }
-
- public String failure(String key, String msg, TypedActorFailer failer) {
- mapState.put(key, msg);
- vectorState.add(msg);
- refState.swap(msg);
- failer.fail();
- return msg;
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOne.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOne.java
deleted file mode 100644
index dd03a45d12..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOne.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-public interface RemoteTypedActorOne {
- public String requestReply(String s) throws Exception;
- public void oneWay() throws Exception;
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOneImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOneImpl.java
deleted file mode 100644
index 715e5366a4..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorOneImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package se.scalablesolutions.akka.actor.remote;
-
-import se.scalablesolutions.akka.actor.*;
-
-import java.util.concurrent.CountDownLatch;
-
-public class RemoteTypedActorOneImpl extends TypedActor implements RemoteTypedActorOne {
-
- public static CountDownLatch latch = new CountDownLatch(1);
-
- public String requestReply(String s) throws Exception {
- if (s.equals("ping")) {
- RemoteTypedActorLog.messageLog().put("ping");
- return "pong";
- } else if (s.equals("die")) {
- throw new RuntimeException("Expected exception; to test fault-tolerance");
- } else return null;
- }
-
- public void oneWay() throws Exception {
- RemoteTypedActorLog.oneWayLog().put("oneway");
- }
-
- @Override
- public void preRestart(Throwable e) {
- try { RemoteTypedActorLog.messageLog().put(e.getMessage()); } catch(Exception ex) {}
- latch.countDown();
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwo.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwo.java
deleted file mode 100644
index 5fd289b8c2..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwo.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-public interface RemoteTypedActorTwo {
- public String requestReply(String s) throws Exception;
- public void oneWay() throws Exception;
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwoImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwoImpl.java
deleted file mode 100644
index a5882fd4e6..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/RemoteTypedActorTwoImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package se.scalablesolutions.akka.actor.remote;
-
-import se.scalablesolutions.akka.actor.*;
-
-import java.util.concurrent.CountDownLatch;
-
-public class RemoteTypedActorTwoImpl extends TypedActor implements RemoteTypedActorTwo {
-
- public static CountDownLatch latch = new CountDownLatch(1);
-
- public String requestReply(String s) throws Exception {
- if (s.equals("ping")) {
- RemoteTypedActorLog.messageLog().put("ping");
- return "pong";
- } else if (s.equals("die")) {
- throw new RuntimeException("Expected exception; to test fault-tolerance");
- } else return null;
- }
-
- public void oneWay() throws Exception {
- RemoteTypedActorLog.oneWayLog().put("oneway");
- }
-
- @Override
- public void preRestart(Throwable e) {
- try { RemoteTypedActorLog.messageLog().put(e.getMessage()); } catch(Exception ex) {}
- latch.countDown();
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SamplePojo.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SamplePojo.java
deleted file mode 100644
index 5d06afdc9c..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SamplePojo.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import java.util.concurrent.CountDownLatch;
-
-public interface SamplePojo {
- public String greet(String s);
- public String fail();
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java
deleted file mode 100644
index 12985c72ce..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SamplePojoImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import se.scalablesolutions.akka.actor.*;
-
-import java.util.concurrent.CountDownLatch;
-
-public class SamplePojoImpl extends TypedActor implements SamplePojo {
-
- public static CountDownLatch latch = new CountDownLatch(1);
-
- public static boolean _pre = false;
- public static boolean _post = false;
- public static boolean _down = false;
- public static void reset() {
- _pre = false;
- _post = false;
- _down = false;
- }
-
- public String greet(String s) {
- return "hello " + s;
- }
-
- public String fail() {
- throw new RuntimeException("expected");
- }
-
- @Override
- public void preRestart(Throwable e) {
- _pre = true;
- latch.countDown();
- }
-
- @Override
- public void postRestart(Throwable e) {
- _post = true;
- latch.countDown();
- }
-
- @Override
- public void shutdown() {
- _down = true;
- latch.countDown();
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojo.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojo.java
deleted file mode 100644
index d3a18abbd9..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojo.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import se.scalablesolutions.akka.dispatch.Future;
-import se.scalablesolutions.akka.dispatch.CompletableFuture;
-import se.scalablesolutions.akka.dispatch.Future;
-
-public interface SimpleJavaPojo {
- public Object getSender();
- public Object getSenderFuture();
- public Future square(int value);
- public void setName(String name);
- public String getName();
- public void throwException();
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCaller.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCaller.java
deleted file mode 100644
index e35702846f..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCaller.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import se.scalablesolutions.akka.dispatch.CompletableFuture;
-
-public interface SimpleJavaPojoCaller {
- public void setPojo(SimpleJavaPojo pojo);
- public Object getSenderFromSimpleJavaPojo();
- public Object getSenderFutureFromSimpleJavaPojo();
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCallerImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCallerImpl.java
deleted file mode 100644
index 760b69f8b9..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoCallerImpl.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import se.scalablesolutions.akka.actor.*;
-import se.scalablesolutions.akka.dispatch.Future;
-
-public class SimpleJavaPojoCallerImpl extends TypedActor implements SimpleJavaPojoCaller {
-
- SimpleJavaPojo pojo;
-
- public void setPojo(SimpleJavaPojo pojo) {
- this.pojo = pojo;
- }
-
- public Object getSenderFromSimpleJavaPojo() {
- Object sender = pojo.getSender();
- return sender;
- }
-
- public Object getSenderFutureFromSimpleJavaPojo() {
- return pojo.getSenderFuture();
- }
-
- public Future square(int value) {
- return future(value * value);
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoImpl.java
deleted file mode 100644
index c02d266ce8..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/SimpleJavaPojoImpl.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import se.scalablesolutions.akka.actor.*;
-import se.scalablesolutions.akka.dispatch.Future;
-import se.scalablesolutions.akka.dispatch.CompletableFuture;
-
-public class SimpleJavaPojoImpl extends TypedActor implements SimpleJavaPojo {
-
- public static boolean _pre = false;
- public static boolean _post = false;
- public static boolean _down = false;
- public static void reset() {
- _pre = false;
- _post = false;
- _down = false;
- }
-
- private String name;
-
- public Future square(int value) {
- return future(value * value);
- }
-
- public Object getSender() {
- return getContext().getSender();
- }
-
- public CompletableFuture getSenderFuture() {
- return getContext().getSenderFuture().get();
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- @Override
- public void preRestart(Throwable e) {
- _pre = true;
- }
-
- @Override
- public void postRestart(Throwable e) {
- _post = true;
- }
-
- public void throwException() {
- throw new RuntimeException();
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActor.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActor.java
deleted file mode 100644
index 6e7c43745b..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-public interface TransactionalTypedActor {
- public String getMapState(String key);
- public String getVectorState();
- public String getRefState();
- public void setMapState(String key, String msg);
- public void setVectorState(String msg);
- public void setRefState(String msg);
- public void success(String key, String msg);
- public void success(String key, String msg, NestedTransactionalTypedActor nested);
- public String failure(String key, String msg, TypedActorFailer failer);
- public String failure(String key, String msg, NestedTransactionalTypedActor nested, TypedActorFailer failer);
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java
deleted file mode 100644
index 9b32f5d329..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TransactionalTypedActorImpl.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import se.scalablesolutions.akka.actor.*;
-import se.scalablesolutions.akka.stm.*;
-
-public class TransactionalTypedActorImpl extends TypedTransactor implements TransactionalTypedActor {
- private TransactionalMap mapState;
- private TransactionalVector vectorState;
- private Ref refState;
- private boolean isInitialized = false;
-
- @Override
- public void initTransactionalState() {
- if (!isInitialized) {
- mapState = new TransactionalMap();
- vectorState = new TransactionalVector();
- refState = new Ref();
- isInitialized = true;
- }
- }
-
- public String getMapState(String key) {
- return (String)mapState.get(key).get();
- }
-
- public String getVectorState() {
- return (String)vectorState.last();
- }
-
- public String getRefState() {
- return (String)refState.get();
- }
-
- public void setMapState(String key, String msg) {
- mapState.put(key, msg);
- }
-
- public void setVectorState(String msg) {
- vectorState.add(msg);
- }
-
- public void setRefState(String msg) {
- refState.swap(msg);
- }
-
- public void success(String key, String msg) {
- mapState.put(key, msg);
- vectorState.add(msg);
- refState.swap(msg);
- }
-
- public void success(String key, String msg, NestedTransactionalTypedActor nested) {
- mapState.put(key, msg);
- vectorState.add(msg);
- refState.swap(msg);
- nested.success(key, msg);
- }
-
- public String failure(String key, String msg, TypedActorFailer failer) {
- mapState.put(key, msg);
- vectorState.add(msg);
- refState.swap(msg);
- failer.fail();
- return msg;
- }
-
- public String failure(String key, String msg, NestedTransactionalTypedActor nested, TypedActorFailer failer) {
- mapState.put(key, msg);
- vectorState.add(msg);
- refState.swap(msg);
- nested.failure(key, msg, failer);
- return msg;
- }
-
- @Override
- public void preRestart(Throwable e) {
- System.out.println("################ PRE RESTART");
- }
-
- @Override
- public void postRestart(Throwable e) {
- System.out.println("################ POST RESTART");
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailer.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailer.java
deleted file mode 100644
index e0b1e72c33..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailer.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-public interface TypedActorFailer extends java.io.Serializable {
- public int fail();
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailerImpl.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailerImpl.java
deleted file mode 100644
index 89a97330df..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/actor/TypedActorFailerImpl.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package se.scalablesolutions.akka.actor;
-
-import se.scalablesolutions.akka.actor.*;
-
-public class TypedActorFailerImpl extends TypedActor implements TypedActorFailer {
- public int fail() {
- throw new RuntimeException("expected");
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/Address.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/Address.java
deleted file mode 100644
index cb3057929f..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/Address.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package se.scalablesolutions.akka.stm;
-
-public class Address {
- private String location;
-
- public Address(String location) {
- this.location = location;
- }
-
- @Override public String toString() {
- return "Address(" + location + ")";
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/CounterExample.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/CounterExample.java
deleted file mode 100644
index 57a9a07daa..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/CounterExample.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package se.scalablesolutions.akka.stm;
-
-import se.scalablesolutions.akka.stm.Ref;
-import se.scalablesolutions.akka.stm.local.Atomic;
-
-public class CounterExample {
- final static Ref ref = new Ref(0);
-
- public static int counter() {
- return new Atomic() {
- public Integer atomically() {
- int inc = ref.get() + 1;
- ref.set(inc);
- return inc;
- }
- }.execute();
- }
-
- public static void main(String[] args) {
- System.out.println();
- System.out.println("Counter example");
- System.out.println();
- System.out.println("counter 1: " + counter());
- System.out.println("counter 2: " + counter());
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/JavaStmTests.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/JavaStmTests.java
deleted file mode 100644
index 7204013808..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/JavaStmTests.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package se.scalablesolutions.akka.stm;
-
-import static org.junit.Assert.*;
-import org.junit.Test;
-import org.junit.Before;
-
-import se.scalablesolutions.akka.stm.*;
-import se.scalablesolutions.akka.stm.local.Atomic;
-
-import org.multiverse.api.ThreadLocalTransaction;
-import org.multiverse.api.TransactionConfiguration;
-import org.multiverse.api.exceptions.ReadonlyException;
-
-public class JavaStmTests {
-
- private Ref ref;
-
- private int getRefValue() {
- return new Atomic() {
- public Integer atomically() {
- return ref.get();
- }
- }.execute();
- }
-
- public int increment() {
- return new Atomic() {
- public Integer atomically() {
- int inc = ref.get() + 1;
- ref.set(inc);
- return inc;
- }
- }.execute();
- }
-
- @Before public void initialise() {
- ref = new Ref(0);
- }
-
- @Test public void incrementRef() {
- assertEquals(0, getRefValue());
- increment();
- increment();
- increment();
- assertEquals(3, getRefValue());
- }
-
- @Test public void failSetRef() {
- assertEquals(0, getRefValue());
- try {
- new Atomic() {
- public Object atomically() {
- ref.set(3);
- throw new RuntimeException();
- }
- }.execute();
- } catch(RuntimeException e) {}
- assertEquals(0, getRefValue());
- }
-
- @Test public void configureTransaction() {
- TransactionFactory txFactory = new TransactionFactoryBuilder()
- .setFamilyName("example")
- .setReadonly(true)
- .build();
-
- // get transaction config from multiverse
- TransactionConfiguration config = new Atomic(txFactory) {
- public TransactionConfiguration atomically() {
- ref.get();
- return ThreadLocalTransaction.getThreadLocalTransaction().getConfiguration();
- }
- }.execute();
-
- assertEquals("example", config.getFamilyName());
- assertEquals(true, config.isReadonly());
- }
-
- @Test(expected=ReadonlyException.class) public void failReadonlyTransaction() {
- TransactionFactory txFactory = new TransactionFactoryBuilder()
- .setFamilyName("example")
- .setReadonly(true)
- .build();
-
- new Atomic(txFactory) {
- public Object atomically() {
- return ref.set(3);
- }
- }.execute();
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/RefExample.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/RefExample.java
deleted file mode 100644
index f590524fd7..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/RefExample.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package se.scalablesolutions.akka.stm;
-
-import se.scalablesolutions.akka.stm.Ref;
-import se.scalablesolutions.akka.stm.local.Atomic;
-
-public class RefExample {
- public static void main(String[] args) {
- System.out.println();
- System.out.println("Ref example");
- System.out.println();
-
- final Ref ref = new Ref(0);
-
- Integer value1 = new Atomic() {
- public Integer atomically() {
- return ref.get();
- }
- }.execute();
-
- System.out.println("value 1: " + value1);
-
- new Atomic() {
- public Object atomically() {
- return ref.set(5);
- }
- }.execute();
-
- Integer value2 = new Atomic() {
- public Integer atomically() {
- return ref.get();
- }
- }.execute();
-
- System.out.println("value 2: " + value2);
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/StmExamples.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/StmExamples.java
deleted file mode 100644
index a8526f2dd0..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/StmExamples.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package se.scalablesolutions.akka.stm;
-
-import se.scalablesolutions.akka.stm.Ref;
-import se.scalablesolutions.akka.stm.local.Atomic;
-
-public class StmExamples {
- public static void main(String[] args) {
- System.out.println();
- System.out.println("STM examples");
- System.out.println();
-
- CounterExample.main(args);
- RefExample.main(args);
- TransactionFactoryExample.main(args);
- TransactionalMapExample.main(args);
- TransactionalVectorExample.main(args);
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/TransactionFactoryExample.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/TransactionFactoryExample.java
deleted file mode 100644
index 00dd87b7c5..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/TransactionFactoryExample.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package se.scalablesolutions.akka.stm;
-
-import se.scalablesolutions.akka.stm.*;
-import se.scalablesolutions.akka.stm.local.Atomic;
-
-import org.multiverse.api.ThreadLocalTransaction;
-import org.multiverse.api.TransactionConfiguration;
-
-public class TransactionFactoryExample {
- public static void main(String[] args) {
- System.out.println();
- System.out.println("TransactionFactory example");
- System.out.println();
-
- TransactionFactory txFactory = new TransactionFactoryBuilder()
- .setFamilyName("example")
- .setReadonly(true)
- .build();
-
- new Atomic(txFactory) {
- public Object atomically() {
- // check config has been passed to multiverse
- TransactionConfiguration config = ThreadLocalTransaction.getThreadLocalTransaction().getConfiguration();
- System.out.println("family name: " + config.getFamilyName());
- System.out.println("readonly: " + config.isReadonly());
- return null;
- }
- }.execute();
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/TransactionalMapExample.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/TransactionalMapExample.java
deleted file mode 100644
index 7c4940c7a5..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/TransactionalMapExample.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package se.scalablesolutions.akka.stm;
-
-import se.scalablesolutions.akka.stm.*;
-import se.scalablesolutions.akka.stm.local.Atomic;
-
-public class TransactionalMapExample {
- public static void main(String[] args) {
- System.out.println();
- System.out.println("TransactionalMap example");
- System.out.println();
-
- final TransactionalMap users = new TransactionalMap();
-
- // fill users map (in a transaction)
- new Atomic() {
- public Object atomically() {
- users.put("bill", new User("bill"));
- users.put("mary", new User("mary"));
- users.put("john", new User("john"));
- return null;
- }
- }.execute();
-
- System.out.println("users: " + users);
-
- // access users map (in a transaction)
- User user = new Atomic() {
- public User atomically() {
- return users.get("bill").get();
- }
- }.execute();
-
- System.out.println("user: " + user);
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/TransactionalVectorExample.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/TransactionalVectorExample.java
deleted file mode 100644
index 7274848beb..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/TransactionalVectorExample.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package se.scalablesolutions.akka.stm;
-
-import se.scalablesolutions.akka.stm.*;
-import se.scalablesolutions.akka.stm.local.Atomic;
-
-public class TransactionalVectorExample {
- public static void main(String[] args) {
- System.out.println();
- System.out.println("TransactionalVector example");
- System.out.println();
-
- final TransactionalVector addresses = new TransactionalVector();
-
- // fill addresses vector (in a transaction)
- new Atomic() {
- public Object atomically() {
- addresses.add(new Address("somewhere"));
- addresses.add(new Address("somewhere else"));
- return null;
- }
- }.execute();
-
- System.out.println("addresses: " + addresses);
-
- // access addresses vector (in a transaction)
- Address address = new Atomic() {
- public Address atomically() {
- return addresses.get(0);
- }
- }.execute();
-
- System.out.println("address: " + address);
- }
-}
diff --git a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/User.java b/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/User.java
deleted file mode 100644
index c9dc4b3723..0000000000
--- a/akka-typed-actors/src/test/java/se/scalablesolutions/akka/stm/User.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package se.scalablesolutions.akka.stm;
-
-public class User {
- private String name;
-
- public User(String name) {
- this.name = name;
- }
-
- @Override public String toString() {
- return "User(" + name + ")";
- }
-}
diff --git a/akka-typed-actors/src/test/scala/actor/typed-actor/NestedTransactionalTypedActorSpec.scala b/akka-typed-actors/src/test/scala/actor/typed-actor/NestedTransactionalTypedActorSpec.scala
deleted file mode 100644
index 7338e8df41..0000000000
--- a/akka-typed-actors/src/test/scala/actor/typed-actor/NestedTransactionalTypedActorSpec.scala
+++ /dev/null
@@ -1,102 +0,0 @@
- /**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.Spec
-import org.scalatest.Assertions
-import org.scalatest.matchers.ShouldMatchers
-import org.scalatest.BeforeAndAfterAll
-import org.scalatest.junit.JUnitRunner
-import org.junit.runner.RunWith
-
-import se.scalablesolutions.akka.actor._
-
-@RunWith(classOf[JUnitRunner])
-class NestedTransactionalTypedActorSpec extends
- Spec with
- ShouldMatchers with
- BeforeAndAfterAll {
-
- private var messageLog = ""
-
- override def afterAll {
- // ActorRegistry.shutdownAll
- }
-
- describe("Declaratively nested supervised transactional in-memory TypedActor") {
-
- it("map should not rollback state for stateful server in case of success") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- stateful.setMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init") // set init state
- val nested = TypedActor.newInstance(classOf[NestedTransactionalTypedActor], classOf[NestedTransactionalTypedActorImpl])
- nested.setMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init") // set init state
- stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state", nested) // transactionrequired
- stateful.getMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess") should equal("new state")
- nested.getMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess") should equal("new state")
- }
-
- it("map should rollback state for stateful server in case of failure") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- stateful.setMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init") // set init state
- val nested = TypedActor.newInstance(classOf[NestedTransactionalTypedActor], classOf[NestedTransactionalTypedActorImpl])
- nested.setMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init") // set init state
- val failer = TypedActor.newInstance(classOf[TypedActorFailer], classOf[TypedActorFailerImpl])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", nested, failer)
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure") should equal("init")
- nested.getMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure") should equal("init")
- }
-
- it("vector should not rollback state for stateful server in case of success") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- stateful.setVectorState("init") // set init state
- val nested = TypedActor.newInstance(classOf[NestedTransactionalTypedActor], classOf[NestedTransactionalTypedActorImpl])
- nested.setVectorState("init") // set init state
- stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state", nested) // transactionrequired
- stateful.getVectorState should equal("new state")
- nested.getVectorState should equal("new state")
- }
-
- it("vector should rollback state for stateful server in case of failure") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- stateful.setVectorState("init") // set init state
- val nested = TypedActor.newInstance(classOf[NestedTransactionalTypedActor], classOf[NestedTransactionalTypedActorImpl])
- nested.setVectorState("init") // set init state
- val failer = TypedActor.newInstance(classOf[TypedActorFailer], classOf[TypedActorFailerImpl])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", nested, failer)
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getVectorState should equal("init")
- nested.getVectorState should equal("init")
- }
-
- it("ref should not rollback state for stateful server in case of success") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- val nested = TypedActor.newInstance(classOf[NestedTransactionalTypedActor], classOf[NestedTransactionalTypedActorImpl])
- stateful.setRefState("init") // set init state
- nested.setRefState("init") // set init state
- stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state", nested)
- stateful.getRefState should equal("new state")
- nested.getRefState should equal("new state")
- }
-
- it("ref should rollback state for stateful server in case of failure") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- val nested = TypedActor.newInstance(classOf[NestedTransactionalTypedActor], classOf[NestedTransactionalTypedActorImpl])
- stateful.setRefState("init") // set init state
- nested.setRefState("init") // set init state
- val failer = TypedActor.newInstance(classOf[TypedActorFailer], classOf[TypedActorFailerImpl])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", nested, failer)
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getRefState should equal("init")
- nested.getRefState should equal("init")
- }
- }
-}
diff --git a/akka-typed-actors/src/test/scala/actor/typed-actor/RestartNestedTransactionalTypedActorSpec.scala b/akka-typed-actors/src/test/scala/actor/typed-actor/RestartNestedTransactionalTypedActorSpec.scala
deleted file mode 100644
index 1769a5c47b..0000000000
--- a/akka-typed-actors/src/test/scala/actor/typed-actor/RestartNestedTransactionalTypedActorSpec.scala
+++ /dev/null
@@ -1,118 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.Spec
-import org.scalatest.Assertions
-import org.scalatest.matchers.ShouldMatchers
-import org.scalatest.BeforeAndAfterAll
-import org.scalatest.junit.JUnitRunner
-import org.junit.runner.RunWith
-
-import se.scalablesolutions.akka.config.Config
-import se.scalablesolutions.akka.config._
-import se.scalablesolutions.akka.config.TypedActorConfigurator
-import se.scalablesolutions.akka.config.JavaConfig._
-import se.scalablesolutions.akka.actor._
-
-@RunWith(classOf[JUnitRunner])
-class RestartNestedTransactionalTypedActorSpec extends
- Spec with
- ShouldMatchers with
- BeforeAndAfterAll {
-
- private val conf = new TypedActorConfigurator
- private var messageLog = ""
-
- override def beforeAll {
- /*
- Config.config
- conf.configure(
- new RestartStrategy(new AllForOne, 3, 5000, List(classOf[Exception]).toArray),
- List(
- new Component(classOf[TransactionalTypedActor],
- new LifeCycle(new Permanent),
- 10000),
- new Component(classOf[NestedTransactionalTypedActor],
- new LifeCycle(new Permanent),
- 10000),
- new Component(classOf[TypedActorFailer],
- new LifeCycle(new Permanent),
- 10000)
- ).toArray).supervise
- */
- }
-
- override def afterAll {
- /*
- conf.stop
- ActorRegistry.shutdownAll
- */
- }
-
- describe("Restart nested supervised transactional Typed Actor") {
-/*
- it("map should rollback state for stateful server in case of failure") {
- val stateful = conf.getInstance(classOf[TransactionalTypedActor])
- stateful.init
- stateful.setMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init") // set init state
-
- val nested = conf.getInstance(classOf[NestedTransactionalTypedActor])
- nested.init
- nested.setMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init") // set init state
-
- val failer = conf.getInstance(classOf[TypedActorFailer])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", nested, failer)
-
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure") should equal("init")
-
- nested.getMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure") should equal("init")
- }
-
- it("vector should rollback state for stateful server in case of failure") {
- val stateful = conf.getInstance(classOf[TransactionalTypedActor])
- stateful.init
- stateful.setVectorState("init") // set init state
-
- val nested = conf.getInstance(classOf[NestedTransactionalTypedActor])
- nested.init
- nested.setVectorState("init") // set init state
-
- val failer = conf.getInstance(classOf[TypedActorFailer])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", nested, failer)
-
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getVectorState should equal("init")
-
- nested.getVectorState should equal("init")
- }
-
- it("ref should rollback state for stateful server in case of failure") {
- val stateful = conf.getInstance(classOf[TransactionalTypedActor])
- stateful.init
- val nested = conf.getInstance(classOf[NestedTransactionalTypedActor])
- nested.init
- stateful.setRefState("init") // set init state
-
- nested.setRefState("init") // set init state
-
- val failer = conf.getInstance(classOf[TypedActorFailer])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", nested, failer)
-
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getRefState should equal("init")
-
- nested.getRefState should equal("init")
- }
- */
- }
-}
diff --git a/akka-typed-actors/src/test/scala/actor/typed-actor/RestartTransactionalTypedActorSpec.scala b/akka-typed-actors/src/test/scala/actor/typed-actor/RestartTransactionalTypedActorSpec.scala
deleted file mode 100644
index 56b1e6ec5b..0000000000
--- a/akka-typed-actors/src/test/scala/actor/typed-actor/RestartTransactionalTypedActorSpec.scala
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.Spec
-import org.scalatest.Assertions
-import org.scalatest.matchers.ShouldMatchers
-import org.scalatest.BeforeAndAfterAll
-import org.scalatest.junit.JUnitRunner
-import org.junit.runner.RunWith
-
-import se.scalablesolutions.akka.config.Config
-import se.scalablesolutions.akka.config._
-import se.scalablesolutions.akka.config.TypedActorConfigurator
-import se.scalablesolutions.akka.config.JavaConfig._
-import se.scalablesolutions.akka.actor._
-
-@RunWith(classOf[JUnitRunner])
-class RestartTransactionalTypedActorSpec extends
- Spec with
- ShouldMatchers with
- BeforeAndAfterAll {
-
- private val conf = new TypedActorConfigurator
- private var messageLog = ""
-
- def before {
- Config.config
- conf.configure(
- new RestartStrategy(new AllForOne, 3, 5000, List(classOf[Exception]).toArray),
- List(
- new Component(
- classOf[TransactionalTypedActor],
- new LifeCycle(new Temporary),
- 10000),
- new Component(
- classOf[TypedActorFailer],
- new LifeCycle(new Temporary),
- 10000)
- ).toArray).supervise
- }
-
- def after {
- conf.stop
- ActorRegistry.shutdownAll
- }
-
- describe("Restart supervised transactional Typed Actor ") {
-/*
- it("map should rollback state for stateful server in case of failure") {
- before
- val stateful = conf.getInstance(classOf[TransactionalTypedActor])
- stateful.init
- stateful.setMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init")
- val failer = conf.getInstance(classOf[TypedActorFailer])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer)
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure") should equal("init")
- after
- }
-
- it("vector should rollback state for stateful server in case of failure") {
- before
- val stateful = conf.getInstance(classOf[TransactionalTypedActor])
- stateful.init
- stateful.setVectorState("init") // set init state
- val failer = conf.getInstance(classOf[TypedActorFailer])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer)
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getVectorState should equal("init")
- after
- }
-
- it("ref should rollback state for stateful server in case of failure") {
- val stateful = conf.getInstance(classOf[TransactionalTypedActor])
- stateful.init
- stateful.setRefState("init") // set init state
- val failer = conf.getInstance(classOf[TypedActorFailer])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer)
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getRefState should equal("init")
- }
-*/ }
-}
diff --git a/akka-typed-actors/src/test/scala/actor/typed-actor/TransactionalTypedActorSpec.scala b/akka-typed-actors/src/test/scala/actor/typed-actor/TransactionalTypedActorSpec.scala
deleted file mode 100644
index b55f52c875..0000000000
--- a/akka-typed-actors/src/test/scala/actor/typed-actor/TransactionalTypedActorSpec.scala
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.Spec
-import org.scalatest.Assertions
-import org.scalatest.matchers.ShouldMatchers
-import org.scalatest.BeforeAndAfterAll
-import org.scalatest.junit.JUnitRunner
-import org.junit.runner.RunWith
-
-import se.scalablesolutions.akka.actor._
-
-@RunWith(classOf[JUnitRunner])
-class TransactionalTypedActorSpec extends
- Spec with
- ShouldMatchers with
- BeforeAndAfterAll {
-
- private var messageLog = ""
-
- override def afterAll {
-// ActorRegistry.shutdownAll
- }
-
- describe("Declaratively supervised transactional in-memory Typed Actor ") {
- it("map should not rollback state for stateful server in case of success") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- stateful.setMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init")
- stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state")
- stateful.getMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess") should equal("new state")
- }
-
- it("map should rollback state for stateful server in case of failure") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- stateful.setMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init")
- val failer = TypedActor.newInstance(classOf[TypedActorFailer], classOf[TypedActorFailerImpl])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer)
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure") should equal("init")
- }
-
- it("vector should not rollback state for stateful server in case of success") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- stateful.setVectorState("init") // set init state
- stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state")
- stateful.getVectorState should equal("new state")
- }
-
- it("vector should rollback state for stateful server in case of failure") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- stateful.setVectorState("init") // set init state
- val failer = TypedActor.newInstance(classOf[TypedActorFailer], classOf[TypedActorFailerImpl])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer)
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getVectorState should equal("init")
- }
-
- it("ref should not rollback state for stateful server in case of success") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- stateful.setRefState("init") // set init state
- stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state")
- stateful.getRefState should equal("new state")
- }
-
- it("ref should rollback state for stateful server in case of failure") {
- val stateful = TypedActor.newInstance(classOf[TransactionalTypedActor], classOf[TransactionalTypedActorImpl])
- stateful.setRefState("init") // set init state
- val failer = TypedActor.newInstance(classOf[TypedActorFailer], classOf[TypedActorFailerImpl])
- try {
- stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer)
- fail("should have thrown an exception")
- } catch { case e => {} }
- stateful.getRefState should equal("init")
- }
- }
-}
diff --git a/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorContextSpec.scala b/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorContextSpec.scala
deleted file mode 100644
index adc0879c84..0000000000
--- a/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorContextSpec.scala
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.Spec
-import org.scalatest.Assertions
-import org.scalatest.matchers.ShouldMatchers
-import org.scalatest.BeforeAndAfterAll
-import org.scalatest.junit.JUnitRunner
-import org.junit.runner.RunWith
-
-import se.scalablesolutions.akka.dispatch.DefaultCompletableFuture;
-
-@RunWith(classOf[JUnitRunner])
-class TypedActorContextSpec extends
- Spec with
- ShouldMatchers with
- BeforeAndAfterAll {
-
- describe("TypedActorContext") {
- it("context.sender should return the sender TypedActor reference") {
- val pojo = TypedActor.newInstance(classOf[SimpleJavaPojo], classOf[SimpleJavaPojoImpl])
- val pojoCaller = TypedActor.newInstance(classOf[SimpleJavaPojoCaller], classOf[SimpleJavaPojoCallerImpl])
- pojoCaller.setPojo(pojo)
- pojoCaller.getSenderFromSimpleJavaPojo.isInstanceOf[Option[_]] should equal (true)
- pojoCaller.getSenderFromSimpleJavaPojo.asInstanceOf[Option[_]].isDefined should equal (true)
- pojoCaller.getSenderFromSimpleJavaPojo.asInstanceOf[Option[_]].get should equal (pojoCaller)
- }
- it("context.senderFuture should return the senderFuture TypedActor reference") {
- val pojo = TypedActor.newInstance(classOf[SimpleJavaPojo], classOf[SimpleJavaPojoImpl])
- val pojoCaller = TypedActor.newInstance(classOf[SimpleJavaPojoCaller], classOf[SimpleJavaPojoCallerImpl])
- pojoCaller.setPojo(pojo)
- pojoCaller.getSenderFutureFromSimpleJavaPojo.getClass.getName should equal (classOf[DefaultCompletableFuture[_]].getName)
- }
- }
-}
diff --git a/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorGuiceConfiguratorSpec.scala b/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorGuiceConfiguratorSpec.scala
deleted file mode 100644
index d076ec52cf..0000000000
--- a/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorGuiceConfiguratorSpec.scala
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import com.google.inject.AbstractModule
-import com.google.inject.Scopes
-
-import org.scalatest.Spec
-import org.scalatest.Assertions
-import org.scalatest.matchers.ShouldMatchers
-import org.scalatest.BeforeAndAfterAll
-import org.scalatest.junit.JUnitRunner
-import org.junit.runner.RunWith
-
-import se.scalablesolutions.akka.config.Config
-import se.scalablesolutions.akka.config.TypedActorConfigurator
-import se.scalablesolutions.akka.config.JavaConfig._
-import se.scalablesolutions.akka.dispatch._
-import se.scalablesolutions.akka.dispatch.FutureTimeoutException
-
-@RunWith(classOf[JUnitRunner])
-class TypedActorGuiceConfiguratorSpec extends
- Spec with
- ShouldMatchers with
- BeforeAndAfterAll {
-
- private val conf = new TypedActorConfigurator
- private var messageLog = ""
-
- override def beforeAll {
- Config.config
- val dispatcher = Dispatchers.newExecutorBasedEventDrivenDispatcher("test")
-
- conf.addExternalGuiceModule(new AbstractModule {
- def configure = bind(classOf[Ext]).to(classOf[ExtImpl]).in(Scopes.SINGLETON)
- }).configure(
- new RestartStrategy(new AllForOne, 3, 5000, List(classOf[Exception]).toArray),
- List(
- new Component(
- classOf[Foo],
- classOf[FooImpl],
- new LifeCycle(new Permanent),
- 1000,
- dispatcher),
- new Component(
- classOf[Bar],
- classOf[BarImpl],
- new LifeCycle(new Permanent),
- 1000,
- dispatcher)
- ).toArray).inject.supervise
-
- }
-
- override def afterAll = conf.stop
-
- describe("TypedActorGuiceConfigurator") {
-/*
- it("should inject typed actor using guice") {
- messageLog = ""
- val foo = conf.getInstance(classOf[Foo])
- val bar = conf.getInstance(classOf[Bar])
- bar should equal(foo.getBar)
- }
-
- it("should inject external dependency using guice") {
- messageLog = ""
- val bar = conf.getInstance(classOf[Bar])
- val ext = conf.getExternalDependency(classOf[Ext])
- ext.toString should equal(bar.getExt.toString)
- }
-
- it("should lookup non-supervised instance") {
- try {
- val str = conf.getInstance(classOf[String])
- fail("exception should have been thrown")
- } catch {
- case e: Exception =>
- classOf[IllegalStateException] should equal(e.getClass)
- }
- }
-
- it("should be able to invoke typed actor") {
- messageLog = ""
- val foo = conf.getInstance(classOf[Foo])
- messageLog += foo.foo("foo ")
- foo.bar("bar ")
- messageLog += "before_bar "
- Thread.sleep(500)
- messageLog should equal("foo return_foo before_bar ")
- }
-
- it("should be able to invoke typed actor's invocation") {
- messageLog = ""
- val foo = conf.getInstance(classOf[Foo])
- val bar = conf.getInstance(classOf[Bar])
- messageLog += foo.foo("foo ")
- foo.bar("bar ")
- messageLog += "before_bar "
- Thread.sleep(500)
- messageLog should equal("foo return_foo before_bar ")
- }
-
- it("should throw FutureTimeoutException on time-out") {
- messageLog = ""
- val foo = conf.getInstance(classOf[Foo])
- try {
- foo.longRunning
- fail("exception should have been thrown")
- } catch {
- case e: FutureTimeoutException =>
- classOf[FutureTimeoutException] should equal(e.getClass)
- }
- }
-
- it("should propagate exception") {
- messageLog = ""
- val foo = conf.getInstance(classOf[Foo])
- try {
- foo.throwsException
- fail("exception should have been thrown")
- } catch {
- case e: RuntimeException =>
- classOf[RuntimeException] should equal(e.getClass)
- }
- }
- */
- }
-}
diff --git a/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala b/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala
deleted file mode 100644
index 10fc40493b..0000000000
--- a/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala
+++ /dev/null
@@ -1,169 +0,0 @@
-package se.scalablesolutions.akka.actor
-
-import org.junit.runner.RunWith
-import org.scalatest.{BeforeAndAfterAll, Spec}
-import org.scalatest.junit.JUnitRunner
-import org.scalatest.matchers.ShouldMatchers
-
-import se.scalablesolutions.akka.actor.TypedActor._
-
-import se.scalablesolutions.akka.config.{OneForOneStrategy, TypedActorConfigurator}
-import se.scalablesolutions.akka.config.JavaConfig._
-
-import java.util.concurrent.CountDownLatch
-
-/**
- * @author Martin Krasser
- */
-@RunWith(classOf[JUnitRunner])
-class TypedActorLifecycleSpec extends Spec with ShouldMatchers with BeforeAndAfterAll {
- var conf1: TypedActorConfigurator = _
- var conf2: TypedActorConfigurator = _
-
- override protected def beforeAll() = {
- val strategy = new RestartStrategy(new AllForOne(), 3, 1000, Array(classOf[Exception]))
- val comp3 = new Component(classOf[SamplePojo], classOf[SamplePojoImpl], new LifeCycle(new Permanent()), 1000)
- val comp4 = new Component(classOf[SamplePojo], classOf[SamplePojoImpl], new LifeCycle(new Temporary()), 1000)
- conf1 = new TypedActorConfigurator().configure(strategy, Array(comp3)).supervise
- conf2 = new TypedActorConfigurator().configure(strategy, Array(comp4)).supervise
- }
-
- override protected def afterAll() = {
- conf1.stop
- conf2.stop
- }
-
- describe("TypedActor lifecycle management") {
- it("should restart supervised, non-annotated typed actor on failure") {
- SamplePojoImpl.reset
- val obj = conf1.getInstance[SamplePojo](classOf[SamplePojo])
- val cdl = new CountDownLatch(2)
- SamplePojoImpl.latch = cdl
- assert(AspectInitRegistry.initFor(obj) ne null)
- try {
- obj.fail
- fail("expected exception not thrown")
- } catch {
- case e: RuntimeException => {
- cdl.await
- assert(SamplePojoImpl._pre)
- assert(SamplePojoImpl._post)
- assert(!SamplePojoImpl._down)
-// assert(AspectInitRegistry.initFor(obj) ne null)
- }
- }
- }
-
- it("should shutdown supervised, non-annotated typed actor on failure") {
- SamplePojoImpl.reset
- val obj = conf2.getInstance[SamplePojo](classOf[SamplePojo])
- val cdl = new CountDownLatch(1)
- SamplePojoImpl.latch = cdl
- assert(AspectInitRegistry.initFor(obj) ne null)
- try {
- obj.fail
- fail("expected exception not thrown")
- } catch {
- case e: RuntimeException => {
- cdl.await
- assert(!SamplePojoImpl._pre)
- assert(!SamplePojoImpl._post)
- assert(SamplePojoImpl._down)
- // assert(AspectInitRegistry.initFor(obj) eq null)
- }
- }
- }
-
- it("should shutdown non-supervised, non-initialized typed actor on TypedActor.stop") {
- SamplePojoImpl.reset
- val obj = TypedActor.newInstance(classOf[SamplePojo], classOf[SamplePojoImpl])
- TypedActor.stop(obj)
- assert(!SamplePojoImpl._pre)
- assert(!SamplePojoImpl._post)
- assert(SamplePojoImpl._down)
- }
-
- it("both preRestart and postRestart methods should be invoked when an actor is restarted") {
- SamplePojoImpl.reset
- val pojo = TypedActor.newInstance(classOf[SimpleJavaPojo], classOf[SimpleJavaPojoImpl])
- val supervisor = TypedActor.newInstance(classOf[SimpleJavaPojo], classOf[SimpleJavaPojoImpl])
- link(supervisor, pojo, new OneForOneStrategy(3, 2000), Array(classOf[Throwable]))
- pojo.throwException
- Thread.sleep(500)
- SimpleJavaPojoImpl._pre should be(true)
- SimpleJavaPojoImpl._post should be(true)
- }
-
- /*
- it("should shutdown 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"))
- TypedActor.stop(obj)
- assert(AspectInitRegistry.initFor(obj) eq null)
- assert(!obj.pre)
- assert(!obj.post)
- assert(obj.down)
- try {
- obj.greet("akka")
- fail("access to stopped typed actor")
- } catch {
- case e: Exception => {}
- }
- }
-
- it("should shutdown 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"))
- ActorRegistry.shutdownAll
- assert(AspectInitRegistry.initFor(obj) eq null)
- assert(!obj.pre)
- assert(!obj.post)
- assert(obj.down)
- try {
- obj.greet("akka")
- fail("access to stopped typed actor")
- } catch {
- case e: Exception => { }
- }
- }
-
- it("should restart supervised, annotated typed actor on failure") {
- val obj = conf1.getInstance[SamplePojoAnnotated](classOf[SamplePojoAnnotated])
- val cdl = obj.newCountdownLatch(2)
- assert(AspectInitRegistry.initFor(obj) ne null)
- try {
- obj.fail
- fail("expected exception not thrown")
- } catch {
- case e: RuntimeException => {
- cdl.await
- assert(obj.pre)
- assert(obj.post)
- assert(!obj.down)
- assert(AspectInitRegistry.initFor(obj) ne null)
- }
- }
- }
-
- it("should shutdown supervised, annotated typed actor on failure") {
- val obj = conf2.getInstance[SamplePojoAnnotated](classOf[SamplePojoAnnotated])
- val cdl = obj.newCountdownLatch(1)
- assert(AspectInitRegistry.initFor(obj) ne null)
- try {
- obj.fail
- fail("expected exception not thrown")
- } catch {
- case e: RuntimeException => {
- cdl.await
- assert(!obj.pre)
- assert(!obj.post)
- assert(obj.down)
- assert(AspectInitRegistry.initFor(obj) eq null)
- }
- }
- }
- */
- }
-}
diff --git a/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorSpec.scala b/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorSpec.scala
deleted file mode 100644
index 7de0a8f5df..0000000000
--- a/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorSpec.scala
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Copyright (C) 2009-2010 Scalable Solutions AB
- */
-
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.Spec
-import org.scalatest.Assertions
-import org.scalatest.matchers.ShouldMatchers
-import org.scalatest.BeforeAndAfterAll
-import org.scalatest.junit.JUnitRunner
-import org.junit.runner.RunWith
-
-import se.scalablesolutions.akka.dispatch.DefaultCompletableFuture;
-
-@RunWith(classOf[JUnitRunner])
-class TypedActorSpec extends
- Spec with
- ShouldMatchers with
- BeforeAndAfterAll {
-
- describe("TypedActor") {
- it("should resolve Future return from method defined to return a Future") {
- val pojo = TypedActor.newInstance(classOf[SimpleJavaPojo], classOf[SimpleJavaPojoImpl])
- val future = pojo.square(10)
- future.await
- future.result.isDefined should equal (true)
- future.result.get should equal (100)
- }
- }
-}
diff --git a/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorUtilFunctionsSpec.scala b/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorUtilFunctionsSpec.scala
deleted file mode 100644
index 48424f3c17..0000000000
--- a/akka-typed-actors/src/test/scala/actor/typed-actor/TypedActorUtilFunctionsSpec.scala
+++ /dev/null
@@ -1,23 +0,0 @@
-package se.scalablesolutions.akka.actor
-
-import org.scalatest.Suite
-import org.junit.runner.RunWith
-import org.scalatest.junit.JUnitRunner
-import org.scalatest.matchers.MustMatchers
-import org.junit.{Before, After, Test}
-import java.util.concurrent.{ CountDownLatch, TimeUnit }
-
-@RunWith(classOf[JUnitRunner])
-class ActorObjectUtilFunctionsSpec extends junit.framework.TestCase with Suite with MustMatchers {
- import Actor._
- @Test def testSpawn = {
- val latch = new CountDownLatch(1)
-
- spawn {
- latch.countDown
- }
-
- val done = latch.await(10,TimeUnit.SECONDS)
- done must be (true)
- }
-}
diff --git a/project/build/AkkaProject.scala b/project/build/AkkaProject.scala
index e6c243c201..59e190114f 100644
--- a/project/build/AkkaProject.scala
+++ b/project/build/AkkaProject.scala
@@ -216,19 +216,19 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
// Subprojects
// -------------------------------------------------------------------------------------------------------------------
- lazy val akka_actors = project("akka-actors", "akka-actors", new AkkaCoreProject(_))
- lazy val akka_typed_actors = project("akka-typed-actors", "akka-typed-actors", new AkkaCoreProject(_), akka_actors)
- lazy val akka_core = project("akka-core", "akka-core", new AkkaCoreProject(_), akka_typed_actors)
- lazy val akka_amqp = project("akka-amqp", "akka-amqp", new AkkaAMQPProject(_), akka_core)
- lazy val akka_http = project("akka-http", "akka-http", new AkkaHttpProject(_), akka_core, akka_camel)
- lazy val akka_camel = project("akka-camel", "akka-camel", new AkkaCamelProject(_), akka_core)
- lazy val akka_persistence = project("akka-persistence", "akka-persistence", new AkkaPersistenceParentProject(_))
- lazy val akka_spring = project("akka-spring", "akka-spring", new AkkaSpringProject(_), akka_core, akka_camel)
- lazy val akka_jta = project("akka-jta", "akka-jta", new AkkaJTAProject(_), akka_core)
- lazy val akka_kernel = project("akka-kernel", "akka-kernel", new AkkaKernelProject(_),
- akka_core, akka_http, akka_spring, akka_camel, akka_persistence, akka_amqp)
- lazy val akka_osgi = project("akka-osgi", "akka-osgi", new AkkaOSGiParentProject(_))
- lazy val akka_samples = project("akka-samples", "akka-samples", new AkkaSamplesParentProject(_))
+ lazy val akka_actor = project("akka-actor", "akka-actor", new AkkaActorProject(_))
+ lazy val akka_typed_actor = project("akka-typed-actor", "akka-typed-actor", new AkkaTypedActorProject(_), akka_actor)
+ lazy val akka_remote = project("akka-remote", "akka-remote", new AkkaRemoteProject(_), akka_typed_actor)
+ lazy val akka_amqp = project("akka-amqp", "akka-amqp", new AkkaAMQPProject(_), akka_remote)
+ lazy val akka_http = project("akka-http", "akka-http", new AkkaHttpProject(_), akka_remote, akka_camel)
+ lazy val akka_camel = project("akka-camel", "akka-camel", new AkkaCamelProject(_), akka_remote)
+ lazy val akka_persistence = project("akka-persistence", "akka-persistence", new AkkaPersistenceParentProject(_))
+ lazy val akka_spring = project("akka-spring", "akka-spring", new AkkaSpringProject(_), akka_remote, akka_camel)
+ lazy val akka_jta = project("akka-jta", "akka-jta", new AkkaJTAProject(_), akka_remote)
+ lazy val akka_kernel = project("akka-kernel", "akka-kernel", new AkkaKernelProject(_),
+ akka_remote, akka_http, akka_spring, akka_camel, akka_persistence, akka_amqp)
+ lazy val akka_osgi = project("akka-osgi", "akka-osgi", new AkkaOSGiParentProject(_))
+ lazy val akka_samples = project("akka-samples", "akka-samples", new AkkaSamplesParentProject(_))
// -------------------------------------------------------------------------------------------------------------------
// Miscellaneous
@@ -253,7 +253,9 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
.map("lib_managed/scala_%s/compile/".format(buildScalaVersion) + _.getName)
.mkString(" ") +
" scala-library.jar" +
- " dist/akka-core_%s-%s.jar".format(buildScalaVersion, version) +
+ " dist/akka-actor_%s-%s.jar".format(buildScalaVersion, version) +
+ " dist/akka-typed-actor_%s-%s.jar".format(buildScalaVersion, version) +
+ " dist/akka-remote_%s-%s.jar".format(buildScalaVersion, version) +
" dist/akka-http_%s-%s.jar".format(buildScalaVersion, version) +
" dist/akka-camel_%s-%s.jar".format(buildScalaVersion, version) +
" dist/akka-amqp_%s-%s.jar".format(buildScalaVersion, version) +
@@ -328,10 +330,10 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
} dependsOn(dist) describedAs("Run mvn install for artifacts in dist.")
// -------------------------------------------------------------------------------------------------------------------
- // akka-actors subproject
+ // akka-actor subproject
// -------------------------------------------------------------------------------------------------------------------
- class AkkaActorsProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) {
+ class AkkaActorProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) {
val configgy = Dependencies.configgy
val hawtdispatch = Dependencies.hawtdispatch
val multiverse = Dependencies.multiverse
@@ -345,7 +347,11 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
val scalatest = Dependencies.scalatest
}
- class AkkaTypedActorsProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) {
+ // -------------------------------------------------------------------------------------------------------------------
+ // akka-typed-actor subproject
+ // -------------------------------------------------------------------------------------------------------------------
+
+ class AkkaTypedActorProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) {
val aopalliance = Dependencies.aopalliance
val werkz = Dependencies.werkz
val werkz_core = Dependencies.werkz_core
@@ -356,10 +362,10 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
}
// -------------------------------------------------------------------------------------------------------------------
- // akka-core subproject
+ // akka-remote subproject
// -------------------------------------------------------------------------------------------------------------------
- class AkkaCoreProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) {
+ class AkkaRemoteProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) {
val commons_codec = Dependencies.commons_codec
val commons_io = Dependencies.commons_io
val dispatch_http = Dependencies.dispatch_http
@@ -439,7 +445,7 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
class AkkaPersistenceParentProject(info: ProjectInfo) extends ParentProject(info) {
lazy val akka_persistence_common = project("akka-persistence-common", "akka-persistence-common",
- new AkkaPersistenceCommonProject(_), akka_core)
+ new AkkaPersistenceCommonProject(_), akka_remote)
lazy val akka_persistence_redis = project("akka-persistence-redis", "akka-persistence-redis",
new AkkaRedisProject(_), akka_persistence_common)
lazy val akka_persistence_mongo = project("akka-persistence-mongo", "akka-persistence-mongo",
@@ -534,7 +540,7 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
lazy val akka_osgi_dependencies_bundle = project("akka-osgi-dependencies-bundle", "akka-osgi-dependencies-bundle",
new AkkaOSGiDependenciesBundleProject(_), akka_kernel, akka_jta) // akka_kernel does not depend on akka_jta (why?) therefore we list akka_jta here
lazy val akka_osgi_assembly = project("akka-osgi-assembly", "akka-osgi-assembly",
- new AkkaOSGiAssemblyProject(_), akka_osgi_dependencies_bundle, akka_core, akka_amqp, akka_http,
+ new AkkaOSGiAssemblyProject(_), akka_osgi_dependencies_bundle, akka_remote, akka_amqp, akka_http,
akka_camel, akka_spring, akka_jta, akka_persistence.akka_persistence_common,
akka_persistence.akka_persistence_redis, akka_persistence.akka_persistence_mongo,
akka_persistence.akka_persistence_cassandra)
@@ -695,7 +701,7 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
class AkkaSamplesParentProject(info: ProjectInfo) extends ParentProject(info) {
lazy val akka_sample_ants = project("akka-sample-ants", "akka-sample-ants",
- new AkkaSampleAntsProject(_), akka_core)
+ new AkkaSampleAntsProject(_), akka_remote)
lazy val akka_sample_chat = project("akka-sample-chat", "akka-sample-chat",
new AkkaSampleChatProject(_), akka_kernel)
lazy val akka_sample_pubsub = project("akka-sample-pubsub", "akka-sample-pubsub",
@@ -715,7 +721,7 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) {
lazy val akka_sample_remote = project("akka-sample-remote", "akka-sample-remote",
new AkkaSampleRemoteProject(_), akka_kernel)
lazy val akka_sample_osgi = project("akka-sample-osgi", "akka-sample-osgi",
- new AkkaSampleOSGiProject(_), akka_core)
+ new AkkaSampleOSGiProject(_), akka_remote)
}
// -------------------------------------------------------------------------------------------------------------------