
la.renzhen.rtpt.config.source.MergeConfigurationSource Maven / Gradle / Ivy
package la.renzhen.rtpt.config.source;
import la.renzhen.rtpt.config.ConfigurationSource;
import la.renzhen.rtpt.config.Reloadable;
import lombok.Data;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
*
* @author haiker
* @version 30/05/2018 9:28 PM
*/
@Data
public class MergeConfigurationSource implements ConfigurationSource {
List configurationSources;
public MergeConfigurationSource(List configurationSources) {
this.configurationSources = configurationSources;
}
@Override
public Map loadAll(String environment, String prefix) {
return configurationSources.stream().map(s -> s.loadAll(environment, prefix))
.reduce(new HashMap(), (a, b) -> {
a.putAll(b);
return a;
});
}
@Override
public String get(String environment, String key) {
return configurationSources.stream().map(s -> s.get(environment, key))
.filter(s -> s != null).reduce(null, (a, b) -> b);
}
}