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]

Reply via email to