refactor: One stream -> using `flatMap` instead of an inner `subscribe`
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / storage / nostorage / NoStorageStorageStrategy.java
index 1b20aa3..5902742 100644 (file)
@@ -1,53 +1,46 @@
 package de.juplo.kafka.chat.backend.storage.nostorage;
 
+import de.juplo.kafka.chat.backend.domain.ChatHomeService;
 import de.juplo.kafka.chat.backend.domain.ChatRoomInfo;
 import de.juplo.kafka.chat.backend.domain.Message;
 import de.juplo.kafka.chat.backend.implementation.StorageStrategy;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration;
-import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
+import lombok.extern.slf4j.Slf4j;
 import reactor.core.publisher.Flux;
 
 import java.util.UUID;
 
 
-@ConditionalOnProperty(
-    prefix = "chat.backend.inmemory",
-    name = "storage-strategy",
-    havingValue = "none",
-    matchIfMissing = true)
-@Configuration
-@EnableAutoConfiguration(
-    exclude = {
-        MongoRepositoriesAutoConfiguration.class,
-        MongoAutoConfiguration.class })
-public class NoStorageStorageConfiguration
+@Slf4j
+public class NoStorageStorageStrategy implements StorageStrategy
 {
-  @Bean
-  public StorageStrategy storageStrategy()
+  public Flux<ChatRoomInfo> write(ChatHomeService chatHomeService)
   {
-    return new StorageStrategy()
-    {
-      @Override
-      public void writeChatRoomInfo(Flux<ChatRoomInfo> chatRoomInfoFlux) {}
-
-      @Override
-      public Flux<ChatRoomInfo> readChatRoomInfo()
-      {
-        return Flux.empty();
-      }
-
-      @Override
-      public void writeChatRoomData(UUID chatRoomId, Flux<Message> messageFlux) {}
-
-      @Override
-      public Flux<Message> readChatRoomData(UUID chatRoomId)
-      {
-        return Flux.empty();
-      }
-    };
+    return Flux
+        .<ChatRoomInfo>empty()
+        .doOnComplete(() -> log.info("Storage is disabled: Not storing {}", chatHomeService));
+
+  }
+
+  public Flux<ChatRoomInfo> writeChatRoomInfo(Flux<ChatRoomInfo> chatRoomInfoFlux)
+  {
+    return chatRoomInfoFlux;
+  }
+
+  @Override
+  public Flux<ChatRoomInfo> readChatRoomInfo()
+  {
+    return Flux.empty();
+  }
+
+  @Override
+  public Flux<Message> writeChatRoomData(UUID chatRoomId, Flux<Message> messageFlux)
+  {
+    return messageFlux;
+  }
+
+  @Override
+  public Flux<Message> readChatRoomData(UUID chatRoomId)
+  {
+    return Flux.empty();
   }
 }