package io.muoncore.config;
import io.muoncore.config.writers.ConfigFileConfigurationWriter;
import io.muoncore.config.writers.DefaultConfigurationWriter;
import io.muoncore.config.writers.DockerLinkConfigurationWriter;
import io.muoncore.config.writers.EnvironmentConfigurationWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MuonConfigBuilder {
private List<AutoConfigurationWriter> writers = new ArrayList<>();
private String[] tags = new String[0];
private String serviceIdentifier;
private MuonConfigBuilder() {
addWriter(new DefaultConfigurationWriter());
addWriter(new ConfigFileConfigurationWriter());
addWriter(new EnvironmentConfigurationWriter());
addWriter(new DockerLinkConfigurationWriter());
}
public static MuonConfigBuilder withServiceIdentifier(String serviceIdentifier) {
MuonConfigBuilder builder = new MuonConfigBuilder();
builder.serviceIdentifier = serviceIdentifier;
return builder;
}
public MuonConfigBuilder withTags(String... tags) {
this.tags = tags;
return this;
}
public AutoConfiguration build() {
AutoConfiguration config = new AutoConfiguration();
config.setServiceName(serviceIdentifier);
config.setTags(Arrays.asList(tags));
writers.forEach(writer -> writer.writeConfiguration(config));
return config;
}
public MuonConfigBuilder addWriter(AutoConfigurationWriter writer) {
writers.add(writer);
return this;
}
}