You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pekko.apache.org by fa...@apache.org on 2025/11/14 10:54:23 UTC

(pekko) branch main updated: make Java sample more modern by using sealed and record (#2493)

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

fanningpj 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 9cab31bf55 make Java sample more modern by using sealed and record (#2493)
9cab31bf55 is described below

commit 9cab31bf55e38607ba4c9850534f302fe869d808
Author: PJ Fanning <pj...@users.noreply.github.com>
AuthorDate: Fri Nov 14 11:54:17 2025 +0100

    make Java sample more modern by using sealed and record (#2493)
    
    * make Java sample more modern by using sealed and record
    
    * Update OnMessageIntroTest.java
---
 .../org/apache/pekko/typed/OnMessageIntroTest.java | 72 +++++-----------------
 1 file changed, 14 insertions(+), 58 deletions(-)

diff --git a/actor-typed-tests/src/test/java/jdocs/org/apache/pekko/typed/OnMessageIntroTest.java b/actor-typed-tests/src/test/java/jdocs/org/apache/pekko/typed/OnMessageIntroTest.java
index 283bca4965..5b5dee1368 100644
--- a/actor-typed-tests/src/test/java/jdocs/org/apache/pekko/typed/OnMessageIntroTest.java
+++ b/actor-typed-tests/src/test/java/jdocs/org/apache/pekko/typed/OnMessageIntroTest.java
@@ -39,76 +39,32 @@ public interface OnMessageIntroTest {
   public class ChatRoom {
     // #chatroom-behavior
     // #chatroom-protocol
-    static interface RoomCommand {}
+    static sealed interface RoomCommand permits GetSession, PublishSessionMessage {}
 
-    public static final class GetSession implements RoomCommand {
-      public final String screenName;
-      public final ActorRef<SessionEvent> replyTo;
-
-      public GetSession(String screenName, ActorRef<SessionEvent> replyTo) {
-        this.screenName = screenName;
-        this.replyTo = replyTo;
-      }
-    }
+    public static final record GetSession(String screenName, ActorRef<SessionEvent> replyTo)
+        implements RoomCommand {}
 
     // #chatroom-protocol
-    private static final class PublishSessionMessage implements RoomCommand {
-      public final String screenName;
-      public final String message;
-
-      public PublishSessionMessage(String screenName, String message) {
-        this.screenName = screenName;
-        this.message = message;
-      }
-    }
+    private static final record PublishSessionMessage(String screenName, String message)
+        implements RoomCommand {}
 
     // #chatroom-protocol
 
-    static interface SessionEvent {}
-
-    public static final class SessionGranted implements SessionEvent {
-      public final ActorRef<PostMessage> handle;
-
-      public SessionGranted(ActorRef<PostMessage> handle) {
-        this.handle = handle;
-      }
-    }
-
-    public static final class SessionDenied implements SessionEvent {
-      public final String reason;
-
-      public SessionDenied(String reason) {
-        this.reason = reason;
-      }
-    }
-
-    public static final class MessagePosted implements SessionEvent {
-      public final String screenName;
-      public final String message;
+    static sealed interface SessionEvent permits SessionGranted, SessionDenied, MessagePosted {}
 
-      public MessagePosted(String screenName, String message) {
-        this.screenName = screenName;
-        this.message = message;
-      }
-    }
+    public static final record SessionGranted(ActorRef<PostMessage> handle)
+        implements SessionEvent {}
 
-    static interface SessionCommand {}
+    public static final record SessionDenied(String reason) implements SessionEvent {}
 
-    public static final class PostMessage implements SessionCommand {
-      public final String message;
+    public static final record MessagePosted(String screenName, String message)
+        implements SessionEvent {}
 
-      public PostMessage(String message) {
-        this.message = message;
-      }
-    }
+    static sealed interface SessionCommand permits PostMessage, NotifyClient {}
 
-    private static final class NotifyClient implements SessionCommand {
-      final MessagePosted message;
+    public static final record PostMessage(String message) implements SessionCommand {}
 
-      NotifyClient(MessagePosted message) {
-        this.message = message;
-      }
-    }
+    private static final record NotifyClient(MessagePosted message) implements SessionCommand {}
 
     // #chatroom-protocol
     // #chatroom-behavior


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pekko.apache.org
For additional commands, e-mail: commits-help@pekko.apache.org