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.git
The following commit(s) were added to refs/heads/main by this push:
new 61e165c23d use Locale.ROOT for toLowerCase/toUpperCase (#3159)
61e165c23d is described below
commit 61e165c23d0bb84fea710b09c3949e5d45894fd5
Author: PJ Fanning <[email protected]>
AuthorDate: Tue Jun 23 21:24:01 2026 +0100
use Locale.ROOT for toLowerCase/toUpperCase (#3159)
* use Locale.ROOT for toLowerCase/toUpperCase
* Update SplitBrainResolverSettings.scala
* missing import
* Update AtLeastOnceDeliverySpec.scala
---
.../pekko/actor/typed/TransformMessagesSpec.scala | 3 ++-
.../passivation/simulator/AccessPattern.scala | 3 ++-
.../passivation/simulator/SimulatorSettings.scala | 23 ++++++++++------------
.../scala/org/apache/pekko/cluster/Cluster.scala | 3 ++-
.../cluster/sbr/SplitBrainResolverSettings.scala | 8 +++-----
.../apache/pekko/cluster/ddata/DurableStore.scala | 3 ++-
.../apache/pekko/cluster/ddata/Replicator.scala | 4 ++--
.../typed/internal/EventSourcedSettings.scala | 3 ++-
.../state/internal/DurableStateSettings.scala | 3 ++-
.../pekko/persistence/fsm/PersistentFSM.scala | 3 ++-
.../persistence/AtLeastOnceDeliverySpec.scala | 3 ++-
.../org/apache/pekko/remote/RemoteSettings.scala | 6 +++---
.../scala/org/apache/pekko/testkit/TestKit.scala | 3 ++-
13 files changed, 36 insertions(+), 32 deletions(-)
diff --git
a/actor-typed-tests/src/test/scala/org/apache/pekko/actor/typed/TransformMessagesSpec.scala
b/actor-typed-tests/src/test/scala/org/apache/pekko/actor/typed/TransformMessagesSpec.scala
index 9999d86885..72e8e0a7d8 100644
---
a/actor-typed-tests/src/test/scala/org/apache/pekko/actor/typed/TransformMessagesSpec.scala
+++
b/actor-typed-tests/src/test/scala/org/apache/pekko/actor/typed/TransformMessagesSpec.scala
@@ -26,6 +26,7 @@ import
pekko.actor.testkit.typed.scaladsl.ScalaTestWithActorTestKit
import pekko.actor.testkit.typed.scaladsl.TestProbe
import pekko.actor.typed.scaladsl.Behaviors
import pekko.actor.typed.scaladsl.adapter._
+import pekko.util.Helpers.toRootLowerCase
import org.scalatest.wordspec.AnyWordSpecLike
@@ -143,7 +144,7 @@ class TransformMessagesSpec extends
ScalaTestWithActorTestKit with AnyWordSpecLi
def transform(behavior: Behavior[String]): Behavior[String] =
behavior.transformMessages[String] {
- case s => s.toLowerCase
+ case s => toRootLowerCase(s)
}
LoggingTestKit.error[ActorInitializationException].expect {
diff --git
a/cluster-sharding/src/test/scala/org/apache/pekko/cluster/sharding/passivation/simulator/AccessPattern.scala
b/cluster-sharding/src/test/scala/org/apache/pekko/cluster/sharding/passivation/simulator/AccessPattern.scala
index 621f854b59..16b18e9be4 100644
---
a/cluster-sharding/src/test/scala/org/apache/pekko/cluster/sharding/passivation/simulator/AccessPattern.scala
+++
b/cluster-sharding/src/test/scala/org/apache/pekko/cluster/sharding/passivation/simulator/AccessPattern.scala
@@ -20,6 +20,7 @@ import pekko.NotUsed
import pekko.cluster.sharding.ShardRegion.EntityId
import pekko.stream.scaladsl._
import pekko.util.ByteString
+import pekko.util.Helpers.toRootLowerCase
trait AccessPattern {
def isSynthetic: Boolean
@@ -137,7 +138,7 @@ object TraceFileReader {
*/
final class Text(path: String) extends TraceFileReader(path: String) {
override def entityIds: Source[EntityId, NotUsed] = lines.mapConcat { line
=>
- line.split("[^\\w-]+").filter(_.nonEmpty).map(_.toLowerCase)
+ line.split("[^\\w-]+").filter(_.nonEmpty).map(toRootLowerCase)
}
}
diff --git
a/cluster-sharding/src/test/scala/org/apache/pekko/cluster/sharding/passivation/simulator/SimulatorSettings.scala
b/cluster-sharding/src/test/scala/org/apache/pekko/cluster/sharding/passivation/simulator/SimulatorSettings.scala
index 1b82c22618..53a32df5ef 100644
---
a/cluster-sharding/src/test/scala/org/apache/pekko/cluster/sharding/passivation/simulator/SimulatorSettings.scala
+++
b/cluster-sharding/src/test/scala/org/apache/pekko/cluster/sharding/passivation/simulator/SimulatorSettings.scala
@@ -13,13 +13,12 @@
package org.apache.pekko.cluster.sharding.passivation.simulator
-import java.util.Locale
-
import scala.collection.immutable
import scala.jdk.CollectionConverters._
import org.apache.pekko
import pekko.japi.Util.immutableSeq
+import pekko.util.Helpers.toRootLowerCase
import com.typesafe.config.Config
@@ -77,7 +76,7 @@ object SimulatorSettings {
def apply(simulatorConfig: Config, strategy: String): StrategySettings = {
val config = simulatorConfig.getConfig(strategy)
val fallbackConfig = simulatorConfig.getConfig("strategy-defaults")
- lowerCase(config.getString("strategy")) match {
+ toRootLowerCase(config.getString("strategy")) match {
case "composite" =>
val compositeConfig =
config.getConfig("composite").withFallback(fallbackConfig.getConfig("composite"))
Composite(
@@ -95,11 +94,11 @@ object SimulatorSettings {
private def settings(strategyConfig: Config, fallbackConfig: Config):
StrategySettings = {
val config = strategyConfig.withFallback(fallbackConfig)
- lowerCase(config.getString("strategy")) match {
+ toRootLowerCase(config.getString("strategy")) match {
case "optimal" =>
Optimal(config.getInt("optimal.per-region-limit"))
case "least-recently-used" =>
val limit = config.getInt("least-recently-used.per-region-limit")
- val segmented =
lowerCase(config.getString("least-recently-used.segmented.levels")) match {
+ val segmented =
toRootLowerCase(config.getString("least-recently-used.segmented.levels")) match
{
case "off" | "none" => Nil
case _ =>
val levels =
config.getInt("least-recently-used.segmented.levels")
@@ -129,7 +128,7 @@ object SimulatorSettings {
extends AdmissionFilterSettings
def apply(config: Config): AdmissionFilterSettings = {
- lowerCase(config.getString("admission.filter")) match {
+ toRootLowerCase(config.getString("admission.filter")) match {
case "frequency-sketch" =>
FrequencySketchFilter(
config.getInt("admission.frequency-sketch.width-multiplier"),
@@ -153,7 +152,7 @@ object SimulatorSettings {
extends AdmissionOptimizerSettings
def apply(config: Config): AdmissionOptimizerSettings = {
- lowerCase(config.getString("admission.optimizer")) match {
+ toRootLowerCase(config.getString("admission.optimizer")) match {
case "hill-climbing" =>
HillClimbingOptimizer(
config.getDouble("admission.hill-climbing.adjust-multiplier"),
@@ -184,7 +183,7 @@ object SimulatorSettings {
def apply(patternConfig: Config): Synthetic = {
val config = patternConfig.getConfig("synthetic")
- val generator = lowerCase(config.getString("generator")) match {
+ val generator = toRootLowerCase(config.getString("generator")) match {
case "sequence" =>
val start = config.getLong("sequence.start")
Sequence(start)
@@ -210,7 +209,7 @@ object SimulatorSettings {
val max = config.getLong("zipfian.max")
val constant = config.getDouble("zipfian.constant")
val scrambled = config.getBoolean("zipfian.scrambled")
- if (lowerCase(config.getString("zipfian.shifts")) != "off") {
+ if (toRootLowerCase(config.getString("zipfian.shifts")) != "off") {
val shifts = config.getInt("zipfian.shifts")
ShiftingZipfian(min, max, constant, shifts, scrambled)
} else {
@@ -227,7 +226,7 @@ object SimulatorSettings {
def apply(patternConfig: Config): Trace = {
val config = patternConfig.getConfig("trace")
val path = config.getString("path")
- val format = lowerCase(config.getString("format"))
+ val format = toRootLowerCase(config.getString("format"))
Trace(path, format)
}
}
@@ -243,7 +242,7 @@ object SimulatorSettings {
def apply(simulatorConfig: Config, pattern: String): PatternSettings = {
val config =
simulatorConfig.getConfig(pattern).withFallback(simulatorConfig.getConfig("pattern-defaults"))
- lowerCase(config.getString("pattern")) match {
+ toRootLowerCase(config.getString("pattern")) match {
case "synthetic" => Synthetic(config)
case "trace" => Trace(config)
case "joined" => Joined(simulatorConfig, config)
@@ -251,6 +250,4 @@ object SimulatorSettings {
}
}
}
-
- private def lowerCase(s: String): String = s.toLowerCase(Locale.ROOT)
}
diff --git a/cluster/src/main/scala/org/apache/pekko/cluster/Cluster.scala
b/cluster/src/main/scala/org/apache/pekko/cluster/Cluster.scala
index 2a13a1a455..1bc7bc7cf1 100644
--- a/cluster/src/main/scala/org/apache/pekko/cluster/Cluster.scala
+++ b/cluster/src/main/scala/org/apache/pekko/cluster/Cluster.scala
@@ -40,6 +40,7 @@ import pekko.event.MarkerLoggingAdapter
import pekko.japi.Util
import pekko.pattern._
import pekko.remote.{ UniqueAddress => _, _ }
+import pekko.util.Helpers.toRootLowerCase
import pekko.util.Version
import com.typesafe.config.{ Config, ConfigFactory }
@@ -60,7 +61,7 @@ object Cluster extends ExtensionId[Cluster] with
ExtensionIdProvider {
* INTERNAL API
*/
private[cluster] final val isAssertInvariantsEnabled: Boolean =
- System.getProperty("pekko.cluster.assert", "off").toLowerCase match {
+ toRootLowerCase(System.getProperty("pekko.cluster.assert", "off")) match {
case "on" | "true" => true
case _ => false
}
diff --git
a/cluster/src/main/scala/org/apache/pekko/cluster/sbr/SplitBrainResolverSettings.scala
b/cluster/src/main/scala/org/apache/pekko/cluster/sbr/SplitBrainResolverSettings.scala
index fa988b28aa..32370b4e59 100644
---
a/cluster/src/main/scala/org/apache/pekko/cluster/sbr/SplitBrainResolverSettings.scala
+++
b/cluster/src/main/scala/org/apache/pekko/cluster/sbr/SplitBrainResolverSettings.scala
@@ -13,7 +13,6 @@
package org.apache.pekko.cluster.sbr
-import java.util.Locale
import java.util.concurrent.TimeUnit
import scala.concurrent.duration._
@@ -21,8 +20,7 @@ import scala.concurrent.duration._
import org.apache.pekko
import pekko.ConfigurationException
import pekko.annotation.InternalApi
-import pekko.util.Helpers
-import pekko.util.Helpers.Requiring
+import pekko.util.Helpers.{ toRootLowerCase, Requiring }
import com.typesafe.config.Config
@@ -55,7 +53,7 @@ import com.typesafe.config.Config
}
val DowningStrategy: String =
- cc.getString("active-strategy").toLowerCase(Locale.ROOT) match {
+ toRootLowerCase(cc.getString("active-strategy")) match {
case strategyName if allStrategyNames(strategyName) => strategyName
case unknown =>
throw new ConfigurationException(
@@ -64,7 +62,7 @@ import com.typesafe.config.Config
val DownAllWhenUnstable: FiniteDuration = {
val key = "down-all-when-unstable"
- Helpers.toRootLowerCase(cc.getString("down-all-when-unstable")) match {
+ toRootLowerCase(cc.getString("down-all-when-unstable")) match {
case "on" =>
// based on stable-after
4.seconds.max(DowningStableAfter * 3 / 4)
diff --git
a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/DurableStore.scala
b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/DurableStore.scala
index b894976894..40cf63a359 100644
---
a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/DurableStore.scala
+++
b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/DurableStore.scala
@@ -43,6 +43,7 @@ import pekko.serialization.SerializationExtension
import pekko.serialization.SerializerWithStringManifest
import pekko.util.ByteString
import pekko.util.OptionVal
+import pekko.util.Helpers.toRootLowerCase
import com.typesafe.config.Config
@@ -139,7 +140,7 @@ final class LmdbDurableStore(config: Config) extends Actor
with ActorLogging {
val serializer =
serialization.serializerFor(classOf[DurableDataEnvelope]).asInstanceOf[SerializerWithStringManifest]
val manifest = serializer.manifest(new
DurableDataEnvelope(Replicator.Internal.DeletedData))
- val writeBehindInterval =
config.getString("lmdb.write-behind-interval").toLowerCase match {
+ val writeBehindInterval =
toRootLowerCase(config.getString("lmdb.write-behind-interval")) match {
case "off" => Duration.Zero
case _ => config.getDuration("lmdb.write-behind-interval",
MILLISECONDS).millis
}
diff --git
a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/Replicator.scala
b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/Replicator.scala
index 35393c4cb7..45f80f152c 100644
---
a/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/Replicator.scala
+++
b/distributed-data/src/main/scala/org/apache/pekko/cluster/ddata/Replicator.scala
@@ -14,7 +14,7 @@
package org.apache.pekko.cluster.ddata
import java.security.MessageDigest
-import java.util.Optional
+import java.util.{ Locale, Optional }
import java.util.concurrent.ThreadLocalRandom
import java.util.concurrent.TimeUnit
import java.util.function.{ Function => JFunction }
@@ -145,7 +145,7 @@ object ReplicatorSettings {
*/
@InternalApi private[pekko] def name(system: ActorSystem, modifier:
Option[String]): String = {
val name =
system.settings.config.getString("pekko.cluster.distributed-data.name")
- modifier.map(s => s + name.take(1).toUpperCase +
name.drop(1)).getOrElse(name)
+ modifier.map(s => s + name.take(1).toUpperCase(Locale.ROOT) +
name.drop(1)).getOrElse(name)
}
}
diff --git
a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/EventSourcedSettings.scala
b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/EventSourcedSettings.scala
index 786212d070..58901e017a 100644
---
a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/EventSourcedSettings.scala
+++
b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/internal/EventSourcedSettings.scala
@@ -16,6 +16,7 @@ package org.apache.pekko.persistence.typed.internal
import org.apache.pekko
import pekko.actor.typed.ActorSystem
import pekko.annotation.InternalApi
+import pekko.util.Helpers.toRootLowerCase
import com.typesafe.config.Config
@@ -53,7 +54,7 @@ import com.typesafe.config.Config
): EventSourcedSettings = {
val typedConfig = config.getConfig("pekko.persistence.typed")
- val stashOverflowStrategy =
typedConfig.getString("stash-overflow-strategy").toLowerCase match {
+ val stashOverflowStrategy =
toRootLowerCase(typedConfig.getString("stash-overflow-strategy")) match {
case "drop" => StashOverflowStrategy.Drop
case "fail" => StashOverflowStrategy.Fail
case unknown =>
diff --git
a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateSettings.scala
b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateSettings.scala
index 5071c659a7..5b12bfd646 100644
---
a/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateSettings.scala
+++
b/persistence-typed/src/main/scala/org/apache/pekko/persistence/typed/state/internal/DurableStateSettings.scala
@@ -22,6 +22,7 @@ import org.apache.pekko
import pekko.actor.typed.ActorSystem
import pekko.annotation.InternalApi
import pekko.persistence.Persistence
+import pekko.util.Helpers.toRootLowerCase
import com.typesafe.config.Config
@@ -56,7 +57,7 @@ import com.typesafe.config.Config
customStashCapacity: Option[Int]): DurableStateSettings = {
val typedConfig = config.getConfig("pekko.persistence.typed")
- val stashOverflowStrategy =
typedConfig.getString("stash-overflow-strategy").toLowerCase match {
+ val stashOverflowStrategy =
toRootLowerCase(typedConfig.getString("stash-overflow-strategy")) match {
case "drop" => StashOverflowStrategy.Drop
case "fail" => StashOverflowStrategy.Fail
case unknown =>
diff --git
a/persistence/src/main/scala/org/apache/pekko/persistence/fsm/PersistentFSM.scala
b/persistence/src/main/scala/org/apache/pekko/persistence/fsm/PersistentFSM.scala
index 155ae429e4..78de37df71 100644
---
a/persistence/src/main/scala/org/apache/pekko/persistence/fsm/PersistentFSM.scala
+++
b/persistence/src/main/scala/org/apache/pekko/persistence/fsm/PersistentFSM.scala
@@ -26,6 +26,7 @@ import pekko.annotation.InternalApi
import pekko.persistence.{ PersistentActor, RecoveryCompleted, SnapshotOffer }
import pekko.persistence.fsm.PersistentFSM.FSMState
import pekko.persistence.serialization.Message
+import pekko.util.Helpers.toRootLowerCase
import com.typesafe.config.Config
@@ -48,7 +49,7 @@ private[pekko] object SnapshotAfter extends
ExtensionId[SnapshotAfter] with Exte
*/
private[pekko] class SnapshotAfter(config: Config) extends Extension {
val key = "pekko.persistence.fsm.snapshot-after"
- val snapshotAfterValue = config.getString(key).toLowerCase match {
+ val snapshotAfterValue = toRootLowerCase(config.getString(key)) match {
case "off" => None
case _ => Some(config.getInt(key))
}
diff --git
a/persistence/src/test/scala/org/apache/pekko/persistence/AtLeastOnceDeliverySpec.scala
b/persistence/src/test/scala/org/apache/pekko/persistence/AtLeastOnceDeliverySpec.scala
index 84759118f2..130b232f7b 100644
---
a/persistence/src/test/scala/org/apache/pekko/persistence/AtLeastOnceDeliverySpec.scala
+++
b/persistence/src/test/scala/org/apache/pekko/persistence/AtLeastOnceDeliverySpec.scala
@@ -13,6 +13,7 @@
package org.apache.pekko.persistence
+import java.util.Locale
import scala.concurrent.duration._
import scala.util.Failure
import scala.util.control.NoStackTrace
@@ -95,7 +96,7 @@ object AtLeastOnceDeliverySpec {
if (payload.isEmpty)
sender() ! InvalidReq
else {
- val destination = destinations(payload.take(1).toUpperCase)
+ val destination =
destinations(payload.take(1).toUpperCase(Locale.ROOT))
if (async)
persistAsync(AcceptedReq(payload, destination)) { evt =>
updateState(evt)
diff --git a/remote/src/main/scala/org/apache/pekko/remote/RemoteSettings.scala
b/remote/src/main/scala/org/apache/pekko/remote/RemoteSettings.scala
index b0926bc09a..1c20795bb6 100644
--- a/remote/src/main/scala/org/apache/pekko/remote/RemoteSettings.scala
+++ b/remote/src/main/scala/org/apache/pekko/remote/RemoteSettings.scala
@@ -47,7 +47,7 @@ final class RemoteSettings(val config: Config) {
@deprecated("Classic remoting is deprecated, use Artery", "Akka 2.6.0")
val LogFrameSizeExceeding: Option[Int] = {
- if
(config.getString("pekko.remote.classic.log-frame-size-exceeding").toLowerCase
== "off") None
+ if
(toRootLowerCase(config.getString("pekko.remote.classic.log-frame-size-exceeding"))
== "off") None
else Some(getBytes("pekko.remote.classic.log-frame-size-exceeding").toInt)
}
@@ -118,7 +118,7 @@ final class RemoteSettings(val config: Config) {
@deprecated("Classic remoting is deprecated, use Artery", "Akka 2.6.0")
val LogBufferSizeExceeding: Int = {
val key = "pekko.remote.classic.log-buffer-size-exceeding"
- config.getString(key).toLowerCase match {
+ toRootLowerCase(config.getString(key)) match {
case "off" | "false" => Int.MaxValue
case _ => config.getInt(key)
}
@@ -152,7 +152,7 @@ final class RemoteSettings(val config: Config) {
@deprecated("Classic remoting is deprecated, use Artery", "Akka 2.6.0")
val QuarantineSilentSystemTimeout: FiniteDuration = {
val key = "pekko.remote.classic.quarantine-after-silence"
- config.getString(key).toLowerCase match {
+ toRootLowerCase(config.getString(key)) match {
case "off" | "false" => Duration.Zero
case _ =>
config.getMillisDuration(key).requiring(_ > Duration.Zero,
"quarantine-after-silence must be > 0")
diff --git a/testkit/src/main/scala/org/apache/pekko/testkit/TestKit.scala
b/testkit/src/main/scala/org/apache/pekko/testkit/TestKit.scala
index d47f5ae763..02d712ad71 100644
--- a/testkit/src/main/scala/org/apache/pekko/testkit/TestKit.scala
+++ b/testkit/src/main/scala/org/apache/pekko/testkit/TestKit.scala
@@ -32,6 +32,7 @@ import pekko.actor.IllegalActorStateException
import pekko.actor.Terminated
import pekko.annotation.InternalApi
import pekko.util.{ BoxedType, Timeout }
+import pekko.util.Helpers.toRootLowerCase
object TestActor {
type Ignore = Option[PartialFunction[Any, Boolean]]
@@ -915,7 +916,7 @@ trait TestKitBase {
expectMsgType[ActorRef]
}
- private def format(u: TimeUnit, d: Duration) = "%.3f %s".format(d.toUnit(u),
u.toString.toLowerCase)
+ private def format(u: TimeUnit, d: Duration) = "%.3f %s".format(d.toUnit(u),
toRootLowerCase(u.toString))
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]