diff --git a/akka-actor-typed-tests/src/test/scala/akka/actor/typed/scaladsl/adapter/AdapterSpec.scala b/akka-actor-typed-tests/src/test/scala/akka/actor/typed/scaladsl/adapter/AdapterSpec.scala index ec05afb247..fcb8cdc482 100644 --- a/akka-actor-typed-tests/src/test/scala/akka/actor/typed/scaladsl/adapter/AdapterSpec.scala +++ b/akka-actor-typed-tests/src/test/scala/akka/actor/typed/scaladsl/adapter/AdapterSpec.scala @@ -11,7 +11,6 @@ import akka.actor.InvalidMessageException import akka.actor.typed.scaladsl.Behaviors import akka.{ Done, NotUsed, actor ⇒ untyped } import akka.testkit._ -import akka.actor.typed.Behavior.UntypedPropsBehavior object AdapterSpec { val untyped1: untyped.Props = untyped.Props(new Untyped1) @@ -297,27 +296,5 @@ class AdapterSpec extends AkkaSpec { typedRef ! "stop-child" probe.expectMsg("terminated") } - - "spawn untyped behavior anonymously" in { - val probe = TestProbe() - val untypedBehavior: Behavior[String] = new UntypedPropsBehavior[String] { - override def untypedProps(props: akka.actor.typed.Props): akka.actor.Props = - untypedForwarder(probe.ref) - } - val ref = system.spawnAnonymous(untypedBehavior) - ref ! "hello" - probe.expectMsg("hello") - } - - "spawn untyped behavior" in { - val probe = TestProbe() - val untypedBehavior: Behavior[String] = new UntypedPropsBehavior[String] { - override def untypedProps(props: akka.actor.typed.Props): akka.actor.Props = - untypedForwarder(probe.ref) - } - val ref = system.spawn(untypedBehavior, "test") - ref ! "hello" - probe.expectMsg("hello") - } } } diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/Behavior.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/Behavior.scala index 1966502dfc..47ff972aaf 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/Behavior.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/Behavior.scala @@ -178,16 +178,6 @@ object Behavior { override def toString = "Unhandled" } - /** - * INTERNAL API - * Used to create untyped props from behaviours, or directly returning an untyped props that implements this behavior. - */ - @InternalApi - private[akka] abstract class UntypedPropsBehavior[T] extends Behavior[T] { - /** INTERNAL API */ - @InternalApi private[akka] def untypedProps(props: Props): akka.actor.Props - } - /** * INTERNAL API */ @@ -328,9 +318,6 @@ object Behavior { case null ⇒ throw new InvalidMessageException("[null] is not an allowed behavior") case SameBehavior | UnhandledBehavior ⇒ throw new IllegalArgumentException(s"cannot execute with [$behavior] as behavior") - case _: UntypedPropsBehavior[_] ⇒ - throw new IllegalArgumentException(s"cannot wrap behavior [$behavior] in " + - "Behaviors.setup, Behaviors.supervise or similar") case d: DeferredBehavior[_] ⇒ throw new IllegalArgumentException(s"deferred [$d] should not be passed to interpreter") case IgnoreBehavior ⇒ SameBehavior.asInstanceOf[Behavior[T]] case s: StoppedBehavior[T] ⇒ s diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/ActorContextAdapter.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/ActorContextAdapter.scala index a39307b6e0..2677906d53 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/ActorContextAdapter.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/ActorContextAdapter.scala @@ -7,7 +7,6 @@ package internal package adapter import akka.actor.ExtendedActorSystem -import akka.actor.typed.Behavior.UntypedPropsBehavior import akka.annotation.InternalApi import akka.util.OptionVal import akka.{ ConfigurationException, actor ⇒ a } @@ -124,36 +123,22 @@ import scala.concurrent.duration._ } def spawnAnonymous[T](ctx: akka.actor.ActorContext, behavior: Behavior[T], props: Props): ActorRef[T] = { - behavior match { - case b: UntypedPropsBehavior[_] ⇒ - // TODO dispatcher from props - ActorRefAdapter(ctx.actorOf(b.untypedProps(props))) - - case _ ⇒ - try { - Behavior.validateAsInitial(behavior) - ActorRefAdapter(ctx.actorOf(PropsAdapter(() ⇒ behavior, props))) - } catch { - case ex: ConfigurationException if ex.getMessage.startsWith("configuration requested remote deployment") ⇒ - throw new ConfigurationException("Remote deployment not allowed for typed actors", ex) - } + try { + Behavior.validateAsInitial(behavior) + ActorRefAdapter(ctx.actorOf(PropsAdapter(() ⇒ behavior, props))) + } catch { + case ex: ConfigurationException if ex.getMessage.startsWith("configuration requested remote deployment") ⇒ + throw new ConfigurationException("Remote deployment not allowed for typed actors", ex) } } def spawn[T](ctx: akka.actor.ActorContext, behavior: Behavior[T], name: String, props: Props): ActorRef[T] = { - behavior match { - case b: UntypedPropsBehavior[_] ⇒ - // TODO dispatcher from props - ActorRefAdapter(ctx.actorOf(b.untypedProps(props), name)) - - case _ ⇒ - try { - Behavior.validateAsInitial(behavior) - ActorRefAdapter(ctx.actorOf(PropsAdapter(() ⇒ behavior, props), name)) - } catch { - case ex: ConfigurationException if ex.getMessage.startsWith("configuration requested remote deployment") ⇒ - throw new ConfigurationException("Remote deployment not allowed for typed actors", ex) - } + try { + Behavior.validateAsInitial(behavior) + ActorRefAdapter(ctx.actorOf(PropsAdapter(() ⇒ behavior, props), name)) + } catch { + case ex: ConfigurationException if ex.getMessage.startsWith("configuration requested remote deployment") ⇒ + throw new ConfigurationException("Remote deployment not allowed for typed actors", ex) } } diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/adapter/package.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/adapter/package.scala index 371a54243e..881aae85b8 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/adapter/package.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/adapter/package.scala @@ -5,7 +5,6 @@ package akka.actor.typed package scaladsl -import akka.actor.typed.Behavior.UntypedPropsBehavior import akka.actor.typed.internal.adapter._ /** @@ -38,21 +37,11 @@ package object adapter { implicit class UntypedActorSystemOps(val sys: akka.actor.ActorSystem) extends AnyVal { def spawnAnonymous[T](behavior: Behavior[T], props: Props = Props.empty): ActorRef[T] = { - behavior match { - case b: UntypedPropsBehavior[_] ⇒ - ActorRefAdapter(sys.actorOf(b.untypedProps(props))) - case _ ⇒ - ActorRefAdapter(sys.actorOf(PropsAdapter(Behavior.validateAsInitial(behavior), props))) - } + ActorRefAdapter(sys.actorOf(PropsAdapter(Behavior.validateAsInitial(behavior), props))) } def spawn[T](behavior: Behavior[T], name: String, props: Props = Props.empty): ActorRef[T] = { - behavior match { - case b: UntypedPropsBehavior[_] ⇒ - ActorRefAdapter(sys.actorOf(b.untypedProps(props), name)) - case _ ⇒ - ActorRefAdapter(sys.actorOf(PropsAdapter(Behavior.validateAsInitial(behavior), props), name)) - } + ActorRefAdapter(sys.actorOf(PropsAdapter(Behavior.validateAsInitial(behavior), props), name)) } def toTyped: ActorSystem[Nothing] = AdapterExtension(sys).adapter diff --git a/akka-cluster-sharding-typed/src/main/scala/akka/cluster/sharding/typed/internal/ClusterShardingImpl.scala b/akka-cluster-sharding-typed/src/main/scala/akka/cluster/sharding/typed/internal/ClusterShardingImpl.scala index 1a648fb4c2..1c0171a7ea 100644 --- a/akka-cluster-sharding-typed/src/main/scala/akka/cluster/sharding/typed/internal/ClusterShardingImpl.scala +++ b/akka-cluster-sharding-typed/src/main/scala/akka/cluster/sharding/typed/internal/ClusterShardingImpl.scala @@ -15,7 +15,6 @@ import akka.actor.{ InternalActorRef, Scheduler } import akka.actor.typed.ActorRef import akka.actor.typed.ActorSystem import akka.actor.typed.Behavior -import akka.actor.typed.Behavior.UntypedPropsBehavior import akka.actor.typed.Props import akka.actor.typed.internal.adapter.ActorRefAdapter import akka.actor.typed.internal.adapter.ActorSystemAdapter @@ -142,10 +141,7 @@ import akka.japi.function.{ Function ⇒ JFunction } log.info("Starting Shard Region [{}]...", typeKey.name) val untypedEntityPropsFactory: String ⇒ akka.actor.Props = { entityId ⇒ - behavior(entityId) match { - case u: UntypedPropsBehavior[_] ⇒ u.untypedProps(Props.empty) // PersistentBehavior - case b ⇒ PropsAdapter(b, entityProps) - } + PropsAdapter(behavior(entityId), entityProps) } untypedSharding.internalStart( diff --git a/akka-cluster-typed/src/main/scala/akka/cluster/typed/internal/AdaptedClusterSingletonImpl.scala b/akka-cluster-typed/src/main/scala/akka/cluster/typed/internal/AdaptedClusterSingletonImpl.scala index 72baf03838..addc7dc8ab 100644 --- a/akka-cluster-typed/src/main/scala/akka/cluster/typed/internal/AdaptedClusterSingletonImpl.scala +++ b/akka-cluster-typed/src/main/scala/akka/cluster/typed/internal/AdaptedClusterSingletonImpl.scala @@ -10,7 +10,6 @@ import java.util.function.{ Function ⇒ JFunction } import akka.actor.{ ExtendedActorSystem, InvalidActorNameException } import akka.annotation.InternalApi import akka.cluster.singleton.{ ClusterSingletonProxy, ClusterSingletonManager ⇒ OldSingletonManager } -import akka.actor.typed.Behavior.UntypedPropsBehavior import akka.cluster.typed.{ Cluster, ClusterSingleton, ClusterSingletonImpl, ClusterSingletonSettings } import akka.actor.typed.internal.adapter.ActorSystemAdapter import akka.actor.typed.{ ActorRef, ActorSystem, Behavior, Props } @@ -41,10 +40,7 @@ private[akka] final class AdaptedClusterSingletonImpl(system: ActorSystem[_]) ex if (settings.shouldRunManager(cluster)) { val managerName = managerNameFor(singletonName) // start singleton on this node - val untypedProps = behavior match { - case u: UntypedPropsBehavior[_] ⇒ u.untypedProps(props) // PersistentBehavior - case _ ⇒ PropsAdapter(behavior, props) - } + val untypedProps = PropsAdapter(behavior, props) try { untypedSystem.systemActorOf( OldSingletonManager.props(untypedProps, terminationMessage, settings.toManagerSettings(singletonName)),