From d440d32192ea5fba89453a4502c1238cf3f7f02b Mon Sep 17 00:00:00 2001 From: Marcos Pereira Date: Thu, 28 Jun 2018 11:50:59 -0400 Subject: [PATCH 1/2] update use of Futures to suit scala 2.13 --- .travis.yml | 4 +-- build.sbt | 26 +++++++++---------- .../play/api/libs/iteratee/Concurrent.scala | 18 +++++++------ .../play/api/libs/iteratee/Enumerator.scala | 5 ++-- project/build.properties | 2 +- project/plugins.sbt | 4 +-- 6 files changed, 31 insertions(+), 28 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2a5359f..02768d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,8 +3,8 @@ dist: trusty sudo: false group: beta scala: -- 2.12.1 -- 2.11.8 +- 2.12.8 +- 2.11.12 jdk: - oraclejdk8 cache: diff --git a/build.sbt b/build.sbt index 1c8bb2a..638cb36 100644 --- a/build.sbt +++ b/build.sbt @@ -1,42 +1,42 @@ import interplay.ScalaVersions._ -val specsVersion = "3.8.9" +val scala213Version = "2.13.0-M5" + +val specsVersion = "4.3.6" val specsBuild = Seq( "specs2-core", "specs2-junit", "specs2-mock" ).map("org.specs2" %% _ % specsVersion) +val commonSettings = scalariformSettings ++ Seq( + scalaVersion := scala212, + crossScalaVersions := Seq(scala212, scala211, scala213Version) +) + lazy val `play-iteratees` = project .in(file("iteratees")) .enablePlugins(PlayLibrary) - .settings(scalariformSettings: _*) + .settings(commonSettings: _*) .settings( - scalaVersion := scala212, - crossScalaVersions := Seq(scala212, scala211), libraryDependencies ++= Seq( - "org.scala-stm" %% "scala-stm" % "0.8" + "org.scala-stm" %% "scala-stm" % "0.9" ) ++ specsBuild.map(_ % Test) ) lazy val `play-iteratees-reactive-streams` = project .in(file("streams")) .enablePlugins(PlayLibrary) - .settings(scalariformSettings: _*) + .settings(commonSettings: _*) .settings( - scalaVersion := scala212, - crossScalaVersions := Seq(scala212, scala211), libraryDependencies ++= Seq( - "org.reactivestreams" % "reactive-streams" % "1.0.0" + "org.reactivestreams" % "reactive-streams" % "1.0.2" ) ++ specsBuild.map(_ % Test) ).dependsOn(`play-iteratees`) lazy val `play-iteratees-root` = (project in file(".")) .enablePlugins(PlayRootProject) .aggregate(`play-iteratees`, `play-iteratees-reactive-streams`) - .settings( - scalaVersion := scala212, - crossScalaVersions := Seq(scala212, scala211) - ) + .settings(commonSettings: _*) playBuildRepoName in ThisBuild := "play-iteratees" diff --git a/iteratees/src/main/scala/play/api/libs/iteratee/Concurrent.scala b/iteratees/src/main/scala/play/api/libs/iteratee/Concurrent.scala index 92e0dd0..04a3376 100644 --- a/iteratees/src/main/scala/play/api/libs/iteratee/Concurrent.scala +++ b/iteratees/src/main/scala/play/api/libs/iteratee/Concurrent.scala @@ -628,16 +628,16 @@ object Concurrent { new Hub[E] { - def noCords() = iteratees.single().isEmpty + def noCords(): Boolean = iteratees.single().isEmpty def close(): Unit = { closeFlag = true } - def closed() = closeFlag + def closed(): Boolean = closeFlag val redeemed = Ref(None: Option[Try[Iteratee[E, Unit]]]) - def getPatchCord() = new Enumerator[E] { + def getPatchCord(): Enumerator[E] = new Enumerator[E] { def apply[A](it: Iteratee[E, A]): Future[Iteratee[E, A]] = { val result = Promise[Iteratee[E, A]]() @@ -819,8 +819,9 @@ object Concurrent { } case err => folder(err) }(ec) - toReturn.onFailure { - case e => doneIteratee.failure(e) + toReturn.onComplete { + case Failure(e) => doneIteratee.failure(e) + case _ => }(dec) toReturn } @@ -848,10 +849,11 @@ object Concurrent { val (consumeRemaining, remaining) = Concurrent.joined[E] result.success((a, remaining)) consumeRemaining - }(dec)).onFailure { - case e => result.tryFailure(e) + }(dec)).onComplete { + case Failure(e) => result.tryFailure(e) + case _ => }(dec) result.future } -} +} \ No newline at end of file diff --git a/iteratees/src/main/scala/play/api/libs/iteratee/Enumerator.scala b/iteratees/src/main/scala/play/api/libs/iteratee/Enumerator.scala index 3032acf..b06d4da 100644 --- a/iteratees/src/main/scala/play/api/libs/iteratee/Enumerator.scala +++ b/iteratees/src/main/scala/play/api/libs/iteratee/Enumerator.scala @@ -529,9 +529,10 @@ object Enumerator { Future.successful(None) }(dec) - next.onFailure { - case reason: Exception => + next.onComplete { + case Failure(reason) => onError(reason.getMessage(), Input.Empty) + case _ => }(dec) next.onComplete { diff --git a/project/build.properties b/project/build.properties index 64317fd..8e682c5 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=0.13.15 +sbt.version=0.13.18 diff --git a/project/plugins.sbt b/project/plugins.sbt index bdd2a4a..c897eac 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,7 +1,7 @@ resolvers ++= DefaultOptions.resolvers(snapshot = true) -addSbtPlugin("com.typesafe.play" % "interplay" % "1.3.5") -addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.8") +addSbtPlugin("com.typesafe.play" % "interplay" % "1.3.18") +addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.3.0") addSbtPlugin("org.scalariform" % "sbt-scalariform" % "1.6.0") From a9cb75dc8ffa60610c273192bdae5d1253e6a4a6 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Tue, 14 Jan 2020 16:02:28 +0100 Subject: [PATCH 2/2] use Future andThen --- .../src/main/scala/play/api/libs/iteratee/Concurrent.scala | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/iteratees/src/main/scala/play/api/libs/iteratee/Concurrent.scala b/iteratees/src/main/scala/play/api/libs/iteratee/Concurrent.scala index 04a3376..0cd767b 100644 --- a/iteratees/src/main/scala/play/api/libs/iteratee/Concurrent.scala +++ b/iteratees/src/main/scala/play/api/libs/iteratee/Concurrent.scala @@ -615,10 +615,8 @@ object Concurrent { Iteratee.flatten(ready.flatMap { _ => val downToZero = atomic { implicit txn => - val ready = commitReady().toMap iteratees.transform(commitReady().map(_._2) ++ _) (interested.length > 0 && iteratees().length <= 0) - } def result(): Iteratee[E, Unit] = if (in == Input.EOF || closeFlag) Done((), Input.Empty) else Cont(step) if (downToZero) Future(interestIsDownToZero())(pec).map(_ => result())(dec) else Future.successful(result()) @@ -819,11 +817,10 @@ object Concurrent { } case err => folder(err) }(ec) - toReturn.onComplete { + toReturn.andThen { case Failure(e) => doneIteratee.failure(e) case _ => }(dec) - toReturn } }