![JAR search and dependency download from the Maven repository](/logo.png)
io.sinistral.proteus.modules.ConfigModule Maven / Gradle / Ivy
/**
*
*/
package io.sinistral.proteus.modules;
import com.google.inject.AbstractModule;
import com.google.inject.Binder;
import com.google.inject.Key;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import com.google.inject.name.Names;
import com.google.inject.util.Types;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigObject;
import com.typesafe.config.ConfigValue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.lang.reflect.Type;
import java.net.URL;
import java.util.List;
import java.util.Map.Entry;
/**
* Much of this is taken with reverence from Jooby
*
* @author jbauer
*/
@Singleton
public class ConfigModule extends AbstractModule
{
private static Logger log = LoggerFactory.getLogger(ConfigModule.class.getCanonicalName());
protected String configFile = null;
protected URL configURL = null;
protected Config config = null;
public ConfigModule()
{
this.configFile = System.getProperty("config.file");
if (this.configFile == null) {
this.configFile = "application.conf";
}
}
public ConfigModule(String configFile)
{
this.configFile = configFile;
}
public ConfigModule(URL configURL)
{
this.configURL = configURL;
}
public Config getConfig()
{
return config;
}
public void setConfig(Config config)
{
this.config = config;
}
@SuppressWarnings("unchecked")
private void bindConfig(final Config config)
{
traverse(this.binder(), "", config.root());
for (Entry entry : config.entrySet()) {
String name = entry.getKey();
Named named = Names.named(name);
Object value = entry.getValue().unwrapped();
if (value instanceof List) {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy