From 8a3cf8145b12adc5345ccbfbeca2f1b1d682209a Mon Sep 17 00:00:00 2001 From: Roland Kuhn Date: Fri, 18 Mar 2016 12:28:27 +0100 Subject: [PATCH] lift mapMaterializedValue to FlowOpsMat --- akka-stream/src/main/scala/akka/stream/scaladsl/Flow.scala | 7 ++++++- .../src/main/scala/akka/stream/scaladsl/Source.scala | 4 ++-- project/MiMa.scala | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/akka-stream/src/main/scala/akka/stream/scaladsl/Flow.scala b/akka-stream/src/main/scala/akka/stream/scaladsl/Flow.scala index e041eaa743..755da1ebe6 100644 --- a/akka-stream/src/main/scala/akka/stream/scaladsl/Flow.scala +++ b/akka-stream/src/main/scala/akka/stream/scaladsl/Flow.scala @@ -114,7 +114,7 @@ final class Flow[-In, +Out, +Mat](private[stream] override val module: Module) /** * Transform the materialized value of this Flow, leaving all other properties as they were. */ - def mapMaterializedValue[Mat2](f: Mat ⇒ Mat2): ReprMat[Out, Mat2] = + override def mapMaterializedValue[Mat2](f: Mat ⇒ Mat2): ReprMat[Out, Mat2] = new Flow(module.transformMaterializedValue(f.asInstanceOf[Any ⇒ Any])) /** @@ -1983,6 +1983,11 @@ trait FlowOpsMat[+Out, +Mat] extends FlowOps[Out, Mat] { def watchTermination[Mat2]()(matF: (Mat, Future[Done]) ⇒ Mat2): ReprMat[Out, Mat2] = viaMat(GraphStages.terminationWatcher)(matF) + /** + * Transform the materialized value of this graph, leaving all other properties as they were. + */ + def mapMaterializedValue[Mat2](f: Mat ⇒ Mat2): ReprMat[Out, Mat2] + /** * INTERNAL API. */ diff --git a/akka-stream/src/main/scala/akka/stream/scaladsl/Source.scala b/akka-stream/src/main/scala/akka/stream/scaladsl/Source.scala index 7740e27fd6..0d6a7ec994 100644 --- a/akka-stream/src/main/scala/akka/stream/scaladsl/Source.scala +++ b/akka-stream/src/main/scala/akka/stream/scaladsl/Source.scala @@ -28,7 +28,7 @@ import scala.compat.java8.FutureConverters._ * a Reactive Streams `Publisher` (at least conceptually). */ final class Source[+Out, +Mat](private[stream] override val module: Module) - extends FlowOpsMat[Out, Mat] with Graph[SourceShape[Out], Mat] { + extends FlowOpsMat[Out, Mat] with Graph[SourceShape[Out], Mat] { override type Repr[+O] = Source[O, Mat @uncheckedVariance] override type ReprMat[+O, +M] = Source[O, M] @@ -71,7 +71,7 @@ final class Source[+Out, +Mat](private[stream] override val module: Module) /** * Transform only the materialized value of this Source, leaving all other properties as they were. */ - def mapMaterializedValue[Mat2](f: Mat ⇒ Mat2): ReprMat[Out, Mat2] = + override def mapMaterializedValue[Mat2](f: Mat ⇒ Mat2): ReprMat[Out, Mat2] = new Source[Out, Mat2](module.transformMaterializedValue(f.asInstanceOf[Any ⇒ Any])) /** INTERNAL API */ diff --git a/project/MiMa.scala b/project/MiMa.scala index 2af118b654..aececeaed8 100644 --- a/project/MiMa.scala +++ b/project/MiMa.scala @@ -659,6 +659,9 @@ object MiMa extends AutoPlugin { ProblemFilters.exclude[DirectMissingMethodProblem]("akka.stream.impl.fusing.Drop.onPush"), ProblemFilters.exclude[FinalClassProblem]("akka.stream.stage.GraphStageLogic$Reading"), // this class is private + // lifting this method to the type where it belongs + ProblemFilters.exclude[ReversedMissingMethodProblem]("akka.stream.scaladsl.FlowOpsMat.mapMaterializedValue"), + // #19908 Take is private ProblemFilters.exclude[MissingClassProblem]("akka.stream.impl.Stages$Take$"), ProblemFilters.exclude[MissingClassProblem]("akka.stream.impl.Stages$Take"),