fix: Asserted, that `ChatHome` acts, as expected, if asked for a `ChatRoom`
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / persistence / LocalJsonFilesStorageStrategy.java
index c195893..706fbe3 100644 (file)
@@ -3,10 +3,9 @@ package de.juplo.kafka.chat.backend.persistence;
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.databind.JavaType;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import de.juplo.kafka.chat.backend.api.ChatroomTo;
+import de.juplo.kafka.chat.backend.api.ChatRoomTo;
 import de.juplo.kafka.chat.backend.api.MessageTo;
-import de.juplo.kafka.chat.backend.domain.Chatroom;
-import de.juplo.kafka.chat.backend.domain.ChatroomFactory;
+import de.juplo.kafka.chat.backend.domain.ChatRoom;
 import de.juplo.kafka.chat.backend.domain.Message;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -29,11 +28,11 @@ public class LocalJsonFilesStorageStrategy implements StorageStrategy
 
   private final Path storagePath;
   private final ObjectMapper mapper;
-  private final ChatroomFactory chatroomFactory;
+  private final InMemoryChatHomeService service;
 
 
   @Override
-  public void writeChatrooms(Flux<Chatroom> chatroomFlux)
+  public void writeChatrooms(Flux<ChatRoom> chatroomFlux)
   {
     Path path = chatroomsPath();
     log.info("Writing chatrooms to {}", path);
@@ -76,7 +75,7 @@ public class LocalJsonFilesStorageStrategy implements StorageStrategy
           {
             try
             {
-              ChatroomTo chatroomTo = ChatroomTo.from(chatroom);
+              ChatRoomTo chatroomTo = ChatRoomTo.from(chatroom);
               generator.writeObject(chatroomTo);
               writeMessages(chatroomTo, chatroom.getMessages());
             }
@@ -93,22 +92,25 @@ public class LocalJsonFilesStorageStrategy implements StorageStrategy
   }
 
   @Override
-  public Flux<Chatroom> readChatrooms()
+  public Flux<ChatRoom> readChatrooms()
   {
-    JavaType type = mapper.getTypeFactory().constructType(ChatroomTo.class);
+    JavaType type = mapper.getTypeFactory().constructType(ChatRoomTo.class);
     return Flux
-        .from(new JsonFilePublisher<ChatroomTo>(chatroomsPath(), mapper, type))
+        .from(new JsonFilePublisher<ChatRoomTo>(chatroomsPath(), mapper, type))
         .log()
-        .map(chatroomTo ->
+        .map(chatRoomTo ->
         {
-          InMemoryPersistenceStrategy strategy =
-              new InMemoryPersistenceStrategy(readMessages(chatroomTo));
-          return chatroomFactory.restoreChatroom(chatroomTo.getId(), chatroomTo.getName(), strategy);
+          InMemoryChatRoomService chatroomService =
+              new InMemoryChatRoomService(readMessages(chatRoomTo));
+          return service.restoreChatroom(
+              chatRoomTo.getId(),
+              chatRoomTo.getName(),
+              chatroomService);
         });
   }
 
   @Override
-  public void writeMessages(ChatroomTo chatroomTo, Flux<Message> messageFlux)
+  public void writeMessages(ChatRoomTo chatroomTo, Flux<Message> messageFlux)
   {
     Path path = chatroomPath(chatroomTo);
     log.info("Writing messages for {} to {}", chatroomTo, path);
@@ -167,7 +169,7 @@ public class LocalJsonFilesStorageStrategy implements StorageStrategy
   }
 
   @Override
-  public Flux<Message> readMessages(ChatroomTo chatroomTo)
+  public Flux<Message> readMessages(ChatRoomTo chatroomTo)
   {
     JavaType type = mapper.getTypeFactory().constructType(MessageTo.class);
     return Flux
@@ -181,7 +183,7 @@ public class LocalJsonFilesStorageStrategy implements StorageStrategy
     return storagePath.resolve(Path.of(CHATROOMS_FILENAME));
   }
 
-  Path chatroomPath(ChatroomTo chatroomTo)
+  Path chatroomPath(ChatRoomTo chatroomTo)
   {
     return storagePath.resolve(Path.of(chatroomTo.getId().toString() + ".json"));
   }