refactor: Added success- and failure-callbacks to `StorageStrategy`
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / storage / nostorage / NoStorageStorageConfiguration.java
1 package de.juplo.kafka.chat.backend.storage.nostorage;
2
3 import de.juplo.kafka.chat.backend.domain.ChatRoomInfo;
4 import de.juplo.kafka.chat.backend.domain.Message;
5 import de.juplo.kafka.chat.backend.implementation.StorageStrategy;
6 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
7 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
8 import org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration;
9 import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
10 import org.springframework.context.annotation.Bean;
11 import org.springframework.context.annotation.Configuration;
12 import reactor.core.publisher.Flux;
13
14 import java.util.UUID;
15
16
17 @ConditionalOnProperty(
18     prefix = "chat.backend.inmemory",
19     name = "storage-strategy",
20     havingValue = "none",
21     matchIfMissing = true)
22 @Configuration
23 @EnableAutoConfiguration(
24     exclude = {
25         MongoRepositoriesAutoConfiguration.class,
26         MongoAutoConfiguration.class })
27 public class NoStorageStorageConfiguration
28 {
29   @Bean
30   public StorageStrategy storageStrategy()
31   {
32     return new StorageStrategy()
33     {
34       @Override
35       public void writeChatRoomInfo(Flux<ChatRoomInfo> chatRoomInfoFlux) {}
36
37       @Override
38       public Flux<ChatRoomInfo> readChatRoomInfo()
39       {
40         return Flux.empty();
41       }
42
43       @Override
44       public void writeChatRoomData(
45           UUID chatRoomId,
46           Flux<Message> messageFlux,
47           SuccessCallback successCallback,
48           FailureCallback failureCallback
49       )
50       {
51         successCallback.accept(chatRoomId);
52       }
53
54       @Override
55       public Flux<Message> readChatRoomData(UUID chatRoomId)
56       {
57         return Flux.empty();
58       }
59     };
60   }
61 }