diff --git a/build.sbt b/build.sbt index 3bf8c58d3e..3ff779ff8b 100644 --- a/build.sbt +++ b/build.sbt @@ -262,9 +262,9 @@ lazy val webapi: Project = Project(id = "webapi", base = file("webapi")) buildInfoKeys ++= Seq[BuildInfoKey]( name, version, - "akkaHttp" -> Dependencies.AkkaHttpVersion, - "sipi" -> Dependencies.sipiImage, - "fuseki" -> Dependencies.fusekiImage + "sipi" -> Dependencies.sipiImage, + "fuseki" -> Dependencies.fusekiImage, + "pekkoHttp" -> Dependencies.pekkoHttp ), buildInfoPackage := "org.knora.webapi.http.version" ) @@ -299,7 +299,7 @@ lazy val integration: Project = Project(id = "integration", base = file("integra Test / fork := true, // run tests in a forked JVM Test / testForkedParallel := false, Test / parallelExecution := false, - Test / javaOptions += "-Dkey=" + sys.props.getOrElse("key", "akka"), + Test / javaOptions += "-Dkey=" + sys.props.getOrElse("key", "pekko"), Test / testOptions += Tests.Argument("-oDF"), // show full stack traces and test case durations libraryDependencies ++= Dependencies.webapiDependencies ++ Dependencies.webapiTestDependencies ++ Dependencies.integrationTestDependencies ) diff --git a/docs/03-endpoints/api-util/version.md b/docs/03-endpoints/api-util/version.md index d311439cf3..ae0a3b289d 100644 --- a/docs/03-endpoints/api-util/version.md +++ b/docs/03-endpoints/api-util/version.md @@ -11,7 +11,7 @@ The response has the type `application/json` and contains the following informat 1. name: has the value "version" 2. version numbers for the following components: - - akkaHttp + - pekkoHttp - gdbFree - gdbSE - sbt @@ -29,7 +29,7 @@ The response has the type `application/json` and contains the following informat ```json { - "akkaHttp": "10.1.7", + "pekkoHttp": "10.1.7", "gdbFree": "8.10.0-free", "gdbSE": "8.5.0-se", "name": "version", diff --git a/docs/03-endpoints/instrumentation/metrics.md b/docs/03-endpoints/instrumentation/metrics.md index 275cc97a11..6206d79933 100644 --- a/docs/03-endpoints/instrumentation/metrics.md +++ b/docs/03-endpoints/instrumentation/metrics.md @@ -42,7 +42,7 @@ zio_fiber_lifetimes_bucket{le="2.0"} 17.0 1671021037947 Metrics of all routes served by ZIO-HTTP (default: port `5555`) are exposed through a default metrics middleware. However, instead of `http_concurrent_requests_total` etc. they are labeled `zio_http_concurrent_requests_total` etc. -with `zio` prepended, so that they are clearly distinguishable while we still run ZIO-HTTP and Akka-HTTP in parallel. +with `zio` prepended, so that they are clearly distinguishable while we still run ZIO-HTTP and Pekko-HTTP in parallel. To prevent excessive amounts of labels, it is considered good practice, to replace dynamic path segments with slugs (e.g. `/projects/shortcode/0000` with `/projects/shortcode/:shortcode`). diff --git a/docs/04-publishing-deployment/configuration.md b/docs/04-publishing-deployment/configuration.md index 3a87954e83..064d2ef985 100644 --- a/docs/04-publishing-deployment/configuration.md +++ b/docs/04-publishing-deployment/configuration.md @@ -6,26 +6,26 @@ # Configuration All configuration for Knora is done in `application.conf`. Besides the Knora application -specific configuration, there we can also find configuration for the underlying Akka library. +specific configuration, there we can also find configuration for the underlying Pekko library. For optimal performance it is important to tune the configuration to the hardware used, mainly to the number of CPUs and cores per CPU. The relevant sections for tuning are: - - `akka.actor.deployment` - - `knora-actor-dispatcher` - - `knora-blocking-dispatcher` +- `pekko.actor.deployment` +- `knora-actor-dispatcher` +- `knora-blocking-dispatcher` ## System Environment Variables - + A number of core settings is additionally configurable through system environment variables. These are: - + | key in application.conf | environment variable | default value | |----------------------------------------|-------------------------------------------------|-----------------------| -| akka.log-config-on-start | KNORA_AKKA_LOG_CONFIG_ON_START | off | -| akka.loglevel | KNORA_AKKA_LOGLEVEL | INFO | -| akka.stdout-loglevel | KNORA_AKKA_STDOUT_LOGLEVEL | INFO | +| pekko.log-config-on-start | KNORA_AKKA_LOG_CONFIG_ON_START | off | +| pekko.loglevel | KNORA_AKKA_LOGLEVEL | INFO | +| pekko.stdout-loglevel | KNORA_AKKA_STDOUT_LOGLEVEL | INFO | | app.print-extended-config | KNORA_WEBAPI_PRINT_EXTENDED_CONFIG | false | | app.bcrypt-password-strength | KNORA_WEBAPI_BCRYPT_PASSWORD_STRENGTH | 12 | | app.jwt.secret | KNORA_WEBAPI_JWT_SECRET_KEY | super-secret-key | @@ -74,8 +74,8 @@ route which contains this string. There is a number of flags that can be set on startup, they will override any value set in the application configuration file: - - `loadDemoData`, `--loadDemoData`, `-d`: Loads the demo data. - - `allowReloadOverHTTP`, `--allow-reload-over-http`, `-r`: Allows - reloading of data over HTTP. - - `-c`: Print the configuration at startup. - - `--help`: Shows the help message with all startup flags. +- `loadDemoData`, `--loadDemoData`, `-d`: Loads the demo data. +- `allowReloadOverHTTP`, `--allow-reload-over-http`, `-r`: Allows + reloading of data over HTTP. +- `-c`: Print the configuration at startup. +- `--help`: Shows the help message with all startup flags. diff --git a/docs/05-internals/design/adr/ADR-0008-replace-akka-with-pekko.md b/docs/05-internals/design/adr/ADR-0008-replace-akka-with-pekko.md new file mode 100644 index 0000000000..a5e1bc60a5 --- /dev/null +++ b/docs/05-internals/design/adr/ADR-0008-replace-akka-with-pekko.md @@ -0,0 +1,38 @@ +# ADR-0006 Replace Akka with Pekko + + +## Status + +Accepted + +# Context + +On 7. September 2022 Lightbend announced a [license change](https://www.lightbend.com/blog/why-we-are-changing-the-license-for-akka) for the Akka project, the TL;DR being that you will need a commercial license to use future versions of Akka (2.7+) in production if you exceed a certain revenue threshold. + +*For now*, we have staid on Akka 2.6, the current latest version that is still available under the original license. Historically Akka has been incredibly stable, and combined with our +limited use of features, we did not expect this to be a problem. + +However, the [last update of Akka 2.6 is announced to be in September 2023](https://www.lightbend.com/akka/license-faq). + +> **Will critical vulnerabilities and bugs be patched in 2.6.x?** +> Yes, critical security updates and critical bugs will be patched in Akka v2.6.x under the current Apache 2 license until September of 2023. + +As a result, we will not receive further updates and we will never get support for Scala 3 for Akka. + +# Proposal + +[Apache Pekko](https://pekko.apache.org/) is based on the latest version of Akka in the v2.6.x series. It is currently an incubator project in the ASF. [All Akka modules currently in use in the dsp-api are already released and ported to pekko](https://pekko.apache.org/modules.html): [https://mvnrepository.com/artifact/org.apache.pekko](https://mvnrepository.com/artifact/org.apache.pekko) + +The latest stable version [1.0.1](https://pekko.apache.org/docs/pekko/current/release-notes/index.html#1-0-1) is compatible with Akka v2.6.x series and meant to be a plug in replacement. + +Scala 3.3.0 is the minimum Scala 3 version supported. Scala 2.12 and 2.13 are still supported. + +The migration guide: [https://pekko.apache.org/docs/pekko/current/project/migration-guides.html](https://pekko.apache.org/docs/pekko/current/project/migration-guides.html) + +Our current migration to another http server implementation is on currently on hold but we might want to switch to Pekko so that we could receive security updates and bugfixes. + +The proof of concept implementation has been shared in the pull request [here](https://github.com/dasch-swiss/dsp-api/pull/2848), allowing for further testing and validation of the proposed switch to Pekko. + +# Decision + +We replace Akka and Akka/Http with Apache Pekko. diff --git a/docs/05-internals/design/api-v1/how-to-add-a-route.md b/docs/05-internals/design/api-v1/how-to-add-a-route.md deleted file mode 100644 index 8cfe5e741e..0000000000 --- a/docs/05-internals/design/api-v1/how-to-add-a-route.md +++ /dev/null @@ -1,53 +0,0 @@ - - -# How to Add an API v1 Route - -## Write SPARQL templates - -Add any SPARQL templates you need to `src/main/twirl/queries/sparql/v1`, -using the [Twirl](https://github.com/playframework/twirl) template -engine. - -## Write Responder Request and Response Messages - -Add a file to the `org.knora.webapi.messages.v2.responder` -package, containing case classes for your responder's request and -response messages. Add a trait that the responder's request messages -extend. Each request message type should contain a `UserADM`. - -Response message classes that represent a complete API response must -extend `KnoraResponseV1`, and must therefore have a `toJsValue` method -that converts the response message to a JSON AST using -[spray-json](https://github.com/spray/spray-json). - -## Write a Responder - -Write a class that extends `org.knora.webapi.responders.Responder`, -and add it to the `org.knora.webapi.responders.v1` package. - -Give your responder a `receive(msg: YourCustomType)` method that handles each of your -request message types by generating a `Future` containing a response message. - -Add the path of your responder to the `org.knora.webapi.responders` package object, -and add code to `ResponderManager` to instantiate an object for your responder class. -Then add a `case` to the `receive` method in `ResponderManager`, to match -messages that extend your request message trait, and pass them to the responder's -receive method. The responder's resulting `Future` must be passed to the `ActorUtil.future2Message`. -See [Futures with Akka](../principles/futures-with-akka.md) and -[Error Handling](../principles/design-overview.md#error-handling) for details. - -## Write a Route - -Add a class to the `org.knora.webapi.routing.v1` package for your -route, using the Akka HTTP [Routing DSL](https://doc.akka.io/docs/akka-http/current/routing-dsl/index.html). -See the routes in that package for examples. Typically, each route -route will construct a responder request message and pass it to -`RouteUtilV1.runRdfRouteWithFuture` to handle the request. - -Finally, add your `knoraApiPath` function to the `apiRoutes` member -variable in `KnoraService`. Any exception thrown inside the route will -be handled by the `KnoraExceptionHandler`, so that the correct client -response (including the HTTP status code) will be returned. diff --git a/docs/05-internals/design/api-v1/json.md b/docs/05-internals/design/api-v1/json.md deleted file mode 100644 index d73b876a6e..0000000000 --- a/docs/05-internals/design/api-v1/json.md +++ /dev/null @@ -1,30 +0,0 @@ - - -### JSON in API v1 - -DSP-API v1 parses and generates JSON using the -[spray-json](https://github.com/spray/spray-json) library. - -The triplestore returns results in JSON, and these are parsed into -`SparqlSelectResponse` objects in the `store` package (by `SparqlUtils`, -which can be used by any actor in that package). A -`SparqlSelectResponse` has a structure that's very close to the JSON -returned by a triplestore via the [SPARQL 1.1 -Protocol](http://www.w3.org/TR/sparql11-protocol/): it contains a header -(listing the variables that were used in the query) and a body -(containing rows of query results). Each row of query results is -represented by a `VariableResultsRow`, which contains a `Map[String, -String]` of variable names to values. - -The `Jsonable` trait marks classes that can convert themselves into -spray-json AST objects when you call their `toJsValue` method; it -returns a `JsValue` object, which can then be converted to text by -calling its `prettyPrint` or `compactPrint` methods. Case classes -representing complete API responses extend the `KnoraResponseV1` trait, -which extends `Jsonable`. Case classes representing Knora values extend -the `ApiValueV1` trait, which also extends `Jsonable`. To make the -responders reusable, the JSON for API responses is generated only at the -last moment, by the `RouteUtilV1.runJsonRoute()` function. diff --git a/docs/05-internals/design/api-v2/how-to-add-a-route.md b/docs/05-internals/design/api-v2/how-to-add-a-route.md index b5e665d13b..97d695cd01 100644 --- a/docs/05-internals/design/api-v2/how-to-add-a-route.md +++ b/docs/05-internals/design/api-v2/how-to-add-a-route.md @@ -25,7 +25,7 @@ request messages should extend a responder-specific trait, so that ## Write a Responder -Write an Akka actor class that extends `org.knora.webapi.responders.Responder`, +Write a Pekko actor class that extends `org.knora.webapi.responders.Responder`, and add it to the `org.knora.webapi.responders.v2` package. Give your responder a `receive(msg: YourCustomType)` method that handles each of your @@ -36,13 +36,13 @@ and add code to `ResponderManager` to instantiate the new responder. Then add a the `receive` method in `ResponderManager`, to match messages that extend your request message trait, and pass them them to that responder's receive method. The responder's resulting `Future` must be passed to the `ActorUtil.future2Message`. -See [Futures with Akka](../principles/futures-with-akka.md) and +See [Futures with Pekko](../principles/futures-with-pekko.md) and [Error Handling](../principles/design-overview.md#error-handling) for details. ## Write a Route Add a class to the `org.knora.webapi.routing.v2` package for your -route, using the Akka HTTP [Routing DSL](https://doc.akka.io/docs/akka-http/current/routing-dsl/index.html). +route, using the Pekko HTTP [Routing DSL](https://pekko.apache.org/docs/pekko-http/current/routing-dsl/index.html). See the routes in that package for examples. Typically, each route route will construct a responder request message and pass it to `RouteUtilV2.runRdfRouteWithFuture` to handle the request. diff --git a/docs/05-internals/design/principles/design-overview.md b/docs/05-internals/design/principles/design-overview.md index 941ee616bd..721419ba91 100644 --- a/docs/05-internals/design/principles/design-overview.md +++ b/docs/05-internals/design/principles/design-overview.md @@ -45,7 +45,7 @@ The error-handling design has these aims: 4. Ensure that `ask` requests are properly terminated with an `akka.actor.Status.Failure` message in the event of an error, without which they will simply time out (see - [Ask: Send and Receive Future](https://doc.akka.io/docs/akka/current/actors.html?language=scala#ask-send-and-receive-future)). + [Ask: Send and Receive Future](https://pekko.apache.org/docs/pekko/current/actors.html?language=scala#ask-send-and-receive-future)). 5. When a actor encounters an error that isn't the client's fault (e.g. a triplestore failure), log it, but don't do this with errors caused by bad input. @@ -92,20 +92,20 @@ If you want to add a new exception class, see the comments in ### Transformation of Exception to Client Responses The `org.knora.webapi.KnoraExceptionHandler` is brought implicitly into -scope of `akka-http`, and by doing so registered and used to handle the +scope of `pekko-http`, and by doing so registered and used to handle the transformation of all `KnoraExceptions` into `HttpResponses`. This handler handles only exceptions thrown inside the route and not the actors. However, the design of reply message passing from actors (by using `future2Message`), makes sure that any exceptions thrown inside actors, will reach the route, where they will be handled. -See also [Futures with Akka](futures-with-akka.md). +See also [Futures with Akka](futures-with-pekko.md). ## API Routing The API routes in the `routing` package are defined using the DSL provided by the -[akka-http](https://doc.akka.io/docs/akka-http/current/index.html) +[pekko-http](https://pekko.apache.org/docs/pekko-http/current/index.html) library. A routing function has to do the following: 1. Authenticate the client. @@ -137,6 +137,6 @@ in the appropriate format, and handles any errors. Logging in DSP-API is configurable through `logback.xml`, allowing fine grain configuration of what classes / objects should be logged from which level. -The Akka Actors use [Akka Logging](https://doc.akka.io/docs/akka/current/logging.html) +The Akka Actors use [Akka Logging](https://pekko.apache.org/docs/pekko/current/logging.html) while logging inside plain Scala Objects and Classes is done through [Scala Logging](https://github.com/lightbend/scala-logging). diff --git a/docs/05-internals/design/principles/futures-with-akka.md b/docs/05-internals/design/principles/futures-with-pekko.md similarity index 95% rename from docs/05-internals/design/principles/futures-with-akka.md rename to docs/05-internals/design/principles/futures-with-pekko.md index b6c8ef1336..9def2a6169 100644 --- a/docs/05-internals/design/principles/futures-with-akka.md +++ b/docs/05-internals/design/principles/futures-with-pekko.md @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 --> -# Futures with Akka +# Futures with Pekko ## Introduction @@ -22,14 +22,14 @@ introduces them in this way: The rest of that page is well worth reading to get an overview of how futures work and what you can do with them. -In [Akka](http://akka.io/), one of the standard patterns for -communication between actors is the [ask pattern](https://doc.akka.io/docs/akka/current/actors.html?language=scala#ask-send-and-receive-future), +In [Pekko](http://pekko.apache.org/), one of the standard patterns for +communication between actors is the [ask pattern](https://pekko.apache.org/docs/pekko/current/actors.html?language=scala#ask-send-and-receive-future), in which you send a message to an actor and you expect a reply. When you call the `ask` function (which can be written as a question mark, `?`, which acts as an infix operator), it immediately returns a `Future`, -which will complete when the reply is sent. As the Akka documentation +which will complete when the reply is sent. As the Pekko documentation explains in [Use with -Actors](https://doc.akka.io/docs/akka/snapshot/futures.html?language=scala#Use_With_Actors), +Actors](https://pekko.apache.org/docs/pekko/snapshot/futures.html?language=scala#Use_With_Actors), it is possible to block the calling thread until the future completes, using `Await.result`. However, they say: 'Blocking is discouraged though as it will cause performance problems.' In particular, by not blocking, @@ -182,7 +182,7 @@ for a future to complete. The normal flow of control works like this: 1. Incoming HTTP requests are handled by an actor called `KnoraService`, which delegates them to routing functions (in the `routing` package). -2. For each request, a routing function gets an Akka HTTP +2. For each request, a routing function gets an Pekko HTTP `RequestContext`, and calls `RouteUtilV1.runJsonRoute` (in API v1) or `RouteUtilV2.runRdfRouteWithFuture` (in API v2) to send a message to a supervisor actor to fulfil the request. This creates diff --git a/docs/05-internals/design/principles/http-module.md b/docs/05-internals/design/principles/http-module.md index 403cb1ed94..357b300a88 100644 --- a/docs/05-internals/design/principles/http-module.md +++ b/docs/05-internals/design/principles/http-module.md @@ -7,5 +7,5 @@ The http module holds only a convenience method for adding CORS support to api routes. The CORS implementation uses the -[akka-http-cors](https://github.com/lomigmegard/akka-http-cors) +[pekko-http-cors](https://github.com/lomigmegard/pekko-http-cors) directives implementation. diff --git a/docs/05-internals/development/third-party.md b/docs/05-internals/development/third-party.md index e124265ba7..6d28d62ff8 100644 --- a/docs/05-internals/development/third-party.md +++ b/docs/05-internals/development/third-party.md @@ -12,7 +12,7 @@ All third party dependencies need to be declared there. There is an object `Dependencies` where each library should be declared in a `val`. ```scala -val akkaHttpCors = "ch.megard" %% "akka-http-cors" % "1.0.0" +val akkaHttpCors = "ch.megard" %% "pekko-http-cors" % "1.0.0" ``` The first string corresponds to the group/organization in the library's maven artefact, diff --git a/integration/src/test/scala/org/knora/webapi/CoreSpec.scala b/integration/src/test/scala/org/knora/webapi/CoreSpec.scala index aefc2a9adb..b984e8ab63 100644 --- a/integration/src/test/scala/org/knora/webapi/CoreSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/CoreSpec.scala @@ -5,10 +5,8 @@ package org.knora.webapi -import akka.actor -import akka.testkit.ImplicitSender -import akka.testkit.TestKitBase import com.typesafe.scalalogging.Logger +import org.apache.pekko import org.scalatest.BeforeAndAfterAll import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpec @@ -27,6 +25,10 @@ import org.knora.webapi.messages.store.triplestoremessages.RdfDataObject import org.knora.webapi.routing.UnsafeZioRun import org.knora.webapi.util.LogAspect +import pekko.actor +import pekko.testkit.ImplicitSender +import pekko.testkit.TestKitBase + abstract class CoreSpec extends AnyWordSpec with TestKitBase diff --git a/integration/src/test/scala/org/knora/webapi/E2ESpec.scala b/integration/src/test/scala/org/knora/webapi/E2ESpec.scala index 6a43fe9e5f..0f0e64bf18 100644 --- a/integration/src/test/scala/org/knora/webapi/E2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/E2ESpec.scala @@ -5,10 +5,8 @@ package org.knora.webapi -import akka.http.scaladsl.client.RequestBuilding -import akka.http.scaladsl.model._ -import akka.testkit.TestKitBase import com.typesafe.scalalogging._ +import org.apache.pekko import org.scalatest.BeforeAndAfterAll import org.scalatest.concurrent.ScalaFutures import org.scalatest.matchers.should.Matchers @@ -41,6 +39,10 @@ import org.knora.webapi.testservices.TestClientService import org.knora.webapi.util.FileUtil import org.knora.webapi.util.LogAspect +import pekko.http.scaladsl.client.RequestBuilding +import pekko.http.scaladsl.model._ +import pekko.testkit.TestKitBase + /** * This class can be used in End-to-End testing. It starts the DSP stack * and provides access to settings and logging. @@ -96,7 +98,7 @@ abstract class E2ESpec .getOrThrowFiberFailure() } - implicit lazy val system: akka.actor.ActorSystem = router.system + implicit lazy val system: pekko.actor.ActorSystem = router.system implicit lazy val executionContext: ExecutionContext = system.dispatcher lazy val rdfDataObjects = List.empty[RdfDataObject] val log: Logger = Logger(this.getClass()) diff --git a/integration/src/test/scala/org/knora/webapi/ITKnoraLiveSpec.scala b/integration/src/test/scala/org/knora/webapi/ITKnoraLiveSpec.scala index aca06186e8..3a9d9bab44 100644 --- a/integration/src/test/scala/org/knora/webapi/ITKnoraLiveSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/ITKnoraLiveSpec.scala @@ -5,11 +5,9 @@ package org.knora.webapi -import akka.http.scaladsl.client.RequestBuilding -import akka.http.scaladsl.model._ -import akka.testkit.TestKitBase import com.typesafe.scalalogging.LazyLogging import com.typesafe.scalalogging.Logger +import org.apache.pekko import org.scalatest.BeforeAndAfterAll import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpec @@ -37,6 +35,10 @@ import org.knora.webapi.testservices.FileToUpload import org.knora.webapi.testservices.TestClientService import org.knora.webapi.util.LogAspect +import pekko.http.scaladsl.client.RequestBuilding +import pekko.http.scaladsl.model._ +import pekko.testkit.TestKitBase + /** * This class can be used in End-to-End testing. It starts the DSP stack and * provides access to configuration and logging. @@ -86,7 +88,7 @@ abstract class ITKnoraLiveSpec val (router: AppRouter, config: AppConfig) = Unsafe.unsafe(implicit u => runtime.unsafe.run(routerAndConfig).getOrThrowFiberFailure()) - implicit lazy val system: akka.actor.ActorSystem = router.system + implicit lazy val system: pekko.actor.ActorSystem = router.system implicit lazy val executionContext: ExecutionContext = system.dispatcher lazy val rdfDataObjects = List.empty[RdfDataObject] val log: Logger = Logger(this.getClass()) diff --git a/integration/src/test/scala/org/knora/webapi/R2RSpec.scala b/integration/src/test/scala/org/knora/webapi/R2RSpec.scala index 532f46383c..f415b3a07c 100644 --- a/integration/src/test/scala/org/knora/webapi/R2RSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/R2RSpec.scala @@ -5,12 +5,8 @@ package org.knora.webapi -import akka.actor.ActorRef -import akka.actor.ActorSystem -import akka.http.scaladsl.model.HttpResponse -import akka.http.scaladsl.testkit.RouteTestTimeout -import akka.http.scaladsl.testkit.ScalatestRouteTest import com.typesafe.scalalogging.Logger +import org.apache.pekko import org.scalatest.BeforeAndAfterAll import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpec @@ -36,6 +32,12 @@ import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.util.FileUtil import org.knora.webapi.util.LogAspect +import pekko.actor.ActorRef +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model.HttpResponse +import pekko.http.scaladsl.testkit.RouteTestTimeout +import pekko.http.scaladsl.testkit.ScalatestRouteTest + /** * R(oute)2R(esponder) Spec base class. Please, for any new E2E tests, use E2ESpec. */ diff --git a/integration/src/test/scala/org/knora/webapi/core/ActorSystemTest.scala b/integration/src/test/scala/org/knora/webapi/core/ActorSystemTest.scala index 88c99d7b85..0043c66cd2 100644 --- a/integration/src/test/scala/org/knora/webapi/core/ActorSystemTest.scala +++ b/integration/src/test/scala/org/knora/webapi/core/ActorSystemTest.scala @@ -5,6 +5,7 @@ package org.knora.webapi.core +import org.apache.pekko import zio._ import org.knora.webapi.config.AppConfig @@ -12,13 +13,13 @@ import org.knora.webapi.store.cache.settings.CacheServiceSettings object ActorSystemTest { - def layer(sys: akka.actor.ActorSystem): ZLayer[AppConfig, Nothing, ActorSystem] = + def layer(sys: pekko.actor.ActorSystem): ZLayer[AppConfig, Nothing, ActorSystem] = ZLayer.scoped { for { appConfig <- ZIO.service[AppConfig] context <- ZIO.executor.map(_.asExecutionContext) } yield new ActorSystem { - override val system: akka.actor.ActorSystem = sys + override val system: pekko.actor.ActorSystem = sys override val cacheServiceSettings: CacheServiceSettings = new CacheServiceSettings(appConfig) } } diff --git a/integration/src/test/scala/org/knora/webapi/core/LayersTest.scala b/integration/src/test/scala/org/knora/webapi/core/LayersTest.scala index 71b668ad95..08be722319 100644 --- a/integration/src/test/scala/org/knora/webapi/core/LayersTest.scala +++ b/integration/src/test/scala/org/knora/webapi/core/LayersTest.scala @@ -5,6 +5,7 @@ package org.knora.webapi.core +import org.apache.pekko import zio._ import org.knora.webapi.config.AppConfig.AppConfigurations @@ -220,11 +221,11 @@ object LayersTest { /** * Provides a layer for integration tests which depend on Fuseki as Testcontainers. * Sipi/IIIFService will be mocked with the [[IIIFServiceMockImpl]] - * @param system An optional [[akka.actor.ActorSystem]] for use with Akka's [[akka.testkit.TestKit]] + * @param system An optional [[pekko.actor.ActorSystem]] for use with Akka's [[pekko.testkit.TestKit]] * @return a [[ULayer]] with the [[DefaultTestEnvironmentWithoutSipi]] */ def integrationTestsWithFusekiTestcontainers( - system: Option[akka.actor.ActorSystem] = None + system: Option[pekko.actor.ActorSystem] = None ): ULayer[DefaultTestEnvironmentWithoutSipi] = { // Due to bug in Scala 2 compiler invoking methods with by-name parameters in provide/provideSome method does not work // assign the layer to a temp val and use it in the ZLayer.make diff --git a/integration/src/test/scala/org/knora/webapi/e2e/CORSSupportE2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/CORSSupportE2ESpec.scala index e007e45399..04c7feadb6 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/CORSSupportE2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/CORSSupportE2ESpec.scala @@ -5,12 +5,7 @@ package org.knora.webapi.e2e -import akka.actor.ActorSystem -import akka.http.scaladsl.model.HttpMethods._ -import akka.http.scaladsl.model.HttpResponse -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.model.headers._ -import akka.http.scaladsl.testkit.RouteTestTimeout +import org.apache.pekko import scala.concurrent.duration.FiniteDuration import scala.concurrent.duration.NANOSECONDS @@ -18,6 +13,13 @@ import scala.concurrent.duration.NANOSECONDS import org.knora.webapi.E2ESpec import org.knora.webapi.messages.store.triplestoremessages.RdfDataObject +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model.HttpMethods._ +import pekko.http.scaladsl.model.HttpResponse +import pekko.http.scaladsl.model.StatusCodes +import pekko.http.scaladsl.model.headers._ +import pekko.http.scaladsl.testkit.RouteTestTimeout + /** * End-to-end test specification for testing [[CORSSupport]]. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/ExceptionHandlerR2RSpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/ExceptionHandlerR2RSpec.scala index b4145a9e9c..798a5c2817 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/ExceptionHandlerR2RSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/ExceptionHandlerR2RSpec.scala @@ -5,14 +5,16 @@ package org.knora.webapi.e2e -import akka.http.scaladsl.model._ -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route +import org.apache.pekko import dsp.errors._ import org.knora.webapi._ import org.knora.webapi.http.handler +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.Route + /** * Route (R2R) test specification for testing exception handling. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/HealthRouteE2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/HealthRouteE2ESpec.scala index 05e37a1620..cde6285cbc 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/HealthRouteE2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/HealthRouteE2ESpec.scala @@ -5,9 +5,7 @@ package org.knora.webapi.e2e -import akka.actor.ActorSystem -import akka.http.scaladsl.model._ -import akka.http.scaladsl.testkit.RouteTestTimeout +import org.apache.pekko import zio.Unsafe import zio.ZIO @@ -18,6 +16,10 @@ import org.knora.webapi.E2ESpec import org.knora.webapi.core.State import org.knora.webapi.core.domain.AppState +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.testkit.RouteTestTimeout + /** * End-to-End (E2E) test specification for testing route rejections. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/InstanceCheckerSpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/InstanceCheckerSpec.scala index 994ddea2d9..c243d5f2ef 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/InstanceCheckerSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/InstanceCheckerSpec.scala @@ -5,8 +5,7 @@ package org.knora.webapi.e2e -import akka.actor.ActorSystem -import akka.http.scaladsl.testkit.RouteTestTimeout +import org.apache.pekko import java.nio.file.Paths import scala.concurrent.duration.FiniteDuration @@ -18,6 +17,9 @@ import org.knora.webapi.messages.IriConversions._ import org.knora.webapi.messages.StringFormatter import org.knora.webapi.util.FileUtil +import pekko.actor.ActorSystem +import pekko.http.scaladsl.testkit.RouteTestTimeout + /** * Tests [[InstanceChecker]]. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/RejectingRouteE2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/RejectingRouteE2ESpec.scala index e7a7346328..110b8ba92d 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/RejectingRouteE2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/RejectingRouteE2ESpec.scala @@ -5,10 +5,12 @@ package org.knora.webapi.e2e -import akka.http.scaladsl.model._ +import org.apache.pekko import org.knora.webapi.E2ESpec +import pekko.http.scaladsl.model._ + /** * End-to-End (E2E) test specification for testing route rejections. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/FilesADME2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/FilesADME2ESpec.scala index d7306fa03f..a07d347d8f 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/FilesADME2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/FilesADME2ESpec.scala @@ -5,8 +5,7 @@ package org.knora.webapi.e2e.admin -import akka.http.scaladsl.model._ -import akka.http.scaladsl.unmarshalling.Unmarshal +import org.apache.pekko import scala.concurrent.Await import scala.concurrent.duration._ @@ -20,6 +19,9 @@ import org.knora.webapi.routing.Authenticator import org.knora.webapi.routing.UnsafeZioRun import org.knora.webapi.sharedtestdata.SharedTestDataADM2 +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.unmarshalling.Unmarshal + /** * End-to-End (E2E) test specification for Sipi access. * diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/GroupsADME2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/GroupsADME2ESpec.scala index 68e6c85314..1882cd6bef 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/GroupsADME2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/GroupsADME2ESpec.scala @@ -5,11 +5,7 @@ package org.knora.webapi.e2e.admin -import akka.actor.ActorSystem -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers._ -import akka.http.scaladsl.testkit.RouteTestTimeout -import akka.http.scaladsl.unmarshalling.Unmarshal +import org.apache.pekko import scala.concurrent.Await import scala.concurrent.duration._ @@ -25,6 +21,12 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.AkkaHttpUtils import org.knora.webapi.util.MutableTestIri +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers._ +import pekko.http.scaladsl.testkit.RouteTestTimeout +import pekko.http.scaladsl.unmarshalling.Unmarshal + /** * End-to-End (E2E) test specification for testing groups endpoint. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/PermissionsADME2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/PermissionsADME2ESpec.scala index 94c932f435..61c36e7964 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/PermissionsADME2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/PermissionsADME2ESpec.scala @@ -5,8 +5,7 @@ package org.knora.webapi.e2e.admin -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers.BasicHttpCredentials +import org.apache.pekko import spray.json._ import zio.durationInt @@ -21,6 +20,9 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.sharedtestdata.SharedTestDataADM2 import org.knora.webapi.util.AkkaHttpUtils +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers.BasicHttpCredentials + /** * End-to-End (E2E) test specification for testing the 'v1/permissions' route. * diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/ProjectsADME2EZioHttpSpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/ProjectsADME2EZioHttpSpec.scala index 784cf88823..ad0487bf4f 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/ProjectsADME2EZioHttpSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/ProjectsADME2EZioHttpSpec.scala @@ -5,13 +5,7 @@ package org.knora.webapi.e2e.admin -import akka.http.scaladsl.model.ContentTypes -import akka.http.scaladsl.model.HttpEntity -import akka.http.scaladsl.model.HttpResponse -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.model.headers.BasicHttpCredentials -import akka.http.scaladsl.unmarshalling.Unmarshal -import akka.util.Timeout +import org.apache.pekko import java.net.URLEncoder import scala.concurrent.Await @@ -34,6 +28,14 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.AkkaHttpUtils import org.knora.webapi.util.MutableTestIri +import pekko.http.scaladsl.model.ContentTypes +import pekko.http.scaladsl.model.HttpEntity +import pekko.http.scaladsl.model.HttpResponse +import pekko.http.scaladsl.model.StatusCodes +import pekko.http.scaladsl.model.headers.BasicHttpCredentials +import pekko.http.scaladsl.unmarshalling.Unmarshal +import pekko.util.Timeout + /** * End-to-End (E2E) test specification for testing groups endpoint. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/StoreADME2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/StoreADME2ESpec.scala index 4da7960347..02574cb623 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/StoreADME2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/StoreADME2ESpec.scala @@ -5,15 +5,17 @@ package org.knora.webapi.e2e.admin -import akka.http.scaladsl.model.ContentTypes -import akka.http.scaladsl.model.HttpEntity -import akka.http.scaladsl.model.StatusCodes +import org.apache.pekko import spray.json._ import zio.Duration import org.knora.webapi.E2ESpec import org.knora.webapi.messages.store.triplestoremessages.TriplestoreJsonProtocol +import pekko.http.scaladsl.model.ContentTypes +import pekko.http.scaladsl.model.HttpEntity +import pekko.http.scaladsl.model.StatusCodes + /** * End-to-End (E2E) test specification for testing the 'v1/store' route. * diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/UsersADME2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/UsersADME2ESpec.scala index e3baed9a3b..9dc3db16e0 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/UsersADME2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/UsersADME2ESpec.scala @@ -5,11 +5,7 @@ package org.knora.webapi.e2e.admin -import akka.actor.ActorSystem -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers._ -import akka.http.scaladsl.testkit.RouteTestTimeout -import akka.http.scaladsl.unmarshalling.Unmarshal +import org.apache.pekko import java.net.URLEncoder import scala.concurrent.Await @@ -32,6 +28,12 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM2 import org.knora.webapi.util.AkkaHttpUtils import org.knora.webapi.util.MutableTestIri +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers._ +import pekko.http.scaladsl.testkit.RouteTestTimeout +import pekko.http.scaladsl.unmarshalling.Unmarshal + /** * End-to-End (E2E) test specification for testing users endpoint. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/CreateListItemsRouteADME2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/CreateListItemsRouteADME2ESpec.scala index 17bd0b4a92..465b14739f 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/CreateListItemsRouteADME2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/CreateListItemsRouteADME2ESpec.scala @@ -5,10 +5,7 @@ package org.knora.webapi.e2e.admin.lists -import akka.actor.ActorSystem -import akka.http.scaladsl.model._ -import akka.http.scaladsl.testkit.RouteTestTimeout -import akka.http.scaladsl.unmarshalling.Unmarshal +import org.apache.pekko import scala.concurrent.Await import scala.concurrent.duration._ @@ -26,6 +23,11 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.AkkaHttpUtils import org.knora.webapi.util.MutableTestIri +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.testkit.RouteTestTimeout +import pekko.http.scaladsl.unmarshalling.Unmarshal + /** * End-to-End (E2E) test specification for testing lists endpoint. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/CredentialsADM.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/CredentialsADM.scala index 801e1e53f5..ce8c742b60 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/CredentialsADM.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/CredentialsADM.scala @@ -5,10 +5,12 @@ package org.knora.webapi.e2e.admin.lists -import akka.http.scaladsl.model.headers.BasicHttpCredentials +import org.apache.pekko import org.knora.webapi.messages.admin.responder.usersmessages.UserADM +import pekko.http.scaladsl.model.headers.BasicHttpCredentials + /** * Representing user's credentials * diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/DeleteListItemsRouteADME2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/DeleteListItemsRouteADME2ESpec.scala index 9ab0b44e4a..baed071659 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/DeleteListItemsRouteADME2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/DeleteListItemsRouteADME2ESpec.scala @@ -5,11 +5,7 @@ package org.knora.webapi.e2e.admin.lists -import akka.actor.ActorSystem -import akka.http.scaladsl.model.HttpResponse -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.model.headers.BasicHttpCredentials -import akka.http.scaladsl.testkit.RouteTestTimeout +import org.apache.pekko import scala.concurrent.duration._ @@ -24,6 +20,12 @@ import org.knora.webapi.sharedtestdata.SharedListsTestDataADM import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.AkkaHttpUtils +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model.HttpResponse +import pekko.http.scaladsl.model.StatusCodes +import pekko.http.scaladsl.model.headers.BasicHttpCredentials +import pekko.http.scaladsl.testkit.RouteTestTimeout + /** * End-to-End (E2E) test specification for testing endpoint. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/GetListItemsRouteADME2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/GetListItemsRouteADME2ESpec.scala index f6450cbf1d..2289fbd770 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/GetListItemsRouteADME2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/GetListItemsRouteADME2ESpec.scala @@ -5,10 +5,7 @@ package org.knora.webapi.e2e.admin.lists -import akka.actor.ActorSystem -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers._ -import akka.http.scaladsl.testkit.RouteTestTimeout +import org.apache.pekko import scala.concurrent.duration._ @@ -23,6 +20,11 @@ import org.knora.webapi.sharedtestdata.SharedListsTestDataADM import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.AkkaHttpUtils +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers._ +import pekko.http.scaladsl.testkit.RouteTestTimeout + /** * End-to-End (E2E) test specification for testing lists endpoint. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/UpdateListItemsRouteADME2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/UpdateListItemsRouteADME2ESpec.scala index 94ee7e3afd..4758fdbbc2 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/UpdateListItemsRouteADME2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/admin/lists/UpdateListItemsRouteADME2ESpec.scala @@ -5,12 +5,7 @@ package org.knora.webapi.e2e.admin.lists -import akka.actor.ActorSystem -import akka.http.scaladsl.model.ContentTypes -import akka.http.scaladsl.model.HttpEntity -import akka.http.scaladsl.model.HttpResponse -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.testkit.RouteTestTimeout +import org.apache.pekko import scala.concurrent.duration._ @@ -26,6 +21,13 @@ import org.knora.webapi.sharedtestdata.SharedListsTestDataADM import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.AkkaHttpUtils +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model.ContentTypes +import pekko.http.scaladsl.model.HttpEntity +import pekko.http.scaladsl.model.HttpResponse +import pekko.http.scaladsl.model.StatusCodes +import pekko.http.scaladsl.testkit.RouteTestTimeout + /** * End-to-End (E2E) test specification for testing update node props routes. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/http/ServerVersionE2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/http/ServerVersionE2ESpec.scala index 7db03d4ea1..8905f786d5 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/http/ServerVersionE2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/http/ServerVersionE2ESpec.scala @@ -5,9 +5,7 @@ package org.knora.webapi.e2e.http -import akka.actor.ActorSystem -import akka.http.scaladsl.model._ -import akka.http.scaladsl.testkit.RouteTestTimeout +import org.apache.pekko import scala.concurrent.duration.FiniteDuration import scala.concurrent.duration.NANOSECONDS @@ -15,6 +13,10 @@ import scala.concurrent.duration.NANOSECONDS import org.knora.webapi.E2ESpec import org.knora.webapi.http.version.ServerVersion +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.testkit.RouteTestTimeout + /** * End-to-End (E2E) test specification for testing the server response. */ @@ -31,7 +33,7 @@ class ServerVersionE2ESpec extends E2ESpec { response.headers.find(_.name == "Server") match { case Some(serverHeader: HttpHeader) => serverHeader.value() should include("webapi/") - serverHeader.value() should include("akka-http/") + serverHeader.value() should include("pekko-http/") case None => fail("no server header found") } response.status should be(StatusCodes.OK) diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/AuthenticationV2E2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/AuthenticationV2E2ESpec.scala index cb900189e9..4b5f775408 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/AuthenticationV2E2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/AuthenticationV2E2ESpec.scala @@ -5,9 +5,7 @@ package org.knora.webapi.e2e.v2 -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers._ -import akka.http.scaladsl.unmarshalling.Unmarshal +import org.apache.pekko import scala.concurrent.Await import scala.concurrent.duration._ @@ -21,6 +19,10 @@ import org.knora.webapi.routing.UnsafeZioRun import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.MutableTestString +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers._ +import pekko.http.scaladsl.unmarshalling.Unmarshal + /** * End-to-End (E2E) test specification for testing authentication. * diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/JSONLDHandlingV2R2RSpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/JSONLDHandlingV2R2RSpec.scala index b812aacc44..2d78ad992a 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/JSONLDHandlingV2R2RSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/JSONLDHandlingV2R2RSpec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.e2e.v2 -import akka.http.javadsl.model.StatusCodes +import org.apache.pekko import spray.json._ import java.net.URLEncoder @@ -18,6 +18,8 @@ import org.knora.webapi.messages.store.triplestoremessages.RdfDataObject import org.knora.webapi.messages.util.rdf.JsonLDUtil import org.knora.webapi.routing.v2.ResourcesRouteV2 +import pekko.http.javadsl.model.StatusCodes + /** * End-to-end specification for the handling of JSONLD documents. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/ListsRouteV2R2RSpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/ListsRouteV2R2RSpec.scala index dec44eed91..5cea615164 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/ListsRouteV2R2RSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/ListsRouteV2R2RSpec.scala @@ -5,8 +5,7 @@ package org.knora.webapi.e2e.v2 -import akka.http.javadsl.model.StatusCodes -import akka.http.scaladsl.model.headers.Accept +import org.apache.pekko import spray.json.JsValue import spray.json.JsonParser @@ -23,6 +22,9 @@ import org.knora.webapi.messages.util.rdf.RdfModel import org.knora.webapi.routing.v2.ListsRouteV2 import org.knora.webapi.util.FileUtil +import pekko.http.javadsl.model.StatusCodes +import pekko.http.scaladsl.model.headers.Accept + /** * End-to-end test specification for the lists endpoint. This specification uses the Spray Testkit as documented * here: http://spray.io/documentation/1.2.2/spray-testkit/ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/MarkupHeader.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/MarkupHeader.scala index 25cad6f49d..1c26d44cc0 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/MarkupHeader.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/MarkupHeader.scala @@ -5,18 +5,20 @@ package org.knora.webapi.e2e.v2 -import akka.http.scaladsl.model.headers.ModeledCustomHeader -import akka.http.scaladsl.model.headers.ModeledCustomHeaderCompanion +import org.apache.pekko import scala.util.Try import org.knora.webapi.routing.RouteUtilV2 +import pekko.http.scaladsl.model.headers.ModeledCustomHeader +import pekko.http.scaladsl.model.headers.ModeledCustomHeaderCompanion + /** - * A custom Akka HTTP header representing [[RouteUtilV2.MARKUP_HEADER]], which a client can send to specify + * A custom Pekko HTTP header representing [[RouteUtilV2.MARKUP_HEADER]], which a client can send to specify * how text markup should be returned in an API response. * - * The definition follows [[https://doc.akka.io/docs/akka-http/current/common/http-model.html#custom-headers]]. + * The definition follows [[https://doc.pekko.io/docs/pekko-http/current/common/http-model.html#custom-headers]]. */ final class MarkupHeader(token: String) extends ModeledCustomHeader[MarkupHeader] { override def renderInRequests = true diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala index 88fc3932a0..29d1e8be77 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/OntologyV2R2RSpec.scala @@ -5,9 +5,7 @@ package org.knora.webapi.e2e.v2 -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers.Accept -import akka.http.scaladsl.model.headers.BasicHttpCredentials +import org.apache.pekko import spray.json._ import zio._ @@ -48,6 +46,10 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.slice.ontology.domain.model.Cardinality._ import org.knora.webapi.util._ +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers.Accept +import pekko.http.scaladsl.model.headers.BasicHttpCredentials + object OntologyV2R2RSpec { private val anythingUserProfile = SharedTestDataADM.anythingAdminUser private val anythingUsername = anythingUserProfile.email diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/ProjectHeader.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/ProjectHeader.scala index c874fc377b..2e38fece28 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/ProjectHeader.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/ProjectHeader.scala @@ -5,18 +5,20 @@ package org.knora.webapi.e2e.v2 -import akka.http.scaladsl.model.headers.ModeledCustomHeader -import akka.http.scaladsl.model.headers.ModeledCustomHeaderCompanion +import org.apache.pekko import scala.util.Try import org.knora.webapi.routing.RouteUtilV2 +import pekko.http.scaladsl.model.headers.ModeledCustomHeader +import pekko.http.scaladsl.model.headers.ModeledCustomHeaderCompanion + /** - * A custom Akka HTTP header representing [[RouteUtilV2.PROJECT_HEADER]], which a client can send to specify + * A custom Pekko HTTP header representing [[RouteUtilV2.PROJECT_HEADER]], which a client can send to specify * a project from which results should be returned. * - * The definition follows [[https://doc.akka.io/docs/akka-http/current/common/http-model.html#custom-headers]]. + * The definition follows [[https://doc.pekko.io/docs/pekko-http/current/common/http-model.html#custom-headers]]. */ class ProjectHeader(token: String) extends ModeledCustomHeader[ProjectHeader] { override def renderInRequests = true diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/ResourcesRouteV2E2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/ResourcesRouteV2E2ESpec.scala index 08ec964b32..00cd5f5ab0 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/ResourcesRouteV2E2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/ResourcesRouteV2E2ESpec.scala @@ -5,15 +5,9 @@ package org.knora.webapi.e2e.v2 -import akka.http.scaladsl.model.HttpEntity -import akka.http.scaladsl.model.HttpResponse -import akka.http.scaladsl.model.MediaRange -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.model.headers.Accept -import akka.http.scaladsl.model.headers.BasicHttpCredentials -import akka.http.scaladsl.unmarshalling.Unmarshal import com.typesafe.config.Config import com.typesafe.config.ConfigFactory +import org.apache.pekko import org.xmlunit.builder.DiffBuilder import org.xmlunit.builder.Input import org.xmlunit.diff.Diff @@ -53,6 +47,14 @@ import org.knora.webapi.sharedtestdata.SharedOntologyTestDataADM import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util._ +import pekko.http.scaladsl.model.HttpEntity +import pekko.http.scaladsl.model.HttpResponse +import pekko.http.scaladsl.model.MediaRange +import pekko.http.scaladsl.model.StatusCodes +import pekko.http.scaladsl.model.headers.Accept +import pekko.http.scaladsl.model.headers.BasicHttpCredentials +import pekko.http.scaladsl.unmarshalling.Unmarshal + /** * Tests the API v2 resources route. */ @@ -2287,8 +2289,8 @@ class ResourcesRouteV2E2ESpec extends E2ESpec { } object ResourcesRouteV2E2ESpec { - val config: Config = ConfigFactory.parseString("""akka.loglevel = "DEBUG" - |akka.stdout-loglevel = "DEBUG" + val config: Config = ConfigFactory.parseString("""pekko.loglevel = "DEBUG" + |pekko.stdout-loglevel = "DEBUG" |app.triplestore.profile-queries = false """.stripMargin) } diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/SchemaHeader.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/SchemaHeader.scala index 1b05decc9a..b67da48328 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/SchemaHeader.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/SchemaHeader.scala @@ -5,18 +5,20 @@ package org.knora.webapi.e2e.v2 -import akka.http.scaladsl.model.headers.ModeledCustomHeader -import akka.http.scaladsl.model.headers.ModeledCustomHeaderCompanion +import org.apache.pekko import scala.util.Try import org.knora.webapi.routing.RouteUtilV2 +import pekko.http.scaladsl.model.headers.ModeledCustomHeader +import pekko.http.scaladsl.model.headers.ModeledCustomHeaderCompanion + /** - * A custom Akka HTTP header representing [[RouteUtilV2.SCHEMA_HEADER]], which a client can send to specify + * A custom Pekko HTTP header representing [[RouteUtilV2.SCHEMA_HEADER]], which a client can send to specify * which ontology schema should be used in an API response. * - * The definition follows [[https://doc.akka.io/docs/akka-http/current/common/http-model.html#custom-headers]]. + * The definition follows [[https://doc.pekko.io/docs/pekko-http/current/common/http-model.html#custom-headers]]. */ final class SchemaHeader(token: String) extends ModeledCustomHeader[SchemaHeader] { override def renderInRequests = true diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/SearchRouteV2R2RSpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/SearchRouteV2R2RSpec.scala index fe91332d1c..2aaf3ef4bf 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/SearchRouteV2R2RSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/SearchRouteV2R2RSpec.scala @@ -5,11 +5,7 @@ package org.knora.webapi.e2e.v2 -import akka.http.javadsl.model.StatusCodes -import akka.http.scaladsl.model.ContentTypes -import akka.http.scaladsl.model.HttpEntity -import akka.http.scaladsl.model.Multipart -import akka.http.scaladsl.model.headers.BasicHttpCredentials +import org.apache.pekko import org.xmlunit.builder.DiffBuilder import org.xmlunit.builder.Input import org.xmlunit.diff.Diff @@ -43,6 +39,12 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.FileUtil import org.knora.webapi.util.MutableTestIri +import pekko.http.javadsl.model.StatusCodes +import pekko.http.scaladsl.model.ContentTypes +import pekko.http.scaladsl.model.HttpEntity +import pekko.http.scaladsl.model.Multipart +import pekko.http.scaladsl.model.headers.BasicHttpCredentials + /** * End-to-end test specification for the search endpoint. This specification uses the Spray Testkit as documented * here: http://spray.io/documentation/1.2.2/spray-testkit/ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/ValuesRouteV2E2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/ValuesRouteV2E2ESpec.scala index 93856c9808..a438ea4879 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/ValuesRouteV2E2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/ValuesRouteV2E2ESpec.scala @@ -5,9 +5,7 @@ package org.knora.webapi.e2e.v2 -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers.BasicHttpCredentials -import akka.http.scaladsl.unmarshalling.Unmarshal +import org.apache.pekko import org.xmlunit.builder.DiffBuilder import org.xmlunit.builder.Input import org.xmlunit.diff.Diff @@ -41,6 +39,10 @@ import org.knora.webapi.routing.UnsafeZioRun import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util._ +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers.BasicHttpCredentials +import pekko.http.scaladsl.unmarshalling.Unmarshal + class ValuesRouteV2E2ESpec extends E2ESpec { private implicit val stringFormatter: StringFormatter = StringFormatter.getGeneralInstance diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/ValuesV2R2RSpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/ValuesV2R2RSpec.scala index 103465f6df..c92097b7ad 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/ValuesV2R2RSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/ValuesV2R2RSpec.scala @@ -5,9 +5,7 @@ package org.knora.webapi.e2e.v2 -import akka.http.scaladsl.model.HttpEntity -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.model.headers.BasicHttpCredentials +import org.apache.pekko import scala.concurrent.ExecutionContextExecutor @@ -30,6 +28,10 @@ import org.knora.webapi.routing.v2.ValuesRouteV2 import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.MutableTestIri +import pekko.http.scaladsl.model.HttpEntity +import pekko.http.scaladsl.model.StatusCodes +import pekko.http.scaladsl.model.headers.BasicHttpCredentials + /** * Tests creating a still image file value using a mock Sipi. */ diff --git a/integration/src/test/scala/org/knora/webapi/e2e/v2/ontology/CardinalitiesV2E2ESpec.scala b/integration/src/test/scala/org/knora/webapi/e2e/v2/ontology/CardinalitiesV2E2ESpec.scala index 004de722a9..9622b16ba4 100644 --- a/integration/src/test/scala/org/knora/webapi/e2e/v2/ontology/CardinalitiesV2E2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/e2e/v2/ontology/CardinalitiesV2E2ESpec.scala @@ -5,10 +5,7 @@ package org.knora.webapi.e2e.v2.ontology -import akka.http.scaladsl.model.HttpEntity -import akka.http.scaladsl.model.HttpResponse -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.model.headers.BasicHttpCredentials +import org.apache.pekko import spray.json.JsString import dsp.errors.BadRequestException @@ -20,6 +17,11 @@ import org.knora.webapi.messages.util.rdf.JsonLDUtil import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.AkkaHttpUtils +import pekko.http.scaladsl.model.HttpEntity +import pekko.http.scaladsl.model.HttpResponse +import pekko.http.scaladsl.model.StatusCodes +import pekko.http.scaladsl.model.headers.BasicHttpCredentials + class CardinalitiesV2E2ESpec extends E2ESpec { // TODO: this test should be merged with OntologyV2R2RSpec, but that one is an R2R spec, which is Akka dependent diff --git a/integration/src/test/scala/org/knora/webapi/http/version/ServerVersionSpec.scala b/integration/src/test/scala/org/knora/webapi/http/version/ServerVersionSpec.scala index c24fda9a5d..7ac9e92825 100644 --- a/integration/src/test/scala/org/knora/webapi/http/version/ServerVersionSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/http/version/ServerVersionSpec.scala @@ -5,10 +5,12 @@ package org.knora.webapi.http.version -import akka.http.scaladsl.model.headers.Server +import org.apache.pekko import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpecLike +import pekko.http.scaladsl.model.headers.Server + /** * This spec is used to test 'ServerVersion'. */ @@ -17,7 +19,7 @@ class ServerVersionSpec extends AnyWordSpecLike with Matchers { "contain the necessary information" in { val header: Server = ServerVersion.serverVersionHeader header.toString() should include("webapi/") - header.toString() should include("akka-http/") + header.toString() should include("pekko-http/") } } } diff --git a/integration/src/test/scala/org/knora/webapi/it/VersionRouteITSpec.scala b/integration/src/test/scala/org/knora/webapi/it/VersionRouteITSpec.scala index 751269a593..fd5e388758 100644 --- a/integration/src/test/scala/org/knora/webapi/it/VersionRouteITSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/it/VersionRouteITSpec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.it -import akka.http.scaladsl.model._ +import org.apache.pekko import spray.json._ import scala.concurrent.Await @@ -13,6 +13,8 @@ import scala.concurrent.duration._ import org.knora.webapi.ITKnoraLiveSpec +import pekko.http.scaladsl.model._ + /** * End-to-End (E2E) test specification for testing route rejections. */ @@ -61,8 +63,8 @@ class VersionRouteITSpec extends ITKnoraLiveSpec { assert(checkNonEmpty("scala")) } - "contain nonempty value for key 'akkaHttp'" in { - assert(checkNonEmpty("akkaHttp")) + "contain nonempty value for key 'pekkoHttp'" in { + assert(checkNonEmpty("pekkoHttp")) } "contain nonempty value for key 'sipi'" in { diff --git a/integration/src/test/scala/org/knora/webapi/it/v2/KnoraSipiAuthenticationITSpec.scala b/integration/src/test/scala/org/knora/webapi/it/v2/KnoraSipiAuthenticationITSpec.scala index 01bc17ef9a..8d5cc82f6e 100644 --- a/integration/src/test/scala/org/knora/webapi/it/v2/KnoraSipiAuthenticationITSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/it/v2/KnoraSipiAuthenticationITSpec.scala @@ -5,9 +5,7 @@ package org.knora.webapi.it.v2 -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers.BasicHttpCredentials -import akka.http.scaladsl.unmarshalling.Unmarshal +import org.apache.pekko import java.nio.file.Files import java.nio.file.Paths @@ -22,6 +20,10 @@ import org.knora.webapi.routing.Authenticator import org.knora.webapi.routing.UnsafeZioRun import org.knora.webapi.sharedtestdata.SharedTestDataADM +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers.BasicHttpCredentials +import pekko.http.scaladsl.unmarshalling.Unmarshal + /** * Tests interaction between Knora and Sipi using Knora API v2. */ diff --git a/integration/src/test/scala/org/knora/webapi/it/v2/KnoraSipiIntegrationV2ITSpec.scala b/integration/src/test/scala/org/knora/webapi/it/v2/KnoraSipiIntegrationV2ITSpec.scala index cb814b4d58..9ef08dda7c 100644 --- a/integration/src/test/scala/org/knora/webapi/it/v2/KnoraSipiIntegrationV2ITSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/it/v2/KnoraSipiIntegrationV2ITSpec.scala @@ -5,9 +5,7 @@ package org.knora.webapi.it.v2 -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers.BasicHttpCredentials -import akka.http.scaladsl.unmarshalling.Unmarshal +import org.apache.pekko import java.net.URLEncoder import java.nio.file.Paths @@ -32,6 +30,10 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.testservices.FileToUpload import org.knora.webapi.util.MutableTestIri +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers.BasicHttpCredentials +import pekko.http.scaladsl.unmarshalling.Unmarshal + /** * Tests interaction between Knora and Sipi using Knora API v2. */ diff --git a/integration/src/test/scala/org/knora/webapi/it/v2/StandoffRouteV2ITSpec.scala b/integration/src/test/scala/org/knora/webapi/it/v2/StandoffRouteV2ITSpec.scala index f84201cabd..7c6b45c1f5 100644 --- a/integration/src/test/scala/org/knora/webapi/it/v2/StandoffRouteV2ITSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/it/v2/StandoffRouteV2ITSpec.scala @@ -5,10 +5,7 @@ package org.knora.webapi.it.v2 -import akka.http.javadsl.model.StatusCodes -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers.BasicHttpCredentials -import akka.http.scaladsl.unmarshalling.Unmarshal +import org.apache.pekko import org.xmlunit.builder.DiffBuilder import org.xmlunit.builder.Input import org.xmlunit.diff.Diff @@ -39,6 +36,11 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM2.anythingProjectIri import org.knora.webapi.util.FileUtil import org.knora.webapi.util.MutableTestIri +import pekko.http.javadsl.model.StatusCodes +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers.BasicHttpCredentials +import pekko.http.scaladsl.unmarshalling.Unmarshal + /** * Integration test specification for the standoff endpoint. */ diff --git a/integration/src/test/scala/org/knora/webapi/messages/util/ConstructResponseUtilV2Spec.scala b/integration/src/test/scala/org/knora/webapi/messages/util/ConstructResponseUtilV2Spec.scala index 96aaa44f3f..27bd25af2c 100644 --- a/integration/src/test/scala/org/knora/webapi/messages/util/ConstructResponseUtilV2Spec.scala +++ b/integration/src/test/scala/org/knora/webapi/messages/util/ConstructResponseUtilV2Spec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.util -import akka.testkit.ImplicitSender +import org.apache.pekko import zio.FiberFailure import zio.Unsafe import zio.ZIO @@ -25,6 +25,8 @@ import org.knora.webapi.routing.UnsafeZioRun import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.FileUtil +import pekko.testkit.ImplicitSender + /** * Tests [[ConstructResponseUtilV2]]. */ diff --git a/integration/src/test/scala/org/knora/webapi/messages/util/PermissionUtilADMSpec.scala b/integration/src/test/scala/org/knora/webapi/messages/util/PermissionUtilADMSpec.scala index ff87043299..5e6d32246e 100644 --- a/integration/src/test/scala/org/knora/webapi/messages/util/PermissionUtilADMSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/messages/util/PermissionUtilADMSpec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.util -import akka.testkit.ImplicitSender +import org.apache.pekko import scala.collection.Map @@ -18,6 +18,8 @@ import org.knora.webapi.messages.util.PermissionUtilADM._ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.sharedtestdata.SharedTestDataADM2 +import pekko.testkit.ImplicitSender + class PermissionUtilADMSpec extends CoreSpec with ImplicitSender { val permissionLiteral = diff --git a/integration/src/test/scala/org/knora/webapi/messages/util/search/gravsearch/types/GravsearchTypeInspectorSpec.scala b/integration/src/test/scala/org/knora/webapi/messages/util/search/gravsearch/types/GravsearchTypeInspectorSpec.scala index 3251c0ae71..afbc71c6ac 100644 --- a/integration/src/test/scala/org/knora/webapi/messages/util/search/gravsearch/types/GravsearchTypeInspectorSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/messages/util/search/gravsearch/types/GravsearchTypeInspectorSpec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.util.search.gravsearch.types -import akka.testkit.ImplicitSender +import org.apache.pekko import org.scalatest.matchers.must.Matchers.convertToAnyMustWrapper import zio.RIO import zio.ZIO @@ -20,6 +20,8 @@ import org.knora.webapi.messages.util.search.gravsearch.GravsearchParser import org.knora.webapi.routing.UnsafeZioRun import org.knora.webapi.sharedtestdata.SharedTestDataADM +import pekko.testkit.ImplicitSender + /** * Tests Gravsearch type inspection. */ diff --git a/integration/src/test/scala/org/knora/webapi/other/v2/LumieresLausanneV2E2ESpec.scala b/integration/src/test/scala/org/knora/webapi/other/v2/LumieresLausanneV2E2ESpec.scala index 0307d7b0e5..f4eb0bd86e 100644 --- a/integration/src/test/scala/org/knora/webapi/other/v2/LumieresLausanneV2E2ESpec.scala +++ b/integration/src/test/scala/org/knora/webapi/other/v2/LumieresLausanneV2E2ESpec.scala @@ -5,16 +5,18 @@ package org.knora.webapi.other.v2 -import akka.http.scaladsl.model.ContentTypes -import akka.http.scaladsl.model.HttpEntity -import akka.http.scaladsl.model.HttpResponse -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.model.headers.BasicHttpCredentials +import org.apache.pekko import org.knora.webapi.E2ESpec import org.knora.webapi.messages.store.triplestoremessages.RdfDataObject import org.knora.webapi.messages.store.triplestoremessages.TriplestoreJsonProtocol +import pekko.http.scaladsl.model.ContentTypes +import pekko.http.scaladsl.model.HttpEntity +import pekko.http.scaladsl.model.HttpResponse +import pekko.http.scaladsl.model.StatusCodes +import pekko.http.scaladsl.model.headers.BasicHttpCredentials + /** * End-to-End (E2E) test specification for additional testing of permissions. */ diff --git a/integration/src/test/scala/org/knora/webapi/responders/admin/GroupsResponderADMSpec.scala b/integration/src/test/scala/org/knora/webapi/responders/admin/GroupsResponderADMSpec.scala index 1ad2d06569..eeb494582b 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/admin/GroupsResponderADMSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/admin/GroupsResponderADMSpec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.responders.admin -import akka.actor.Status.Failure +import org.apache.pekko import java.util.UUID @@ -22,6 +22,8 @@ import org.knora.webapi.messages.store.triplestoremessages.StringLiteralV2 import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.MutableTestIri +import pekko.actor.Status.Failure + /** * This spec is used to test the messages received by the [[org.knora.webapi.responders.admin.GroupsResponderADMSpec]] actor. */ diff --git a/integration/src/test/scala/org/knora/webapi/responders/admin/ListsResponderADMSpec.scala b/integration/src/test/scala/org/knora/webapi/responders/admin/ListsResponderADMSpec.scala index 3457d149c0..c0f67bf89e 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/admin/ListsResponderADMSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/admin/ListsResponderADMSpec.scala @@ -5,8 +5,7 @@ package org.knora.webapi.responders.admin -import akka.actor.Status.Failure -import akka.testkit._ +import org.apache.pekko import java.util.UUID @@ -28,6 +27,9 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.sharedtestdata.SharedTestDataADM2._ import org.knora.webapi.util.MutableTestIri +import pekko.actor.Status.Failure +import pekko.testkit._ + /** * Tests [[ListsResponderADM]]. */ diff --git a/integration/src/test/scala/org/knora/webapi/responders/admin/PermissionsResponderADMSpec.scala b/integration/src/test/scala/org/knora/webapi/responders/admin/PermissionsResponderADMSpec.scala index 7bb75b8cb1..a440c85138 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/admin/PermissionsResponderADMSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/admin/PermissionsResponderADMSpec.scala @@ -5,8 +5,7 @@ package org.knora.webapi.responders.admin -import akka.actor.Status.Failure -import akka.testkit.ImplicitSender +import org.apache.pekko import java.util.UUID import scala.collection.Map @@ -29,6 +28,9 @@ import org.knora.webapi.sharedtestdata.SharedPermissionsTestData._ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.sharedtestdata.SharedTestDataADM2 +import pekko.actor.Status.Failure +import pekko.testkit.ImplicitSender + /** * This spec is used to test the [[PermissionsResponderADM]] actor. */ diff --git a/integration/src/test/scala/org/knora/webapi/responders/admin/ProjectsResponderADMSpec.scala b/integration/src/test/scala/org/knora/webapi/responders/admin/ProjectsResponderADMSpec.scala index 059c54544c..22bd9ad013 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/admin/ProjectsResponderADMSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/admin/ProjectsResponderADMSpec.scala @@ -9,8 +9,7 @@ */ package org.knora.webapi.responders.admin -import akka.actor.Status.Failure -import akka.testkit.ImplicitSender +import org.apache.pekko import java.util.UUID @@ -29,6 +28,9 @@ import org.knora.webapi.messages.admin.responder.usersmessages.UserInformationTy import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.MutableTestIri +import pekko.actor.Status.Failure +import pekko.testkit.ImplicitSender + /** * This spec is used to test the messages received by the [[ProjectsResponderADM]] actor. */ diff --git a/integration/src/test/scala/org/knora/webapi/responders/admin/SipiResponderADMSpec.scala b/integration/src/test/scala/org/knora/webapi/responders/admin/SipiResponderADMSpec.scala index e8456de713..2b56aeb087 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/admin/SipiResponderADMSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/admin/SipiResponderADMSpec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.responders.admin -import akka.testkit._ +import org.apache.pekko import scala.concurrent.duration._ @@ -15,6 +15,8 @@ import org.knora.webapi.messages.admin.responder.sipimessages._ import org.knora.webapi.messages.store.triplestoremessages.RdfDataObject import org.knora.webapi.sharedtestdata.SharedTestDataADM +import pekko.testkit._ + /** * Tests [[SipiResponderADM]]. */ diff --git a/integration/src/test/scala/org/knora/webapi/responders/admin/UsersResponderADMSpec.scala b/integration/src/test/scala/org/knora/webapi/responders/admin/UsersResponderADMSpec.scala index 852dd606de..8d589eead0 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/admin/UsersResponderADMSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/admin/UsersResponderADMSpec.scala @@ -5,8 +5,7 @@ package org.knora.webapi.responders.admin -import akka.actor.Status.Failure -import akka.testkit.ImplicitSender +import org.apache.pekko import java.util.UUID @@ -32,6 +31,9 @@ import org.knora.webapi.routing.Authenticator import org.knora.webapi.routing.UnsafeZioRun import org.knora.webapi.sharedtestdata.SharedTestDataADM +import pekko.actor.Status.Failure +import pekko.testkit.ImplicitSender + /** * This spec is used to test the messages received by the [[UsersResponderADM]] actor. */ diff --git a/integration/src/test/scala/org/knora/webapi/responders/v2/ListsResponderV2Spec.scala b/integration/src/test/scala/org/knora/webapi/responders/v2/ListsResponderV2Spec.scala index 72b3f167a6..8229d0053e 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/v2/ListsResponderV2Spec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/v2/ListsResponderV2Spec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.responders.v2 -import akka.testkit.ImplicitSender +import org.apache.pekko import org.knora.webapi.CoreSpec import org.knora.webapi.messages.StringFormatter @@ -16,6 +16,8 @@ import org.knora.webapi.messages.v2.responder.listsmessages.NodeGetRequestV2 import org.knora.webapi.messages.v2.responder.listsmessages.NodeGetResponseV2 import org.knora.webapi.sharedtestdata.SharedTestDataADM +import pekko.testkit.ImplicitSender + /** * Tests [[ListsResponderV2]]. */ diff --git a/integration/src/test/scala/org/knora/webapi/responders/v2/LoadOntologiesSpec.scala b/integration/src/test/scala/org/knora/webapi/responders/v2/LoadOntologiesSpec.scala index 88933a752a..7ea3592e48 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/v2/LoadOntologiesSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/v2/LoadOntologiesSpec.scala @@ -5,8 +5,7 @@ package org.knora.webapi.responders.v2 -import akka.actor.Status -import akka.testkit.ImplicitSender +import org.apache.pekko import org.knora.webapi.CoreSpec import org.knora.webapi.messages.store.triplestoremessages.RdfDataObject @@ -16,6 +15,9 @@ import org.knora.webapi.routing.UnsafeZioRun import org.knora.webapi.slice.ontology.repo.service.OntologyCache import org.knora.webapi.store.triplestore.api.TriplestoreService +import pekko.actor.Status +import pekko.testkit.ImplicitSender + /** * Tests that the [[OntologyCache.loadOntologies]] method does not load invalid data into the cache. */ diff --git a/integration/src/test/scala/org/knora/webapi/responders/v2/OntologyResponderV2Spec.scala b/integration/src/test/scala/org/knora/webapi/responders/v2/OntologyResponderV2Spec.scala index 50c79495ef..2980f7b740 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/v2/OntologyResponderV2Spec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/v2/OntologyResponderV2Spec.scala @@ -5,8 +5,8 @@ package org.knora.webapi.responders.v2 -import akka.pattern.ask -import akka.testkit.ImplicitSender +import org.apache.pekko +import org.apache.pekko.actor.Status.Failure import java.time.Instant import java.util.UUID @@ -38,6 +38,9 @@ import org.knora.webapi.store.triplestore.api.TriplestoreService import org.knora.webapi.store.triplestore.api.TriplestoreService.Queries.Select import org.knora.webapi.util.MutableTestIri +import pekko.pattern.ask +import pekko.testkit.ImplicitSender + /** * Tests [[OntologyResponderV2]]. */ @@ -128,7 +131,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = SharedTestDataADM.imagesUser02 ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -280,7 +283,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[BadRequestException] should ===(true) } } @@ -340,7 +343,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -354,7 +357,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[NotFoundException] should ===(true) } @@ -368,7 +371,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = SharedTestDataADM.imagesUser02 ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -427,7 +430,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => val cause: Throwable = msg.cause val errorMsg: String = cause.getMessage if (printErrorMessages) println(errorMsg) @@ -453,7 +456,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -469,7 +472,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -485,7 +488,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -501,7 +504,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -517,7 +520,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -533,7 +536,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -549,7 +552,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -565,7 +568,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -582,7 +585,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = imagesUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -597,7 +600,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = SharedTestDataADM.superUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -684,7 +687,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -1161,7 +1164,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1210,7 +1213,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1259,7 +1262,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1308,7 +1311,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1357,7 +1360,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1409,7 +1412,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1458,7 +1461,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1511,7 +1514,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1560,7 +1563,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1609,7 +1612,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1658,7 +1661,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1707,7 +1710,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1756,7 +1759,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1805,7 +1808,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1854,7 +1857,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1903,7 +1906,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -1952,7 +1955,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -2002,7 +2005,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -2028,7 +2031,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -2127,7 +2130,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -2406,7 +2409,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -2449,7 +2452,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -2489,7 +2492,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -3168,7 +3171,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -3260,7 +3263,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -3378,7 +3381,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -3418,7 +3421,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -3458,7 +3461,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -3498,7 +3501,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -3540,7 +3543,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[NotFoundException] should ===(true) } @@ -3581,7 +3584,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -3675,7 +3678,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -3692,7 +3695,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -3738,14 +3741,14 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { appActor ! linkPropGetRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[NotFoundException] should ===(true) } appActor ! linkValuePropGetRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[NotFoundException] should ===(true) } @@ -3755,14 +3758,14 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { appActor ! linkPropGetRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[NotFoundException] should ===(true) } appActor ! linkValuePropGetRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[NotFoundException] should ===(true) } @@ -3989,7 +3992,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -4029,7 +4032,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -4144,7 +4147,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } } @@ -4198,7 +4201,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -4342,7 +4345,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[BadRequestException] should ===(true) } } @@ -4437,7 +4440,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -4638,7 +4641,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -4778,7 +4781,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -4815,7 +4818,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -4843,7 +4846,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -4901,7 +4904,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[EditConflictException] should ===(true) } @@ -4917,7 +4920,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingNonAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[ForbiddenException] should ===(true) } @@ -5014,7 +5017,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -5052,7 +5055,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -5097,7 +5100,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -5146,7 +5149,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -5191,7 +5194,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => if (printErrorMessages) println(msg.cause.getMessage) msg.cause.isInstanceOf[BadRequestException] should ===(true) } diff --git a/integration/src/test/scala/org/knora/webapi/responders/v2/ResourcesResponderV2Spec.scala b/integration/src/test/scala/org/knora/webapi/responders/v2/ResourcesResponderV2Spec.scala index 6dbc37ca36..1e8418d0a7 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/v2/ResourcesResponderV2Spec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/v2/ResourcesResponderV2Spec.scala @@ -5,7 +5,8 @@ package org.knora.webapi.responders.v2 -import akka.testkit.ImplicitSender +import org.apache.pekko +import org.apache.pekko.actor.Status.Failure import org.xmlunit.builder.DiffBuilder import org.xmlunit.builder.Input import org.xmlunit.diff.Diff @@ -42,6 +43,8 @@ import org.knora.webapi.store.triplestore.api.TriplestoreService.Queries.Ask import org.knora.webapi.store.triplestore.api.TriplestoreService.Queries.Select import org.knora.webapi.util._ +import pekko.testkit.ImplicitSender + object ResourcesResponderV2Spec { private val incunabulaUserProfile = SharedTestDataADM.incunabulaProjectAdminUser @@ -1237,7 +1240,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[OntologyConstraintException] should ===(true) } } @@ -1284,7 +1287,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[OntologyConstraintException] should ===(true) } } @@ -1325,7 +1328,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[OntologyConstraintException] should ===(true) } } @@ -1370,7 +1373,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[DuplicateValueException] should ===(true) } } @@ -1403,7 +1406,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } } @@ -1436,7 +1439,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[NotFoundException] should ===(true) } } @@ -1508,7 +1511,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[NotFoundException] should ===(true) } } @@ -1541,7 +1544,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[NotFoundException] should ===(true) } } @@ -1574,7 +1577,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[OntologyConstraintException] should ===(true) } } @@ -1607,7 +1610,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[OntologyConstraintException] should ===(true) } } @@ -1630,7 +1633,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[BadRequestException] should ===(true) } } @@ -1665,7 +1668,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[BadRequestException] should ===(true) } } @@ -1687,7 +1690,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[BadRequestException] should ===(true) } } @@ -1703,7 +1706,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { appActor ! updateRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } } @@ -1719,7 +1722,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { appActor ! updateRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[BadRequestException] should ===(true) } } @@ -1766,7 +1769,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { appActor ! updateRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[EditConflictException] should ===(true) } } @@ -1783,7 +1786,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { appActor ! updateRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[EditConflictException] should ===(true) } } @@ -1825,7 +1828,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { appActor ! updateRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[BadRequestException] should ===(true) } } @@ -1869,7 +1872,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { appActor ! deleteRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[BadRequestException] should ===(true) } } @@ -1955,7 +1958,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } } @@ -2032,7 +2035,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { apiRequestID = UUID.randomUUID ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } } @@ -2205,7 +2208,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { appActor ! eraseRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[ForbiddenException] should ===(true) } } @@ -2260,7 +2263,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { appActor ! eraseRequest - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[BadRequestException] should ===(true) } @@ -2621,7 +2624,7 @@ class ResourcesResponderV2Spec extends CoreSpec with ImplicitSender { projectIri = "http://rdfh.ch/projects/1111", requestingUser = SharedTestDataADM.anythingAdminUser ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: Failure => msg.cause.isInstanceOf[NotFoundException] should ===(true) } } diff --git a/integration/src/test/scala/org/knora/webapi/responders/v2/SearchResponderV2Spec.scala b/integration/src/test/scala/org/knora/webapi/responders/v2/SearchResponderV2Spec.scala index 9fad5e2588..33eaba8ad5 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/v2/SearchResponderV2Spec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/v2/SearchResponderV2Spec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.responders.v2 -import akka.testkit.ImplicitSender +import org.apache.pekko import dsp.errors.BadRequestException import org.knora.webapi.ApiV2Complex @@ -21,6 +21,8 @@ import org.knora.webapi.messages.v2.responder.valuemessages.StillImageFileValueC import org.knora.webapi.responders.v2.ResourcesResponseCheckerV2.compareReadResourcesSequenceV2Response import org.knora.webapi.sharedtestdata.SharedTestDataADM +import pekko.testkit.ImplicitSender + /** * Tests [[SearchResponderV2]]. */ @@ -99,7 +101,7 @@ class SearchResponderV2Spec extends CoreSpec with ImplicitSender { requestingUser = SharedTestDataADM.anythingUser1 ) - expectMsgPF(timeout) { case msg: akka.actor.Status.Failure => + expectMsgPF(timeout) { case msg: pekko.actor.Status.Failure => assert(msg.cause.isInstanceOf[BadRequestException]) } diff --git a/integration/src/test/scala/org/knora/webapi/responders/v2/SearchResponderV2SpecFullData.scala b/integration/src/test/scala/org/knora/webapi/responders/v2/SearchResponderV2SpecFullData.scala index dd29f5341a..38d087f3ac 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/v2/SearchResponderV2SpecFullData.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/v2/SearchResponderV2SpecFullData.scala @@ -5,7 +5,7 @@ package org.knora.webapi.responders.v2 -import akka.actor.ActorSystem +import org.apache.pekko import java.time.Instant @@ -19,6 +19,8 @@ import org.knora.webapi.messages.v2.responder.resourcemessages._ import org.knora.webapi.messages.v2.responder.valuemessages._ import org.knora.webapi.sharedtestdata.SharedTestDataADM +import pekko.actor.ActorSystem + class SearchResponderV2SpecFullData(implicit stringFormatter: StringFormatter) { implicit lazy val system: ActorSystem = ActorSystem("webapi") diff --git a/integration/src/test/scala/org/knora/webapi/responders/v2/StandoffResponderV2Spec.scala b/integration/src/test/scala/org/knora/webapi/responders/v2/StandoffResponderV2Spec.scala index 466d708924..b423586127 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/v2/StandoffResponderV2Spec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/v2/StandoffResponderV2Spec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.responders.v2 -import akka.testkit.ImplicitSender +import org.apache.pekko import scala.concurrent.duration._ @@ -20,6 +20,8 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.store.triplestore.api.TriplestoreService import org.knora.webapi.store.triplestore.api.TriplestoreService.Queries.Construct +import pekko.testkit.ImplicitSender + class StandoffResponderV2Spec extends CoreSpec with ImplicitSender { // The default timeout for receiving reply messages from actors. diff --git a/integration/src/test/scala/org/knora/webapi/responders/v2/ValuesResponderV2Spec.scala b/integration/src/test/scala/org/knora/webapi/responders/v2/ValuesResponderV2Spec.scala index 5430f5d6f2..29b6afae2c 100644 --- a/integration/src/test/scala/org/knora/webapi/responders/v2/ValuesResponderV2Spec.scala +++ b/integration/src/test/scala/org/knora/webapi/responders/v2/ValuesResponderV2Spec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.responders.v2 -import akka.testkit.ImplicitSender +import org.apache.pekko import java.time.Instant import java.util.UUID @@ -40,6 +40,8 @@ import org.knora.webapi.store.triplestore.api.TriplestoreService.Queries.Select import org.knora.webapi.util.MutableTestIri import org.knora.webapi.util.ZioScalaTestUtil.assertFailsWithA +import pekko.testkit.ImplicitSender + /** * Tests [[ValuesResponderV2]]. */ diff --git a/integration/src/test/scala/org/knora/webapi/routing/AuthenticatorSpec.scala b/integration/src/test/scala/org/knora/webapi/routing/AuthenticatorSpec.scala index 57a8b89bda..5e9323360b 100644 --- a/integration/src/test/scala/org/knora/webapi/routing/AuthenticatorSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/routing/AuthenticatorSpec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.routing -import akka.testkit.ImplicitSender +import org.apache.pekko import org.scalatest.PrivateMethodTester import zio.ZIO @@ -22,6 +22,8 @@ import org.knora.webapi.sharedtestdata.SharedTestDataADM import org.knora.webapi.util.ZioScalaTestUtil.assertFailsWithA import org.knora.webapi.util.cache.CacheUtil +import pekko.testkit.ImplicitSender + object AuthenticatorSpec { private val rootUser = SharedTestDataADM.rootUser private val rootUserEmail = rootUser.email diff --git a/integration/src/test/scala/org/knora/webapi/routing/JwtServiceSpec.scala b/integration/src/test/scala/org/knora/webapi/routing/JwtServiceSpec.scala index dbb1070a4e..26974fcf3b 100644 --- a/integration/src/test/scala/org/knora/webapi/routing/JwtServiceSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/routing/JwtServiceSpec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.routing -import akka.testkit.ImplicitSender +import org.apache.pekko import pdi.jwt.JwtAlgorithm import pdi.jwt.JwtSprayJson import spray.json.JsString @@ -16,6 +16,8 @@ import org.knora.webapi.config.JwtConfig import org.knora.webapi.messages.admin.responder.usersmessages.UserADM import org.knora.webapi.sharedtestdata.SharedTestDataADM +import pekko.testkit.ImplicitSender + class JwtServiceSpec extends CoreSpec with ImplicitSender { private val validToken: String = diff --git a/integration/src/test/scala/org/knora/webapi/store/triplestore/TriplestoreServiceLiveSpec.scala b/integration/src/test/scala/org/knora/webapi/store/triplestore/TriplestoreServiceLiveSpec.scala index f293f1aad5..dede2da5ca 100644 --- a/integration/src/test/scala/org/knora/webapi/store/triplestore/TriplestoreServiceLiveSpec.scala +++ b/integration/src/test/scala/org/knora/webapi/store/triplestore/TriplestoreServiceLiveSpec.scala @@ -5,7 +5,7 @@ package org.knora.webapi.store.triplestore -import akka.testkit.ImplicitSender +import org.apache.pekko import scala.concurrent.duration._ @@ -16,6 +16,8 @@ import org.knora.webapi.store.triplestore.api.TriplestoreService import org.knora.webapi.store.triplestore.api.TriplestoreService.Queries.Select import org.knora.webapi.store.triplestore.api.TriplestoreService.Queries.Update +import pekko.testkit.ImplicitSender + class TriplestoreServiceLiveSpec extends CoreSpec with ImplicitSender { override implicit val timeout: FiniteDuration = 30.seconds diff --git a/integration/src/test/scala/org/knora/webapi/testservices/TestClientService.scala b/integration/src/test/scala/org/knora/webapi/testservices/TestClientService.scala index 6741ed8eaf..31f9f72a77 100644 --- a/integration/src/test/scala/org/knora/webapi/testservices/TestClientService.scala +++ b/integration/src/test/scala/org/knora/webapi/testservices/TestClientService.scala @@ -5,8 +5,6 @@ package org.knora.webapi.testservices -import akka.http.scaladsl.client.RequestBuilding -import akka.http.scaladsl.unmarshalling.Unmarshal import org.apache.http import org.apache.http.HttpHost import org.apache.http.client.config.RequestConfig @@ -20,6 +18,7 @@ import org.apache.http.impl.client.CloseableHttpClient import org.apache.http.impl.client.HttpClients import org.apache.http.impl.conn.PoolingHttpClientConnectionManager import org.apache.http.util.EntityUtils +import org.apache.pekko import spray.json.JsObject import spray.json._ import zio._ @@ -47,6 +46,9 @@ import org.knora.webapi.settings.KnoraDispatchers import org.knora.webapi.store.iiif.errors.SipiException import org.knora.webapi.util.SipiUtil +import pekko.http.scaladsl.client.RequestBuilding +import pekko.http.scaladsl.unmarshalling.Unmarshal + /** * Represents a file to be uploaded to the IIF Service. * @@ -64,11 +66,11 @@ final case class FileToUpload(path: Path, mimeType: ContentType) */ final case class InputFile(fileToUpload: FileToUpload, width: Int, height: Int) -final case class TestClientService(config: AppConfig, httpClient: CloseableHttpClient, sys: akka.actor.ActorSystem) +final case class TestClientService(config: AppConfig, httpClient: CloseableHttpClient, sys: pekko.actor.ActorSystem) extends TriplestoreJsonProtocol with RequestBuilding { - implicit val system: akka.actor.ActorSystem = sys + implicit val system: pekko.actor.ActorSystem = sys implicit val executionContext: ExecutionContext = system.dispatchers.lookup(KnoraDispatchers.KnoraBlockingDispatcher) case class TestClientTimeoutException(msg: String) extends Exception @@ -80,9 +82,9 @@ final case class TestClientService(config: AppConfig, httpClient: CloseableHttpC val loadRequest = Post( config.knoraApi.internalKnoraApiBaseUrl + "/admin/store/ResetTriplestoreContent", - akka.http.scaladsl.model + pekko.http.scaladsl.model .HttpEntity( - akka.http.scaladsl.model.ContentTypes.`application/json`, + pekko.http.scaladsl.model.ContentTypes.`application/json`, rdfDataObjects.toJson.compactPrint ) ) @@ -107,13 +109,13 @@ final case class TestClientService(config: AppConfig, httpClient: CloseableHttpC * @return the response. */ def singleAwaitingRequest( - request: akka.http.scaladsl.model.HttpRequest, + request: pekko.http.scaladsl.model.HttpRequest, timeout: Option[zio.Duration] = None, printFailure: Boolean = false - ): Task[akka.http.scaladsl.model.HttpResponse] = + ): Task[pekko.http.scaladsl.model.HttpResponse] = ZIO - .fromFuture[akka.http.scaladsl.model.HttpResponse](_ => - akka.http.scaladsl.Http().singleRequest(request).map { resp => + .fromFuture[pekko.http.scaladsl.model.HttpResponse](_ => + pekko.http.scaladsl.Http().singleRequest(request).map { resp => if (printFailure && resp.status.isFailure()) { Unmarshal(resp.entity).to[String].map { body => println(s"Request failed with status ${resp.status} and body $body") @@ -132,7 +134,7 @@ final case class TestClientService(config: AppConfig, httpClient: CloseableHttpC /** * Performs a http request and returns the body of the response. */ - def getResponseString(request: akka.http.scaladsl.model.HttpRequest): Task[String] = + def getResponseString(request: pekko.http.scaladsl.model.HttpRequest): Task[String] = for { response <- singleAwaitingRequest(request) body <- @@ -151,7 +153,7 @@ final case class TestClientService(config: AppConfig, httpClient: CloseableHttpC /** * Performs a http request and dosn't return the string (only error channel). */ - def checkResponseOK(request: akka.http.scaladsl.model.HttpRequest): Task[Unit] = + def checkResponseOK(request: pekko.http.scaladsl.model.HttpRequest): Task[Unit] = for { // _ <- ZIO.debug(request) _ <- getResponseString(request) @@ -160,7 +162,7 @@ final case class TestClientService(config: AppConfig, httpClient: CloseableHttpC /** * Performs a http request and tries to parse the response body as Json. */ - def getResponseJson(request: akka.http.scaladsl.model.HttpRequest): Task[JsObject] = + def getResponseJson(request: pekko.http.scaladsl.model.HttpRequest): Task[JsObject] = for { body <- getResponseString(request) json <- ZIO.succeed(body.parseJson.asJsObject) @@ -169,7 +171,7 @@ final case class TestClientService(config: AppConfig, httpClient: CloseableHttpC /** * Performs a http request and tries to parse the response body as JsonLD. */ - def getResponseJsonLD(request: akka.http.scaladsl.model.HttpRequest): Task[JsonLDDocument] = + def getResponseJsonLD(request: pekko.http.scaladsl.model.HttpRequest): Task[JsonLDDocument] = for { body <- getResponseString(request) // _ <- ZIO.debug(body) @@ -373,8 +375,8 @@ object TestClientService { /** * Releases the httpClient, freeing all resources. */ - private def release(httpClient: CloseableHttpClient)(implicit system: akka.actor.ActorSystem) = ZIO.attemptBlocking { - akka.http.scaladsl.Http().shutdownAllConnectionPools() + private def release(httpClient: CloseableHttpClient)(implicit system: pekko.actor.ActorSystem) = ZIO.attemptBlocking { + pekko.http.scaladsl.Http().shutdownAllConnectionPools() httpClient.close() }.tap(_ => ZIO.logDebug(">>> Release Test Client Service <<<")).orDie diff --git a/integration/src/test/scala/org/knora/webapi/util/AkkaHttpUtils.scala b/integration/src/test/scala/org/knora/webapi/util/AkkaHttpUtils.scala index 85396bb3a1..267a030517 100644 --- a/integration/src/test/scala/org/knora/webapi/util/AkkaHttpUtils.scala +++ b/integration/src/test/scala/org/knora/webapi/util/AkkaHttpUtils.scala @@ -5,12 +5,8 @@ package org.knora.webapi.util -import akka.actor.ActorSystem -import akka.http.scaladsl.model.HttpResponse -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.unmarshalling.Unmarshal -import akka.util.Timeout import com.typesafe.scalalogging.LazyLogging +import org.apache.pekko import spray.json._ import scala.concurrent.Await @@ -18,6 +14,12 @@ import scala.concurrent.ExecutionContext import scala.concurrent.Future import scala.concurrent.duration._ +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model.HttpResponse +import pekko.http.scaladsl.model.StatusCodes +import pekko.http.scaladsl.unmarshalling.Unmarshal +import pekko.util.Timeout + /** * Object containing methods for dealing with [[HttpResponse]] */ @@ -32,7 +34,7 @@ object AkkaHttpUtils extends LazyLogging { def httpResponseToJson(response: HttpResponse)(implicit ec: ExecutionContext, system: ActorSystem): JsObject = { import DefaultJsonProtocol._ - import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._ + import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._ val jsonFuture: Future[JsObject] = response match { case HttpResponse(StatusCodes.OK, _, entity, _) => Unmarshal(entity).to[JsObject] diff --git a/integration/src/test/scala/org/knora/webapi/util/TestExtractorMethods.scala b/integration/src/test/scala/org/knora/webapi/util/TestExtractorMethods.scala index 9629cb87fa..5a53009995 100644 --- a/integration/src/test/scala/org/knora/webapi/util/TestExtractorMethods.scala +++ b/integration/src/test/scala/org/knora/webapi/util/TestExtractorMethods.scala @@ -5,14 +5,16 @@ package org.knora.webapi.util -import akka.actor.ActorSystem -import akka.http.scaladsl.model.HttpResponse +import org.apache.pekko import spray.json.JsString import scala.concurrent.ExecutionContext import dsp.errors.InvalidApiJsonException +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model.HttpResponse + /** * Created by subotic on 06.02.17. */ diff --git a/mkdocs.yml b/mkdocs.yml index 33e4183085..c5dbac6749 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -56,11 +56,12 @@ nav: - 0003 Change IIIF Service Manager and Sipi implementation to zlayer: 05-internals/design/adr/ADR-0003-change-iiif-service-manager-and-sipi-implementation-to-zlayer.md - 0004 Change Triplestore Service Manager and Fuseki implementation to ZLayer: 05-internals/design/adr/ADR-0004-change-triplestore-service-manager-and-fuseki-implementation-to-zlayer.md - 0005 Change ResponderManager to a simple case class: 05-internals/design/adr/ADR-0005-change-respondermanager-to-a-simple-case-class.md - - 0006 Gradually Replace AKKA-HTTP with ZIO-HTTP: 05-internals/design/adr/ADR-0006-use-zio-http.md + - 0006 Gradually Replace Akka-HTTP with ZIO-HTTP: 05-internals/design/adr/ADR-0006-use-zio-http.md - 0007 ZIO-fication of Responders: 05-internals/design/adr/ADR-0007-zio-fication-of-responders.md + - 0008 Replace Akka with Pekko: 05-internals/design/adr/ADR-0008-replace-akka-with-pekko.md - DSP-API Design Principles: - Design Overview: 05-internals/design/principles/design-overview.md - - Futures with Akka: 05-internals/design/principles/futures-with-akka.md + - Futures with Pekko: 05-internals/design/principles/futures-with-pekko.md - HTTP Module: 05-internals/design/principles/http-module.md - Store Module: 05-internals/design/principles/store-module.md - Triplestore Updates: 05-internals/design/principles/triplestore-updates.md diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 077a893ea0..11f7b2168d 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -15,9 +15,9 @@ object Dependencies { val ScalaVersion = "2.13.11" - val AkkaActorVersion = "2.6.20" - val AkkaHttpVersion = "10.2.10" - val JenaVersion = "4.8.0" + val PekkoActorVersion = "1.0.1" + val PekkoHttpVersion = "1.0.0" + val JenaVersion = "4.8.0" val ZioConfigVersion = "3.0.7" val ZioHttpVersionOld = "2.0.0-RC11" @@ -51,13 +51,13 @@ object Dependencies { val zioTestSbt = "dev.zio" %% "zio-test-sbt" % ZioVersion val zioMock = "dev.zio" %% "zio-mock" % "1.0.0-RC11" - // akka - val akkaActor = "com.typesafe.akka" %% "akka-actor" % AkkaActorVersion // Scala 3 compatible - val akkaHttp = "com.typesafe.akka" %% "akka-http" % AkkaHttpVersion // Scala 3 incompatible - val akkaHttpCors = "ch.megard" %% "akka-http-cors" % "1.2.0" // Scala 3 incompatible - val akkaHttpSprayJson = "com.typesafe.akka" %% "akka-http-spray-json" % AkkaHttpVersion // Scala 3 incompatible - val akkaSlf4j = "com.typesafe.akka" %% "akka-slf4j" % AkkaActorVersion // Scala 3 compatible - val akkaStream = "com.typesafe.akka" %% "akka-stream" % AkkaActorVersion // Scala 3 compatible + // pekko + val pekkoActor = "org.apache.pekko" %% "pekko-actor" % PekkoActorVersion + val pekkoHttp = "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion + val pekkoHttpCors = "org.apache.pekko" %% "pekko-http-cors" % PekkoHttpVersion + val pekkoHttpSprayJson = "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion + val pekkoSlf4j = "org.apache.pekko" %% "pekko-slf4j" % PekkoActorVersion + val pekkoStream = "org.apache.pekko" %% "pekko-stream" % PekkoActorVersion // jena val jenaText = "org.apache.jena" % "jena-text" % JenaVersion @@ -103,10 +103,10 @@ object Dependencies { val xmlunitCore = "org.xmlunit" % "xmlunit-core" % "2.9.1" // test - val akkaHttpTestkit = "com.typesafe.akka" %% "akka-http-testkit" % AkkaHttpVersion // Scala 3 incompatible - val akkaStreamTestkit = "com.typesafe.akka" %% "akka-stream-testkit" % AkkaActorVersion // Scala 3 compatible - val akkaTestkit = "com.typesafe.akka" %% "akka-testkit" % AkkaActorVersion // Scala 3 compatible - val scalaTest = "org.scalatest" %% "scalatest" % "3.2.17" // Scala 3 compatible + val pekkoHttpTestkit = "org.apache.pekko" %% "pekko-http-testkit" % PekkoHttpVersion // Scala 3 incompatible + val pekkoStreamTestkit = "org.apache.pekko" %% "pekko-stream-testkit" % PekkoActorVersion // Scala 3 compatible + val pekkoTestkit = "org.apache.pekko" %% "pekko-testkit" % PekkoActorVersion // Scala 3 compatible + val scalaTest = "org.scalatest" %% "scalatest" % "3.2.17" // Scala 3 compatible // The scoverage plugin actually adds its dependencies automatically. // Add it redundantly to the IT dependencies in order to fix build issues with IntelliJ // Fixes error message when running IT in IntelliJ @@ -120,9 +120,9 @@ object Dependencies { val commonsLang3 = "org.apache.commons" % "commons-lang3" % "3.13.0" val integrationTestDependencies = Seq( - akkaHttpTestkit, - akkaStreamTestkit, - akkaTestkit, + pekkoHttpTestkit, + pekkoStreamTestkit, + pekkoTestkit, rdf4jClient, scalaTest, scoverage, @@ -136,12 +136,12 @@ object Dependencies { val webapiTestDependencies = Seq(zioTest, zioTestSbt, zioMock, wiremock).map(_ % Test) val webapiDependencies = Seq( - akkaActor, - akkaHttp, - akkaHttpCors, - akkaHttpSprayJson, - akkaSlf4j, - akkaStream, + pekkoActor, + pekkoHttp, + pekkoHttpCors, + pekkoHttpSprayJson, + pekkoSlf4j, + pekkoStream, bouncyCastle, commonsLang3, commonsValidator, diff --git a/webapi/src/main/resources/application.conf b/webapi/src/main/resources/application.conf index 794213636c..3233f41595 100644 --- a/webapi/src/main/resources/application.conf +++ b/webapi/src/main/resources/application.conf @@ -1,16 +1,16 @@ -akka { +pekko { log-config-on-start = off log-config-on-start = ${?KNORA_AKKA_LOG_CONFIG_ON_START} - loggers = ["akka.event.slf4j.Slf4jLogger"] + loggers = ["org.apache.pekko.event.slf4j.Slf4jLogger"] loglevel = "ERROR" loglevel = ${?KNORA_AKKA_LOGLEVEL} stdout-loglevel = "ERROR" stdout-loglevel = ${?KNORA_AKKA_STDOUT_LOGLEVEL} - logging-filter = "akka.event.slf4j.Slf4jLoggingFilter" + logging-filter = "org.apache.pekko.event.slf4j.Slf4jLoggingFilter" log-dead-letters = off log-dead-letters-during-shutdown = off - // akka-http configuration + // pekko-http configuration http { server { # The requested maximum length of the queue of incoming connections. @@ -143,10 +143,10 @@ akka { # Modify to tweak client settings for host connection pools only. # # IMPORTANT: - # Please note that this section mirrors `akka.http.client` however is used only for pool-based APIs, + # Please note that this section mirrors `pekko.http.client` however is used only for pool-based APIs, # such as `Http().superPool` or `Http().singleRequest`. client = { - # no overrides, see `akka.http.client` for used values + # no overrides, see `pekko.http.client` for used values } } } @@ -183,7 +183,7 @@ knora-blocking-dispatcher { throughput = 1 } -akka-http-cors { +pekko-http-cors { # If enabled, allow generic requests (that are outside the scope of the specification) # to pass through the directive. Else, strict CORS filtering is applied and any @@ -237,11 +237,11 @@ app { print-extended-config = false // If true, an extended list of configuration parameters will be printed out at startup. print-extended-config = ${?KNORA_WEBAPI_PRINT_EXTENDED_CONFIG} - // default ask timeout. can be same or lower then akka.http.server.request-timeout. + // default ask timeout. can be same or lower then pekko.http.server.request-timeout. default-timeout = 120 minutes // a timeout here should never happen // If true, log all messages sent from and received by routes. Since messages are logged at DEBUG level, you will - // need to set loglevel = "DEBUG" in the akka section of this file, and in logback.xml. + // need to set loglevel = "DEBUG" in the pekko section of this file, and in logback.xml. dump-messages = false show-internal-errors = true // If true, clients will see error messages from internal errors. Useful for debugging. If false, those error messages will appear only in the log. @@ -451,10 +451,10 @@ app { host = "localhost" host = ${?KNORA_WEBAPI_TRIPLESTORE_HOST} - // timeout for triplestore queries. can be same or lower then akka.http.server.request-timeout. + // timeout for triplestore queries. can be same or lower then pekko.http.server.request-timeout. query-timeout = 20 seconds - // timeout for Gravsearch queries. can be same or lower then akka.http.server.request-timeout. + // timeout for Gravsearch queries. can be same or lower then pekko.http.server.request-timeout. gravsearch-timeout = 120 seconds // triplestore auto init. initialize triplestore at startup if necessary. diff --git a/webapi/src/main/scala/org/knora/webapi/RdfMediaTypes.scala b/webapi/src/main/scala/org/knora/webapi/RdfMediaTypes.scala index 0bfd386a96..256f434093 100644 --- a/webapi/src/main/scala/org/knora/webapi/RdfMediaTypes.scala +++ b/webapi/src/main/scala/org/knora/webapi/RdfMediaTypes.scala @@ -5,10 +5,12 @@ package org.knora.webapi -import akka.http.scaladsl.model.ContentType -import akka.http.scaladsl.model.HttpCharsets -import akka.http.scaladsl.model.MediaType -import akka.http.scaladsl.model.MediaTypes +import org.apache.pekko + +import pekko.http.scaladsl.model.ContentType +import pekko.http.scaladsl.model.HttpCharsets +import pekko.http.scaladsl.model.MediaType +import pekko.http.scaladsl.model.MediaTypes /** * Represents media types supported by the Knora API server for representing RDF data, and provides diff --git a/webapi/src/main/scala/org/knora/webapi/core/ActorSystem.scala b/webapi/src/main/scala/org/knora/webapi/core/ActorSystem.scala index 7434d1a4db..8bbeb6ef59 100644 --- a/webapi/src/main/scala/org/knora/webapi/core/ActorSystem.scala +++ b/webapi/src/main/scala/org/knora/webapi/core/ActorSystem.scala @@ -5,7 +5,7 @@ package org.knora.webapi.core -import akka.actor +import org.apache.pekko import zio._ import zio.macros.accessible @@ -14,9 +14,11 @@ import scala.concurrent.ExecutionContext import org.knora.webapi.config.AppConfig import org.knora.webapi.store.cache.settings.CacheServiceSettings +import pekko.actor + @accessible trait ActorSystem { - val system: akka.actor.ActorSystem + val system: pekko.actor.ActorSystem val cacheServiceSettings: CacheServiceSettings } @@ -25,7 +27,7 @@ object ActorSystem { private def acquire(executionContext: ExecutionContext): URIO[Any, actor.ActorSystem] = ZIO .attempt( - akka.actor.ActorSystem( + pekko.actor.ActorSystem( name = "webapi", config = None, classLoader = None, @@ -35,7 +37,7 @@ object ActorSystem { .zipLeft(ZIO.logInfo(">>> Acquire Actor System <<<")) .orDie - private def release(system: akka.actor.ActorSystem): URIO[Any, actor.Terminated] = + private def release(system: pekko.actor.ActorSystem): URIO[Any, actor.Terminated] = ZIO .fromFuture(_ => system.terminate()) .zipLeft(ZIO.logInfo(">>> Release Actor System <<<")) @@ -48,7 +50,7 @@ object ActorSystem { context <- ZIO.executor.map(_.asExecutionContext) actorSystem <- ZIO.acquireRelease(acquire(context))(release) } yield new ActorSystem { - override val system: akka.actor.ActorSystem = actorSystem + override val system: pekko.actor.ActorSystem = actorSystem override val cacheServiceSettings: CacheServiceSettings = new CacheServiceSettings(config) } } diff --git a/webapi/src/main/scala/org/knora/webapi/core/AppRouter.scala b/webapi/src/main/scala/org/knora/webapi/core/AppRouter.scala index b62bf3402e..939b484a94 100644 --- a/webapi/src/main/scala/org/knora/webapi/core/AppRouter.scala +++ b/webapi/src/main/scala/org/knora/webapi/core/AppRouter.scala @@ -5,9 +5,7 @@ package org.knora.webapi.core -import akka.actor.ActorRef -import akka.actor.Props -import akka.routing.RoundRobinPool +import org.apache.pekko import zio._ import zio.macros.accessible @@ -23,9 +21,12 @@ import org.knora.webapi.slice.ontology.domain.service.CardinalityService import org.knora.webapi.slice.ontology.domain.service.OntologyRepo import org.knora.webapi.slice.ontology.repo.service.OntologyCache +import pekko.actor.{ActorRef, Props} +import pekko.routing.RoundRobinPool + @accessible trait AppRouter { - val system: akka.actor.ActorSystem + val system: pekko.actor.ActorSystem val ref: ActorRef } @@ -62,7 +63,7 @@ object AppRouter { with StandoffTagUtilV2 ] } yield new AppRouter { - implicit val system: akka.actor.ActorSystem = as.system + implicit val system: org.apache.pekko.actor.ActorSystem = as.system val ref: ActorRef = system.actorOf( Props( diff --git a/webapi/src/main/scala/org/knora/webapi/core/HttpServer.scala b/webapi/src/main/scala/org/knora/webapi/core/HttpServer.scala index f5ea928fb0..cb18700c42 100644 --- a/webapi/src/main/scala/org/knora/webapi/core/HttpServer.scala +++ b/webapi/src/main/scala/org/knora/webapi/core/HttpServer.scala @@ -5,13 +5,15 @@ package org.knora.webapi.core -import akka.http.scaladsl.Http +import org.apache.pekko import zio._ import org.knora.webapi.config.AppConfig import org.knora.webapi.core import org.knora.webapi.routing.ApiRoutes +import pekko.http.scaladsl.Http + /** * The Akka based HTTP server */ @@ -27,7 +29,7 @@ object HttpServer { config <- ZIO.service[AppConfig] apiRoutes <- ZIO.service[ApiRoutes] binding <- { - implicit val system: akka.actor.ActorSystem = as.system + implicit val system: pekko.actor.ActorSystem = as.system ZIO.acquireRelease { ZIO diff --git a/webapi/src/main/scala/org/knora/webapi/core/MessageRelay.scala b/webapi/src/main/scala/org/knora/webapi/core/MessageRelay.scala index 3d9cbea8e9..18724f1955 100644 --- a/webapi/src/main/scala/org/knora/webapi/core/MessageRelay.scala +++ b/webapi/src/main/scala/org/knora/webapi/core/MessageRelay.scala @@ -19,7 +19,7 @@ trait RelayedMessage extends ResponderRequest /** * Central component which is capable of relaying message to subscribed [[MessageHandler]]s. - * Should replace the ask pattern with the [[akka.actor.ActorRef]] to our [[org.knora.webapi.core.actors.RoutingActor]] + * Should replace the ask pattern with the [[pekko.actor.ActorRef]] to our [[org.knora.webapi.core.actors.RoutingActor]] * in [[org.knora.webapi.responders.Responder]]s which are migrated to [[ZIO]]. * * This is only meant to be replacing the [[org.knora.webapi.core.actors.RoutingActor]] short term. diff --git a/webapi/src/main/scala/org/knora/webapi/core/actors/RoutingActor.scala b/webapi/src/main/scala/org/knora/webapi/core/actors/RoutingActor.scala index ee29f9b182..c3500ef307 100644 --- a/webapi/src/main/scala/org/knora/webapi/core/actors/RoutingActor.scala +++ b/webapi/src/main/scala/org/knora/webapi/core/actors/RoutingActor.scala @@ -5,7 +5,7 @@ package org.knora.webapi.core.actors -import akka.actor.Actor +import org.apache.pekko import zio._ import dsp.errors.UnexpectedMessageException @@ -22,6 +22,8 @@ import org.knora.webapi.slice.ontology.domain.service.OntologyRepo import org.knora.webapi.slice.ontology.repo.service.OntologyCache import org.knora.webapi.util.ActorUtil +import pekko.actor.Actor + final case class RoutingActor( messageRelay: MessageRelay, implicit val runtime: Runtime[ diff --git a/webapi/src/main/scala/org/knora/webapi/http/directives/DSPApiDirectives.scala b/webapi/src/main/scala/org/knora/webapi/http/directives/DSPApiDirectives.scala index faf2c7c0e7..e6bf352b58 100644 --- a/webapi/src/main/scala/org/knora/webapi/http/directives/DSPApiDirectives.scala +++ b/webapi/src/main/scala/org/knora/webapi/http/directives/DSPApiDirectives.scala @@ -5,16 +5,18 @@ package org.knora.webapi.http.directives -import akka.http.scaladsl.server -import akka.http.scaladsl.server.Directives.handleExceptions -import akka.http.scaladsl.server.Directives.handleRejections -import akka.http.scaladsl.server.ExceptionHandler -import akka.http.scaladsl.server.RejectionHandler -import ch.megard.akka.http.cors.scaladsl.CorsDirectives +import org.apache.pekko +import org.apache.pekko.http.cors.scaladsl.CorsDirectives import org.knora.webapi.config.AppConfig import org.knora.webapi.http.handler.KnoraExceptionHandler +import pekko.http.scaladsl.server +import pekko.http.scaladsl.server.Directives.handleExceptions +import pekko.http.scaladsl.server.Directives.handleRejections +import pekko.http.scaladsl.server.ExceptionHandler +import pekko.http.scaladsl.server.RejectionHandler + /** * DSP-API HTTP directives, used by wrapping around a routes, to influence * rejections and exception handling diff --git a/webapi/src/main/scala/org/knora/webapi/http/handler/KnoraExceptionHandler.scala b/webapi/src/main/scala/org/knora/webapi/http/handler/KnoraExceptionHandler.scala index 9a157783ca..dfd19eb1c2 100644 --- a/webapi/src/main/scala/org/knora/webapi/http/handler/KnoraExceptionHandler.scala +++ b/webapi/src/main/scala/org/knora/webapi/http/handler/KnoraExceptionHandler.scala @@ -5,11 +5,8 @@ package org.knora.webapi.http.handler -import akka.http.scaladsl.model._ -import akka.http.scaladsl.server.Directives.complete -import akka.http.scaladsl.server.Directives.extractRequest -import akka.http.scaladsl.server.ExceptionHandler import com.typesafe.scalalogging.LazyLogging +import org.apache.pekko import spray.json.JsObject import spray.json.JsString import spray.json.JsValue @@ -23,8 +20,13 @@ import org.knora.webapi.messages.util.rdf.JsonLDDocument import org.knora.webapi.messages.util.rdf.JsonLDObject import org.knora.webapi.messages.util.rdf.JsonLDString +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.server.Directives.complete +import pekko.http.scaladsl.server.Directives.extractRequest +import pekko.http.scaladsl.server.ExceptionHandler + /** - * The Knora exception handler is used by akka-http to convert any exceptions thrown during route processing + * The Knora exception handler is used by pekko-http to convert any exceptions thrown during route processing * into HttpResponses. It is brought implicitly into scope by the application actor. */ object KnoraExceptionHandler extends LazyLogging { diff --git a/webapi/src/main/scala/org/knora/webapi/http/status/ApiStatusCodesADM.scala b/webapi/src/main/scala/org/knora/webapi/http/status/ApiStatusCodesADM.scala index 066366ca73..b48db5bd0f 100644 --- a/webapi/src/main/scala/org/knora/webapi/http/status/ApiStatusCodesADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/http/status/ApiStatusCodesADM.scala @@ -5,11 +5,13 @@ package org.knora.webapi.http.status -import akka.http.scaladsl.model.StatusCode -import akka.http.scaladsl.model.StatusCodes +import org.apache.pekko import dsp.errors._ +import pekko.http.scaladsl.model.StatusCode +import pekko.http.scaladsl.model.StatusCodes + /** * The possible values for the HTTP status code that is returned as part of each Knora ADM response. */ diff --git a/webapi/src/main/scala/org/knora/webapi/http/status/ApiStatusCodesV2.scala b/webapi/src/main/scala/org/knora/webapi/http/status/ApiStatusCodesV2.scala index b3dd1c0756..890bd1124b 100644 --- a/webapi/src/main/scala/org/knora/webapi/http/status/ApiStatusCodesV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/http/status/ApiStatusCodesV2.scala @@ -5,12 +5,14 @@ package org.knora.webapi.http.status -import akka.http.scaladsl.model.StatusCode -import akka.http.scaladsl.model.StatusCodes +import org.apache.pekko import dsp.errors._ import org.knora.webapi.store.triplestore.errors.TriplestoreTimeoutException +import pekko.http.scaladsl.model.StatusCode +import pekko.http.scaladsl.model.StatusCodes + /** * The possible values for the HTTP status code that is returned as part of each Knora API v2 response. */ diff --git a/webapi/src/main/scala/org/knora/webapi/http/version/ServerVersion.scala b/webapi/src/main/scala/org/knora/webapi/http/version/ServerVersion.scala index fc3141d7a7..59f44390a5 100644 --- a/webapi/src/main/scala/org/knora/webapi/http/version/ServerVersion.scala +++ b/webapi/src/main/scala/org/knora/webapi/http/version/ServerVersion.scala @@ -5,19 +5,21 @@ package org.knora.webapi.http.version -import akka.http.scaladsl.model.headers.Server -import akka.http.scaladsl.server.Directives.respondWithHeader -import akka.http.scaladsl.server.Route +import org.apache.pekko + +import pekko.http.scaladsl.model.headers.Server +import pekko.http.scaladsl.server.Directives.respondWithHeader +import pekko.http.scaladsl.server.Route /** * This object provides methods that can be used to add the [[Server]] header - * to an [[akka.http.scaladsl.model.HttpResponse]]. + * to an [[pekko.http.scaladsl.model.HttpResponse]]. */ object ServerVersion { - private val ApiNameAndVersion = s"${BuildInfo.name}/${BuildInfo.version}" - private val AkkaNameAndVersion = s"akka-http/${BuildInfo.akkaHttp}" - private val AllProducts = ApiNameAndVersion + " " + AkkaNameAndVersion + private val ApiNameAndVersion = s"${BuildInfo.name}/${BuildInfo.version}" + private val PekkoNameAndVersion = s"pekko-http/${BuildInfo.pekkoHttp}" + private val AllProducts = ApiNameAndVersion + " " + PekkoNameAndVersion def serverVersionHeader: Server = Server(products = AllProducts) diff --git a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/groupsmessages/GroupsMessagesADM.scala b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/groupsmessages/GroupsMessagesADM.scala index 66d5573ad0..62bb511315 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/groupsmessages/GroupsMessagesADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/groupsmessages/GroupsMessagesADM.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.admin.responder.groupsmessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json.DefaultJsonProtocol import spray.json.JsValue import spray.json.JsonFormat @@ -24,6 +24,8 @@ import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectsADMJso import org.knora.webapi.messages.admin.responder.usersmessages.UserADM import org.knora.webapi.messages.store.triplestoremessages.StringLiteralV2 +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // API requests diff --git a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/listsmessages/ListsMessagesADM.scala b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/listsmessages/ListsMessagesADM.scala index b685722f15..85a3c87267 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/listsmessages/ListsMessagesADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/listsmessages/ListsMessagesADM.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.admin.responder.listsmessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json._ import java.util.UUID @@ -26,6 +26,8 @@ import org.knora.webapi.messages.store.triplestoremessages.StringLiteralSequence import org.knora.webapi.messages.store.triplestoremessages.StringLiteralV2 import org.knora.webapi.messages.store.triplestoremessages.TriplestoreJsonProtocol +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + /////////////// API requests /** diff --git a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/permissionsmessages/PermissionsMessagesADM.scala b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/permissionsmessages/PermissionsMessagesADM.scala index 86ad124b4f..8cc11eb1ae 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/permissionsmessages/PermissionsMessagesADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/permissionsmessages/PermissionsMessagesADM.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.admin.responder.permissionsmessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json._ import java.util.UUID @@ -25,6 +25,8 @@ import org.knora.webapi.messages.store.triplestoremessages.TriplestoreJsonProtoc import org.knora.webapi.messages.traits.Jsonable import org.knora.webapi.slice.resourceinfo.domain.InternalIri +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // API requests diff --git a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADM.scala b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADM.scala index c6cf1f9d8a..b81203ee17 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/projectsmessages/ProjectsMessagesADM.scala @@ -5,8 +5,8 @@ package org.knora.webapi.messages.admin.responder.projectsmessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport import org.apache.commons.lang3.builder.HashCodeBuilder +import org.apache.pekko import spray.json.DefaultJsonProtocol import spray.json.JsValue import spray.json.JsonFormat @@ -31,6 +31,8 @@ import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectIdentif import org.knora.webapi.messages.admin.responder.usersmessages.UserADM import org.knora.webapi.messages.store.triplestoremessages.TriplestoreJsonProtocol +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // API requests diff --git a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/sipimessages/SipiMessagesADM.scala b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/sipimessages/SipiMessagesADM.scala index afc8f2967b..d12cb380ab 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/sipimessages/SipiMessagesADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/sipimessages/SipiMessagesADM.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.admin.responder.sipimessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json.DefaultJsonProtocol import spray.json.JsValue import spray.json.NullOptions @@ -18,6 +18,8 @@ import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectRestric import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectsADMJsonProtocol import org.knora.webapi.messages.admin.responder.usersmessages.UserADM +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + /** * An abstract trait representing a Knora v1 API request message that can be sent to `SipiResponderV2`. */ diff --git a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/storesmessages/StoresMessagesADM.scala b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/storesmessages/StoresMessagesADM.scala index f26c6b3fa5..864eec9bd8 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/storesmessages/StoresMessagesADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/storesmessages/StoresMessagesADM.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.admin.responder.storesmessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json._ import org.knora.webapi.core.RelayedMessage @@ -14,6 +14,8 @@ import org.knora.webapi.messages.admin.responder.KnoraResponseADM import org.knora.webapi.messages.store.triplestoremessages.RdfDataObject import org.knora.webapi.messages.store.triplestoremessages.TriplestoreJsonProtocol +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Messages diff --git a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADM.scala b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADM.scala index d626f0bf19..84f658f2bd 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/admin/responder/usersmessages/UsersMessagesADM.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.admin.responder.usersmessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json._ import zio.prelude.Validation @@ -31,6 +31,8 @@ import org.knora.webapi.messages.admin.responder.permissionsmessages.Permissions import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectADM import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectsADMJsonProtocol +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // API requests diff --git a/webapi/src/main/scala/org/knora/webapi/messages/store/sipimessages/SipiMessages.scala b/webapi/src/main/scala/org/knora/webapi/messages/store/sipimessages/SipiMessages.scala index 1abad36fb0..511f86a81f 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/store/sipimessages/SipiMessages.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/store/sipimessages/SipiMessages.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.store.sipimessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json._ import org.knora.webapi.core.RelayedMessage @@ -13,6 +13,8 @@ import org.knora.webapi.messages.admin.responder.usersmessages.UserADM import org.knora.webapi.messages.store.StoreRequest import org.knora.webapi.messages.traits.RequestWithSender +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + /** * An abstract trait for messages that can be sent to the [[org.knora.webapi.store.iiif.api.IIIFService]] */ diff --git a/webapi/src/main/scala/org/knora/webapi/messages/store/triplestoremessages/FusekiAPI.scala b/webapi/src/main/scala/org/knora/webapi/messages/store/triplestoremessages/FusekiAPI.scala index 4045917547..36cf353695 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/store/triplestoremessages/FusekiAPI.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/store/triplestoremessages/FusekiAPI.scala @@ -5,11 +5,13 @@ package org.knora.webapi.messages.store.triplestoremessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json.DefaultJsonProtocol import spray.json.JsonFormat import spray.json.RootJsonFormat +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + /** * Represents a response from Fuseki about the state of the Fuseki server. * diff --git a/webapi/src/main/scala/org/knora/webapi/messages/store/triplestoremessages/TriplestoreMessages.scala b/webapi/src/main/scala/org/knora/webapi/messages/store/triplestoremessages/TriplestoreMessages.scala index c136ce86e5..bf7e64b81a 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/store/triplestoremessages/TriplestoreMessages.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/store/triplestoremessages/TriplestoreMessages.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.store.triplestoremessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json._ import zio._ @@ -20,6 +20,8 @@ import org.knora.webapi.messages._ import org.knora.webapi.messages.util.ErrorHandlingMap import org.knora.webapi.messages.util.rdf._ +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + /** * A response to a [[org.knora.webapi.store.triplestore.api.TriplestoreService.Queries.Construct]] query. * diff --git a/webapi/src/main/scala/org/knora/webapi/messages/util/rdf/RdfFormatUtil.scala b/webapi/src/main/scala/org/knora/webapi/messages/util/rdf/RdfFormatUtil.scala index 7bd5e0fb8a..571b6034eb 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/util/rdf/RdfFormatUtil.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/util/rdf/RdfFormatUtil.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.util.rdf -import akka.http.scaladsl.model.MediaType +import org.apache.pekko import java.io.BufferedInputStream import java.io.BufferedOutputStream @@ -24,6 +24,8 @@ import org.knora.webapi.RdfMediaTypes import org.knora.webapi.SchemaOption import org.knora.webapi.SchemaOptions +import pekko.http.scaladsl.model.MediaType + /** * A trait for supported RDF formats. */ diff --git a/webapi/src/main/scala/org/knora/webapi/messages/util/search/SparqlQuery.scala b/webapi/src/main/scala/org/knora/webapi/messages/util/search/SparqlQuery.scala index ae885813a6..312b5cbe94 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/util/search/SparqlQuery.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/util/search/SparqlQuery.scala @@ -5,8 +5,7 @@ package org.knora.webapi.messages.util.search -import akka.http.scaladsl.model.HttpCharsets -import akka.http.scaladsl.model.MediaType +import org.apache.pekko import dsp.errors.GravsearchException import org.knora.webapi._ @@ -15,6 +14,9 @@ import org.knora.webapi.messages.OntologyConstants import org.knora.webapi.messages.SmartIri import org.knora.webapi.messages.StringFormatter +import pekko.http.scaladsl.model.HttpCharsets +import pekko.http.scaladsl.model.MediaType + /** * Constants used in processing SPARQL queries. */ diff --git a/webapi/src/main/scala/org/knora/webapi/messages/util/search/gravsearch/prequery/GravsearchQueryOptimisationFactory.scala b/webapi/src/main/scala/org/knora/webapi/messages/util/search/gravsearch/prequery/GravsearchQueryOptimisationFactory.scala index eb19f9c19b..f5966a1567 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/util/search/gravsearch/prequery/GravsearchQueryOptimisationFactory.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/util/search/gravsearch/prequery/GravsearchQueryOptimisationFactory.scala @@ -53,18 +53,16 @@ object GravsearchQueryOptimisationFactory { typeInspectionResult: GravsearchTypeInspectionResult, querySchema: ApiV2Schema ): GravsearchQueryOptimisationFeature = - new GravsearchQueryOptimisationFeature( - typeInspectionResult: GravsearchTypeInspectionResult, - querySchema: ApiV2Schema - ) { + new GravsearchQueryOptimisationFeature(typeInspectionResult, querySchema) { override def optimiseQueryPatterns(patterns: Seq[QueryPattern]): Seq[QueryPattern] = - new ReorderPatternsByDependencyOptimisationFeature(typeInspectionResult, querySchema).optimiseQueryPatterns( - new RemoveEntitiesInferredFromPropertyOptimisationFeature(typeInspectionResult, querySchema) - .optimiseQueryPatterns( - new RemoveRedundantKnoraApiResourceOptimisationFeature(typeInspectionResult, querySchema) - .optimiseQueryPatterns(patterns) - ) - ) + new ReorderPatternsByDependencyOptimisationFeature(this.typeInspectionResult, querySchema) + .optimiseQueryPatterns( + new RemoveEntitiesInferredFromPropertyOptimisationFeature(this.typeInspectionResult, querySchema) + .optimiseQueryPatterns( + new RemoveRedundantKnoraApiResourceOptimisationFeature(this.typeInspectionResult, querySchema) + .optimiseQueryPatterns(patterns) + ) + ) } } diff --git a/webapi/src/main/scala/org/knora/webapi/messages/util/search/gravsearch/types/InferringGravsearchTypeInspector.scala b/webapi/src/main/scala/org/knora/webapi/messages/util/search/gravsearch/types/InferringGravsearchTypeInspector.scala index 6e258d2aee..4bae3fb267 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/util/search/gravsearch/types/InferringGravsearchTypeInspector.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/util/search/gravsearch/types/InferringGravsearchTypeInspector.scala @@ -5,8 +5,8 @@ package org.knora.webapi.messages.util.search.gravsearch.types -import akka.event.LogSource import com.typesafe.scalalogging.LazyLogging +import org.apache.pekko import zio.Task import zio.ZIO @@ -28,6 +28,8 @@ import org.knora.webapi.messages.v2.responder.ontologymessages.EntityInfoGetResp import org.knora.webapi.messages.v2.responder.ontologymessages.ReadClassInfoV2 import org.knora.webapi.messages.v2.responder.ontologymessages.ReadPropertyInfoV2 +import pekko.event.LogSource + /** * A Gravsearch type inspector that infers types, relying on information from the relevant ontologies. */ @@ -1660,7 +1662,7 @@ object InferringGravsearchTypeInspector { /** * Provides the string representation of the companion class in log messages. * - * See [[https://doc.akka.io/docs/akka/current/logging.html#translating-log-source-to-string-and-class]]. + * See [[https://doc.pekko.io/docs/akka/current/logging.html#translating-log-source-to-string-and-class]]. */ implicit val logSource: LogSource[AnyRef] = (o: AnyRef) => o.getClass.getName } diff --git a/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/KnoraRequestV2.scala b/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/KnoraRequestV2.scala index a460349a54..8b0b03162d 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/KnoraRequestV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/KnoraRequestV2.scala @@ -5,9 +5,9 @@ package org.knora.webapi.messages.v2.responder -import akka.actor.ActorRef -import akka.util.Timeout import com.typesafe.scalalogging.Logger +import org.apache.pekko.actor.ActorRef +import org.apache.pekko.util.Timeout import java.util.UUID import scala.concurrent.ExecutionContext diff --git a/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/ontologymessages/OntologyMessagesV2.scala b/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/ontologymessages/OntologyMessagesV2.scala index ee31565771..a22cee5a5a 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/ontologymessages/OntologyMessagesV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/ontologymessages/OntologyMessagesV2.scala @@ -5,10 +5,9 @@ package org.knora.webapi.messages.v2.responder.ontologymessages -import akka.actor.ActorRef -import akka.util.Timeout import com.typesafe.scalalogging.Logger import org.apache.commons.lang3.builder.HashCodeBuilder +import org.apache.pekko import zio._ import java.time.Instant @@ -43,6 +42,9 @@ import org.knora.webapi.messages.v2.responder.ontologymessages.OwlCardinality.Ow import org.knora.webapi.messages.v2.responder.standoffmessages.StandoffDataTypeClasses import org.knora.webapi.slice.ontology.domain.model.Cardinality +import pekko.actor.ActorRef +import pekko.util.Timeout + /** * An abstract trait for messages that can be sent to `ResourcesResponderV2`. */ diff --git a/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/standoffmessages/StandoffMessagesV2.scala b/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/standoffmessages/StandoffMessagesV2.scala index c10832838d..812eb311f2 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/standoffmessages/StandoffMessagesV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/v2/responder/standoffmessages/StandoffMessagesV2.scala @@ -5,9 +5,9 @@ package org.knora.webapi.messages.v2.responder.standoffmessages -import akka.actor.ActorRef -import akka.util.Timeout import com.typesafe.scalalogging.Logger +import org.apache.pekko.actor.ActorRef +import org.apache.pekko.util.Timeout import java.time.Instant import java.util.UUID diff --git a/webapi/src/main/scala/org/knora/webapi/messages/v2/routing/authenticationmessages/AuthenticationMessagesV2.scala b/webapi/src/main/scala/org/knora/webapi/messages/v2/routing/authenticationmessages/AuthenticationMessagesV2.scala index a3b3ef30bd..f2cb03f3c8 100644 --- a/webapi/src/main/scala/org/knora/webapi/messages/v2/routing/authenticationmessages/AuthenticationMessagesV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/messages/v2/routing/authenticationmessages/AuthenticationMessagesV2.scala @@ -5,7 +5,7 @@ package org.knora.webapi.messages.v2.routing.authenticationmessages -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json._ import zio.json.DeriveJsonCodec import zio.json.JsonCodec @@ -14,6 +14,8 @@ import dsp.errors.BadRequestException import org.knora.webapi.IRI import org.knora.webapi.messages.admin.responder.usersmessages.UserIdentifierADM +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // API requests diff --git a/webapi/src/main/scala/org/knora/webapi/responders/v2/ValuesResponderV2.scala b/webapi/src/main/scala/org/knora/webapi/responders/v2/ValuesResponderV2.scala index 9453337fd4..7b0231345a 100644 --- a/webapi/src/main/scala/org/knora/webapi/responders/v2/ValuesResponderV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/responders/v2/ValuesResponderV2.scala @@ -5,7 +5,7 @@ package org.knora.webapi.responders.v2 -import akka.http.scaladsl.util.FastFuture +import org.apache.pekko import zio.Task import zio.ZIO import zio._ @@ -48,6 +48,8 @@ import org.knora.webapi.store.triplestore.api.TriplestoreService.Queries.Select import org.knora.webapi.store.triplestore.api.TriplestoreService.Queries.Update import org.knora.webapi.util.ZioHelper +import pekko.http.scaladsl.util.FastFuture + /** * Handles requests to read and write Knora values. */ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/ApiRoutes.scala b/webapi/src/main/scala/org/knora/webapi/routing/ApiRoutes.scala index 8b4dfee293..6253aaf810 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/ApiRoutes.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/ApiRoutes.scala @@ -5,11 +5,15 @@ package org.knora.webapi.routing -import akka.actor -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route -import ch.megard.akka.http.cors.scaladsl.CorsDirectives -import ch.megard.akka.http.cors.scaladsl.settings.CorsSettings +import org.apache.pekko +import org.apache.pekko.http.cors.scaladsl.CorsDirectives +import org.apache.pekko.http.scaladsl.model.HttpMethods.DELETE +import org.apache.pekko.http.scaladsl.model.HttpMethods.GET +import org.apache.pekko.http.scaladsl.model.HttpMethods.HEAD +import org.apache.pekko.http.scaladsl.model.HttpMethods.OPTIONS +import org.apache.pekko.http.scaladsl.model.HttpMethods.PATCH +import org.apache.pekko.http.scaladsl.model.HttpMethods.POST +import org.apache.pekko.http.scaladsl.model.HttpMethods.PUT import zio._ import scala.concurrent.ExecutionContext @@ -32,6 +36,11 @@ import org.knora.webapi.slice.ontology.api.service.RestCardinalityService import org.knora.webapi.slice.resourceinfo.api.RestResourceInfoService import org.knora.webapi.slice.resourceinfo.domain.IriConverter +import pekko.actor +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.Route +import pekko.http.cors.scaladsl.settings.CorsSettings + trait ApiRoutes { val routes: Route } @@ -82,7 +91,7 @@ object ApiRoutes { /** * All routes composed together and CORS activated based on the - * the configuration in application.conf (akka-http-cors). + * the configuration in application.conf (pekko-http-cors). * * ALL requests go through each of the routes in ORDER. * The FIRST matching route is used for handling a request. @@ -113,7 +122,10 @@ private final case class ApiRoutesImpl( logDuration { ServerVersion.addServerHeader { DSPApiDirectives.handleErrors(appConfig) { - CorsDirectives.cors(CorsSettings(routeData.system)) { + CorsDirectives.cors( + CorsSettings(routeData.system) + .withAllowedMethods(List(GET, PUT, POST, DELETE, PATCH, HEAD, OPTIONS)) + ) { DSPApiDirectives.handleErrors(appConfig) { HealthRoute().makeRoute ~ VersionRoute().makeRoute ~ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/AroundDirectives.scala b/webapi/src/main/scala/org/knora/webapi/routing/AroundDirectives.scala index 90b6b7b112..4b3e834812 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/AroundDirectives.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/AroundDirectives.scala @@ -5,18 +5,20 @@ package org.knora.webapi.routing -import akka.http.scaladsl.server.Directive0 -import akka.http.scaladsl.server.Directives._ +import org.apache.pekko import org.knora.webapi.instrumentation.InstrumentationSupport +import pekko.http.scaladsl.server.Directive0 +import pekko.http.scaladsl.server.Directives._ + /** - * Akka HTTP directives which can be wrapped around a [[akka.http.scaladsl.server.Route]]]. + * Pekko HTTP directives which can be wrapped around a [[pekko.http.scaladsl.server.Route]]]. */ trait AroundDirectives extends InstrumentationSupport { /** - * When wrapped around a [[akka.http.scaladsl.server.Route]], logs the time it took for the route to run. + * When wrapped around a [[pekko.http.scaladsl.server.Route]], logs the time it took for the route to run. */ def logDuration: Directive0 = extractRequestContext.flatMap { ctx => val start = System.currentTimeMillis() diff --git a/webapi/src/main/scala/org/knora/webapi/routing/Authenticator.scala b/webapi/src/main/scala/org/knora/webapi/routing/Authenticator.scala index df2be13c4f..0e6bd87849 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/Authenticator.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/Authenticator.scala @@ -5,14 +5,9 @@ package org.knora.webapi.routing -import akka.http.scaladsl.model._ -import akka.http.scaladsl.model.headers -import akka.http.scaladsl.model.headers.HttpCookie -import akka.http.scaladsl.model.headers.HttpCookiePair -import akka.http.scaladsl.server.RequestContext -import akka.util.ByteString import com.typesafe.scalalogging.Logger import org.apache.commons.codec.binary.Base32 +import org.apache.pekko import org.slf4j.LoggerFactory import spray.json._ import zio._ @@ -38,6 +33,13 @@ import org.knora.webapi.routing.Authenticator.BAD_CRED_USER_INACTIVE import org.knora.webapi.routing.Authenticator.BAD_CRED_USER_NOT_FOUND import org.knora.webapi.util.cache.CacheUtil +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.model.headers +import pekko.http.scaladsl.model.headers.HttpCookie +import pekko.http.scaladsl.model.headers.HttpCookiePair +import pekko.http.scaladsl.server.RequestContext +import pekko.util.ByteString + /** * This trait is used in routes that need authentication support. It provides methods that use the [[RequestContext]] * to extract credentials, authenticate provided credentials, and look up cached credentials through the use of the diff --git a/webapi/src/main/scala/org/knora/webapi/routing/HealthRoute.scala b/webapi/src/main/scala/org/knora/webapi/routing/HealthRoute.scala index 1d26746146..e62731c97f 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/HealthRoute.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/HealthRoute.scala @@ -5,10 +5,7 @@ package org.knora.webapi.routing -import akka.http.scaladsl.model._ -import akka.http.scaladsl.server.Directives.get -import akka.http.scaladsl.server.Directives.path -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import zio.json._ @@ -17,6 +14,11 @@ import org.knora.webapi.core.domain.AppState import org.knora.webapi.messages.util.KnoraSystemInstances import org.knora.webapi.util.LogAspect +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.server.Directives.get +import pekko.http.scaladsl.server.Directives.path +import pekko.http.scaladsl.server.Route + /** * Provides health check logic */ @@ -120,7 +122,7 @@ final case class HealthRoute()( } yield result } @@ LogAspect.logSpan("health-request") @@ LogAspect.logAnnotateCorrelationId() - // executing our effect and returning a future to Akka Http + // executing our effect and returning a future to Pekko HTTP Unsafe.unsafe { implicit u => val resF = runtime.unsafe.runToFuture(res) requestContext.complete(resF) diff --git a/webapi/src/main/scala/org/knora/webapi/routing/KnoraRoute.scala b/webapi/src/main/scala/org/knora/webapi/routing/KnoraRoute.scala index 4e2649100b..2c6029da7a 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/KnoraRoute.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/KnoraRoute.scala @@ -5,12 +5,8 @@ package org.knora.webapi.routing -import akka.actor.ActorRef -import akka.actor.ActorSystem -import akka.http.scaladsl.server.RequestContext -import akka.http.scaladsl.server.Route -import akka.util.Timeout import com.typesafe.scalalogging.Logger +import org.apache.pekko import zio._ import zio.prelude.Validation @@ -20,6 +16,12 @@ import scala.concurrent.Future import org.knora.webapi.config.AppConfig import org.knora.webapi.messages.StringFormatter +import pekko.actor.ActorRef +import pekko.actor.ActorSystem +import pekko.http.scaladsl.server.RequestContext +import pekko.http.scaladsl.server.Route +import pekko.util.Timeout + /** * Data that needs to be passed to each route. * @@ -27,7 +29,7 @@ import org.knora.webapi.messages.StringFormatter * @param appActor the main application actor. * @param appConfig the application's configuration. */ -case class KnoraRouteData(system: akka.actor.ActorSystem, appActor: akka.actor.ActorRef, appConfig: AppConfig) +case class KnoraRouteData(system: ActorSystem, appActor: ActorRef, appConfig: AppConfig) /** * An abstract class providing functionality that is commonly used in implementing Knora routes. diff --git a/webapi/src/main/scala/org/knora/webapi/routing/RejectingRoute.scala b/webapi/src/main/scala/org/knora/webapi/routing/RejectingRoute.scala index a2b9414c99..833d3074b9 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/RejectingRoute.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/RejectingRoute.scala @@ -5,10 +5,8 @@ package org.knora.webapi.routing -import akka.http.scaladsl.model.StatusCodes -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route import com.typesafe.scalalogging.Logger +import org.apache.pekko import zio._ import scala.concurrent.Future @@ -19,6 +17,10 @@ import org.knora.webapi.config.AppConfig import org.knora.webapi.core.State import org.knora.webapi.core.domain.AppState +import pekko.http.scaladsl.model.StatusCodes +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.Route + /** * A route used for rejecting requests to certain paths depending on the state of the app or the configuration. * diff --git a/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilADM.scala index 5f8701164e..9200f3067f 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilADM.scala @@ -5,13 +5,7 @@ package org.knora.webapi.routing -import akka.http.scaladsl.model.ContentTypes.`application/json` -import akka.http.scaladsl.model.StatusCodes.Accepted -import akka.http.scaladsl.model.StatusCodes.OK -import akka.http.scaladsl.model._ -import akka.http.scaladsl.server.RequestContext -import akka.http.scaladsl.server.RouteResult -import akka.util.ByteString +import org.apache.pekko import zio._ import zio.json.EncoderOps import zio.json.JsonEncoder @@ -31,6 +25,14 @@ import org.knora.webapi.messages.admin.responder.groupsmessages._ import org.knora.webapi.messages.admin.responder.projectsmessages._ import org.knora.webapi.messages.admin.responder.usersmessages._ +import pekko.http.scaladsl.model.ContentTypes.`application/json` +import pekko.http.scaladsl.model.StatusCodes.Accepted +import pekko.http.scaladsl.model.StatusCodes.OK +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.server.RequestContext +import pekko.http.scaladsl.server.RouteResult +import pekko.util.ByteString + /** * Convenience methods for Knora Admin routes. */ @@ -98,7 +100,7 @@ object RouteUtilADM { * Sends a message to a responder and completes the HTTP request by returning the response as JSON. * * @param requestTask A [[Task]] containing a [[KnoraRequestADM]] message that should be sent to the responder manager. - * @param requestContext The akka-http [[RequestContext]]. + * @param requestContext The pekko-http [[RequestContext]]. * @return a [[Future]] containing a [[RouteResult]]. */ def runJsonRouteZ[R]( @@ -111,7 +113,7 @@ object RouteUtilADM { * Sends a message to a responder and completes the HTTP request by returning the response as JSON. * * @param requestFuture A [[Task]] containing a [[KnoraRequestADM]] message that should be sent to the responder manager. - * @param requestContext The akka-http [[RequestContext]]. + * @param requestContext The pekko-http [[RequestContext]]. * @return a [[Future]] containing a [[RouteResult]]. */ def runJsonRouteF( diff --git a/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilV2.scala b/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilV2.scala index 107d5a08fa..08ec207b0e 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilV2.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing -import akka.http.scaladsl.model._ -import akka.http.scaladsl.server.RequestContext -import akka.http.scaladsl.server.RouteResult +import org.apache.pekko import zio._ import zio.prelude.Validation @@ -27,6 +25,10 @@ import org.knora.webapi.messages.v2.responder.KnoraResponseV2 import org.knora.webapi.messages.v2.responder.resourcemessages.ResourceTEIGetResponseV2 import org.knora.webapi.slice.resourceinfo.domain.IriConverter +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.server.RequestContext +import pekko.http.scaladsl.server.RouteResult + /** * Handles message formatting, content negotiation, and simple interactions with responders, on behalf of Knora routes. */ @@ -105,7 +107,7 @@ object RouteUtilV2 { * either in the HTTP header [[SCHEMA_HEADER]] or in the URL parameter [[SCHEMA_PARAM]]. * If no schema is specified in the request, the default of [[ApiV2Complex]] is returned. * - * @param ctx the akka-http [[RequestContext]]. + * @param ctx the pekko-http [[RequestContext]]. * @return the specified schema, or [[ApiV2Complex]] if no schema was specified in the request. */ def getOntologySchema(ctx: RequestContext): IO[BadRequestException, ApiV2Schema] = { @@ -126,7 +128,7 @@ object RouteUtilV2 { * or in the URL parameter [[MARKUP_PARAM]]. If no rendering is specified in the request, the * default of [[MarkupAsXml]] is returned. * - * @param requestContext the akka-http [[RequestContext]]. + * @param requestContext the pekko-http [[RequestContext]]. * @return the specified standoff rendering, or [[MarkupAsXml]] if no rendering was specified * in the request. */ @@ -184,7 +186,7 @@ object RouteUtilV2 { /** * Gets the project IRI specified in a Knora-specific HTTP header. * - * @param requestContext the akka-http [[RequestContext]]. + * @param requestContext the pekko-http [[RequestContext]]. * @return The specified project IRI, or [[None]] if no project header was included in the request. * Fails with a [[BadRequestException]] if the project IRI is invalid. */ @@ -200,7 +202,7 @@ object RouteUtilV2 { /** * Gets the required project IRI specified in a Knora-specific HTTP header [[PROJECT_HEADER]]. * - * @param requestContext The akka-http [[RequestContext]]. + * @param requestContext The pekko-http [[RequestContext]]. * @return The [[SmartIri]] of the project provided in the header. * Fails with a [[BadRequestException]] if the project IRI is invalid. * Fails with a [[BadRequestException]] if the project header is missing. @@ -215,7 +217,7 @@ object RouteUtilV2 { * Sends a message (resulting from a [[Future]]) to a responder and completes the HTTP request by returning the response as RDF. * * @param requestMessageF A [[Future]] containing a [[KnoraRequestV2]] message that should be evaluated. - * @param requestContext The akka-http [[RequestContext]]. + * @param requestContext The pekko-http [[RequestContext]]. * @param targetSchema The API schema that should be used in the response, default is [[ApiV2Complex]]. * @param schemaOptionsOption The schema options that should be used when processing the request. * Uses RouteUtilV2.getSchemaOptions if not present. @@ -238,7 +240,7 @@ object RouteUtilV2 { * Sends a message to a responder and completes the HTTP request by returning the response as RDF using content negotiation. * * @param requestZio A Task containing a [[KnoraRequestV2]] message that should be evaluated. - * @param requestContext The akka-http [[RequestContext]]. + * @param requestContext The pekko-http [[RequestContext]]. * @param targetSchemaTask The API schema that should be used in the response, default is [[ApiV2Complex]]. * @param schemaOptionsOption The schema options that should be used when processing the request. * Uses RouteUtilV2.getSchemaOptions if not present. @@ -260,7 +262,7 @@ object RouteUtilV2 { * The response is calculated by _unsafely_ running the `responseZio` in the provided [[zio.Runtime]] * * @param responseTask A [[Task]] containing a [[KnoraResponseV2]] message that will be run unsafe. - * @param requestContext The akka-http [[RequestContext]]. + * @param requestContext The pekko-http [[RequestContext]]. * @param targetSchemaTask The API schema that should be used in the response, default is ApiV2Complex. * @param schemaOptionsOption The schema options that should be used when processing the request. * Uses RouteUtilV2.getSchemaOptions if not present. @@ -269,7 +271,7 @@ object RouteUtilV2 { * * @tparam R The requirements for the response zio, must be present in the [[zio.Runtime]]. * - * @return a [[Future]] Containing the [[RouteResult]] for Akka HTTP. + * @return a [[Future]] Containing the [[RouteResult]] for Pekko HTTP. */ def completeResponse[R]( responseTask: ZIO[R, Throwable, KnoraResponseV2], @@ -294,7 +296,7 @@ object RouteUtilV2 { * Sends a message to a responder and completes the HTTP request by returning the response as TEI/XML. * * @param requestTask a [[Task]] containing a [[KnoraRequestV2]] message that should be sent to the responder manager. - * @param requestContext the akka-http [[RequestContext]]. + * @param requestContext the pekko-http [[RequestContext]]. * * @return a [[Future]] containing a [[RouteResult]]. */ @@ -344,11 +346,11 @@ object RouteUtilV2 { /** * Completes the HTTP request in the [[RequestContext]] by _unsafely_ running the ZIO. - * @param ctx The akka-http [[RequestContext]]. + * @param ctx The pekko-http [[RequestContext]]. * @param task The ZIO to run. * @param runtime The [[zio.Runtime]] used for executing the ZIO. * @tparam R The requirements for the ZIO, must be present in the [[zio.Runtime]]. - * @return A [[Future]] containing the [[RouteResult]] for Akka HTTP. + * @return A [[Future]] containing the [[RouteResult]] for Pekko HTTP. */ def complete[R](ctx: RequestContext, task: ZIO[R, Throwable, HttpResponse])(implicit runtime: Runtime[R] diff --git a/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilZ.scala b/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilZ.scala index 20a105b020..7755aeaba8 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilZ.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/RouteUtilZ.scala @@ -4,7 +4,8 @@ */ package org.knora.webapi.routing -import akka.http.scaladsl.server.RequestContext + +import org.apache.pekko import zio._ import java.net.URLDecoder @@ -19,6 +20,8 @@ import org.knora.webapi.messages.SmartIri import org.knora.webapi.messages.StringFormatter import org.knora.webapi.slice.resourceinfo.domain.IriConverter +import pekko.http.scaladsl.server.RequestContext + object RouteUtilZ { /** diff --git a/webapi/src/main/scala/org/knora/webapi/routing/VersionRoute.scala b/webapi/src/main/scala/org/knora/webapi/routing/VersionRoute.scala index db093d50ed..993418a046 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/VersionRoute.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/VersionRoute.scala @@ -5,15 +5,17 @@ package org.knora.webapi.routing -import akka.http.scaladsl.model._ -import akka.http.scaladsl.server.Directives.get -import akka.http.scaladsl.server.Directives.path -import akka.http.scaladsl.server.Route +import org.apache.pekko import spray.json.JsObject import spray.json.JsString import org.knora.webapi.http.version.BuildInfo +import pekko.http.scaladsl.model._ +import pekko.http.scaladsl.server.Directives.get +import pekko.http.scaladsl.server.Directives.path +import pekko.http.scaladsl.server.Route + /** * Provides the '/version' endpoint serving the components versions. */ @@ -28,12 +30,12 @@ final case class VersionRoute() { entity = HttpEntity( ContentTypes.`application/json`, JsObject( - "name" -> JsString("version"), - "webapi" -> JsString(BuildInfo.version), - "scala" -> JsString(BuildInfo.scalaVersion), - "akkaHttp" -> JsString(BuildInfo.akkaHttp), - "sipi" -> JsString(sipiVersion), - "fuseki" -> JsString(fusekiVersion) + "name" -> JsString("version"), + "webapi" -> JsString(BuildInfo.version), + "scala" -> JsString(BuildInfo.scalaVersion), + "pekkoHttp" -> JsString(BuildInfo.pekkoHttp), + "sipi" -> JsString(sipiVersion), + "fuseki" -> JsString(fusekiVersion) ).prettyPrint ) ) diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/FilesRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/FilesRouteADM.scala index 4ec3ff4193..ff2602933c 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/FilesRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/FilesRouteADM.scala @@ -5,8 +5,7 @@ package org.knora.webapi.routing.admin -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import dsp.errors.BadRequestException @@ -19,6 +18,9 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.Route + /** * Provides a routing function for the API that Sipi connects to. */ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/GroupsRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/GroupsRouteADM.scala index 2e2f8e7589..7eb0a5eeb7 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/GroupsRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/GroupsRouteADM.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.admin -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import zio.prelude.Validation @@ -24,6 +22,10 @@ import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM._ import org.knora.webapi.routing.RouteUtilZ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.Route + /** * Provides a routing function for API routes that deal with groups. */ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/ListsRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/ListsRouteADM.scala index b9b0b57c98..58575ad9ec 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/ListsRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/ListsRouteADM.scala @@ -5,8 +5,7 @@ package org.knora.webapi.routing.admin -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import org.knora.webapi.core.MessageRelay @@ -16,8 +15,11 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.admin.lists._ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.Route + /** - * Provides an akka-http-routing function for API routes that deal with lists. + * Provides an pekko-http-routing function for API routes that deal with lists. */ final case class ListsRouteADM( private val routeData: KnoraRouteData, diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/PermissionsRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/PermissionsRouteADM.scala index 6be8f1fcfb..96bd77054f 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/PermissionsRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/PermissionsRouteADM.scala @@ -5,8 +5,7 @@ package org.knora.webapi.routing.admin -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import org.knora.webapi.core.MessageRelay @@ -16,8 +15,11 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.admin.permissions._ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.Route + /** - * Provides an akka-http-routing function for API routes that deal with permissions. + * Provides an pekko-http-routing function for API routes that deal with permissions. */ final case class PermissionsRouteADM( private val routeData: KnoraRouteData, diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/ProjectsRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/ProjectsRouteADM.scala index 26f54557b7..c8350049bf 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/ProjectsRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/ProjectsRouteADM.scala @@ -5,17 +5,7 @@ package org.knora.webapi.routing.admin -import akka.Done -import akka.http.scaladsl.model.ContentTypes -import akka.http.scaladsl.model.HttpEntity -import akka.http.scaladsl.model.headers.ContentDispositionTypes -import akka.http.scaladsl.model.headers.`Content-Disposition` -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.RequestContext -import akka.http.scaladsl.server.Route -import akka.stream.IOResult -import akka.stream.scaladsl.FileIO +import org.apache.pekko import zio._ import java.nio.file.Files @@ -37,9 +27,21 @@ import org.knora.webapi.routing.RouteUtilADM._ import org.knora.webapi.routing._ import org.knora.webapi.slice.admin.api.service.ProjectADMRestService +import pekko.Done +import pekko.http.scaladsl.model.ContentTypes +import pekko.http.scaladsl.model.HttpEntity +import pekko.http.scaladsl.model.headers.ContentDispositionTypes +import pekko.http.scaladsl.model.headers.`Content-Disposition` +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.RequestContext +import pekko.http.scaladsl.server.Route +import pekko.stream.IOResult +import pekko.stream.scaladsl.FileIO + final case class ProjectsRouteADM()( private implicit val runtime: Runtime[ - Authenticator with StringFormatter with MessageRelay with ProjectADMRestService + org.knora.webapi.routing.Authenticator with StringFormatter with MessageRelay with ProjectADMRestService ], private implicit val executionContext: ExecutionContext ) extends ProjectsADMJsonProtocol { diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/StoreRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/StoreRouteADM.scala index ff60b36674..95eeaed5d6 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/StoreRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/StoreRouteADM.scala @@ -5,8 +5,7 @@ package org.knora.webapi.routing.admin -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio.Runtime import org.knora.webapi.core.MessageRelay @@ -19,6 +18,9 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM.runJsonRoute +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.Route + /** * A route used to send requests which can directly affect the data stored inside the triplestore. */ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/UsersRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/UsersRouteADM.scala index 35cf1818ee..7e07c63016 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/UsersRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/UsersRouteADM.scala @@ -5,10 +5,7 @@ package org.knora.webapi.routing.admin -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.RequestContext -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import dsp.errors.BadRequestException @@ -27,8 +24,13 @@ import org.knora.webapi.routing.RouteUtilADM.getIriUserUuid import org.knora.webapi.routing.RouteUtilADM.getUserUuid import org.knora.webapi.routing.RouteUtilADM.runJsonRouteZ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.RequestContext +import pekko.http.scaladsl.server.Route + /** - * Provides an akka-http-routing function for API routes that deal with users. + * Provides an pekko-http-routing function for API routes that deal with users. */ final case class UsersRouteADM()( private implicit val runtime: Runtime[Authenticator with StringFormatter with MessageRelay] diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/CreateListItemsRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/CreateListItemsRouteADM.scala index 5d38d3e83e..94f3e757a0 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/CreateListItemsRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/CreateListItemsRouteADM.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.admin.lists -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import zio.prelude.Validation @@ -28,6 +26,10 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM._ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.Route + /** * Provides routes to create list items. * diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/DeleteListItemsRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/DeleteListItemsRouteADM.scala index e032c9c4fa..08fe251dd7 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/DeleteListItemsRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/DeleteListItemsRouteADM.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.admin.lists -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import org.knora.webapi.core.MessageRelay @@ -18,6 +16,10 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.Route + /** * Provides routes to delete list items. * diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/GetListItemsRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/GetListItemsRouteADM.scala index d3fce9e57a..b4826d60fd 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/GetListItemsRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/GetListItemsRouteADM.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.admin.lists -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import dsp.errors.BadRequestException @@ -21,6 +19,10 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM._ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.Route + /** * Provides routes to get list items. * diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/UpdateListItemsRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/UpdateListItemsRouteADM.scala index a8fa1d39c9..b9a41eb8e6 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/UpdateListItemsRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/lists/UpdateListItemsRouteADM.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.admin.lists -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import zio.prelude.Validation @@ -27,6 +25,10 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM._ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.Route + /** * Provides routes to update list items. * diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/CreatePermissionRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/CreatePermissionRouteADM.scala index 879d4de0f5..ec34b6f79f 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/CreatePermissionRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/CreatePermissionRouteADM.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.admin.permissions -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import org.knora.webapi.core.MessageRelay @@ -18,6 +16,10 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM._ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.Route + final case class CreatePermissionRouteADM( private val routeData: KnoraRouteData, override protected implicit val runtime: Runtime[Authenticator with StringFormatter with MessageRelay] diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/DeletePermissionRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/DeletePermissionRouteADM.scala index 618827b802..0b43135c33 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/DeletePermissionRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/DeletePermissionRouteADM.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.admin.permissions -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import org.knora.webapi.core.MessageRelay @@ -18,6 +16,10 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM._ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.Route + final case class DeletePermissionRouteADM( private val routeData: KnoraRouteData, override protected implicit val runtime: Runtime[Authenticator with StringFormatter with MessageRelay] diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/GetPermissionsRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/GetPermissionsRouteADM.scala index 8bce58f64a..23d638697a 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/GetPermissionsRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/GetPermissionsRouteADM.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.admin.permissions -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import org.knora.webapi.core.MessageRelay @@ -18,6 +16,10 @@ import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM._ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.Route + final case class GetPermissionsRouteADM( private val routeData: KnoraRouteData, override protected implicit val runtime: Runtime[Authenticator with StringFormatter with MessageRelay] diff --git a/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/UpdatePermissionRouteADM.scala b/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/UpdatePermissionRouteADM.scala index f2c0d65b5e..6b54ad23ae 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/UpdatePermissionRouteADM.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/admin/permissions/UpdatePermissionRouteADM.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.admin.permissions -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import org.knora.webapi.core.MessageRelay @@ -17,6 +15,10 @@ import org.knora.webapi.routing.Authenticator import org.knora.webapi.routing.KnoraRoute import org.knora.webapi.routing.KnoraRouteData import org.knora.webapi.routing.RouteUtilADM._ + +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.Route final case class UpdatePermissionRouteADM( private val routeData: KnoraRouteData, override protected implicit val runtime: Runtime[Authenticator with StringFormatter with MessageRelay] diff --git a/webapi/src/main/scala/org/knora/webapi/routing/v2/AuthenticationRouteV2.scala b/webapi/src/main/scala/org/knora/webapi/routing/v2/AuthenticationRouteV2.scala index 0dc84fff6e..fa53f628e1 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/v2/AuthenticationRouteV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/v2/AuthenticationRouteV2.scala @@ -5,8 +5,7 @@ package org.knora.webapi.routing.v2 -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import org.knora.webapi.messages.StringFormatter @@ -17,6 +16,9 @@ import org.knora.webapi.messages.v2.routing.authenticationmessages.LoginApiReque import org.knora.webapi.routing.Authenticator import org.knora.webapi.routing.RouteUtilV2 +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.Route + /** * A route providing API v2 authentication support. It allows the creation of "sessions", which are used in the SALSAH app. */ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/v2/ListsRouteV2.scala b/webapi/src/main/scala/org/knora/webapi/routing/v2/ListsRouteV2.scala index 08f43b8b02..61ee48ef6c 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/v2/ListsRouteV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/v2/ListsRouteV2.scala @@ -5,8 +5,7 @@ package org.knora.webapi.routing.v2 -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import org.knora.webapi.config.AppConfig @@ -18,6 +17,9 @@ import org.knora.webapi.routing.Authenticator import org.knora.webapi.routing.RouteUtilV2 import org.knora.webapi.routing.RouteUtilZ +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.Route + /** * Provides a function for API routes that deal with lists and nodes. */ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/v2/OntologiesRouteV2.scala b/webapi/src/main/scala/org/knora/webapi/routing/v2/OntologiesRouteV2.scala index 4e3afbe9d3..247c42381b 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/v2/OntologiesRouteV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/v2/OntologiesRouteV2.scala @@ -5,10 +5,7 @@ package org.knora.webapi.routing.v2 -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.RequestContext -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import zio.prelude.Validation @@ -40,6 +37,11 @@ import org.knora.webapi.routing.RouteUtilZ import org.knora.webapi.slice.ontology.api.service.RestCardinalityService import org.knora.webapi.slice.resourceinfo.domain.IriConverter +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.RequestContext +import pekko.http.scaladsl.server.Route + /** * Provides a routing function for API v2 routes that deal with ontologies. */ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/v2/ResourcesRouteV2.scala b/webapi/src/main/scala/org/knora/webapi/routing/v2/ResourcesRouteV2.scala index f46c2a7c3e..77f12abdf4 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/v2/ResourcesRouteV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/v2/ResourcesRouteV2.scala @@ -5,16 +5,8 @@ package org.knora.webapi.routing.v2 -import akka.http.scaladsl.model.ContentTypes.`application/json` -import akka.http.scaladsl.model.HttpEntity -import akka.http.scaladsl.model.HttpResponse -import akka.http.scaladsl.model.StatusCodes.InternalServerError -import akka.http.scaladsl.model.StatusCodes.OK -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.RequestContext -import akka.http.scaladsl.server.Route import com.typesafe.scalalogging.LazyLogging +import org.apache.pekko import zio.Exit.Failure import zio.Exit.Success import zio._ @@ -48,6 +40,16 @@ import org.knora.webapi.slice.resourceinfo.api.RestResourceInfoServiceLive.Order import org.knora.webapi.slice.resourceinfo.api.RestResourceInfoServiceLive.lastModificationDate import org.knora.webapi.slice.resourceinfo.domain.IriConverter +import pekko.http.scaladsl.model.ContentTypes.`application/json` +import pekko.http.scaladsl.model.HttpEntity +import pekko.http.scaladsl.model.HttpResponse +import pekko.http.scaladsl.model.StatusCodes.InternalServerError +import pekko.http.scaladsl.model.StatusCodes.OK +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.RequestContext +import pekko.http.scaladsl.server.Route + /** * Provides a routing function for API v2 routes that deal with resources. */ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/v2/SearchRouteV2.scala b/webapi/src/main/scala/org/knora/webapi/routing/v2/SearchRouteV2.scala index 7f3792cb3c..62f1d081ea 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/v2/SearchRouteV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/v2/SearchRouteV2.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.v2 -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.RequestContext -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import zio.metrics._ @@ -29,6 +27,10 @@ import org.knora.webapi.routing.RouteUtilV2 import org.knora.webapi.slice.resourceinfo.domain.IriConverter import org.knora.webapi.store.triplestore.errors.TriplestoreTimeoutException +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.RequestContext +import pekko.http.scaladsl.server.Route + /** * Provides a function for API routes that deal with search. */ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/v2/StandoffRouteV2.scala b/webapi/src/main/scala/org/knora/webapi/routing/v2/StandoffRouteV2.scala index 25433b4059..bf49418896 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/v2/StandoffRouteV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/v2/StandoffRouteV2.scala @@ -5,12 +5,8 @@ package org.knora.webapi.routing.v2 -import akka.actor.ActorSystem -import akka.http.scaladsl.model.Multipart -import akka.http.scaladsl.model.Multipart.BodyPart -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.Route import com.typesafe.scalalogging.LazyLogging +import org.apache.pekko import zio.Runtime import zio.ZIO @@ -31,6 +27,12 @@ import org.knora.webapi.routing.RouteUtilV2 import org.knora.webapi.routing.RouteUtilZ import org.knora.webapi.slice.resourceinfo.domain.IriConverter +import pekko.actor.ActorSystem +import pekko.http.scaladsl.model.Multipart +import pekko.http.scaladsl.model.Multipart.BodyPart +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.Route + /** * Provides a function for API routes that deal with search. */ diff --git a/webapi/src/main/scala/org/knora/webapi/routing/v2/ValuesRouteV2.scala b/webapi/src/main/scala/org/knora/webapi/routing/v2/ValuesRouteV2.scala index 267e823478..3844e7d223 100644 --- a/webapi/src/main/scala/org/knora/webapi/routing/v2/ValuesRouteV2.scala +++ b/webapi/src/main/scala/org/knora/webapi/routing/v2/ValuesRouteV2.scala @@ -5,9 +5,7 @@ package org.knora.webapi.routing.v2 -import akka.http.scaladsl.server.Directives._ -import akka.http.scaladsl.server.PathMatcher -import akka.http.scaladsl.server.Route +import org.apache.pekko import zio._ import dsp.errors.BadRequestException @@ -24,6 +22,10 @@ import org.knora.webapi.routing.RouteUtilV2 import org.knora.webapi.routing.RouteUtilZ import org.knora.webapi.slice.resourceinfo.domain.IriConverter +import pekko.http.scaladsl.server.Directives._ +import pekko.http.scaladsl.server.PathMatcher +import pekko.http.scaladsl.server.Route + /** * Provides a routing function for API v2 routes that deal with values. */ diff --git a/webapi/src/main/scala/org/knora/webapi/store/iiif/domain/SipiKnoraJsonResponse.scala b/webapi/src/main/scala/org/knora/webapi/store/iiif/domain/SipiKnoraJsonResponse.scala index 453cdbd455..5e74dc1387 100644 --- a/webapi/src/main/scala/org/knora/webapi/store/iiif/domain/SipiKnoraJsonResponse.scala +++ b/webapi/src/main/scala/org/knora/webapi/store/iiif/domain/SipiKnoraJsonResponse.scala @@ -5,12 +5,14 @@ package org.knora.webapi.store.iiif.domain -import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport +import org.apache.pekko import spray.json.DefaultJsonProtocol import spray.json.RootJsonFormat import org.knora.webapi.store.iiif.errors.SipiException +import pekko.http.scaladsl.marshallers.sprayjson.SprayJsonSupport + /** * Represents a response from Sipi's `knora.json` route. * diff --git a/webapi/src/main/scala/org/knora/webapi/util/ActorUtil.scala b/webapi/src/main/scala/org/knora/webapi/util/ActorUtil.scala index 394050bf4d..062c429dd2 100644 --- a/webapi/src/main/scala/org/knora/webapi/util/ActorUtil.scala +++ b/webapi/src/main/scala/org/knora/webapi/util/ActorUtil.scala @@ -5,12 +5,14 @@ package org.knora.webapi.util -import akka.actor.ActorRef +import org.apache.pekko import zio._ import dsp.errors._ import org.knora.webapi.routing.UnsafeZioRun +import pekko.actor.ActorRef + object ActorUtil { /** @@ -19,7 +21,7 @@ object ActorUtil { */ def zio2Message[R, A](sender: ActorRef, zio: ZIO[R, Throwable, A])(implicit runtime: Runtime[R]): Unit = UnsafeZioRun.runOrThrow { - zio.foldCause(cause => sender ! akka.actor.Status.Failure(cause.squash), success => sender ! success) + zio.foldCause(cause => sender ! pekko.actor.Status.Failure(cause.squash), success => sender ! success) } /** @@ -33,7 +35,7 @@ object ActorUtil { val unexpectedMessageException = UnexpectedMessageException( s"$who received an unexpected message $message of type ${message.getClass.getCanonicalName}" ) - sender ! akka.actor.Status.Failure(unexpectedMessageException) + sender ! pekko.actor.Status.Failure(unexpectedMessageException) } }