Removing the String-only lookup method and replaced it with Iterable, Iterator and ActorPath
This commit is contained in:
parent
4d0c6e17d9
commit
97e8e4880f
5 changed files with 10 additions and 8 deletions
|
|
@ -55,7 +55,7 @@ class DeployerSpec extends AkkaSpec(DeployerSpec.deployerConf) {
|
|||
|
||||
"be able to parse 'akka.actor.deployment._' with all default values" in {
|
||||
val service = "/service1"
|
||||
val deployment = system.asInstanceOf[ActorSystemImpl].provider.deployer.lookup(service)
|
||||
val deployment = system.asInstanceOf[ActorSystemImpl].provider.deployer.lookup(service.split("/"))
|
||||
deployment must be('defined)
|
||||
|
||||
deployment must be(Some(
|
||||
|
|
@ -68,7 +68,7 @@ class DeployerSpec extends AkkaSpec(DeployerSpec.deployerConf) {
|
|||
|
||||
"use None deployment for undefined service" in {
|
||||
val service = "/undefined"
|
||||
val deployment = system.asInstanceOf[ActorSystemImpl].provider.deployer.lookup(service)
|
||||
val deployment = system.asInstanceOf[ActorSystemImpl].provider.deployer.lookup(service.split("/"))
|
||||
deployment must be(None)
|
||||
}
|
||||
|
||||
|
|
@ -113,7 +113,7 @@ class DeployerSpec extends AkkaSpec(DeployerSpec.deployerConf) {
|
|||
}
|
||||
|
||||
def assertRouting(expected: RouterConfig, service: String) {
|
||||
val deployment = system.asInstanceOf[ActorSystemImpl].provider.deployer.lookup(service)
|
||||
val deployment = system.asInstanceOf[ActorSystemImpl].provider.deployer.lookup(service.split("/"))
|
||||
deployment must be('defined)
|
||||
deployment.get.path must be(service)
|
||||
deployment.get.routerConfig.getClass must be(expected.getClass)
|
||||
|
|
|
|||
|
|
@ -542,7 +542,7 @@ class LocalActorRefProvider(
|
|||
props.routerConfig match {
|
||||
case NoRouter ⇒ new LocalActorRef(system, props, supervisor, path, systemService) // create a local actor
|
||||
case router ⇒
|
||||
val lookup = if (lookupDeploy) deployer.lookup(path.elements.drop(1).mkString("/", "/", "")) else None
|
||||
val lookup = if (lookupDeploy) deployer.lookup(path) else None
|
||||
val fromProps = Iterator(props.deploy.copy(routerConfig = props.deploy.routerConfig withFallback router))
|
||||
val d = fromProps ++ deploy.iterator ++ lookup.iterator reduce ((a, b) ⇒ b withFallback a)
|
||||
new RoutedActorRef(system, props.withRouter(d.routerConfig), supervisor, path)
|
||||
|
|
|
|||
|
|
@ -141,10 +141,12 @@ private[akka] class Deployer(val settings: ActorSystem.Settings, val dynamicAcce
|
|||
case _ ⇒ None
|
||||
} foreach deploy
|
||||
|
||||
def lookup(path: String): Option[Deploy] = lookup(path.split("/").iterator)
|
||||
def lookup(path: Iterable[String]): Option[Deploy] = deployments.get().find(path.iterator).deploy
|
||||
|
||||
def lookup(path: Iterator[String]): Option[Deploy] = deployments.get().find(path).deploy
|
||||
|
||||
def lookup(path: ActorPath): Option[Deploy] = deployments.get().find(Iterator.single("") ++ path.elements.drop(1).iterator).deploy
|
||||
|
||||
def deploy(d: Deploy): Unit = {
|
||||
@tailrec def add(path: Array[String], d: Deploy, w: WildcardTree = deployments.get): Unit =
|
||||
if (!deployments.compareAndSet(w, w.insert(path.iterator, d))) add(path, d)
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ class RemoteActorRefProvider(
|
|||
p.headOption match {
|
||||
case None ⇒ None
|
||||
case Some("remote") ⇒ lookupRemotes(p.drop(2))
|
||||
case Some("user") ⇒ deployer.lookup(p.drop(1).mkString("/", "/", ""))
|
||||
case Some("user") ⇒ deployer.lookup(Iterator.single("") ++ p.drop(1).iterator)
|
||||
case Some(_) ⇒ None
|
||||
}
|
||||
}
|
||||
|
|
@ -149,7 +149,7 @@ class RemoteActorRefProvider(
|
|||
val lookup =
|
||||
if (lookupDeploy)
|
||||
elems.head match {
|
||||
case "user" ⇒ deployer.lookup(elems.drop(1).mkString("/", "/", ""))
|
||||
case "user" ⇒ deployer.lookup(Iterator.single("") ++ elems.drop(1).iterator)
|
||||
case "remote" ⇒ lookupRemotes(elems)
|
||||
case _ ⇒ None
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class RemoteDeployerSpec extends AkkaSpec(RemoteDeployerSpec.deployerConf) {
|
|||
|
||||
"be able to parse 'akka.actor.deployment._' with specified remote nodes" in {
|
||||
val service = "/user/service2"
|
||||
val deployment = system.asInstanceOf[ActorSystemImpl].provider.deployer.lookup(service)
|
||||
val deployment = system.asInstanceOf[ActorSystemImpl].provider.deployer.lookup(service.split("/"))
|
||||
deployment must be('defined)
|
||||
|
||||
deployment must be(Some(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue