diff --git a/stream/src/main/mima-filters/1.1.x.backwards.excludes/mark-subsource-and-subflow-final.backwards.excludes b/stream/src/main/mima-filters/1.1.x.backwards.excludes/mark-subsource-and-subflow-final.backwards.excludes new file mode 100644 index 00000000000..fe27a278a55 --- /dev/null +++ b/stream/src/main/mima-filters/1.1.x.backwards.excludes/mark-subsource-and-subflow-final.backwards.excludes @@ -0,0 +1,3 @@ +# Mark SubSource and SubFlow final class +ProblemFilters.exclude[FinalClassProblem]("org.apache.pekko.stream.javadsl.SubSource") +ProblemFilters.exclude[FinalClassProblem]("org.apache.pekko.stream.javadsl.SubFlow") diff --git a/stream/src/main/scala/org/apache/pekko/stream/javadsl/SubFlow.scala b/stream/src/main/scala/org/apache/pekko/stream/javadsl/SubFlow.scala index b9c7d089ab2..821f9117a78 100755 --- a/stream/src/main/scala/org/apache/pekko/stream/javadsl/SubFlow.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/javadsl/SubFlow.scala @@ -53,7 +53,7 @@ object SubFlow { * SubFlows cannot contribute to the super-flow’s materialized value since they * are materialized later, during the runtime of the flow graph processing. */ -class SubFlow[In, Out, Mat]( +final class SubFlow[In, Out, Mat]( delegate: scaladsl.SubFlow[Out, Mat, scaladsl.Flow[In, Out, Mat]#Repr, scaladsl.Sink[In, Mat]]) { /** Converts this Flow to its Scala DSL counterpart */ diff --git a/stream/src/main/scala/org/apache/pekko/stream/javadsl/SubSource.scala b/stream/src/main/scala/org/apache/pekko/stream/javadsl/SubSource.scala index 0de91a896ad..7239d31397f 100755 --- a/stream/src/main/scala/org/apache/pekko/stream/javadsl/SubSource.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/javadsl/SubSource.scala @@ -48,7 +48,7 @@ object SubSource { * SubFlows cannot contribute to the super-flow’s materialized value since they * are materialized later, during the runtime of the flow graph processing. */ -class SubSource[Out, Mat]( +final class SubSource[Out, Mat]( delegate: scaladsl.SubFlow[Out, Mat, scaladsl.Source[Out, Mat]#Repr, scaladsl.RunnableGraph[Mat]]) { /** Converts this Flow to its Scala DSL counterpart */ diff --git a/stream/src/main/scala/org/apache/pekko/stream/scaladsl/SubFlow.scala b/stream/src/main/scala/org/apache/pekko/stream/scaladsl/SubFlow.scala index d587b66d3a3..68566851b4d 100644 --- a/stream/src/main/scala/org/apache/pekko/stream/scaladsl/SubFlow.scala +++ b/stream/src/main/scala/org/apache/pekko/stream/scaladsl/SubFlow.scala @@ -13,15 +13,20 @@ package org.apache.pekko.stream.scaladsl -import scala.annotation.unchecked.uncheckedVariance +import org.apache.pekko +import pekko.annotation.DoNotInherit +import pekko.stream._ -import org.apache.pekko.stream._ +import scala.annotation.unchecked.uncheckedVariance /** * A “stream of streams” sub-flow of data elements, e.g. produced by `groupBy`. * SubFlows cannot contribute to the super-flow’s materialized value since they * are materialized later, during the runtime of the flow graph processing. + * + * Not for user extension */ +@DoNotInherit trait SubFlow[+Out, +Mat, +F[+_], C] extends FlowOps[Out, Mat] { override type Repr[+T] = SubFlow[T, Mat @uncheckedVariance, F @uncheckedVariance, C @uncheckedVariance]