From 27b1c73d90c6d8ed653287df42b63c50e7d28391 Mon Sep 17 00:00:00 2001 From: Enno Runne <458526+ennru@users.noreply.github.com> Date: Tue, 31 Mar 2020 09:42:55 +0200 Subject: [PATCH] Make ClassicActorSystemProvider.classicSystem public API See @28818 --- .../testkit/typed/internal/ActorSystemStub.scala | 2 +- .../typed/internal/adapter/ActorSystemAdapter.scala | 11 ++--------- .../akka/actor/typed/scaladsl/adapter/package.scala | 2 +- .../src/main/scala/akka/actor/ActorSystem.scala | 2 +- .../scala/akka/actor/ClassicActorSystemProvider.scala | 7 ++++--- 5 files changed, 9 insertions(+), 15 deletions(-) diff --git a/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/ActorSystemStub.scala b/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/ActorSystemStub.scala index b2095d20ed..7c493f8bdf 100644 --- a/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/ActorSystemStub.scala +++ b/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/ActorSystemStub.scala @@ -66,7 +66,7 @@ import org.slf4j.LoggerFactory override def provider: ActorRefProvider = throw new UnsupportedOperationException("no provider") // stream materialization etc. using stub not supported - override private[akka] def classicSystem = + override def classicSystem = throw new UnsupportedOperationException("no classic actor system available") // impl InternalRecipientRef diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/ActorSystemAdapter.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/ActorSystemAdapter.scala index 478a8409a1..1a30fe9687 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/ActorSystemAdapter.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/ActorSystemAdapter.scala @@ -51,7 +51,7 @@ import org.slf4j.{ Logger, LoggerFactory } import ActorRefAdapter.sendSystemMessage - override private[akka] def classicSystem: classic.ActorSystem = system + override def classicSystem: classic.ActorSystem = system // Members declared in akka.actor.typed.ActorRef override def tell(msg: T): Unit = { @@ -155,12 +155,5 @@ private[akka] object ActorSystemAdapter { new LoadTypedExtensions(system) } - def toClassic[U](sys: ActorSystem[_]): classic.ActorSystem = - sys match { - case adapter: ActorSystemAdapter[_] => adapter.classicSystem - case _ => - throw new UnsupportedOperationException( - "Only adapted classic ActorSystem permissible " + - s"($sys of class ${sys.getClass.getName})") - } + def toClassic[U](sys: ActorSystem[_]): classic.ActorSystem = sys.classicSystem } 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 fc259448b6..2cfe0f0987 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 @@ -74,7 +74,7 @@ package object adapter { * Extension methods added to [[akka.actor.typed.ActorSystem]]. */ implicit class TypedActorSystemOps(val sys: ActorSystem[_]) extends AnyVal { - def toClassic: akka.actor.ActorSystem = ActorSystemAdapter.toClassic(sys) + def toClassic: akka.actor.ActorSystem = sys.classicSystem /** * INTERNAL API diff --git a/akka-actor/src/main/scala/akka/actor/ActorSystem.scala b/akka-actor/src/main/scala/akka/actor/ActorSystem.scala index a8e1988299..99eddb90ba 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorSystem.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorSystem.scala @@ -976,7 +976,7 @@ private[akka] class ActorSystemImpl( def /(actorName: String): ActorPath = guardian.path / actorName def /(path: Iterable[String]): ActorPath = guardian.path / path - override private[akka] def classicSystem: ActorSystem = this + override def classicSystem: ActorSystem = this // Used for ManifestInfo.checkSameVersion private def allModules: List[String] = diff --git a/akka-actor/src/main/scala/akka/actor/ClassicActorSystemProvider.scala b/akka-actor/src/main/scala/akka/actor/ClassicActorSystemProvider.scala index 66a9cb7330..d7473e04cc 100644 --- a/akka-actor/src/main/scala/akka/actor/ClassicActorSystemProvider.scala +++ b/akka-actor/src/main/scala/akka/actor/ClassicActorSystemProvider.scala @@ -15,9 +15,10 @@ import akka.annotation.InternalApi @DoNotInherit trait ClassicActorSystemProvider { - /** INTERNAL API */ - @InternalApi - private[akka] def classicSystem: ActorSystem + /** + * Allows access to the classic `akka.actor.ActorSystem` even for `akka.actor.typed.ActorSystem[_]`s. + */ + def classicSystem: ActorSystem } /**