diff --git a/build.sbt b/build.sbt index 4410438..35a6b5d 100644 --- a/build.sbt +++ b/build.sbt @@ -11,7 +11,7 @@ packageBin / mainClass := Some("webecho.Main") versionScheme := Some("semver-spec") -scalaVersion := "2.13.10" +scalaVersion := "2.13.12" scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8", "-feature") @@ -26,21 +26,21 @@ Test / testOptions += { lazy val versions = new { // client side dependencies - val swaggerui = "4.15.0" - val bootstrap = "5.2.2" - val jquery = "3.6.1" + val swaggerui = "4.19.1" + val bootstrap = "5.3.2" + val jquery = "3.7.1" // server side dependencies - val pureConfig = "0.17.1" - val akka = "2.6.20" - val akkaHttp = "10.2.10" - val akkaHttpJson4s = "1.39.2" + val pureConfig = "0.17.4" + val pekko = "1.0.1" + val pekkoHttp = "1.0.0" + val akkaHttpJson4s = "2.1.1" val json4s = "4.0.6" - val logback = "1.4.4" - val slf4j = "2.0.3" - val scalatest = "3.2.14" - val commonsio = "2.11.0" - val webjarsLocator = "0.45" + val logback = "1.4.11" + val slf4j = "2.0.9" + val scalatest = "3.2.17" + val commonsio = "2.15.0" + val webjarsLocator = "0.48" } // client side dependencies @@ -52,24 +52,24 @@ libraryDependencies ++= Seq( // server side dependencies libraryDependencies ++= Seq( - "com.github.pureconfig" %% "pureconfig" % versions.pureConfig, - "org.json4s" %% "json4s-jackson" % versions.json4s, - "org.json4s" %% "json4s-ext" % versions.json4s, - "com.typesafe.akka" %% "akka-actor-typed" % versions.akka, - "com.typesafe.akka" %% "akka-http" % versions.akkaHttp, - "com.typesafe.akka" %% "akka-http-caching" % versions.akkaHttp, - "com.typesafe.akka" %% "akka-stream" % versions.akka, - "com.typesafe.akka" %% "akka-stream-typed" % versions.akka, - "com.typesafe.akka" %% "akka-slf4j" % versions.akka, - "com.typesafe.akka" %% "akka-testkit" % versions.akka % Test, - "com.typesafe.akka" %% "akka-stream-testkit" % versions.akka % Test, - "com.typesafe.akka" %% "akka-http-testkit" % versions.akkaHttp % Test, - "de.heikoseeberger" %% "akka-http-json4s" % versions.akkaHttpJson4s, - "org.slf4j" % "slf4j-api" % versions.slf4j, - "ch.qos.logback" % "logback-classic" % versions.logback, - "commons-io" % "commons-io" % versions.commonsio, - "org.scalatest" %% "scalatest" % versions.scalatest % Test, - "org.webjars" % "webjars-locator" % versions.webjarsLocator + "com.github.pureconfig" %% "pureconfig" % versions.pureConfig, + "org.json4s" %% "json4s-jackson" % versions.json4s, + "org.json4s" %% "json4s-ext" % versions.json4s, + "org.apache.pekko" %% "pekko-actor-typed" % versions.pekko, + "org.apache.pekko" %% "pekko-http" % versions.pekkoHttp, + "org.apache.pekko" %% "pekko-http-caching" % versions.pekkoHttp, + "org.apache.pekko" %% "pekko-stream" % versions.pekko, + "org.apache.pekko" %% "pekko-stream-typed" % versions.pekko, + "org.apache.pekko" %% "pekko-slf4j" % versions.pekko, + "org.apache.pekko" %% "pekko-testkit" % versions.pekko % Test, + "org.apache.pekko" %% "pekko-stream-testkit" % versions.pekko % Test, + "org.apache.pekko" %% "pekko-http-testkit" % versions.pekkoHttp % Test, + "com.github.pjfanning" %% "pekko-http-json4s" % versions.akkaHttpJson4s, + "org.slf4j" % "slf4j-api" % versions.slf4j, + "ch.qos.logback" % "logback-classic" % versions.logback, + "commons-io" % "commons-io" % versions.commonsio, + "org.scalatest" %% "scalatest" % versions.scalatest % Test, + "org.webjars" % "webjars-locator" % versions.webjarsLocator ) enablePlugins(JavaServerAppPackaging) diff --git a/project/build.properties b/project/build.properties index 563a014..e8a1e24 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.7.2 +sbt.version=1.9.7 diff --git a/project/plugins.sbt b/project/plugins.sbt index 42356a9..22ce630 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,8 +1,8 @@ addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0") -addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.1.2") -addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.13") +addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.1") +addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.21") addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.3") -//addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.11") -addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.9") +addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.16") +//addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.9") //addSbtPlugin("com.typesafe.play" % "sbt-twirl" % "1.6.0-M7") -addSbtPlugin("com.typesafe.play" % "sbt-twirl" % "1.6.0-M6") +addSbtPlugin("com.typesafe.play" % "sbt-twirl" % "1.6.2") diff --git a/src/main/scala/webecho/Service.scala b/src/main/scala/webecho/Service.scala index e56d815..97e434c 100644 --- a/src/main/scala/webecho/Service.scala +++ b/src/main/scala/webecho/Service.scala @@ -15,9 +15,9 @@ */ package webecho -import akka.actor.ActorSystem -import akka.http.scaladsl._ -import akka.stream.ActorMaterializer +import org.apache.pekko.actor.ActorSystem +import org.apache.pekko.http.scaladsl._ +import org.apache.pekko.stream.ActorMaterializer import com.typesafe.config.ConfigFactory import org.slf4j.Logger @@ -35,7 +35,7 @@ case class Service(dependencies: ServiceDependencies, servicesRoutes: ServiceRou logger.info(s"$appCode service version $version is starting") val config = ConfigFactory.load() // akka specific config is accessible under the path named 'web-echo' - implicit val system: ActorSystem = akka.actor.ActorSystem(s"akka-http-$appCode-system", config.getConfig("web-echo")) + implicit val system: ActorSystem = org.apache.pekko.actor.ActorSystem(s"akka-http-$appCode-system", config.getConfig("web-echo")) implicit val executionContext: ExecutionContextExecutor = system.dispatcher val bindingFuture: Future[Http.ServerBinding] = Http().newServerAt(interface = interface, port = port).bindFlow(servicesRoutes.routes) diff --git a/src/main/scala/webecho/ServiceRoutes.scala b/src/main/scala/webecho/ServiceRoutes.scala index 57896f4..735f287 100644 --- a/src/main/scala/webecho/ServiceRoutes.scala +++ b/src/main/scala/webecho/ServiceRoutes.scala @@ -16,8 +16,8 @@ package webecho -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route +import org.apache.pekko.http.scaladsl.server.Directives._ +import org.apache.pekko.http.scaladsl.server.Route import webecho.routing.{AdminRouting, AssetsRouting, EchoRouting, HomeRouting, SwaggerRouting} /** Prepare (reduce & prefix) service routes diff --git a/src/main/scala/webecho/dependencies/websocketsbot/BasicWebSocketsBot.scala b/src/main/scala/webecho/dependencies/websocketsbot/BasicWebSocketsBot.scala index ef8f401..794587c 100644 --- a/src/main/scala/webecho/dependencies/websocketsbot/BasicWebSocketsBot.scala +++ b/src/main/scala/webecho/dependencies/websocketsbot/BasicWebSocketsBot.scala @@ -15,16 +15,16 @@ */ package webecho.dependencies.websocketsbot -import akka.Done -import akka.actor.typed.ActorRef -import akka.actor.typed.scaladsl.{ActorContext, Behaviors} -import akka.actor.typed.{ActorSystem, Behavior} -import akka.actor.typed.scaladsl.AskPattern._ -import akka.http.scaladsl.Http -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.model.ws.{BinaryMessage, Message, TextMessage, WebSocketRequest} -import akka.stream.scaladsl.{Keep, Sink, Source} -import akka.util.Timeout +import org.apache.pekko.Done +import org.apache.pekko.actor.typed.ActorRef +import org.apache.pekko.actor.typed.scaladsl.{ActorContext, Behaviors} +import org.apache.pekko.actor.typed.{ActorSystem, Behavior} +import org.apache.pekko.actor.typed.scaladsl.AskPattern._ +import org.apache.pekko.http.scaladsl.Http +import org.apache.pekko.http.scaladsl.model.StatusCodes +import org.apache.pekko.http.scaladsl.model.ws.{BinaryMessage, Message, TextMessage, WebSocketRequest} +import org.apache.pekko.stream.scaladsl.{Keep, Sink, Source} +import org.apache.pekko.util.Timeout import org.json4s.{Extraction, JField, JObject} import org.slf4j.LoggerFactory import webecho.ServiceConfig diff --git a/src/main/scala/webecho/routing/AdminRouting.scala b/src/main/scala/webecho/routing/AdminRouting.scala index e942bf2..d1e7cba 100644 --- a/src/main/scala/webecho/routing/AdminRouting.scala +++ b/src/main/scala/webecho/routing/AdminRouting.scala @@ -15,9 +15,9 @@ */ package webecho.routing -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route -import de.heikoseeberger.akkahttpjson4s.Json4sSupport._ +import org.apache.pekko.http.scaladsl.server.Directives._ +import org.apache.pekko.http.scaladsl.server.Route +import com.github.pjfanning.pekkohttpjson4s.Json4sSupport._ import webecho.ServiceDependencies case class Health(alive: Boolean = true, description: String = "alive") diff --git a/src/main/scala/webecho/routing/AssetsRouting.scala b/src/main/scala/webecho/routing/AssetsRouting.scala index 1dd35e5..f319ba1 100644 --- a/src/main/scala/webecho/routing/AssetsRouting.scala +++ b/src/main/scala/webecho/routing/AssetsRouting.scala @@ -15,9 +15,9 @@ */ package webecho.routing -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route -import akka.http.scaladsl.server.directives.ContentTypeResolver.Default +import org.apache.pekko.http.scaladsl.server.Directives._ +import org.apache.pekko.http.scaladsl.server.Route +import org.apache.pekko.http.scaladsl.server.directives.ContentTypeResolver.Default import org.webjars.WebJarAssetLocator import webecho.ServiceDependencies diff --git a/src/main/scala/webecho/routing/EchoRouting.scala b/src/main/scala/webecho/routing/EchoRouting.scala index 4afefd1..618f4cf 100644 --- a/src/main/scala/webecho/routing/EchoRouting.scala +++ b/src/main/scala/webecho/routing/EchoRouting.scala @@ -15,14 +15,14 @@ */ package webecho.routing -import akka.http.scaladsl.server.Directives.pathEndOrSingleSlash -import akka.http.scaladsl.model._ -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route -import akka.stream.scaladsl.Source +import org.apache.pekko.http.scaladsl.server.Directives.pathEndOrSingleSlash +import org.apache.pekko.http.scaladsl.model._ +import org.apache.pekko.http.scaladsl.server.Directives._ +import org.apache.pekko.http.scaladsl.server.Route +import org.apache.pekko.stream.scaladsl.Source import org.json4s.{Extraction, JField, JObject, JValue} import webecho.ServiceDependencies -import de.heikoseeberger.akkahttpjson4s.Json4sSupport._ +import com.github.pjfanning.pekkohttpjson4s.Json4sSupport._ import webecho.model.OperationOrigin import webecho.tools.{DateTimeTools, JsonImplicits} diff --git a/src/main/scala/webecho/routing/HomeRouting.scala b/src/main/scala/webecho/routing/HomeRouting.scala index 7a8cc67..7eb66ef 100644 --- a/src/main/scala/webecho/routing/HomeRouting.scala +++ b/src/main/scala/webecho/routing/HomeRouting.scala @@ -1,11 +1,11 @@ package webecho.routing -import akka.http.scaladsl.server.Route -import akka.http.scaladsl.server.Directives._ +import org.apache.pekko.http.scaladsl.server.Route +import org.apache.pekko.http.scaladsl.server.Directives._ +import org.apache.pekko.http.scaladsl.model.MediaTypes.`text/html` +import org.apache.pekko.http.scaladsl.model.HttpCharsets._ +import org.apache.pekko.http.scaladsl.model.{HttpEntity, HttpResponse} import webecho.ServiceDependencies -import akka.http.scaladsl.model.MediaTypes.`text/html` -import akka.http.scaladsl.model.HttpCharsets._ -import akka.http.scaladsl.model.{HttpEntity, HttpResponse} import webecho.model.EchoesInfo import webecho.templates.html.HomeTemplate diff --git a/src/main/scala/webecho/routing/Routing.scala b/src/main/scala/webecho/routing/Routing.scala index 1815edb..ceb68d5 100644 --- a/src/main/scala/webecho/routing/Routing.scala +++ b/src/main/scala/webecho/routing/Routing.scala @@ -15,10 +15,10 @@ */ package webecho.routing -import akka.http.scaladsl.model.HttpHeader -import akka.http.scaladsl.model.headers.CacheDirectives.{`max-age`, `must-revalidate`, `no-cache`, `no-store`, `proxy-revalidate`} -import akka.http.scaladsl.model.headers.`Cache-Control` -import akka.http.scaladsl.server.Route +import org.apache.pekko.http.scaladsl.model.HttpHeader +import org.apache.pekko.http.scaladsl.model.headers.CacheDirectives.{`max-age`, `must-revalidate`, `no-cache`, `no-store`, `proxy-revalidate`} +import org.apache.pekko.http.scaladsl.model.headers.`Cache-Control` +import org.apache.pekko.http.scaladsl.server.Route import webecho.tools.JsonImplicits trait Routing extends JsonImplicits { diff --git a/src/main/scala/webecho/routing/SwaggerRouting.scala b/src/main/scala/webecho/routing/SwaggerRouting.scala index ddfb8f3..964288e 100644 --- a/src/main/scala/webecho/routing/SwaggerRouting.scala +++ b/src/main/scala/webecho/routing/SwaggerRouting.scala @@ -15,11 +15,11 @@ */ package webecho.routing -import akka.http.scaladsl.model.MediaTypes.{`application/json`, `text/html`} -import akka.http.scaladsl.model.HttpCharsets._ -import akka.http.scaladsl.model.{HttpEntity, HttpResponse} -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route +import org.apache.pekko.http.scaladsl.model.MediaTypes.{`application/json`, `text/html`} +import org.apache.pekko.http.scaladsl.model.HttpCharsets._ +import org.apache.pekko.http.scaladsl.model.{HttpEntity, HttpResponse} +import org.apache.pekko.http.scaladsl.server.Directives._ +import org.apache.pekko.http.scaladsl.server.Route import webecho.ServiceDependencies import webecho.templates.html.SwaggerUI import webecho.templates.txt.SwaggerJson diff --git a/src/test/scala/webecho/ServiceTest.scala b/src/test/scala/webecho/ServiceTest.scala index 468c066..e920895 100644 --- a/src/test/scala/webecho/ServiceTest.scala +++ b/src/test/scala/webecho/ServiceTest.scala @@ -15,7 +15,7 @@ */ package webecho -import akka.http.scaladsl.testkit.ScalatestRouteTest +import org.apache.pekko.http.scaladsl.testkit.ScalatestRouteTest import org.scalatest.matchers._ import org.scalatest.wordspec._ import webecho.routing.Health @@ -29,7 +29,7 @@ class ServiceTest extends AnyWordSpec with should.Matchers with ScalatestRouteTe "Web Echo Service" should { "Respond OK when pinged" in { Get("/health") ~> routes ~> check { - import de.heikoseeberger.akkahttpjson4s.Json4sSupport._ + import com.github.pjfanning.pekkohttpjson4s.Json4sSupport._ responseAs[Health] shouldBe Health(true, "alive") } }