This is an automated email from the ASF dual-hosted git repository.
pjfanning pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pekko-grpc.git
The following commit(s) were added to refs/heads/main by this push:
new 9aeccbac Remove leftover Scala 2.12 collection idioms (#886)
9aeccbac is described below
commit 9aeccbac4b91afe46382f5e10f542c43aedb37b1
Author: PJ Fanning <[email protected]>
AuthorDate: Thu Oct 1 15:05:46 2026 +0100
Remove leftover Scala 2.12 collection idioms (#886)
Motivation:
The 2.13/3-only modules still carried Scala 2.12-era idioms:
`immutable.Seq` qualifiers (`scala.Seq` has been `immutable.Seq`
since 2.13) and `.toIterator` in the scripted interop test.
Equivalent of apache/pekko#3539.
Modification:
- Replace `immutable.Seq` with `Seq` in runtime, interop-tests,
benchmarks and the `gen-scala-server/00-interop` scripted test
(all built for 2.13/3 only) and drop the now-unused
`scala.collection.immutable` imports.
- `requests.toIterator` -> `requests.iterator` in
`PekkoGrpcClientTester` (scripted test).
- `codegen`, `maven-plugin`, `sbt-plugin` main sources and
`scalapb-protoc-plugin` still cross-build for 2.12 where
`scala.Seq` is `collection.Seq`, so they are left unchanged.
Result:
No remaining Scala 2.12 collection idioms in the 2.13/3-only modules.
Source and binary compatible: `scala.Seq` is a type alias for
`scala.collection.immutable.Seq` on 2.13 and 3, so the erasure and
generic signatures are unchanged.
Tests:
- native scalafmt on all changed files
- sbt runtime/mimaReportBinaryIssues on 2.13.18 and 3.3.8: passes
- sbt runtime/test on 2.13.18: 178 passed
- sbt runtime/Test/compile interop-tests/Test/compile benchmarks/compile
on 2.13.18 and 3.3.8
- sbt "sbt-plugin/scripted gen-scala-server/00-interop": passes
References:
None - equivalent of apache/pekko#3539
---
.../org/apache/pekko/grpc/JavaUnaryHandlerBenchmark.scala | 3 +--
.../org/apache/pekko/grpc/ScalaUnaryHandlerBenchmark.scala | 3 +--
.../pekko/grpc/interop/PekkoHttpServerProviderScala.scala | 3 +--
.../apache/pekko/grpc/scaladsl/GrpcMarshallingSpec.scala | 9 ++++-----
.../scala/org/apache/pekko/grpc/GrpcClientSettings.scala | 3 +--
.../main/scala/org/apache/pekko/grpc/GrpcProtocol.scala | 3 +--
.../apache/pekko/grpc/internal/AbstractGrpcProtocol.scala | 4 +---
.../main/scala/org/apache/pekko/grpc/internal/Codecs.scala | 3 +--
.../apache/pekko/grpc/internal/GrpcProtocolNative.scala | 3 +--
.../org/apache/pekko/grpc/internal/GrpcProtocolWeb.scala | 3 +--
.../apache/pekko/grpc/internal/GrpcRequestHelpers.scala | 8 +++-----
.../apache/pekko/grpc/internal/GrpcResponseHelpers.scala | 9 ++++-----
.../org/apache/pekko/grpc/internal/MetadataImpl.scala | 3 +--
.../apache/pekko/grpc/internal/PekkoHttpClientUtils.scala | 9 ++++-----
.../org/apache/pekko/grpc/scaladsl/MetadataBuilder.scala | 3 +--
.../scala/org/apache/pekko/grpc/scaladsl/WebHandler.scala | 5 ++---
.../org/apache/pekko/grpc/scaladsl/headers/headers.scala | 11 +++++------
.../src/test/scala/org/apache/pekko/grpc/CodecsSpec.scala | 14 ++++++--------
.../internal/PekkoDiscoveryNameResolverProviderSpec.scala | 3 +--
.../main/scala/org/apache/pekko/grpc/TestServiceImpl.scala | 1 -
.../test/scala/org/apache/pekko/grpc/GrpcInteropSpec.scala | 3 +--
.../org/apache/pekko/grpc/PekkoGrpcClientTester.scala | 4 ++--
22 files changed, 43 insertions(+), 67 deletions(-)
diff --git
a/benchmarks/src/main/scala/org/apache/pekko/grpc/JavaUnaryHandlerBenchmark.scala
b/benchmarks/src/main/scala/org/apache/pekko/grpc/JavaUnaryHandlerBenchmark.scala
index d94f93f3..311540ab 100644
---
a/benchmarks/src/main/scala/org/apache/pekko/grpc/JavaUnaryHandlerBenchmark.scala
+++
b/benchmarks/src/main/scala/org/apache/pekko/grpc/JavaUnaryHandlerBenchmark.scala
@@ -23,7 +23,6 @@ import java.util.concurrent.CompletableFuture
import java.util.concurrent.CompletionStage
import scala.annotation.nowarn
-import scala.collection.immutable
import scala.concurrent.Await
import scala.concurrent.duration.Duration
@@ -77,7 +76,7 @@ class JavaUnaryHandlerBenchmark extends CommonBenchmark {
HttpRequest(
method = HttpMethods.POST,
uri = Uri("https://unused.example/benchmark/Unary"),
- headers = immutable.Seq(
+ headers = Seq(
`Message-Encoding`(writer.messageEncoding.name),
`Message-Accept-Encoding`(Codecs.supportedCodecs.map(_.name).mkString(",")),
pekko.http.scaladsl.model.headers.TE(TransferEncodings.trailers)),
diff --git
a/benchmarks/src/main/scala/org/apache/pekko/grpc/ScalaUnaryHandlerBenchmark.scala
b/benchmarks/src/main/scala/org/apache/pekko/grpc/ScalaUnaryHandlerBenchmark.scala
index a4215c4d..e8b85263 100644
---
a/benchmarks/src/main/scala/org/apache/pekko/grpc/ScalaUnaryHandlerBenchmark.scala
+++
b/benchmarks/src/main/scala/org/apache/pekko/grpc/ScalaUnaryHandlerBenchmark.scala
@@ -19,7 +19,6 @@
package org.apache.pekko.grpc
-import scala.collection.immutable
import scala.concurrent.Await
import scala.concurrent.ExecutionContext
import scala.concurrent.Future
@@ -83,7 +82,7 @@ class ScalaUnaryHandlerBenchmark extends CommonBenchmark {
HttpRequest(
method = HttpMethods.POST,
uri = Uri("https://unused.example/" + GreeterService.name + "/SayHello"),
- headers = immutable.Seq(
+ headers = Seq(
`Message-Encoding`(writer.messageEncoding.name),
`Message-Accept-Encoding`(Codecs.supportedCodecs.map(_.name).mkString(",")),
pekko.http.scaladsl.model.headers.TE(TransferEncodings.trailers)),
diff --git
a/interop-tests/src/test/scala/org/apache/pekko/grpc/interop/PekkoHttpServerProviderScala.scala
b/interop-tests/src/test/scala/org/apache/pekko/grpc/interop/PekkoHttpServerProviderScala.scala
index a7b9db38..7fa88113 100644
---
a/interop-tests/src/test/scala/org/apache/pekko/grpc/interop/PekkoHttpServerProviderScala.scala
+++
b/interop-tests/src/test/scala/org/apache/pekko/grpc/interop/PekkoHttpServerProviderScala.scala
@@ -34,7 +34,6 @@ import io.grpc.testing.integration.messages.{
}
import io.grpc.testing.integration.test.{ TestService, TestServiceHandler,
TestServiceMarshallers }
-import scala.collection.immutable
import scala.concurrent.{ ExecutionContext, Promise }
object PekkoHttpServerProviderScala extends PekkoHttpServerProvider with
Directives {
@@ -126,7 +125,7 @@ object PekkoHttpServerProviderScala extends
PekkoHttpServerProvider with Directi
}
// TODO move to runtime library or even pekko-http
- def mapTrailingResponseHeaders(f: immutable.Seq[HttpHeader] =>
immutable.Seq[HttpHeader]): Directive0 =
+ def mapTrailingResponseHeaders(f: Seq[HttpHeader] => Seq[HttpHeader]):
Directive0 =
mapResponse(response =>
response.entity match {
case HttpEntity.Chunked(contentType, data) =>
diff --git
a/interop-tests/src/test/scala/org/apache/pekko/grpc/scaladsl/GrpcMarshallingSpec.scala
b/interop-tests/src/test/scala/org/apache/pekko/grpc/scaladsl/GrpcMarshallingSpec.scala
index afaa2a6a..4fada304 100644
---
a/interop-tests/src/test/scala/org/apache/pekko/grpc/scaladsl/GrpcMarshallingSpec.scala
+++
b/interop-tests/src/test/scala/org/apache/pekko/grpc/scaladsl/GrpcMarshallingSpec.scala
@@ -29,7 +29,6 @@ import io.grpc.testing.integration.test.TestService
import org.scalatest.matchers.should.Matchers
import org.scalatest.wordspec.AnyWordSpec
-import scala.collection.immutable
import scala.concurrent.{ Await, Future, Promise }
import scala.concurrent.duration._
@@ -47,7 +46,7 @@ class GrpcMarshallingSpec extends AnyWordSpec with Matchers {
"correctly unmarshal a zipped object" in {
val request = HttpRequest(
- headers = immutable.Seq(`Message-Encoding`("gzip")),
+ headers = Seq(`Message-Encoding`("gzip")),
entity = HttpEntity.Strict(GrpcProtocolNative.contentType,
zippedBytes))
val marshalled = Await.result(GrpcMarshalling.unmarshal(request),
10.seconds)
@@ -58,7 +57,7 @@ class GrpcMarshallingSpec extends AnyWordSpec with Matchers {
"not cancel the input stream after reading the first parameter for a
non-streaming request" in {
val sourceProbe = Promise[TestPublisher.Probe[ChunkStreamPart]]()
val request = HttpRequest(
- headers = immutable.Seq(`Message-Encoding`("gzip")),
+ headers = Seq(`Message-Encoding`("gzip")),
entity = HttpEntity.Chunked(
GrpcProtocolNative.contentType,
TestSource[ChunkStreamPart]()
@@ -82,7 +81,7 @@ class GrpcMarshallingSpec extends AnyWordSpec with Matchers {
"correctly unmarshal a zipped stream" in {
val request = HttpRequest(
- headers = immutable.Seq(`Message-Encoding`("gzip")),
+ headers = Seq(`Message-Encoding`("gzip")),
entity = HttpEntity.Strict(GrpcProtocolNative.contentType, zippedBytes
++ zippedBytes))
val stream = Await.result(GrpcMarshalling.unmarshalStream(request),
10.seconds)
@@ -95,7 +94,7 @@ class GrpcMarshallingSpec extends AnyWordSpec with Matchers {
// test case 6
"fail with INTERNAL when the compressed bit is on but the encoding is
identity" in {
val request = HttpRequest(
- headers = immutable.Seq(`Message-Encoding`("identity")),
+ headers = Seq(`Message-Encoding`("identity")),
entity = HttpEntity.Strict(GrpcProtocolNative.contentType,
zippedBytes))
assertFailure(GrpcMarshalling.unmarshal(request), Status.Code.INTERNAL,
"encoding")
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/GrpcClientSettings.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/GrpcClientSettings.scala
index 2aaef4c1..35e22ebc 100644
--- a/runtime/src/main/scala/org/apache/pekko/grpc/GrpcClientSettings.scala
+++ b/runtime/src/main/scala/org/apache/pekko/grpc/GrpcClientSettings.scala
@@ -26,7 +26,6 @@ import io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder
import io.grpc.netty.shaded.io.netty.handler.ssl.SslProvider
import javax.net.ssl.{ SSLContext, TrustManager }
-import scala.collection.immutable
import scala.concurrent.duration.{ Duration, _ }
import scala.jdk.DurationConverters._
@@ -193,7 +192,7 @@ object GrpcClientSettings {
*/
@InternalApi
private[grpc] def staticServiceDiscovery(host: String, port: Int) =
- new HardcodedServiceDiscovery(Resolved(host,
immutable.Seq(ResolvedTarget(host, Some(port), None))))
+ new HardcodedServiceDiscovery(Resolved(host, Seq(ResolvedTarget(host,
Some(port), None))))
}
diff --git a/runtime/src/main/scala/org/apache/pekko/grpc/GrpcProtocol.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/GrpcProtocol.scala
index 948f2779..22c7823e 100644
--- a/runtime/src/main/scala/org/apache/pekko/grpc/GrpcProtocol.scala
+++ b/runtime/src/main/scala/org/apache/pekko/grpc/GrpcProtocol.scala
@@ -32,7 +32,6 @@ import pekko.http.scaladsl.model.HttpEntity.ChunkStreamPart
import pekko.stream.scaladsl.Flow
import pekko.util.ByteString
-import scala.collection.immutable
import scala.util.Try
/**
@@ -107,7 +106,7 @@ object GrpcProtocol {
/** Encodes a frame as a part in a chunk stream. */
encodeFrame: Frame => ChunkStreamPart,
/** A shortcut to encode a data frame directly into a Response */
- encodeDataToResponse: (ByteString, immutable.Seq[HttpHeader], Trailer)
=> HttpResponse,
+ encodeDataToResponse: (ByteString, Seq[HttpHeader], Trailer) =>
HttpResponse,
/** A Flow over a stream of Frame using this frame encoding */
frameEncoder: Flow[Frame, ChunkStreamPart, NotUsed])
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/AbstractGrpcProtocol.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/AbstractGrpcProtocol.scala
index daace3f6..7aa57f88 100644
---
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/AbstractGrpcProtocol.scala
+++
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/AbstractGrpcProtocol.scala
@@ -27,8 +27,6 @@ import pekko.stream.stage.GraphStageLogic
import pekko.util.ByteString
import io.grpc.{ Status, StatusException }
-import scala.collection.immutable
-
abstract class AbstractGrpcProtocol(subType: String) extends GrpcProtocol {
override val contentType: ContentType.Binary =
@@ -125,7 +123,7 @@ object AbstractGrpcProtocol {
protocol: GrpcProtocol,
codec: Codec,
encodeFrame: Frame => ChunkStreamPart,
- encodeDataToResponse: (ByteString, immutable.Seq[HttpHeader], Trailer)
=> HttpResponse): GrpcProtocolWriter =
+ encodeDataToResponse: (ByteString, Seq[HttpHeader], Trailer) =>
HttpResponse): GrpcProtocolWriter =
GrpcProtocolWriter(
adjustCompressibility(protocol.contentType, codec),
codec,
diff --git a/runtime/src/main/scala/org/apache/pekko/grpc/internal/Codecs.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/Codecs.scala
index 5174562e..3b7b8440 100644
--- a/runtime/src/main/scala/org/apache/pekko/grpc/internal/Codecs.scala
+++ b/runtime/src/main/scala/org/apache/pekko/grpc/internal/Codecs.scala
@@ -19,12 +19,11 @@ import pekko.http.scaladsl.{ model => sm }
import pekko.grpc.GrpcServiceException
import pekko.grpc.scaladsl.headers.{ `Message-Accept-Encoding`,
`Message-Encoding` }
import io.grpc.Status
-import scala.collection.immutable
import scala.util.{ Failure, Success, Try }
object Codecs {
// TODO should this list be made user-extensible?
- val supportedCodecs = immutable.Seq(Gzip, Identity)
+ val supportedCodecs = Seq(Gzip, Identity)
private val supportedByName: Map[String, Codec] = supportedCodecs.map(c =>
c.name -> c).toMap
private def extractHeaders(request: jm.HttpMessage): Iterable[jm.HttpHeader]
= {
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcProtocolNative.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcProtocolNative.scala
index e7745703..97d3f16f 100644
---
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcProtocolNative.scala
+++
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcProtocolNative.scala
@@ -29,7 +29,6 @@ import pekko.http.scaladsl.model.{
import pekko.util.ByteString
import scala.annotation.nowarn
-import scala.collection.immutable
/**
* Implementation of the gRPC (`application/grpc+proto`) protocol:
@@ -57,7 +56,7 @@ object GrpcProtocolNative extends
AbstractGrpcProtocol("grpc") {
case TrailerFrame(headers) => LastChunk(trailer = headers)
}
private def encodeDataToResponse(
- codec: Codec)(data: ByteString, headers: immutable.Seq[HttpHeader],
trailer: Trailer): HttpResponse =
+ codec: Codec)(data: ByteString, headers: Seq[HttpHeader], trailer:
Trailer): HttpResponse =
new HttpResponse(
status = StatusCodes.OK,
headers = headers,
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcProtocolWeb.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcProtocolWeb.scala
index 2b3fdcbd..a0f0a758 100644
---
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcProtocolWeb.scala
+++
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcProtocolWeb.scala
@@ -22,7 +22,6 @@ import pekko.http.scaladsl.model.headers.RawHeader
import pekko.stream.scaladsl.Flow
import pekko.util.{ ByteString, ByteStringBuilder }
import io.grpc.{ Status, StatusException }
-import scala.collection.immutable
abstract class GrpcProtocolWebBase(subType: String) extends
AbstractGrpcProtocol(subType) {
protected def postEncode(frame: ByteString): ByteString
@@ -39,7 +38,7 @@ abstract class GrpcProtocolWebBase(subType: String) extends
AbstractGrpcProtocol
Chunk(postEncode(encodeFrameToBytes(codec, frame)))
private def encodeDataToResponse(
- codec: Codec)(data: ByteString, headers: immutable.Seq[HttpHeader],
trailer: Trailer): HttpResponse =
+ codec: Codec)(data: ByteString, headers: Seq[HttpHeader], trailer:
Trailer): HttpResponse =
HttpResponse(
status = StatusCodes.OK,
headers = headers,
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcRequestHelpers.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcRequestHelpers.scala
index 0fc12b44..85cd1bf1 100644
---
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcRequestHelpers.scala
+++
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcRequestHelpers.scala
@@ -27,14 +27,12 @@ import pekko.grpc.scaladsl.headers._
import pekko.http.scaladsl.model
import pekko.http.scaladsl.model.{ HttpEntity, HttpHeader, HttpMethods,
HttpRequest, TransferEncodings, Uri }
-import scala.collection.immutable
-
@InternalApi
object GrpcRequestHelpers {
def apply[T](
uri: Uri,
- headers: immutable.Seq[HttpHeader],
+ headers: Seq[HttpHeader],
e: Source[T, NotUsed],
eHandler: ActorSystem => PartialFunction[Throwable, Trailers] =
GrpcExceptionHandler.defaultMapper)(
implicit m: ProtobufSerializer[T],
@@ -42,13 +40,13 @@ object GrpcRequestHelpers {
system: ClassicActorSystemProvider): HttpRequest =
request(uri, headers, GrpcEntityHelpers(e, trail = Source.empty, eHandler))
- private def request[T](uri: Uri, headers: immutable.Seq[HttpHeader], entity:
Source[ChunkStreamPart, NotUsed])(
+ private def request[T](uri: Uri, headers: Seq[HttpHeader], entity:
Source[ChunkStreamPart, NotUsed])(
implicit writer: GrpcProtocolWriter): HttpRequest = {
HttpRequest(
uri = uri,
method = HttpMethods.POST,
// FIXME issue #1382 gzip shouldn't be included by default in
Message-Accept-Encoding.
- headers = immutable.Seq(
+ headers = Seq(
`Message-Encoding`(writer.messageEncoding.name),
`Message-Accept-Encoding`(Codecs.supportedCodecs.map(_.name).mkString(",")),
model.headers.TE(TransferEncodings.trailers)) ++ headers,
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcResponseHelpers.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcResponseHelpers.scala
index 3e285b73..da31ff5b 100644
---
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcResponseHelpers.scala
+++
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/GrpcResponseHelpers.scala
@@ -36,7 +36,6 @@ import pekko.stream.scaladsl.Source
import pekko.util.ByteString
import io.grpc.Status
-import scala.collection.immutable
import scala.concurrent.{ ExecutionContext, Future }
import scala.util.control.NonFatal
@@ -51,7 +50,7 @@ object GrpcResponseHelpers {
private val TrailerOkAttribute = Trailer(TrailerOk.trailers)
private val TrailerOkAttributes =
Map.empty[AttributeKey[?], Any].updated(AttributeKeys.trailer,
TrailerOkAttribute)
- private val IdentityResponseHeaders: immutable.Seq[HttpHeader] =
+ private val IdentityResponseHeaders: Seq[HttpHeader] =
headers.`Message-Encoding`(Identity.name) :: Nil
def apply[T](e: Source[T, NotUsed])(
@@ -87,14 +86,14 @@ object GrpcResponseHelpers {
}
}
- private def responseHeadersFor(writer: GrpcProtocolWriter):
immutable.Seq[HttpHeader] =
+ private def responseHeadersFor(writer: GrpcProtocolWriter): Seq[HttpHeader] =
if (writer.messageEncoding eq Identity) IdentityResponseHeaders
else headers.`Message-Encoding`(writer.messageEncoding.name) :: Nil
private def nativeResponse(
writer: GrpcProtocolWriter,
encodedData: ByteString,
- responseHeaders: immutable.Seq[HttpHeader]): HttpResponse =
+ responseHeaders: Seq[HttpHeader]): HttpResponse =
new HttpResponse(
status = StatusCodes.OK,
headers = responseHeaders,
@@ -136,7 +135,7 @@ object GrpcResponseHelpers {
private def response(entity: Source[ChunkStreamPart, NotUsed])(implicit
writer: GrpcProtocolWriter) = {
HttpResponse(
- headers = immutable.Seq(
+ headers = Seq(
headers.`Message-Encoding`(writer.messageEncoding.name),
// Pre-announcing trailers: See https://www.rfc-editor.org/rfc/rfc7230
#Section 4.4
headers.`Trailer`(headers.`Status`.name)
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/MetadataImpl.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/MetadataImpl.scala
index 9fbd1c9b..a12190e8 100644
--- a/runtime/src/main/scala/org/apache/pekko/grpc/internal/MetadataImpl.scala
+++ b/runtime/src/main/scala/org/apache/pekko/grpc/internal/MetadataImpl.scala
@@ -17,7 +17,6 @@ import java.util.{ List => jList, Locale, Map => jMap,
Optional }
import scala.jdk.CollectionConverters._
import scala.jdk.OptionConverters._
-import scala.collection.immutable
import org.apache.pekko
import pekko.annotation.InternalApi
@@ -152,7 +151,7 @@ class EntryMetadataImpl(entries: List[(String,
MetadataEntry)] = Nil) extends Me
* @param headers The list of HTTP response headers.
*/
@InternalApi
-class HeaderMetadataImpl(headers: immutable.Seq[HttpHeader] =
immutable.Seq.empty) extends Metadata {
+class HeaderMetadataImpl(headers: Seq[HttpHeader] = Seq.empty) extends
Metadata {
private lazy val map: Map[String, List[MetadataEntry]] =
MetadataImpl.toMap(asList)
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/PekkoHttpClientUtils.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/PekkoHttpClientUtils.scala
index a5c7eb65..763afed4 100644
---
a/runtime/src/main/scala/org/apache/pekko/grpc/internal/PekkoHttpClientUtils.scala
+++
b/runtime/src/main/scala/org/apache/pekko/grpc/internal/PekkoHttpClientUtils.scala
@@ -37,7 +37,6 @@ import pekko.util.ByteString
import io.grpc.{ CallOptions, MethodDescriptor, Status, StatusRuntimeException
}
import javax.net.ssl.{ KeyManager, SSLContext, SSLEngine, TrustManager }
-import scala.collection.immutable
import scala.concurrent.{ ExecutionContext, Future, Promise }
import scala.concurrent.duration.DurationLong
import scala.jdk.FutureConverters._
@@ -318,14 +317,14 @@ object PekkoHttpClientUtils {
{
if (response.status != StatusCodes.OK) {
response.entity.discardBytes()
- val failure = mapToStatusException(response, immutable.Seq.empty)
+ val failure = mapToStatusException(response, Seq.empty)
Source.failed(failure).mapMaterializedValue(_ =>
FastFuture.failed(failure))
} else {
Codecs.detect(response) match {
case Success(codec) =>
implicit val reader: GrpcProtocolReader =
GrpcProtocolNative.newReader(codec, maxInboundMessageSize)
- val trailerPromise = Promise[immutable.Seq[HttpHeader]]()
+ val trailerPromise = Promise[Seq[HttpHeader]]()
// Completed with success or failure based on grpc-status and
grpc-message trailing headers
val completionFuture: Future[Unit] =
trailerPromise.future.flatMap(trailers =>
parseResponseStatus(response, trailers))
@@ -342,10 +341,10 @@ object PekkoHttpClientUtils {
ByteString.empty
}
.watchTermination((_, done) =>
- done.onComplete(_ =>
trailerPromise.trySuccess(immutable.Seq.empty)))
+ done.onComplete(_ =>
trailerPromise.trySuccess(Seq.empty)))
case Strict(_, data) =>
val rawTrailers =
-
response.attribute(AttributeKeys.trailer).map(_.headers).getOrElse(immutable.Seq.empty)
+
response.attribute(AttributeKeys.trailer).map(_.headers).getOrElse(Seq.empty)
val trailers = rawTrailers.map(h => RawHeader(h._1,
h._2))
trailerPromise.success(trailers)
Source.single[ByteString](data)
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/MetadataBuilder.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/MetadataBuilder.scala
index 1a20fc8a..718496ee 100644
---
a/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/MetadataBuilder.scala
+++
b/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/MetadataBuilder.scala
@@ -13,7 +13,6 @@
package org.apache.pekko.grpc.scaladsl
-import scala.collection.immutable
import org.apache.pekko
import pekko.annotation.{ ApiMayChange, DoNotInherit }
import pekko.http.scaladsl.model.HttpHeader
@@ -86,6 +85,6 @@ object MetadataBuilder {
* @param headers The headers.
* @return The new Metadata instance.
*/
- def fromHeaders(headers: immutable.Seq[HttpHeader]): Metadata =
+ def fromHeaders(headers: Seq[HttpHeader]): Metadata =
new HeaderMetadataImpl(headers)
}
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/WebHandler.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/WebHandler.scala
index 6391b51d..4c46c6d2 100644
--- a/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/WebHandler.scala
+++ b/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/WebHandler.scala
@@ -13,7 +13,6 @@
package org.apache.pekko.grpc.scaladsl
-import scala.collection.immutable
import scala.concurrent.Future
import com.typesafe.config.ConfigFactory
import org.apache.pekko
@@ -34,8 +33,8 @@ object WebHandler {
/** Default CORS settings to use for grpc-web */
val defaultCorsSettings: CorsSettings = CorsSettings(ConfigFactory.load())
.withAllowCredentials(true)
- .withAllowedMethods(immutable.Seq(HttpMethods.POST, HttpMethods.OPTIONS))
- .withExposedHeaders(immutable.Seq(headers.`Status`.name,
headers.`Status-Message`.name, `Content-Encoding`.name))
+ .withAllowedMethods(Seq(HttpMethods.POST, HttpMethods.OPTIONS))
+ .withExposedHeaders(Seq(headers.`Status`.name,
headers.`Status-Message`.name, `Content-Encoding`.name))
.withAllowedHeaders(
HttpHeaderRange(
"x-user-agent",
diff --git
a/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/headers/headers.scala
b/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/headers/headers.scala
index f502ea1a..544e15f4 100644
---
a/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/headers/headers.scala
+++
b/runtime/src/main/scala/org/apache/pekko/grpc/scaladsl/headers/headers.scala
@@ -20,7 +20,6 @@ import pekko.http.scaladsl.model.headers.{
ModeledCustomHeader, ModeledCustomHea
import pekko.http.javadsl.{ model => jm }
import scala.collection.compat.immutable.ArraySeq
-import scala.collection.immutable
import scala.annotation.nowarn
import scala.util.Try
@@ -104,7 +103,7 @@ object `Status` extends
ModeledCustomHeaderCompanion[`Status`] {
override def parse(value: String): Try[`Status`] = Try(new
`Status`(Integer.parseInt(value)))
- def findIn(headers: immutable.Seq[HttpHeader]): Option[Int] =
+ def findIn(headers: Seq[HttpHeader]): Option[Int] =
headers.collectFirst { case h if h.is(name) => Integer.parseInt(h.value())
}
}
@@ -124,11 +123,11 @@ object `Status-Message` extends
ModeledCustomHeaderCompanion[`Status-Message`] {
override def parse(value: String): Try[`Status-Message`] = Try(
new `Status-Message`(PercentEncoding.Decoder.decode(value)))
- def findIn(headers: immutable.Seq[HttpHeader]): Option[String] =
+ def findIn(headers: Seq[HttpHeader]): Option[String] =
headers.collectFirst { case h if h.is(name) => h.value() }
}
-private[grpc] final class `Trailer` private (values: immutable.Seq[String])
extends ModeledCustomHeader[`Trailer`] {
+private[grpc] final class `Trailer` private (values: Seq[String]) extends
ModeledCustomHeader[`Trailer`] {
override def companion: ModeledCustomHeaderCompanion[`Trailer`] = `Trailer`
@@ -140,7 +139,7 @@ private[grpc] final class `Trailer` private (values:
immutable.Seq[String]) exte
}
private[grpc] object `Trailer` extends ModeledCustomHeaderCompanion[`Trailer`]
{
- def apply(values: immutable.Seq[String]): `Trailer` = new
`Trailer`(values.map(_.trim))
+ def apply(values: Seq[String]): `Trailer` = new `Trailer`(values.map(_.trim))
override val name = "trailer"
@@ -149,7 +148,7 @@ private[grpc] object `Trailer` extends
ModeledCustomHeaderCompanion[`Trailer`] {
override def parse(value: String): Try[`Trailer`] =
Try(`Trailer`(ArraySeq.unsafeWrapArray(SimpleCSVParser.parse(value))))
- def findIn(headers: immutable.Seq[HttpHeader]):
Option[immutable.Seq[String]] =
+ def findIn(headers: Seq[HttpHeader]): Option[Seq[String]] =
headers.collectFirst {
case header if header.is(name) =>
ArraySeq.unsafeWrapArray(SimpleCSVParser.parse(header.value()))
}
diff --git a/runtime/src/test/scala/org/apache/pekko/grpc/CodecsSpec.scala
b/runtime/src/test/scala/org/apache/pekko/grpc/CodecsSpec.scala
index 4f6b928b..96b2fc4f 100644
--- a/runtime/src/test/scala/org/apache/pekko/grpc/CodecsSpec.scala
+++ b/runtime/src/test/scala/org/apache/pekko/grpc/CodecsSpec.scala
@@ -22,15 +22,13 @@ import org.scalatest.matchers.should.Matchers
import org.scalatest.wordspec.AnyWordSpec
import org.scalatest.TryValues
-import scala.collection.immutable
-
class CodecsSpec extends AnyWordSpec with Matchers with TryValues {
private def accept(encodings: String*): HttpRequest =
- HttpRequest(headers =
immutable.Seq(headers.`Message-Accept-Encoding`(encodings.mkString(","))))
+ HttpRequest(headers =
Seq(headers.`Message-Accept-Encoding`(encodings.mkString(","))))
private def enc(encodings: String*): HttpRequest =
- HttpRequest(headers =
immutable.Seq(headers.`Message-Encoding`(encodings.mkString(","))))
+ HttpRequest(headers =
Seq(headers.`Message-Encoding`(encodings.mkString(","))))
"Negotiating message encoding with remote client" should {
@@ -63,17 +61,17 @@ class CodecsSpec extends AnyWordSpec with Matchers with
TryValues {
// ModeledCustomHeader types, which would break compression negotiation.
// Our implementation uses findIn on raw headers instead, which works
correctly.
"negotiate gzip from raw headers (not typed custom headers)" in {
- val request = HttpRequest(headers =
immutable.Seq(RawHeader("grpc-accept-encoding", "gzip")))
+ val request = HttpRequest(headers =
Seq(RawHeader("grpc-accept-encoding", "gzip")))
Codecs.negotiate(request) should be(Gzip)
}
"negotiate from raw headers with multiple encodings" in {
- val request = HttpRequest(headers =
immutable.Seq(RawHeader("grpc-accept-encoding", "gzip,identity")))
+ val request = HttpRequest(headers =
Seq(RawHeader("grpc-accept-encoding", "gzip,identity")))
Codecs.negotiate(request) should be(Gzip)
}
"negotiate gzip when grpc-accept-encoding uses comma+space separators (as
sent by grpc-go/grpc-python/grpcurl)" in {
- val request = HttpRequest(headers =
immutable.Seq(RawHeader("grpc-accept-encoding", "deflate, gzip")))
+ val request = HttpRequest(headers =
Seq(RawHeader("grpc-accept-encoding", "deflate, gzip")))
Codecs.negotiate(request) should be(Gzip)
}
@@ -102,7 +100,7 @@ class CodecsSpec extends AnyWordSpec with Matchers with
TryValues {
// Regression test: same as akka-grpc #1897 but for detect path
"detect encoding from raw headers (not typed custom headers)" in {
- val request = HttpRequest(headers =
immutable.Seq(RawHeader("grpc-encoding", "gzip")))
+ val request = HttpRequest(headers = Seq(RawHeader("grpc-encoding",
"gzip")))
Codecs.detect(request).success.value should be(Gzip)
}
}
diff --git
a/runtime/src/test/scala/org/apache/pekko/grpc/internal/PekkoDiscoveryNameResolverProviderSpec.scala
b/runtime/src/test/scala/org/apache/pekko/grpc/internal/PekkoDiscoveryNameResolverProviderSpec.scala
index ca8c38f7..7db004dd 100644
---
a/runtime/src/test/scala/org/apache/pekko/grpc/internal/PekkoDiscoveryNameResolverProviderSpec.scala
+++
b/runtime/src/test/scala/org/apache/pekko/grpc/internal/PekkoDiscoveryNameResolverProviderSpec.scala
@@ -21,7 +21,6 @@ import scala.concurrent.ExecutionContext.Implicits._
import scala.concurrent.Future
import scala.concurrent.Promise
import scala.concurrent.duration._
-import scala.collection.immutable
import io.grpc.Attributes
import io.grpc.NameResolver.Listener
@@ -55,7 +54,7 @@ class PekkoDiscoveryNameResolverProviderSpec
val discovery = new ServiceDiscovery() {
override def lookup(lookup: Lookup, resolveTimeout: FiniteDuration):
Future[Resolved] = {
lookup.serviceName should be(serviceName)
- Future.successful(Resolved(serviceName,
immutable.Seq(ResolvedTarget("10.0.0.3", Some(4312), None))))
+ Future.successful(Resolved(serviceName,
Seq(ResolvedTarget("10.0.0.3", Some(4312), None))))
}
}
val provider = new PekkoDiscoveryNameResolverProvider(
diff --git
a/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/main/scala/org/apache/pekko/grpc/TestServiceImpl.scala
b/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/main/scala/org/apache/pekko/grpc/TestServiceImpl.scala
index 7df64921..1fe761ea 100644
---
a/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/main/scala/org/apache/pekko/grpc/TestServiceImpl.scala
+++
b/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/main/scala/org/apache/pekko/grpc/TestServiceImpl.scala
@@ -12,7 +12,6 @@ package org.apache.pekko.grpc.interop
import scala.concurrent.ExecutionContext
import scala.concurrent.Future
import scala.reflect.ClassTag
-import scala.collection.immutable
import org.apache.pekko
import pekko.grpc.scaladsl.GrpcMarshalling
diff --git
a/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/test/scala/org/apache/pekko/grpc/GrpcInteropSpec.scala
b/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/test/scala/org/apache/pekko/grpc/GrpcInteropSpec.scala
index 408f2da9..7e2dddf1 100644
---
a/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/test/scala/org/apache/pekko/grpc/GrpcInteropSpec.scala
+++
b/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/test/scala/org/apache/pekko/grpc/GrpcInteropSpec.scala
@@ -19,7 +19,6 @@ import pekko.http.scaladsl.server.{ Directive0, Directives,
Route }
import io.grpc.testing.integration.TestServiceHandlerFactory
import io.grpc.testing.integration.test.TestService
-import scala.collection.immutable
import scala.concurrent.ExecutionContext
// Generated by our plugin
@@ -61,7 +60,7 @@ object PekkoHttpServerProviderScala extends
PekkoHttpServerProvider {
})
// TODO to be moved to the runtime lib (or even pekko-http itself?)
- def mapTrailingResponseHeaders(f: immutable.Seq[HttpHeader] =>
immutable.Seq[HttpHeader]): Directive0 =
+ def mapTrailingResponseHeaders(f: Seq[HttpHeader] => Seq[HttpHeader]):
Directive0 =
mapResponse(response =>
response.entity match {
case HttpEntity.Chunked(contentType, data) =>
diff --git
a/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/test/scala/org/apache/pekko/grpc/PekkoGrpcClientTester.scala
b/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/test/scala/org/apache/pekko/grpc/PekkoGrpcClientTester.scala
index 0f2552f2..a457143a 100644
---
a/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/test/scala/org/apache/pekko/grpc/PekkoGrpcClientTester.scala
+++
b/sbt-plugin/src/sbt-test/gen-scala-server/00-interop/src/test/scala/org/apache/pekko/grpc/PekkoGrpcClientTester.scala
@@ -114,7 +114,7 @@ class PekkoGrpcClientTester(val settings:
Settings)(implicit system: ActorSystem
val expected = StreamingInputCallResponse(aggregatedPayloadSize = 74922)
- val requestSrc = Source.fromIterator(() => requests.toIterator)
+ val requestSrc = Source.fromIterator(() => requests.iterator)
val actual = Await.result(client.streamingInputCall(requestSrc),
awaitTimeout)
assertEquals(expected, actual)
}
@@ -196,7 +196,7 @@ class PekkoGrpcClientTester(val settings:
Settings)(implicit system: ActorSystem
StreamingOutputCallResponse(
Option(Payload(body = ByteString.copyFrom(new Array[Byte](58979))))))
- val requestSrc = Source.fromIterator(() => requests.toIterator)
+ val requestSrc = Source.fromIterator(() => requests.iterator)
val actual =
Await.result(client.fullDuplexCall(requestSrc).runWith(Sink.seq), awaitTimeout)
assertEquals(expectedResponses.size, actual.size)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]