This is an automated email from the ASF dual-hosted git repository.

He-Pin 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 78cd528313 refactor: migrate Collections.unmodifiable* to 
List.copyOf/Set.copyOf/Map.copyOf (Java 10+) (#3194)
78cd528313 is described below

commit 78cd528313ea12252e0bce1f7d3e2754062fbe09
Author: He-Pin(kerr) <[email protected]>
AuthorDate: Fri Jun 26 22:00:50 2026 +0800

    refactor: migrate Collections.unmodifiable* to 
List.copyOf/Set.copyOf/Map.copyOf (Java 10+) (#3194)
    
    * refactor: migrate Collections.unmodifiable* to 
List.copyOf/Set.copyOf/Map.copyOf (Java 10+)
    
    Motivation:
    Java 10 introduced List.copyOf, Set.copyOf, and Map.copyOf as concise,
    type-safe replacements for Collections.unmodifiable* wrappers. These
    methods produce truly immutable snapshots rather than views, and align
    with the broader Java 17 modernization effort across Pekko.
    
    Modification:
    - Replace Collections.unmodifiableList(x) with List.copyOf(x)
    - Replace Collections.unmodifiableSet(new HashSet<>(Arrays.asList(...))) 
with Set.of(...)
    - Replace Collections.unmodifiableSet(x) with Set.copyOf(x)
    - Replace Collections.unmodifiableMap(x) with Map.copyOf(x)
    - Remove now-unused imports (Collections, HashSet, Arrays where applicable)
    - Applied across 14 test files in 6 modules
    
    Result:
    Cleaner, more idiomatic Java 17 code. Immutable snapshots instead of
    unmodifiable views. Net reduction of 17 lines across 14 files.
    
    Tests: sbt validatePullRequest
    References: https://javaalmanac.io/jdk/17/apidiff/8/
    
    * refactor: migrate Collections.singletonList to List.of per review feedback
    
    Motivation:
    Address reviewer comment that Collections.singletonList should also
    be migrated to the Java 9+ factory method List.of().
    
    Modification:
    Replace Collections.singletonList(element) with List.of(element) in
    StatefulMap.java.
    
    Result:
    Consistent use of Java 9+ collection factory methods.
---
 .../java/jdocs/org/apache/pekko/typed/InteractionPatternsTest.java  | 2 +-
 .../src/test/java/jdocs/delivery/ShardingDocExample.java            | 3 +--
 .../cluster/sharding/typed/ReplicatedShardingCompileOnlySpec.java   | 4 +---
 .../apache/pekko/cluster/sharding/typed/ReplicatedShardingTest.java | 5 +----
 docs/src/test/java/jdocs/actor/ImmutableMessage.java                | 4 +---
 docs/src/test/java/jdocs/actor/Messages.java                        | 4 +---
 docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java     | 6 ++----
 .../org/apache/pekko/persistence/typed/MyReplicatedBehavior.java    | 3 +--
 .../pekko/persistence/typed/ReplicatedAuctionExampleTest.java       | 3 +--
 .../org/apache/pekko/persistence/typed/ReplicatedMovieExample.java  | 3 +--
 .../pekko/persistence/typed/ReplicatedShoppingCartExample.java      | 3 +--
 .../jdocs/org/apache/pekko/persistence/typed/MovieWatchList.java    | 2 +-
 .../org/apache/pekko/persistence/typed/WebStoreCustomerFSM.java     | 3 +--
 .../org/apache/pekko/persistence/fsm/AbstractPersistentFSMTest.java | 3 +--
 14 files changed, 15 insertions(+), 33 deletions(-)

diff --git 
a/actor-typed-tests/src/test/java/jdocs/org/apache/pekko/typed/InteractionPatternsTest.java
 
b/actor-typed-tests/src/test/java/jdocs/org/apache/pekko/typed/InteractionPatternsTest.java
index a9960cfe55..6a7cf0b8b8 100644
--- 
a/actor-typed-tests/src/test/java/jdocs/org/apache/pekko/typed/InteractionPatternsTest.java
+++ 
b/actor-typed-tests/src/test/java/jdocs/org/apache/pekko/typed/InteractionPatternsTest.java
@@ -186,7 +186,7 @@ public class InteractionPatternsTest {
         private final List<Command> messages;
 
         public Batch(List<Command> messages) {
-          this.messages = Collections.unmodifiableList(messages);
+          this.messages = List.copyOf(messages);
         }
 
         public List<Command> getMessages() {
diff --git 
a/cluster-sharding-typed/src/test/java/jdocs/delivery/ShardingDocExample.java 
b/cluster-sharding-typed/src/test/java/jdocs/delivery/ShardingDocExample.java
index 791df69762..23ac1d207f 100644
--- 
a/cluster-sharding-typed/src/test/java/jdocs/delivery/ShardingDocExample.java
+++ 
b/cluster-sharding-typed/src/test/java/jdocs/delivery/ShardingDocExample.java
@@ -26,7 +26,6 @@ import org.apache.pekko.actor.typed.javadsl.Receive;
 
 import java.time.Duration;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.CompletionStage;
@@ -87,7 +86,7 @@ interface ShardingDocExample {
       public final List<String> tasks;
 
       public State(List<String> tasks) {
-        this.tasks = Collections.unmodifiableList(tasks);
+        this.tasks = List.copyOf(tasks);
       }
 
       public State add(String task) {
diff --git 
a/cluster-sharding-typed/src/test/java/jdocs/org/apache/pekko/cluster/sharding/typed/ReplicatedShardingCompileOnlySpec.java
 
b/cluster-sharding-typed/src/test/java/jdocs/org/apache/pekko/cluster/sharding/typed/ReplicatedShardingCompileOnlySpec.java
index 9c28a27427..f689b119d7 100644
--- 
a/cluster-sharding-typed/src/test/java/jdocs/org/apache/pekko/cluster/sharding/typed/ReplicatedShardingCompileOnlySpec.java
+++ 
b/cluster-sharding-typed/src/test/java/jdocs/org/apache/pekko/cluster/sharding/typed/ReplicatedShardingCompileOnlySpec.java
@@ -33,9 +33,7 @@ public class ReplicatedShardingCompileOnlySpec {
   }
 
   public static final Set<ReplicaId> ALL_REPLICAS =
-      Collections.unmodifiableSet(
-          new HashSet<>(
-              Arrays.asList(new ReplicaId("DC-A"), new ReplicaId("DC-B"), new 
ReplicaId("DC-C"))));
+      Set.of(new ReplicaId("DC-A"), new ReplicaId("DC-B"), new 
ReplicaId("DC-C"));
 
   public static ReplicatedEntityProvider<Command> provider() {
     // #bootstrap
diff --git 
a/cluster-sharding-typed/src/test/java/org/apache/pekko/cluster/sharding/typed/ReplicatedShardingTest.java
 
b/cluster-sharding-typed/src/test/java/org/apache/pekko/cluster/sharding/typed/ReplicatedShardingTest.java
index 812eb1ebec..b8e8621e59 100644
--- 
a/cluster-sharding-typed/src/test/java/org/apache/pekko/cluster/sharding/typed/ReplicatedShardingTest.java
+++ 
b/cluster-sharding-typed/src/test/java/org/apache/pekko/cluster/sharding/typed/ReplicatedShardingTest.java
@@ -149,10 +149,7 @@ public class ReplicatedShardingTest {
     }
 
     public static final Set<ReplicaId> ALL_REPLICAS =
-        Collections.unmodifiableSet(
-            new HashSet<>(
-                Arrays.asList(
-                    new ReplicaId("DC-A"), new ReplicaId("DC-B"), new 
ReplicaId("DC-C"))));
+        Set.of(new ReplicaId("DC-A"), new ReplicaId("DC-B"), new 
ReplicaId("DC-C"));
 
     private final ReplicatedSharding<MyReplicatedStringSet.Command> 
replicatedSharding;
 
diff --git a/docs/src/test/java/jdocs/actor/ImmutableMessage.java 
b/docs/src/test/java/jdocs/actor/ImmutableMessage.java
index b94a85b309..094c5ec3fc 100644
--- a/docs/src/test/java/jdocs/actor/ImmutableMessage.java
+++ b/docs/src/test/java/jdocs/actor/ImmutableMessage.java
@@ -13,14 +13,12 @@
 
 package jdocs.actor;
 
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 // #immutable-message
 public record ImmutableMessage(int sequenceNumber, List<String> values) {
   public ImmutableMessage {
-    values = Collections.unmodifiableList(new ArrayList<>(values));
+    values = List.copyOf(values);
   }
 }
 // #immutable-message
diff --git a/docs/src/test/java/jdocs/actor/Messages.java 
b/docs/src/test/java/jdocs/actor/Messages.java
index f47aad7baa..5e535a17f7 100644
--- a/docs/src/test/java/jdocs/actor/Messages.java
+++ b/docs/src/test/java/jdocs/actor/Messages.java
@@ -13,8 +13,6 @@
 
 package jdocs.actor;
 
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 public class Messages {
@@ -22,7 +20,7 @@ public class Messages {
   // #immutable-message
   static record ImmutableMessage(int sequenceNumber, List<String> values) {
     public ImmutableMessage {
-      values = Collections.unmodifiableList(new ArrayList<>(values));
+      values = List.copyOf(values);
     }
   }
 
diff --git a/docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java 
b/docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java
index 52fceaa115..4153b7cde3 100644
--- a/docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java
+++ b/docs/src/test/java/jdocs/stream/operators/flow/StatefulMap.java
@@ -46,9 +46,7 @@ public class StatefulMap {
             () -> (List<String>) new LinkedList<String>(),
             (buffer, element) -> {
               if (buffer.size() > 0 && (!buffer.get(0).equals(element))) {
-                return Pair.create(
-                    new LinkedList<>(Collections.singletonList(element)),
-                    Collections.unmodifiableList(buffer));
+                return Pair.create(new LinkedList<>(List.of(element)), 
List.copyOf(buffer));
               } else {
                 buffer.add(element);
                 return Pair.create(buffer, Collections.<String>emptyList());
@@ -96,7 +94,7 @@ public class StatefulMap {
             (list, element) -> {
               list.add(element);
               if (list.size() == 3) {
-                return Pair.create(new ArrayList<Integer>(3), 
Collections.unmodifiableList(list));
+                return Pair.create(new ArrayList<Integer>(3), 
List.copyOf(list));
               } else {
                 return Pair.create(list, Collections.<Integer>emptyList());
               }
diff --git 
a/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/MyReplicatedBehavior.java
 
b/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/MyReplicatedBehavior.java
index 26698e4208..e3fe783f7e 100644
--- 
a/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/MyReplicatedBehavior.java
+++ 
b/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/MyReplicatedBehavior.java
@@ -34,8 +34,7 @@ public class MyReplicatedBehavior
   public static final ReplicaId DCA = new ReplicaId("DCA");
   public static final ReplicaId DCB = new ReplicaId("DCB");
 
-  public static final Set<ReplicaId> ALL_REPLICAS =
-      Collections.unmodifiableSet(new HashSet<>(Arrays.asList(DCA, DCB)));
+  public static final Set<ReplicaId> ALL_REPLICAS = Set.of(DCA, DCB);
 
   // #replicas
 
diff --git 
a/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedAuctionExampleTest.java
 
b/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedAuctionExampleTest.java
index 8c3eec0222..0bc22bad4c 100644
--- 
a/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedAuctionExampleTest.java
+++ 
b/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedAuctionExampleTest.java
@@ -253,8 +253,7 @@ class AuctionEntity
     AuctionState addFinishedAtReplica(String replica) {
       Set<String> s = new HashSet<>(finishedAtDc);
       s.add(replica);
-      return new AuctionState(
-          false, highestBid, highestCounterOffer, 
Collections.unmodifiableSet(s));
+      return new AuctionState(false, highestBid, highestCounterOffer, 
Set.copyOf(s));
     }
 
     public AuctionState close() {
diff --git 
a/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedMovieExample.java
 
b/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedMovieExample.java
index 7e6f7d71d8..8a57976191 100644
--- 
a/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedMovieExample.java
+++ 
b/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedMovieExample.java
@@ -13,7 +13,6 @@
 
 package jdocs.org.apache.pekko.persistence.typed;
 
-import java.util.Collections;
 import java.util.Set;
 import org.apache.pekko.actor.typed.ActorRef;
 import org.apache.pekko.actor.typed.Behavior;
@@ -45,7 +44,7 @@ interface ReplicatedMovieExample {
       public final Set<String> movieIds;
 
       public MovieList(Set<String> movieIds) {
-        this.movieIds = Collections.unmodifiableSet(movieIds);
+        this.movieIds = Set.copyOf(movieIds);
       }
     }
 
diff --git 
a/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedShoppingCartExample.java
 
b/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedShoppingCartExample.java
index 8e9a63bf26..d802aca0dc 100644
--- 
a/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedShoppingCartExample.java
+++ 
b/persistence-typed-tests/src/test/java/jdocs/org/apache/pekko/persistence/typed/ReplicatedShoppingCartExample.java
@@ -13,7 +13,6 @@
 
 package jdocs.org.apache.pekko.persistence.typed;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -119,7 +118,7 @@ interface ReplicatedShoppingCartExample {
             int count = counter.value().intValue();
             if (count > 0) result.put(key, count);
           });
-      return Collections.unmodifiableMap(result);
+      return Map.copyOf(result);
     }
 
     @Override
diff --git 
a/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/MovieWatchList.java
 
b/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/MovieWatchList.java
index d85ad80fff..7bf56b20d1 100644
--- 
a/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/MovieWatchList.java
+++ 
b/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/MovieWatchList.java
@@ -45,7 +45,7 @@ public class MovieWatchList
     public final Set<String> movieIds;
 
     public MovieList(Set<String> movieIds) {
-      this.movieIds = Collections.unmodifiableSet(movieIds);
+      this.movieIds = Set.copyOf(movieIds);
     }
 
     public MovieList add(String movieId) {
diff --git 
a/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/WebStoreCustomerFSM.java
 
b/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/WebStoreCustomerFSM.java
index d39dc05da7..f01d241ad5 100644
--- 
a/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/WebStoreCustomerFSM.java
+++ 
b/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/WebStoreCustomerFSM.java
@@ -15,7 +15,6 @@ package jdocs.org.apache.pekko.persistence.typed;
 
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -33,7 +32,7 @@ public class WebStoreCustomerFSM {
     public ShoppingCart() {}
 
     public List<Item> getItems() {
-      return Collections.unmodifiableList(items);
+      return List.copyOf(items);
     }
 
     public ShoppingCart addItem(Item item) {
diff --git 
a/persistence/src/test/java/org/apache/pekko/persistence/fsm/AbstractPersistentFSMTest.java
 
b/persistence/src/test/java/org/apache/pekko/persistence/fsm/AbstractPersistentFSMTest.java
index 646b3c0fd4..447d5277c4 100644
--- 
a/persistence/src/test/java/org/apache/pekko/persistence/fsm/AbstractPersistentFSMTest.java
+++ 
b/persistence/src/test/java/org/apache/pekko/persistence/fsm/AbstractPersistentFSMTest.java
@@ -16,7 +16,6 @@ package org.apache.pekko.persistence.fsm;
 import java.io.Serializable;
 import java.time.Duration;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import org.apache.pekko.actor.*;
 
@@ -64,7 +63,7 @@ public class AbstractPersistentFSMTest {
       public ShoppingCart() {}
 
       public List<Item> getItems() {
-        return Collections.unmodifiableList(items);
+        return List.copyOf(items);
       }
 
       public ShoppingCart addItem(Item item) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to