
com.yammer.dropwizard.config.ConfigurationFactory Maven / Gradle / Ivy
package com.yammer.dropwizard.config;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.TreeTraversingParser;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
import com.yammer.dropwizard.json.ObjectMapperFactory;
import com.yammer.dropwizard.validation.Validator;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
public class ConfigurationFactory {
private static final String PROPERTY_PREFIX = "dw.";
public static ConfigurationFactory forClass(Class klass,
Validator validator,
ObjectMapperFactory objectMapperFactory) {
return new ConfigurationFactory(klass, validator, objectMapperFactory);
}
public static ConfigurationFactory forClass(Class klass, Validator validator) {
return new ConfigurationFactory(klass, validator, new ObjectMapperFactory());
}
private final Class klass;
private final ObjectMapper mapper;
private final Validator validator;
private ConfigurationFactory(Class klass, Validator validator, ObjectMapperFactory objectMapperFactory) {
this.klass = klass;
objectMapperFactory.enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
this.mapper = objectMapperFactory.build(new YAMLFactory());
this.validator = validator;
}
public T build(File file) throws IOException, ConfigurationException {
final JsonNode node = mapper.readTree(file);
final String filename = file.toString();
return build(node, filename);
}
public T build() throws IOException, ConfigurationException {
return build(JsonNodeFactory.instance.objectNode(), "The default configuration");
}
private T build(JsonNode node, String filename) throws IOException, ConfigurationException {
for (Map.Entry
© 2015 - 2025 Weber Informatics LLC | Privacy Policy