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;
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);
{
try
{
- ChatroomTo chatroomTo = ChatroomTo.from(chatroom);
+ ChatRoomTo chatroomTo = ChatRoomTo.from(chatroom);
generator.writeObject(chatroomTo);
writeMessages(chatroomTo, chatroom.getMessages());
}
}
@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);
}
@Override
- public Flux<Message> readMessages(ChatroomTo chatroomTo)
+ public Flux<Message> readMessages(ChatRoomTo chatroomTo)
{
JavaType type = mapper.getTypeFactory().constructType(MessageTo.class);
return Flux
return storagePath.resolve(Path.of(CHATROOMS_FILENAME));
}
- Path chatroomPath(ChatroomTo chatroomTo)
+ Path chatroomPath(ChatRoomTo chatroomTo)
{
return storagePath.resolve(Path.of(chatroomTo.getId().toString() + ".json"));
}