From 5541d1dc0749fee6ae1e0b42745143548ab2e4a2 Mon Sep 17 00:00:00 2001 From: xuwei-k <6b656e6a69@gmail.com> Date: Mon, 31 Jan 2022 07:27:18 +0900 Subject: [PATCH] fix Seq implicit conversions warnings ``` [warn] /home/travis/build/playframework/playframework/transport/server/play-server/src/main/scala/play/core/server/ProdServerStart.scala:29:69: method copyArrayToImmutableIndexedSeq in class LowPriorityImplicits2 is deprecated (since 2.13.0): Implicit conversions from Array to immutable.IndexedSeq are implemented by copying; Use the more efficient non-copying ArraySeq.unsafeWrapArray or an explicit toIndexedSeq call [warn] def main(args: Array[String]): Unit = start(new RealServerProcess(args)) [warn] ^ [warn] /home/travis/build/playframework/playframework/transport/server/play-server/src/main/scala/play/core/server/common/ServerResultUtils.scala:337:61: method copyArrayToImmutableIndexedSeq in class LowPriorityImplicits2 is deprecated (since 2.13.0): Implicit conversions from Array to immutable.IndexedSeq are implemented by copying; Use the more efficient non-copying ArraySeq.unsafeWrapArray or an explicit toIndexedSeq call [warn] cookieHeaderEncoding.SetCookieHeaderSeparatorRegex.split(value) [warn] ^ ``` ``` [warn] /home/travis/build/playframework/playframework/persistence/play-jdbc-evolutions/src/main/scala/play/api/db/evolutions/Evolutions.scala:63:68: method copyArrayToImmutableIndexedSeq in class LowPriorityImplicits2 is deprecated (since 2.13.0): Implicit conversions from Array to immutable.IndexedSeq are implemented by copying; Use the more efficient non-copying ArraySeq.unsafeWrapArray or an explicit toIndexedSeq call [warn] sql.split("(?@,;:\\\"/[]?={} \t" - val separatorBitSet = BitSet(separatorChars.toCharArray.map(_.toInt): _*) + val separatorBitSet = separatorChars.toCharArray.map(_.toInt).to(BitSet) val qChars = "Qq" - val qBitSet = BitSet(qChars.toCharArray.map(_.toInt): _*) + val qBitSet = qChars.toCharArray.map(_.toInt).to(BitSet) type Elem = Char diff --git a/core/play/src/main/scala/play/api/http/MediaRange.scala b/core/play/src/main/scala/play/api/http/MediaRange.scala index e54a0df8604..6a57d9726f0 100644 --- a/core/play/src/main/scala/play/api/http/MediaRange.scala +++ b/core/play/src/main/scala/play/api/http/MediaRange.scala @@ -179,7 +179,7 @@ object MediaRange { private val logger = Logger(this.getClass()) val separatorChars = "()<>@,;:\\\"/[]?={} \t" - val separatorBitSet = BitSet(separatorChars.toCharArray.map(_.toInt): _*) + val separatorBitSet = separatorChars.toCharArray.map(_.toInt).to(BitSet) type Elem = Char diff --git a/core/play/src/main/scala/play/core/j/JavaAction.scala b/core/play/src/main/scala/play/core/j/JavaAction.scala index 9e96e2a7f8f..67ed2a33a16 100644 --- a/core/play/src/main/scala/play/core/j/JavaAction.scala +++ b/core/play/src/main/scala/play/core/j/JavaAction.scala @@ -29,6 +29,7 @@ import play.mvc.Http.{ Request => JRequest } import play.mvc.Http.{ RequestImpl => JRequestImpl } import scala.jdk.CollectionConverters._ +import scala.collection.immutable.ArraySeq import scala.concurrent.ExecutionContext import scala.concurrent.Future @@ -59,7 +60,7 @@ class JavaActionAnnotations( .flatten val actionMixins: Seq[(Annotation, Class[_ <: JAction[_]], AnnotatedElement)] = { - val methodAnnotations = method.getDeclaredAnnotations.map((_, method)) + val methodAnnotations = ArraySeq.unsafeWrapArray(method.getDeclaredAnnotations.map((_, method))) val allDeclaredAnnotations: Seq[(java.lang.annotation.Annotation, AnnotatedElement)] = if (config.controllerAnnotationsFirst) { controllerAnnotations ++ methodAnnotations diff --git a/core/play/src/main/scala/play/core/parsers/FormUrlEncodedParser.scala b/core/play/src/main/scala/play/core/parsers/FormUrlEncodedParser.scala index 326f2d0b530..957cae7c98d 100644 --- a/core/play/src/main/scala/play/core/parsers/FormUrlEncodedParser.scala +++ b/core/play/src/main/scala/play/core/parsers/FormUrlEncodedParser.scala @@ -5,6 +5,7 @@ package play.core.parsers import java.net.URLDecoder +import scala.collection.immutable.ArraySeq /** An object for parsing application/x-www-form-urlencoded data */ object FormUrlEncodedParser { @@ -78,12 +79,12 @@ object FormUrlEncodedParser { if (split.length == 1 && split(0).isEmpty) { Seq.empty } else { - split.map { param => + ArraySeq.unsafeWrapArray(split.map { param => val parts = param.split("=", -1) val key = URLDecoder.decode(parts(0), encoding) val value = URLDecoder.decode(parts.lift(1).getOrElse(""), encoding) key -> value - } + }) } } } diff --git a/persistence/play-jdbc-evolutions/src/main/scala/play/api/db/evolutions/Evolutions.scala b/persistence/play-jdbc-evolutions/src/main/scala/play/api/db/evolutions/Evolutions.scala index f6e401e7762..a3ff778547c 100644 --- a/persistence/play-jdbc-evolutions/src/main/scala/play/api/db/evolutions/Evolutions.scala +++ b/persistence/play-jdbc-evolutions/src/main/scala/play/api/db/evolutions/Evolutions.scala @@ -19,6 +19,7 @@ import play.api.Logger import play.api.Mode import play.core.DefaultWebCommands import play.utils.PlayIO +import scala.collection.immutable.ArraySeq /** * An SQL evolution - database changes associated with a software version. @@ -60,7 +61,7 @@ trait Script { */ def statements: Seq[String] = { // Regex matches on semicolons that neither precede nor follow other semicolons - sql.split("(? - tlsSessionInfo.getSession.getPeerCertificates + immutable.ArraySeq + .unsafeWrapArray(tlsSessionInfo.getSession.getPeerCertificates) .collect { case x509: X509Certificate => x509 } } } catch { diff --git a/transport/server/play-server/src/main/scala/play/core/server/ProdServerStart.scala b/transport/server/play-server/src/main/scala/play/core/server/ProdServerStart.scala index f7fece1fd86..6a0e458189b 100644 --- a/transport/server/play-server/src/main/scala/play/core/server/ProdServerStart.scala +++ b/transport/server/play-server/src/main/scala/play/core/server/ProdServerStart.scala @@ -26,7 +26,7 @@ object ProdServerStart { /** * Start a prod mode server from the command line. */ - def main(args: Array[String]): Unit = start(new RealServerProcess(args)) + def main(args: Array[String]): Unit = start(new RealServerProcess(args.toIndexedSeq)) /** * Starts a Play server and application for the given process. The settings diff --git a/transport/server/play-server/src/main/scala/play/core/server/common/ServerResultUtils.scala b/transport/server/play-server/src/main/scala/play/core/server/common/ServerResultUtils.scala index 32381ff2d67..70ee9a5ae04 100644 --- a/transport/server/play-server/src/main/scala/play/core/server/common/ServerResultUtils.scala +++ b/transport/server/play-server/src/main/scala/play/core/server/common/ServerResultUtils.scala @@ -18,6 +18,7 @@ import play.core.utils.AsciiRange import play.core.utils.AsciiSet import scala.annotation.tailrec +import scala.collection.immutable.ArraySeq import scala.concurrent.Future import scala.util.control.NonFatal @@ -334,5 +335,5 @@ private[play] final class ServerResultUtils( } def splitSetCookieHeaderValue(value: String): Seq[String] = - cookieHeaderEncoding.SetCookieHeaderSeparatorRegex.split(value) + ArraySeq.unsafeWrapArray(cookieHeaderEncoding.SetCookieHeaderSeparatorRegex.split(value)) } diff --git a/web/play-filters-helpers/src/main/scala/play/filters/cors/CORSFilter.scala b/web/play-filters-helpers/src/main/scala/play/filters/cors/CORSFilter.scala index 259ee2252e7..f28b6111988 100644 --- a/web/play-filters-helpers/src/main/scala/play/filters/cors/CORSFilter.scala +++ b/web/play-filters-helpers/src/main/scala/play/filters/cors/CORSFilter.scala @@ -12,6 +12,7 @@ import play.core.j.JavaContextComponents import play.core.j.JavaHttpErrorHandlerAdapter import scala.concurrent.Future +import scala.jdk.CollectionConverters._ import play.api.Logger import play.api.libs.streams.Accumulator import play.api.libs.typedmap.TypedKey @@ -56,7 +57,7 @@ class CORSFilter( this( corsConfig, new JavaHttpErrorHandlerAdapter(errorHandler), - Seq(pathPrefixes.toArray.asInstanceOf[Array[String]]: _*) + pathPrefixes.asScala.toSeq ) } @@ -70,7 +71,7 @@ class CORSFilter( this( corsConfig, new JavaHttpErrorHandlerAdapter(errorHandler), - Seq(pathPrefixes.toArray.asInstanceOf[Array[String]]: _*) + pathPrefixes.asScala.toSeq ) }