package org.peerbox.guice; import java.nio.file.Path; import org.peerbox.app.config.AppConfig; import org.peerbox.app.config.BootstrappingNodesFactory; import org.peerbox.utils.AppData; import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.google.inject.Singleton; /** * Module for the application config and "global" settings (i.e. not user specific). * * @author albrecht * */ public class AppConfigModule extends AbstractModule { /** * The path to the config file to load. */ private final Path appConfigFile; public AppConfigModule() { this(null); } public AppConfigModule(final Path appConfigFile) { if (appConfigFile != null) { this.appConfigFile = appConfigFile; } else { this.appConfigFile = AppData.getConfigFolder().resolve("app.conf"); } } @Override protected void configure() { } @Provides private BootstrappingNodesFactory providesBootstrappingNodesFactory() { BootstrappingNodesFactory f = new BootstrappingNodesFactory(); f.setLastNodeFile(AppData.getConfigFolder().resolve("lastnode")); f.setNodesFile(AppData.getConfigFolder().resolve("bootstrappingnodes")); f.setNodesDefaultUrl(getClass().getResource("/config/default_bootstrappingnodes")); return f; } @Provides @Singleton private AppConfig provideAppConfig() { AppConfig appConfig = new AppConfig(appConfigFile); return appConfig; } }