diff --git a/akka-actor/src/main/mima-filters/2.5.x.backwards.excludes b/akka-actor/src/main/mima-filters/2.5.x.backwards.excludes index 91109ef715..afe7a7c909 100644 --- a/akka-actor/src/main/mima-filters/2.5.x.backwards.excludes +++ b/akka-actor/src/main/mima-filters/2.5.x.backwards.excludes @@ -72,3 +72,11 @@ ProblemFilters.exclude[FinalMethodProblem]("akka.actor.TimerScheduler.startSingl # only in current version ProblemFilters.exclude[ReversedMissingMethodProblem]("akka.actor.TimerScheduler.startTimerAtFixedRate") ProblemFilters.exclude[ReversedMissingMethodProblem]("akka.actor.TimerScheduler.startTimerWithFixedDelay") + +# Remove deprecated features +ProblemFilters.exclude[DirectMissingMethodProblem]("akka.actor.AbstractActor#ActorContext.getChild") +ProblemFilters.exclude[DirectMissingMethodProblem]("akka.actor.ActorIdentity.getRef") +ProblemFilters.exclude[IncompatibleMethTypeProblem]("akka.pattern.CircuitBreaker.onClose") +ProblemFilters.exclude[IncompatibleMethTypeProblem]("akka.pattern.CircuitBreaker.onOpen") +ProblemFilters.exclude[IncompatibleMethTypeProblem]("akka.pattern.CircuitBreaker.onHalfOpen") + diff --git a/akka-actor/src/main/scala/akka/actor/AbstractActor.scala b/akka-actor/src/main/scala/akka/actor/AbstractActor.scala index b3e05127c5..b4aa87a730 100644 --- a/akka-actor/src/main/scala/akka/actor/AbstractActor.scala +++ b/akka-actor/src/main/scala/akka/actor/AbstractActor.scala @@ -85,13 +85,6 @@ object AbstractActor { */ def getChildren(): java.lang.Iterable[ActorRef] - /** - * Returns a reference to the named child or null if no child with - * that name exists. - */ - @deprecated("Use findChild instead", "2.5.0") - def getChild(name: String): ActorRef - /** * Returns a reference to the named child if it exists. * diff --git a/akka-actor/src/main/scala/akka/actor/Actor.scala b/akka-actor/src/main/scala/akka/actor/Actor.scala index 908f2db8e4..15ed96aa17 100644 --- a/akka-actor/src/main/scala/akka/actor/Actor.scala +++ b/akka-actor/src/main/scala/akka/actor/Actor.scala @@ -84,13 +84,6 @@ final case class ActorIdentity(correlationId: Any, ref: Option[ActorRef]) { "this could happen when serializing with Scala 2.12 and deserializing with Scala 2.11 which is not supported.") } - /** - * Java API: `ActorRef` of the actor replying to the request or - * null if no actor matched the request. - */ - @deprecated("Use getActorRef instead", "2.5.0") - def getRef: ActorRef = ref.orNull - /** * Java API: `ActorRef` of the actor replying to the request or * not defined if no actor matched the request. diff --git a/akka-actor/src/main/scala/akka/actor/ActorRef.scala b/akka-actor/src/main/scala/akka/actor/ActorRef.scala index 080c802441..d96a889d92 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorRef.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorRef.scala @@ -259,6 +259,7 @@ private[akka] abstract class InternalActorRef extends ActorRef with ScalaActorRe * INTERNAL API: Returns “true” if the actor is locally known to be terminated, “false” if * alive or uncertain. */ + @InternalApi private[akka] def isTerminated: Boolean } @@ -462,7 +463,7 @@ private[akka] trait MinimalActorRef extends InternalActorRef with LocalRef { override def suspend(): Unit = () override def resume(causedByFailure: Throwable): Unit = () override def stop(): Unit = () - @deprecated("Use context.watch(actor) and receive Terminated(actor)", "2.2") + override private[akka] def isTerminated = false override def !(message: Any)(implicit sender: ActorRef = Actor.noSender): Unit = () @@ -554,7 +555,6 @@ private[akka] class EmptyLocalActorRef( val eventStream: EventStream) extends MinimalActorRef { - @deprecated("Use context.watch(actor) and receive Terminated(actor)", "2.2") override private[akka] def isTerminated = true override def sendSystemMessage(message: SystemMessage): Unit = { @@ -775,7 +775,11 @@ private[akka] final class FunctionRef( private[this] var watching = ActorCell.emptyActorRefSet private[this] var _watchedBy: OptionVal[Set[ActorRef]] = OptionVal.Some(ActorCell.emptyActorRefSet) - override def isTerminated: Boolean = _watchedBy.isEmpty + /** + * INTERNAL API + */ + @InternalApi + override private[akka] def isTerminated: Boolean = _watchedBy.isEmpty //noinspection EmptyCheck protected def sendTerminated(): Unit = { diff --git a/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala b/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala index 08f0c36d50..67215fd549 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala @@ -416,7 +416,10 @@ private[akka] class LocalActorRefProvider private[akka] ( terminationPromise.completeWith(causeOfTermination.future) // Signal termination downstream, idempotent } - @deprecated("Use context.watch(actor) and receive Terminated(actor)", "2.2") + /** + * INTERNAL API + */ + @InternalApi override private[akka] def isTerminated: Boolean = !isWalking override def !(message: Any)(implicit sender: ActorRef = Actor.noSender): Unit = diff --git a/akka-actor/src/main/scala/akka/pattern/AskSupport.scala b/akka-actor/src/main/scala/akka/pattern/AskSupport.scala index b9e0038689..1154c900f2 100644 --- a/akka-actor/src/main/scala/akka/pattern/AskSupport.scala +++ b/akka-actor/src/main/scala/akka/pattern/AskSupport.scala @@ -603,7 +603,6 @@ private[akka] final class PromiseActorRef private ( case _ => } - @deprecated("Use context.watch(actor) and receive Terminated(actor)", "2.2") override private[akka] def isTerminated: Boolean = state match { case Stopped | _: StoppedWithPath => true case _ => false diff --git a/akka-actor/src/main/scala/akka/pattern/CircuitBreaker.scala b/akka-actor/src/main/scala/akka/pattern/CircuitBreaker.scala index bc0574a426..91d1e40446 100644 --- a/akka-actor/src/main/scala/akka/pattern/CircuitBreaker.scala +++ b/akka-actor/src/main/scala/akka/pattern/CircuitBreaker.scala @@ -434,15 +434,6 @@ class CircuitBreaker( */ def onOpen(callback: => Unit): CircuitBreaker = addOnOpenListener(new Runnable { def run = callback }) - /** - * Java API for onOpen - * - * @param callback Handler to be invoked on state change - * @return CircuitBreaker for fluent usage - */ - @deprecated("Use addOnOpenListener instead", "2.5.0") - def onOpen(callback: Runnable): CircuitBreaker = addOnOpenListener(callback) - /** * Java API for onOpen * @@ -463,15 +454,6 @@ class CircuitBreaker( */ def onHalfOpen(callback: => Unit): CircuitBreaker = addOnHalfOpenListener(new Runnable { def run = callback }) - /** - * JavaAPI for onHalfOpen - * - * @param callback Handler to be invoked on state change - * @return CircuitBreaker for fluent usage - */ - @deprecated("Use addOnHalfOpenListener instead", "2.5.0") - def onHalfOpen(callback: Runnable): CircuitBreaker = addOnHalfOpenListener(callback) - /** * JavaAPI for onHalfOpen * @@ -493,15 +475,6 @@ class CircuitBreaker( */ def onClose(callback: => Unit): CircuitBreaker = addOnCloseListener(new Runnable { def run = callback }) - /** - * JavaAPI for onClose - * - * @param callback Handler to be invoked on state change - * @return CircuitBreaker for fluent usage - */ - @deprecated("Use addOnCloseListener instead", "2.5.0") - def onClose(callback: Runnable): CircuitBreaker = addOnCloseListener(callback) - /** * JavaAPI for onClose * diff --git a/akka-docs/src/main/paradox/project/migration-guide-2.5.x-2.6.x.md b/akka-docs/src/main/paradox/project/migration-guide-2.5.x-2.6.x.md index ad5122f177..37eb649869 100644 --- a/akka-docs/src/main/paradox/project/migration-guide-2.5.x-2.6.x.md +++ b/akka-docs/src/main/paradox/project/migration-guide-2.5.x-2.6.x.md @@ -68,6 +68,11 @@ Use @apidoc[AbstractPersistentActorWithAtLeastOnceDelivery] instead. * `Logging.getLogger(UntypedActor)` Untyped actor has been removed, use AbstractActor instead. * `LoggingReceive.create(Receive, ActorContext)` use `AbstractActor.Receive` instead. * `ActorMaterialzierSettings.withAutoFusing` disabling fusing is no longer possible. +* `AbstractActor.getChild` use `findChild` instead. +* `Actor.getRef` use `Actor.getActorRef` instead. +* `CircuitBreaker.onOpen` use `CircuitBreaker.addOnOpenListener` +* `CircuitBreaker.onHalfOpen` use `CircuitBreaker.addOnHalfOpenListener` +* `CircuitBreaker.onClose` use `CircuitBreaker.addOnCloseListener` ### JavaTestKit removed