This is an automated email from the ASF dual-hosted git repository. fanningpj pushed a commit to branch scala3 in repository https://gitbox.apache.org/repos/asf/incubator-pekko-connectors.git
commit 5cd0464a1e22571f9fd7843ef5b01305e1dc5313 Author: PJ Fanning <[email protected]> AuthorDate: Sat Jun 10 17:21:28 2023 +0100 support scala3 for google-cloud-storage connector (#159) * support scala3 for google-cloud-storage connector fix import Update Formats.scala Update Dependencies.scala * try to fix code that was somehow reverted in a merge * more changes * Update GCStorageStream.scala * clock implicits * another merge issue --- .../scaladsl/GrpcBigQueryStorageReader.scala | 2 +- .../test/scala/docs/scaladsl/ExampleReader.scala | 2 +- .../src/test/scala/docs/scaladsl/ExampleApp.scala | 2 +- .../googlecloud/pubsub/impl/PubSubApi.scala | 34 +++++++------ .../googlecloud/storage/impl/Formats.scala | 14 ++++-- .../googlecloud/storage/impl/GCStorageStream.scala | 5 +- .../storage/WithMaterializerGlobal.scala | 2 +- .../stream/connectors/google/ResumableUpload.scala | 58 +++++++++++----------- .../connectors/google/auth/GoogleOAuth2Spec.scala | 2 +- .../google/auth/OAuth2CredentialsSpec.scala | 2 +- .../firebase/fcm/v1/impl/FcmSenderSpec.scala | 2 +- project/Dependencies.scala | 5 -- 12 files changed, 66 insertions(+), 64 deletions(-) diff --git a/google-cloud-bigquery-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/bigquery/storage/scaladsl/GrpcBigQueryStorageReader.scala b/google-cloud-bigquery-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/bigquery/storage/scaladsl/GrpcBigQueryStorageReader.scala index d2d541424..19370175f 100644 --- a/google-cloud-bigquery-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/bigquery/storage/scaladsl/GrpcBigQueryStorageReader.scala +++ b/google-cloud-bigquery-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/bigquery/storage/scaladsl/GrpcBigQueryStorageReader.scala @@ -44,7 +44,7 @@ object GrpcBigQueryStorageReader { * An extension that manages a single gRPC scala reader client per actor system. */ final class GrpcBigQueryStorageReaderExt private (sys: ExtendedActorSystem) extends Extension { - implicit val reader = GrpcBigQueryStorageReader()(sys) + implicit val reader: GrpcBigQueryStorageReader = GrpcBigQueryStorageReader()(sys) } object GrpcBigQueryStorageReaderExt extends ExtensionId[GrpcBigQueryStorageReaderExt] with ExtensionIdProvider { diff --git a/google-cloud-bigquery-storage/src/test/scala/docs/scaladsl/ExampleReader.scala b/google-cloud-bigquery-storage/src/test/scala/docs/scaladsl/ExampleReader.scala index 268cdb330..92a6d74d6 100644 --- a/google-cloud-bigquery-storage/src/test/scala/docs/scaladsl/ExampleReader.scala +++ b/google-cloud-bigquery-storage/src/test/scala/docs/scaladsl/ExampleReader.scala @@ -40,7 +40,7 @@ import scala.concurrent.Future class ExampleReader { - implicit val sys = ActorSystem("ExampleReader") + implicit val sys: ActorSystem = ActorSystem("ExampleReader") // #read-all val sourceOfSources: Source[(ReadSession.Schema, Seq[Source[ReadRowsResponse.Rows, NotUsed]]), Future[NotUsed]] = diff --git a/google-cloud-pub-sub-grpc/src/test/scala/docs/scaladsl/ExampleApp.scala b/google-cloud-pub-sub-grpc/src/test/scala/docs/scaladsl/ExampleApp.scala index 3ff4851c6..d76e43398 100644 --- a/google-cloud-pub-sub-grpc/src/test/scala/docs/scaladsl/ExampleApp.scala +++ b/google-cloud-pub-sub-grpc/src/test/scala/docs/scaladsl/ExampleApp.scala @@ -37,7 +37,7 @@ object ExampleApp { |pekko.loglevel = INFO """.stripMargin) - implicit val sys = ActorSystem("ExampleApp", config) + implicit val sys: ActorSystem = ActorSystem("ExampleApp", config) import sys.dispatcher diff --git a/google-cloud-pub-sub/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/pubsub/impl/PubSubApi.scala b/google-cloud-pub-sub/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/pubsub/impl/PubSubApi.scala index 696406f89..90dd33581 100644 --- a/google-cloud-pub-sub/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/pubsub/impl/PubSubApi.scala +++ b/google-cloud-pub-sub/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/pubsub/impl/PubSubApi.scala @@ -69,7 +69,7 @@ private[pubsub] trait PubSubApi { def PubSubGoogleApisPort: Int def isEmulated: Boolean - private implicit val instantFormat = new RootJsonFormat[Instant] { + private implicit val instantFormat: RootJsonFormat[Instant] = new RootJsonFormat[Instant] { override def read(jsValue: JsValue): Instant = jsValue match { case JsString(time) => Instant.parse(time) case _ => deserializationError("Instant required as a string of RFC3339 UTC Zulu format.") @@ -77,7 +77,7 @@ private[pubsub] trait PubSubApi { override def write(instant: Instant): JsValue = JsString(instant.toString) } - private implicit val pubSubMessageFormat = + private implicit val pubSubMessageFormat: RootJsonFormat[PubSubMessage] = new RootJsonFormat[PubSubMessage] { override def read(json: JsValue): PubSubMessage = { val fields = json.asJsObject.fields @@ -98,7 +98,7 @@ private[pubsub] trait PubSubApi { ++ m.attributes.map(attributes => "attributes" -> attributes.toJson): _*) } - private implicit val publishMessageFormat = new RootJsonFormat[PublishMessage] { + private implicit val publishMessageFormat: RootJsonFormat[PublishMessage] = new RootJsonFormat[PublishMessage] { def read(json: JsValue): PublishMessage = { val data = json.asJsObject.fields("data").convertTo[String] val attributes = json.asJsObject.fields("attributes").convertTo[immutable.Map[String, String]] @@ -112,37 +112,39 @@ private[pubsub] trait PubSubApi { m.attributes.map(a => "attributes" -> a.toJson): _*) } - private implicit val pubSubRequestFormat = new RootJsonFormat[PublishRequest] { + private implicit val pubSubRequestFormat: RootJsonFormat[PublishRequest] = new RootJsonFormat[PublishRequest] { def read(json: JsValue): PublishRequest = PublishRequest(json.asJsObject.fields("messages").convertTo[immutable.Seq[PublishMessage]]) def write(pr: PublishRequest): JsValue = JsObject("messages" -> pr.messages.toJson) } - private implicit val gcePubSubResponseFormat = new RootJsonFormat[PublishResponse] { + private implicit val gcePubSubResponseFormat: RootJsonFormat[PublishResponse] = new RootJsonFormat[PublishResponse] { def read(json: JsValue): PublishResponse = PublishResponse(json.asJsObject.fields("messageIds").convertTo[immutable.Seq[String]]) def write(pr: PublishResponse): JsValue = JsObject("messageIds" -> pr.messageIds.toJson) } - private implicit val receivedMessageFormat = new RootJsonFormat[ReceivedMessage] { + private implicit val receivedMessageFormat: RootJsonFormat[ReceivedMessage] = new RootJsonFormat[ReceivedMessage] { def read(json: JsValue): ReceivedMessage = ReceivedMessage(json.asJsObject.fields("ackId").convertTo[String], json.asJsObject.fields("message").convertTo[PubSubMessage]) def write(rm: ReceivedMessage): JsValue = JsObject("ackId" -> rm.ackId.toJson, "message" -> rm.message.toJson) } - private implicit val pubSubPullResponseFormat = new RootJsonFormat[PullResponse] { + private implicit val pubSubPullResponseFormat: RootJsonFormat[PullResponse] = new RootJsonFormat[PullResponse] { def read(json: JsValue): PullResponse = PullResponse(json.asJsObject.fields.get("receivedMessages").map(_.convertTo[immutable.Seq[ReceivedMessage]])) def write(pr: PullResponse): JsValue = pr.receivedMessages.map(rm => JsObject("receivedMessages" -> rm.toJson)).getOrElse(JsObject.empty) } - private implicit val acknowledgeRequestFormat = new RootJsonFormat[AcknowledgeRequest] { - def read(json: JsValue): AcknowledgeRequest = - AcknowledgeRequest(json.asJsObject.fields("ackIds").convertTo[immutable.Seq[String]]: _*) - def write(ar: AcknowledgeRequest): JsValue = JsObject("ackIds" -> ar.ackIds.toJson) - } - private implicit val pullRequestFormat = DefaultJsonProtocol.jsonFormat2(PullRequest.apply) + private implicit val acknowledgeRequestFormat: RootJsonFormat[AcknowledgeRequest] = + new RootJsonFormat[AcknowledgeRequest] { + def read(json: JsValue): AcknowledgeRequest = + AcknowledgeRequest(json.asJsObject.fields("ackIds").convertTo[immutable.Seq[String]]: _*) + def write(ar: AcknowledgeRequest): JsValue = JsObject("ackIds" -> ar.ackIds.toJson) + } + private implicit val pullRequestFormat: RootJsonFormat[PullRequest] = + DefaultJsonProtocol.jsonFormat2(PullRequest.apply) private def scheme: String = if (isEmulated) "http" else "https" @@ -173,7 +175,7 @@ private[pubsub] trait PubSubApi { .mapMaterializedValue(_ => NotUsed) private implicit val pullResponseUnmarshaller: FromResponseUnmarshaller[PullResponse] = - Unmarshaller.withMaterializer { implicit ec => implicit mat => response: HttpResponse => + Unmarshaller.withMaterializer { implicit ec => implicit mat => (response: HttpResponse) => response.status match { case StatusCodes.Success(_) if response.entity.contentType == ContentTypes.`application/json` => Unmarshal(response.entity).to[PullResponse] @@ -211,7 +213,7 @@ private[pubsub] trait PubSubApi { .mapMaterializedValue(_ => NotUsed) private implicit val acknowledgeResponseUnmarshaller: FromResponseUnmarshaller[Done] = - Unmarshaller.withMaterializer { implicit ec => implicit mat => response: HttpResponse => + Unmarshaller.withMaterializer { implicit ec => implicit mat => (response: HttpResponse) => response.status match { case StatusCodes.Success(_) => response.discardEntityBytes().future @@ -261,7 +263,7 @@ private[pubsub] trait PubSubApi { publish(topic, parallelism, None) private implicit val publishResponseUnmarshaller: FromResponseUnmarshaller[PublishResponse] = - Unmarshaller.withMaterializer { implicit ec => implicit mat => response: HttpResponse => + Unmarshaller.withMaterializer { implicit ec => implicit mat => (response: HttpResponse) => response.status match { case StatusCodes.Success(_) if response.entity.contentType == ContentTypes.`application/json` => Unmarshal(response.entity).to[PublishResponse] diff --git a/google-cloud-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/storage/impl/Formats.scala b/google-cloud-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/storage/impl/Formats.scala index 5c20c3931..70a4306dc 100644 --- a/google-cloud-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/storage/impl/Formats.scala +++ b/google-cloud-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/storage/impl/Formats.scala @@ -18,7 +18,7 @@ import java.time.OffsetDateTime import org.apache.pekko import pekko.http.scaladsl.model.{ ContentType, ContentTypes } import pekko.stream.connectors.googlecloud.storage._ -import spray.json.{ DefaultJsonProtocol, JsObject, JsValue, RootJsonFormat, RootJsonReader } +import spray.json.{ enrichAny, DefaultJsonProtocol, JsObject, JsValue, RootJsonFormat, RootJsonReader } import scala.util.Try @@ -49,7 +49,8 @@ object Formats extends DefaultJsonProtocol { domain: String, projectTeam: ProjectTeam, etag: String) - private implicit val ObjectAccessControlsJsonFormat = jsonFormat13(ObjectAccessControls) + private implicit val ObjectAccessControlsJsonFormat: RootJsonFormat[ObjectAccessControls] = + jsonFormat13(ObjectAccessControls.apply) /** * Google API storage response object @@ -79,7 +80,8 @@ object Formats extends DefaultJsonProtocol { timeStorageClassUpdated: String, updated: String) - private implicit val storageObjectReadOnlyJson = jsonFormat18(StorageObjectReadOnlyJson) + private implicit val storageObjectReadOnlyJson: RootJsonFormat[StorageObjectReadOnlyJson] = + jsonFormat18(StorageObjectReadOnlyJson.apply) // private sub class of StorageObjectJson used to workaround 22 field jsonFormat issue private final case class StorageObjectWriteableJson( @@ -98,7 +100,8 @@ object Formats extends DefaultJsonProtocol { temporaryHold: Option[Boolean], acl: Option[List[ObjectAccessControls]]) - private implicit val storageObjectWritableJson = jsonFormat14(StorageObjectWriteableJson) + private implicit val storageObjectWritableJson: RootJsonFormat[StorageObjectWriteableJson] = + jsonFormat14(StorageObjectWriteableJson.apply) private implicit object StorageObjectJsonFormat extends RootJsonFormat[StorageObjectJson] { override def read(value: JsValue): StorageObjectJson = { @@ -175,7 +178,8 @@ object Formats extends DefaultJsonProtocol { } } - private implicit val bucketListResultJsonReads = jsonFormat4(BucketListResultJson.apply) + private implicit val bucketListResultJsonReads: RootJsonFormat[BucketListResultJson] = + jsonFormat4(BucketListResultJson.apply) implicit object RewriteResponseReads extends RootJsonReader[RewriteResponse] { override def read(json: JsValue): RewriteResponse = { diff --git a/google-cloud-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/storage/impl/GCStorageStream.scala b/google-cloud-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/storage/impl/GCStorageStream.scala index b67496ea3..63d55bd4b 100644 --- a/google-cloud-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/storage/impl/GCStorageStream.scala +++ b/google-cloud-storage/src/main/scala/org/apache/pekko/stream/connectors/googlecloud/storage/impl/GCStorageStream.scala @@ -14,6 +14,7 @@ package org.apache.pekko.stream.connectors.googlecloud.storage.impl import org.apache.pekko +import pekko.actor.ActorSystem import pekko.annotation.InternalApi import pekko.dispatch.ExecutionContexts import pekko.dispatch.ExecutionContexts.parasitic @@ -289,7 +290,7 @@ import scala.concurrent.{ ExecutionContext, Future } @nowarn("msg=deprecated") private def resolveSettings(mat: Materializer, attr: Attributes) = { - implicit val sys = mat.system + implicit val sys: ActorSystem = mat.system val legacySettings = attr .get[GCStorageSettingsValue] .map(_.settings) @@ -334,7 +335,7 @@ import scala.concurrent.{ ExecutionContext, Future } } private def resolveGCSSettings(mat: Materializer, attr: Attributes): GCSSettings = { - implicit val sys = mat.system + implicit val sys: ActorSystem = mat.system attr .get[GCSSettingsValue] .map(_.settings) diff --git a/google-cloud-storage/src/test/scala/org/apache/pekko/stream/connectors/googlecloud/storage/WithMaterializerGlobal.scala b/google-cloud-storage/src/test/scala/org/apache/pekko/stream/connectors/googlecloud/storage/WithMaterializerGlobal.scala index eb046720a..787885b91 100644 --- a/google-cloud-storage/src/test/scala/org/apache/pekko/stream/connectors/googlecloud/storage/WithMaterializerGlobal.scala +++ b/google-cloud-storage/src/test/scala/org/apache/pekko/stream/connectors/googlecloud/storage/WithMaterializerGlobal.scala @@ -29,7 +29,7 @@ trait WithMaterializerGlobal with ScalaFutures with IntegrationPatience with Matchers { - implicit val actorSystem = ActorSystem("test") + implicit val actorSystem: ActorSystem = ActorSystem("test") implicit val ec: ExecutionContext = actorSystem.dispatcher override protected def afterAll(): Unit = { diff --git a/google-common/src/main/scala/org/apache/pekko/stream/connectors/google/ResumableUpload.scala b/google-common/src/main/scala/org/apache/pekko/stream/connectors/google/ResumableUpload.scala index f50c921b9..8dbc91cc2 100644 --- a/google-common/src/main/scala/org/apache/pekko/stream/connectors/google/ResumableUpload.scala +++ b/google-common/src/main/scala/org/apache/pekko/stream/connectors/google/ResumableUpload.scala @@ -56,7 +56,7 @@ private[connectors] object ResumableUpload { Sink .fromMaterializer { (mat, attr) => import mat.executionContext - implicit val materializer = mat + implicit val materializer: Materializer = mat implicit val settings: GoogleSettings = GoogleAttributes.resolveSettings(mat, attr) val uploadChunkSize = settings.requestSettings.uploadChunkSize @@ -96,25 +96,24 @@ private[connectors] object ResumableUpload { private def initiateSession(request: HttpRequest)(implicit mat: Materializer, settings: GoogleSettings): Future[Uri] = { - implicit val system: ActorSystem = mat.system import implicits._ - implicit val um = Unmarshaller.withMaterializer { implicit ec => implicit mat => response: HttpResponse => - response.discardEntityBytes().future.map { _ => - response.header[Location].fold(throw InvalidResponseException(ErrorInfo("No Location header")))(_.uri) - } - }.withDefaultRetry + implicit val um: FromResponseUnmarshaller[Uri] = + Unmarshaller.withMaterializer { implicit ec => implicit mat => (response: HttpResponse) => + response.discardEntityBytes().future.map { _ => + response.header[Location].fold(throw InvalidResponseException(ErrorInfo("No Location header")))(_.uri) + } + }.withDefaultRetry - GoogleHttp().singleAuthenticatedRequest[Uri](request) + GoogleHttp(mat.system).singleAuthenticatedRequest[Uri](request) } private final case class DoNotRetry(ex: Throwable) extends Throwable(ex) with NoStackTrace private def uploadChunk[T: FromResponseUnmarshaller]( request: HttpRequest)(implicit mat: Materializer): Flow[Either[T, MaybeLast[Chunk]], Try[Option[T]], NotUsed] = { - implicit val system: ActorSystem = mat.system - val um = Unmarshaller.withMaterializer { implicit ec => implicit mat => response: HttpResponse => + val um = Unmarshaller.withMaterializer { implicit ec => implicit mat => (response: HttpResponse) => response.status match { case PermanentRedirect => response.discardEntityBytes().future.map(_ => None) @@ -127,7 +126,8 @@ private[connectors] object ResumableUpload { val uri = request.uri Flow[HttpRequest] .map((_, ())) - .via(GoogleHttp().cachedHostConnectionPoolWithContext(uri.authority.host.address, uri.effectivePort)(um)) + .via(GoogleHttp(mat.system).cachedHostConnectionPoolWithContext(uri.authority.host.address, uri.effectivePort)( + um)) .map(_._1.recoverWith { case DoNotRetry(ex) => Failure(ex) }) } @@ -147,30 +147,30 @@ private[connectors] object ResumableUpload { request: HttpRequest, chunk: Future[MaybeLast[Chunk]])( implicit mat: Materializer, settings: GoogleSettings): Future[Either[T, MaybeLast[Chunk]]] = { - implicit val system: ActorSystem = mat.system import implicits._ - implicit val um = Unmarshaller.withMaterializer { implicit ec => implicit mat => response: HttpResponse => - response.status match { - case OK | Created => Unmarshal(response).to[T].map(Left(_)) - case PermanentRedirect => - response.discardEntityBytes().future.map { _ => - Right( - response - .header[Range] - .flatMap(_.ranges.headOption) - .collect { - case Slice(_, last) => last + 1 - }.getOrElse(0L)) - } - case _ => throw InvalidResponseException(ErrorInfo(response.status.value, response.status.defaultMessage)) - } - }.withDefaultRetry + implicit val um: FromResponseUnmarshaller[Either[T, Long]] = + Unmarshaller.withMaterializer { implicit ec => implicit mat => (response: HttpResponse) => + response.status match { + case OK | Created => Unmarshal(response).to[T].map(Left(_)) + case PermanentRedirect => + response.discardEntityBytes().future.map { _ => + Right( + response + .header[Range] + .flatMap(_.ranges.headOption) + .collect { + case Slice(_, last) => last + 1 + }.getOrElse(0L)) + } + case _ => throw InvalidResponseException(ErrorInfo(response.status.value, response.status.defaultMessage)) + } + }.withDefaultRetry import mat.executionContext chunk.flatMap { case maybeLast @ MaybeLast(Chunk(bytes, position)) => - GoogleHttp() + GoogleHttp(mat.system) .singleAuthenticatedRequest[Either[T, Long]](request.addHeader(statusRequestHeader)) .map { case Left(result) if maybeLast.isLast => Left(result) diff --git a/google-common/src/test/scala/org/apache/pekko/stream/connectors/google/auth/GoogleOAuth2Spec.scala b/google-common/src/test/scala/org/apache/pekko/stream/connectors/google/auth/GoogleOAuth2Spec.scala index 1bd56b790..753e3004a 100644 --- a/google-common/src/test/scala/org/apache/pekko/stream/connectors/google/auth/GoogleOAuth2Spec.scala +++ b/google-common/src/test/scala/org/apache/pekko/stream/connectors/google/auth/GoogleOAuth2Spec.scala @@ -46,7 +46,7 @@ class GoogleOAuth2Spec implicit val executionContext: ExecutionContext = system.dispatcher implicit val settings: GoogleSettings = GoogleSettings(system) - implicit val clock = Clock.systemUTC() + implicit val clock: Clock = Clock.systemUTC() lazy val privateKey = { val inputStream = getClass.getClassLoader.getResourceAsStream("private_pcks8.pem") diff --git a/google-common/src/test/scala/org/apache/pekko/stream/connectors/google/auth/OAuth2CredentialsSpec.scala b/google-common/src/test/scala/org/apache/pekko/stream/connectors/google/auth/OAuth2CredentialsSpec.scala index 7d7e2342a..446336dd9 100644 --- a/google-common/src/test/scala/org/apache/pekko/stream/connectors/google/auth/OAuth2CredentialsSpec.scala +++ b/google-common/src/test/scala/org/apache/pekko/stream/connectors/google/auth/OAuth2CredentialsSpec.scala @@ -45,7 +45,7 @@ class OAuth2CredentialsSpec import system.dispatcher implicit val settings: RequestSettings = GoogleSettings().requestSettings - implicit val clock = Clock.systemUTC() + implicit val clock: Clock = Clock.systemUTC() final object AccessTokenProvider { @volatile var accessTokenPromise: Promise[AccessToken] = Promise.failed(new RuntimeException) diff --git a/google-fcm/src/test/scala/org/apache/pekko/stream/connectors/google/firebase/fcm/v1/impl/FcmSenderSpec.scala b/google-fcm/src/test/scala/org/apache/pekko/stream/connectors/google/firebase/fcm/v1/impl/FcmSenderSpec.scala index a2d4d4922..ca6c18820 100644 --- a/google-fcm/src/test/scala/org/apache/pekko/stream/connectors/google/firebase/fcm/v1/impl/FcmSenderSpec.scala +++ b/google-fcm/src/test/scala/org/apache/pekko/stream/connectors/google/firebase/fcm/v1/impl/FcmSenderSpec.scala @@ -57,7 +57,7 @@ class FcmSenderSpec implicit val executionContext: ExecutionContext = system.dispatcher - implicit val conf = FcmSettings() + implicit val conf: FcmSettings = FcmSettings() implicit val settings: GoogleSettings = GoogleSettings().copy(projectId = "projectId") "FcmSender" should { diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 1b4f326d9..85f5d8177 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -188,7 +188,6 @@ object Dependencies { "org.apache.logging.log4j" % "log4j-to-slf4j" % "2.17.1" % Test) ++ JacksonDatabindDependencies) val GoogleCommon = Seq( - crossScalaVersions -= Scala3, libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion, @@ -198,7 +197,6 @@ object Dependencies { ) ++ Mockito) val GoogleBigQuery = Seq( - crossScalaVersions -= Scala3, libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-jackson" % PekkoHttpVersion % Provided, @@ -224,7 +222,6 @@ object Dependencies { "org.apache.pekko" %% "pekko-discovery" % PekkoVersion) ++ Mockito) val GooglePubSub = Seq( - crossScalaVersions -= Scala3, libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion, @@ -242,13 +239,11 @@ object Dependencies { "org.apache.pekko" %% "pekko-discovery" % PekkoVersion)) val GoogleFcm = Seq( - crossScalaVersions -= Scala3, libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion) ++ Mockito) val GoogleStorage = Seq( - crossScalaVersions -= Scala3, libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion, --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
