16 package org.openkilda.config.provider;
18 import static java.lang.String.format;
19 import static java.util.Objects.requireNonNull;
20 import static java.util.stream.Collectors.toSet;
22 import com.sabre.oss.conf4j.factory.ConfigurationFactory;
23 import com.sabre.oss.conf4j.source.ConfigurationSource;
26 import javax.validation.ConstraintViolation;
27 import javax.validation.Validation;
28 import javax.validation.Validator;
40 protected final ConfigurationSource
source;
41 protected final ConfigurationFactory
factory;
42 private final Validator validator;
48 validator = Validation.buildDefaultValidatorFactory().getValidator();
57 public <T> T getConfiguration(Class<T> configurationType) {
58 requireNonNull(configurationType,
"configurationType cannot be null");
60 T instance =
factory.createConfiguration(configurationType,
source);
62 Set<ConstraintViolation<T>> errors = validator.validate(instance);
63 if (!errors.isEmpty()) {
64 Set<String> errorDetails = errors.stream()
65 .map(v -> v.getPropertyPath() +
" " + v.getMessage())
69 format(
"The configuration value(s) for %s violate constraint(s): %s",
70 configurationType.getSimpleName(), String.join(
";", errorDetails)), errorDetails);
final ConfigurationFactory factory
final ConfigurationSource source
ValidatingConfigurationProvider(ConfigurationSource source, ConfigurationFactory factory)