WIP
[demos/multiple-beans] / src / main / java / de / juplo / demos / multiplebeans / MultipleBeansEnvironmentPostProcessor.java
1 package de.juplo.demos.multiplebeans;
2
3 import lombok.AllArgsConstructor;
4 import org.springframework.boot.SpringApplication;
5 import org.springframework.boot.env.EnvironmentPostProcessor;
6 import org.springframework.core.env.ConfigurableEnvironment;
7 import org.springframework.core.env.PropertySource;
8
9 import java.util.Arrays;
10
11 @AllArgsConstructor
12 public class MultipleBeansEnvironmentPostProcessor implements EnvironmentPostProcessor {
13
14     @Override
15     public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
16         String sites = null;
17         for (PropertySource source : environment.getPropertySources()) {
18             Object found = source.getProperty("juplo.sites");
19             if (found != null)
20                 sites = found.toString();
21         }
22
23         if (sites == null)
24             throw new IllegalArgumentException("Parameter juplo.sites is not set!");
25
26         application.addInitializers(new MultipleBeansApplicationContextInitializer(
27                 Arrays.stream(sites.split(","))
28                 .map(site -> site.trim())
29                 .toArray(size -> new String[size])));
30     }
31 }