refactor: A `Message` now explicitly has a `MessageKey`
authorKai Moritz <kai@juplo.de>
Wed, 28 Dec 2022 16:48:01 +0000 (17:48 +0100)
committerKai Moritz <kai@juplo.de>
Sun, 15 Jan 2023 18:35:59 +0000 (19:35 +0100)
src/main/java/de/juplo/kafka/chat/backend/domain/Chatroom.java
src/main/java/de/juplo/kafka/chat/backend/domain/Message.java

index e1638aa..df6794a 100644 (file)
@@ -2,7 +2,6 @@ package de.juplo.kafka.chat.backend.domain;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import lombok.Value;
 import lombok.extern.slf4j.Slf4j;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -20,7 +19,7 @@ public class Chatroom
   private final UUID id;
   @Getter
   private final String name;
-  private final LinkedHashMap<MessageKey, Message> messages = new LinkedHashMap<>();
+  private final LinkedHashMap<Message.MessageKey, Message> messages = new LinkedHashMap<>();
   private final Sinks.Many<Message> sink = Sinks.many().multicast().onBackpressureBuffer();
 
   synchronized public Mono<Message> addMessage(
@@ -39,9 +38,9 @@ public class Chatroom
       String user,
       String text)
   {
-    Message message = new Message(id, (long)messages.size(), timestamp, user, text);
+    Message.MessageKey key = Message.MessageKey.of(user, id);
+    Message message = new Message(key, (long)messages.size(), timestamp, text);
 
-    MessageKey key = new MessageKey(user, id);
     Message existing = messages.get(key);
     if (existing != null)
     {
@@ -61,7 +60,7 @@ public class Chatroom
   {
     return Mono.fromSupplier(() ->
     {
-      MessageKey key = MessageKey.of(username, messageId);
+      Message.MessageKey key = Message.MessageKey.of(username, messageId);
       return messages.get(key);
     });
   }
@@ -82,12 +81,4 @@ public class Chatroom
           return serial >= first && serial <= last;
         }));
   }
-
-
-  @Value(staticConstructor = "of")
-  static class MessageKey
-  {
-    String username;
-    Long messageId;
-  }
 }
index c5b738f..c0dd861 100644 (file)
@@ -1,9 +1,6 @@
 package de.juplo.kafka.chat.backend.domain;
 
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.ToString;
+import lombok.*;
 
 import java.time.LocalDateTime;
 
@@ -14,9 +11,26 @@ import java.time.LocalDateTime;
 @ToString
 public class Message
 {
-  private final Long id;
+  private final MessageKey key;
   private final Long serialNumber;
   private final LocalDateTime timestamp;
-  private final String username;
   private final String messageText;
+
+  public Long getId()
+  {
+    return key.messageId;
+  }
+
+  public String getUsername()
+  {
+    return key.username;
+  }
+
+
+  @Value(staticConstructor = "of")
+  public static class MessageKey
+  {
+    String username;
+    Long messageId;
+  }
 }