From 9c867ba7ade00f3f9d99c13e9e745c90235673e8 Mon Sep 17 00:00:00 2001 From: Sumanth Adluru Date: Wed, 28 Jun 2017 17:17:52 -0700 Subject: [PATCH 1/4] play 2.6 builds with deprecation warnings --- .../play2/stackc/StackableController.scala | 24 ++++++++++++------- project/Build.scala | 4 ++-- project/build.properties | 2 +- project/plugins.sbt | 2 +- sample/app/views/index.scala.html | 2 +- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/core/src/main/scala/jp/t2v/lab/play2/stackc/StackableController.scala b/core/src/main/scala/jp/t2v/lab/play2/stackc/StackableController.scala index 236b863..144b87a 100644 --- a/core/src/main/scala/jp/t2v/lab/play2/stackc/StackableController.scala +++ b/core/src/main/scala/jp/t2v/lab/play2/stackc/StackableController.scala @@ -1,15 +1,18 @@ package jp.t2v.lab.play2.stackc +import javax.inject.Inject + import play.api.mvc._ + import scala.collection.concurrent.TrieMap -import scala.concurrent.{Future, ExecutionContext} +import scala.concurrent.{ExecutionContext, Future} import scala.util.{Failure, Success} -import scala.util.control.{NonFatal, ControlThrowable} +import scala.util.control.{ControlThrowable, NonFatal} trait StackableController { self: Controller => - final class StackActionBuilder(params: Attribute[_]*) extends ActionBuilder[RequestWithAttributes] { + final class StackActionBuilder[B](override val parser: BodyParser[B], params: Attribute[_]*) extends ActionBuilder[RequestWithAttributes, B] { def invokeBlock[A](req: Request[A], block: (RequestWithAttributes[A]) => Future[Result]): Future[Result] = { val request = new RequestWithAttributes(req, new TrieMap[RequestAttributeKey[_], Any] ++= params.map(_.toTuple)) try { @@ -19,15 +22,18 @@ trait StackableController { case NonFatal(e) => cleanupOnFailed(request, e); throw e } } + override protected def executionContext: ExecutionContext = play.api.libs.concurrent.Execution.defaultContext } - final def AsyncStack[A](p: BodyParser[A], params: Attribute[_]*)(f: RequestWithAttributes[A] => Future[Result]): Action[A] = new StackActionBuilder(params: _*).async(p)(f) - final def AsyncStack(params: Attribute[_]*)(f: RequestWithAttributes[AnyContent] => Future[Result]): Action[AnyContent] = new StackActionBuilder(params: _*).async(f) - final def AsyncStack(f: RequestWithAttributes[AnyContent] => Future[Result]): Action[AnyContent] = new StackActionBuilder().async(f) + val defaultBodyParser = self.parse.default + + final def AsyncStack[A](p: BodyParser[A], params: Attribute[_]*)(f: RequestWithAttributes[A] => Future[Result]): Action[A] = new StackActionBuilder(p, params: _*).async(p)(f) + final def AsyncStack(params: Attribute[_]*)(f: RequestWithAttributes[AnyContent] => Future[Result]): Action[AnyContent] = new StackActionBuilder[AnyContent](defaultBodyParser, params: _*).async(f) + final def AsyncStack(f: RequestWithAttributes[AnyContent] => Future[Result]): Action[AnyContent] = new StackActionBuilder[AnyContent](defaultBodyParser).async(f) - final def StackAction[A](p: BodyParser[A], params: Attribute[_]*)(f: RequestWithAttributes[A] => Result): Action[A] = new StackActionBuilder(params: _*).apply(p)(f) - final def StackAction(params: Attribute[_]*)(f: RequestWithAttributes[AnyContent] => Result): Action[AnyContent] = new StackActionBuilder(params: _*).apply(f) - final def StackAction(f: RequestWithAttributes[AnyContent] => Result): Action[AnyContent] = new StackActionBuilder().apply(f) + final def StackAction[A](p: BodyParser[A], params: Attribute[_]*)(f: RequestWithAttributes[A] => Result): Action[A] = new StackActionBuilder(p, params: _*).apply(p)(f) + final def StackAction(params: Attribute[_]*)(f: RequestWithAttributes[AnyContent] => Result): Action[AnyContent] = new StackActionBuilder[AnyContent](defaultBodyParser, params: _*).apply(f) + final def StackAction(f: RequestWithAttributes[AnyContent] => Result): Action[AnyContent] = new StackActionBuilder[AnyContent](defaultBodyParser).apply(f) def proceed[A](request: RequestWithAttributes[A])(f: RequestWithAttributes[A] => Future[Result]): Future[Result] = f(request) diff --git a/project/Build.scala b/project/Build.scala index 865f110..937f359 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -7,7 +7,7 @@ object StackableControllerProjects extends Build { lazy val _organization = "jp.t2v" - lazy val _version = "0.6.0-SNAPSHOT" + lazy val _version = "0.7.0-SNAPSHOT" def _publishTo(v: String) = { val nexus = "https://oss.sonatype.org/" @@ -44,7 +44,7 @@ object StackableControllerProjects extends Build { } - val Scala211 = "2.11.7" + val Scala211 = "2.11.11" lazy val core = Project( id = "core", diff --git a/project/build.properties b/project/build.properties index 43b8278..64317fd 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=0.13.11 +sbt.version=0.13.15 diff --git a/project/plugins.sbt b/project/plugins.sbt index 838bace..4fce291 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,3 @@ -addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.0") +addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.0") scalacOptions ++= Seq("-deprecation", "-language:_", "-unchecked") diff --git a/sample/app/views/index.scala.html b/sample/app/views/index.scala.html index 1370e0e..96dd89e 100644 --- a/sample/app/views/index.scala.html +++ b/sample/app/views/index.scala.html @@ -2,6 +2,6 @@ @main("Welcome to Play 2.1") { - @play20.welcome(message) + @message } From 6bbdd45d30d9ea7624787a6ddccc1281d5d45f77 Mon Sep 17 00:00:00 2001 From: Sumanth Adluru Date: Thu, 29 Jun 2017 11:49:37 -0700 Subject: [PATCH 2/4] Fixed deprecation warnings --- .../t2v/lab/play2/stackc/StackableController.scala | 7 ++++--- project/Build.scala | 11 ++++++----- sample/app/controllers/Application.scala | 4 +++- sample/app/controllers/stack/DBSessionElement.scala | 12 ++++++++---- sample/app/controllers/stack/LoggingElement.scala | 7 +++++-- 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/core/src/main/scala/jp/t2v/lab/play2/stackc/StackableController.scala b/core/src/main/scala/jp/t2v/lab/play2/stackc/StackableController.scala index 144b87a..7429d9c 100644 --- a/core/src/main/scala/jp/t2v/lab/play2/stackc/StackableController.scala +++ b/core/src/main/scala/jp/t2v/lab/play2/stackc/StackableController.scala @@ -9,8 +9,9 @@ import scala.concurrent.{ExecutionContext, Future} import scala.util.{Failure, Success} import scala.util.control.{ControlThrowable, NonFatal} +@Inject trait StackableController { - self: Controller => + self: AbstractController => final class StackActionBuilder[B](override val parser: BodyParser[B], params: Attribute[_]*) extends ActionBuilder[RequestWithAttributes, B] { def invokeBlock[A](req: Request[A], block: (RequestWithAttributes[A]) => Future[Result]): Future[Result] = { @@ -22,10 +23,10 @@ trait StackableController { case NonFatal(e) => cleanupOnFailed(request, e); throw e } } - override protected def executionContext: ExecutionContext = play.api.libs.concurrent.Execution.defaultContext + override protected def executionContext: ExecutionContext = self.controllerComponents.executionContext } - val defaultBodyParser = self.parse.default + private lazy val defaultBodyParser = self.controllerComponents.parsers.default final def AsyncStack[A](p: BodyParser[A], params: Attribute[_]*)(f: RequestWithAttributes[A] => Future[Result]): Action[A] = new StackActionBuilder(p, params: _*).async(p)(f) final def AsyncStack(params: Attribute[_]*)(f: RequestWithAttributes[AnyContent] => Future[Result]): Action[AnyContent] = new StackActionBuilder[AnyContent](defaultBodyParser, params: _*).async(f) diff --git a/project/Build.scala b/project/Build.scala index 937f359..1fdd6db 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -1,7 +1,7 @@ import sbt._ import Keys._ import play.sbt.routes.RoutesKeys.routesGenerator -import play.routes.compiler.StaticRoutesGenerator +import play.routes.compiler.{InjectedRoutesGenerator, StaticRoutesGenerator} object StackableControllerProjects extends Build { @@ -73,14 +73,15 @@ object StackableControllerProjects extends Build { version := _version, scalaVersion := Scala211, resolvers ++= _resolvers, - routesGenerator := StaticRoutesGenerator, + routesGenerator := InjectedRoutesGenerator, libraryDependencies ++= Seq( play.sbt.Play.autoImport.jdbc, + play.sbt.Play.autoImport.guice, play.sbt.Play.autoImport.specs2 % "test", "com.typesafe.play" %% "play" % play.core.PlayVersion.current, - "org.scalikejdbc" %% "scalikejdbc" % "2.3.5", - "org.scalikejdbc" %% "scalikejdbc-config" % "2.3.5", - "org.scalikejdbc" %% "scalikejdbc-play-initializer" % "2.5.0", + "org.scalikejdbc" %% "scalikejdbc" % "3.0.0", + "org.scalikejdbc" %% "scalikejdbc-config" % "3.0.0", + "org.scalikejdbc" %% "scalikejdbc-play-initializer" % "2.6.0", "org.slf4j" % "slf4j-simple" % "[1.7,)" ) ) dependsOn(core) diff --git a/sample/app/controllers/Application.scala b/sample/app/controllers/Application.scala index f5ee060..0377c57 100644 --- a/sample/app/controllers/Application.scala +++ b/sample/app/controllers/Application.scala @@ -1,12 +1,14 @@ package controllers +import javax.inject.Inject + import play.api.mvc._ import models._ import views._ import controllers.stack._ import jp.t2v.lab.play2.stackc.RequestWithAttributes -object Application extends Controller with DBSessionElement with LoggingElement { +class Application @Inject() (cc: ControllerComponents) extends AbstractController(cc) with DBSessionElement with LoggingElement { def index = Action { Ok(views.html.index("Your new application is ready.")) diff --git a/sample/app/controllers/stack/DBSessionElement.scala b/sample/app/controllers/stack/DBSessionElement.scala index a0d68ca..845fa25 100644 --- a/sample/app/controllers/stack/DBSessionElement.scala +++ b/sample/app/controllers/stack/DBSessionElement.scala @@ -1,13 +1,17 @@ package controllers.stack -import play.api.mvc.{Result, Controller} +import javax.inject.Inject + +import jp.t2v.lab.play2.stackc.{RequestAttributeKey, RequestWithAttributes, StackableController} +import play.api.mvc.{AbstractController, Result} import scalikejdbc._ -import jp.t2v.lab.play2.stackc.{RequestWithAttributes, RequestAttributeKey, StackableController} -import scala.concurrent.Future + import scala.concurrent.ExecutionContext.Implicits.global +import scala.concurrent.Future +@Inject trait DBSessionElement extends StackableController { - self: Controller => + self: AbstractController => case object DBSessionKey extends RequestAttributeKey[DBSession] diff --git a/sample/app/controllers/stack/LoggingElement.scala b/sample/app/controllers/stack/LoggingElement.scala index 45b1d10..531e3b8 100644 --- a/sample/app/controllers/stack/LoggingElement.scala +++ b/sample/app/controllers/stack/LoggingElement.scala @@ -1,11 +1,14 @@ package controllers.stack -import play.api.mvc.{Result, Controller} +import javax.inject.Inject + import jp.t2v.lab.play2.stackc.{RequestWithAttributes, StackableController} import play.api.Logger +import play.api.mvc.{AbstractController, InjectedController, Result} +@Inject trait LoggingElement extends StackableController { - self: Controller => + self: AbstractController => override def cleanupOnSucceeded[A](req: RequestWithAttributes[A], res: Option[Result]): Unit = { res.map { result => From aacce90c347d1d72d9f1161bdbb7a4fc38436886 Mon Sep 17 00:00:00 2001 From: Sumanth Adluru Date: Thu, 29 Jun 2017 13:19:16 -0700 Subject: [PATCH 3/4] Working with scala 2.12 cross build, play 2.6 --- project/Build.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index 1fdd6db..f8cbca0 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -54,7 +54,7 @@ object StackableControllerProjects extends Build { name := "stackable-controller", version := _version, scalaVersion := Scala211, - crossScalaVersions := Scala211 :: Nil, + crossScalaVersions := Seq(Scala211, "2.12.2"), publishTo <<= version { (v: String) => _publishTo(v) }, publishMavenStyle := true, resolvers ++= _resolvers, From 131fc6f2f8cb91f3a24aa2ca4b287e340a89c122 Mon Sep 17 00:00:00 2001 From: Tatsunori TAMAKI Date: Tue, 12 Jun 2018 13:16:54 +0900 Subject: [PATCH 4/4] udpate to scala version 2.12.6 --- project/Build.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index f8cbca0..87510ce 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -54,7 +54,7 @@ object StackableControllerProjects extends Build { name := "stackable-controller", version := _version, scalaVersion := Scala211, - crossScalaVersions := Seq(Scala211, "2.12.2"), + crossScalaVersions := Seq(Scala211, "2.12.6"), publishTo <<= version { (v: String) => _publishTo(v) }, publishMavenStyle := true, resolvers ++= _resolvers,