fix: `ChatBackendApplicationTest` cannot corrupt the real data anymore
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / persistence / LocalJsonFilesStorageStrategy.java
index d66c544..7b490bf 100644 (file)
@@ -3,7 +3,7 @@ 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.Message;
@@ -14,6 +14,7 @@ import reactor.core.publisher.Flux;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.time.Clock;
 
 import static java.nio.file.StandardOpenOption.CREATE;
 import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING;
@@ -27,8 +28,9 @@ public class LocalJsonFilesStorageStrategy implements StorageStrategy
 
 
   private final Path storagePath;
+  private final Clock clock;
+  private final int bufferSize;
   private final ObjectMapper mapper;
-  private final InMemoryChatHomeService service;
 
 
   @Override
@@ -75,7 +77,7 @@ public class LocalJsonFilesStorageStrategy implements StorageStrategy
           {
             try
             {
-              ChatroomTo chatroomTo = ChatroomTo.from(chatroom);
+              ChatRoomTo chatroomTo = ChatRoomTo.from(chatroom);
               generator.writeObject(chatroomTo);
               writeMessages(chatroomTo, chatroom.getMessages());
             }
@@ -94,23 +96,25 @@ public class LocalJsonFilesStorageStrategy implements StorageStrategy
   @Override
   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 ->
         {
-          InMemoryChatroomService chatroomService =
-              new InMemoryChatroomService(readMessages(chatroomTo));
-          return service.restoreChatroom(
-              chatroomTo.getId(),
-              chatroomTo.getName(),
-              chatroomService);
+          InMemoryChatRoomService chatroomService =
+              new InMemoryChatRoomService(readMessages(chatRoomTo));
+          return new ChatRoom(
+              chatRoomTo.getId(),
+              chatRoomTo.getName(),
+              clock,
+              chatroomService,
+              bufferSize);
         });
   }
 
   @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);
@@ -169,7 +173,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
@@ -183,7 +187,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"));
   }