in archaius2-core/src/main/java/com/netflix/archaius/DefaultConfigLoader.java [133:224]
public Loader newLoader() {
return new Loader() {
private CascadeStrategy strategy = defaultStrategy;
private ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
private Config overrides = null;
@Override
public Loader withCascadeStrategy(CascadeStrategy strategy) {
this.strategy = strategy;
return this;
}
@Override
public Loader withClassLoader(ClassLoader classLoader) {
this.classLoader = classLoader;
return this;
}
@Override
public Loader withFailOnFirst(boolean flag) {
return this;
}
@Override
public Loader withOverrides(Properties props) {
this.overrides = MapConfig.from(props);
return this;
}
@Override
public Loader withOverrides(Config config) {
this.overrides = config;
return this;
}
@Override
public CompositeConfig load(String resourceName) throws ConfigException {
CompositeConfig compositeConfig = new DefaultCompositeConfig(true);
List<String> names = strategy.generate(resourceName, interpolator, lookup);
for (String name : names) {
for (ConfigReader reader : loaders) {
if (reader.canLoad(classLoader, name)) {
try {
Config config = reader.load(classLoader, name, interpolator, lookup);
if (!config.isEmpty()) {
compositeConfig.addConfig(name, config);
}
LOG.debug("Loaded {} ", name);
}
catch (ConfigException e) {
LOG.debug("Unable to load {}, {}", name, e.getMessage());
}
break;
}
}
}
if (overrides != null) {
LOG.debug("Loading overrides form {}", resourceName);
compositeConfig.addConfig(resourceName + "_overrides", overrides);
}
return compositeConfig;
}
@Override
public Config load(URL url) {
for (ConfigReader loader : loaders) {
if (loader.canLoad(classLoader, url)) {
try {
Config config = loader.load(classLoader, url, interpolator, lookup);
LOG.info("Loaded " + url);
return config;
} catch (ConfigException e) {
LOG.info("Unable to load file '{}'", new Object[]{url, e.getMessage()});
} catch (Exception e) {
LOG.info("Unable to load file '{}'", new Object[]{url, e.getMessage()});
}
}
}
return null;
}
@Override
public Config load(File file) throws ConfigException {
try {
return load(file.toURI().toURL());
} catch (MalformedURLException e) {
throw new ConfigException("Failed to load file " + file, e);
}
}
};
}