diff --git a/akka-actor-tests/src/test/scala/akka/dataflow/Future2Actor.scala b/akka-actor-tests/src/test/scala/akka/dataflow/Future2Actor.scala index 26f92d8a6d..a850bae739 100644 --- a/akka-actor-tests/src/test/scala/akka/dataflow/Future2Actor.scala +++ b/akka-actor-tests/src/test/scala/akka/dataflow/Future2Actor.scala @@ -19,6 +19,20 @@ class Future2ActorSpec extends AkkaSpec with DefaultTimeout { expectMsgAllOf(1 second, 42, 42) } + "support convenient sending to multiple destinations with implicit sender" in { + implicit val someActor = system.actorOf(Props(ctx ⇒ Actor.emptyBehavior)) + Future(42) pipeTo testActor pipeTo testActor + expectMsgAllOf(1 second, 42, 42) + lastSender must be(someActor) + } + + "support convenient sending with explicit sender" in { + val someActor = system.actorOf(Props(ctx ⇒ Actor.emptyBehavior)) + Future(42).to(testActor, someActor) + expectMsgAllOf(1 second, 42) + lastSender must be(someActor) + } + "support reply via sender" in { val actor = system.actorOf(Props(new Actor { def receive = { diff --git a/akka-actor/src/main/scala/akka/actor/Deployer.scala b/akka-actor/src/main/scala/akka/actor/Deployer.scala index 539a0126a6..231cae957f 100644 --- a/akka-actor/src/main/scala/akka/actor/Deployer.scala +++ b/akka-actor/src/main/scala/akka/actor/Deployer.scala @@ -125,11 +125,7 @@ class Deployer(val settings: ActorSystem.Settings, val dynamicAccess: DynamicAcc val within = Duration(deployment.getMilliseconds("within"), TimeUnit.MILLISECONDS) - val resizer: Option[Resizer] = if (config.hasPath("resizer")) { - Some(DefaultResizer(deployment.getConfig("resizer"))) - } else { - None - } + val resizer: Option[Resizer] = if (config.hasPath("resizer")) Some(DefaultResizer(deployment.getConfig("resizer"))) else None val router: RouterConfig = deployment.getString("router") match { case "from-code" ⇒ NoRouter diff --git a/akka-actor/src/main/scala/akka/pattern/PipeToSupport.scala b/akka-actor/src/main/scala/akka/pattern/PipeToSupport.scala index b611fd7128..d73e146dfb 100644 --- a/akka-actor/src/main/scala/akka/pattern/PipeToSupport.scala +++ b/akka-actor/src/main/scala/akka/pattern/PipeToSupport.scala @@ -9,14 +9,14 @@ import akka.actor.{ Status, ActorRef } trait PipeToSupport { final class PipeableFuture[T](val future: Future[T]) { - def pipeTo(recipient: ActorRef): Future[T] = + def pipeTo(recipient: ActorRef)(implicit sender: ActorRef = null): Future[T] = future onComplete { case Right(r) ⇒ recipient ! r case Left(f) ⇒ recipient ! Status.Failure(f) } - - def to(recipient: ActorRef): PipeableFuture[T] = { - pipeTo(recipient) + def to(recipient: ActorRef): PipeableFuture[T] = to(recipient, null) + def to(recipient: ActorRef, sender: ActorRef): PipeableFuture[T] = { + pipeTo(recipient)(sender) this } }