754872799ddb76eb688b50feabf814a421b176d6
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / storage / files / FilesStorageConfiguration.java
1 package de.juplo.kafka.chat.backend.storage.files;
2
3 import com.fasterxml.jackson.databind.ObjectMapper;
4 import de.juplo.kafka.chat.backend.ChatBackendProperties;
5 import de.juplo.kafka.chat.backend.implementation.ShardingStrategy;
6 import de.juplo.kafka.chat.backend.implementation.StorageStrategy;
7 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
8 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
9 import org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration;
10 import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
11 import org.springframework.context.annotation.Bean;
12 import org.springframework.context.annotation.Configuration;
13
14 import java.nio.file.Paths;
15
16
17 @ConditionalOnProperty(
18     prefix = "chat.backend.inmemory",
19     name = "storage-strategy",
20     havingValue = "files")
21 @Configuration
22 @EnableAutoConfiguration(
23     exclude = {
24         MongoRepositoriesAutoConfiguration.class,
25         MongoAutoConfiguration.class })
26 public class FilesStorageConfiguration
27 {
28   @Bean
29   public StorageStrategy storageStrategy(
30       ChatBackendProperties properties,
31       ShardingStrategy shardingStrategy,
32       ObjectMapper mapper)
33   {
34     return new FilesStorageStrategy(
35         Paths.get(properties.getInmemory().getStorageDirectory()),
36         shardingStrategy,
37         mapper);
38   }
39 }