package dgm.modules.fsmon; import dgm.configuration.Configuration; import dgm.configuration.ConfigurationMonitor; import org.nnsoft.guice.sli4j.core.InjectLogger; import org.slf4j.Logger; class LoggingConfigurationMonitor implements ConfigurationMonitor { @InjectLogger Logger log; @Override public void configurationChanged(String change) { log.info("Configuration change for index {}", change); } } class LoggingFilesystemMonitor implements FilesystemMonitor { @InjectLogger Logger log; @Override public void directoryChanged(String directory) { log.info("Filesystem change detected for directory {}", directory); } } /** * Monitor the filesystem for changes and then provide a new configuration */ public class DynamicConfiguration extends AbstractConfigurationModule { public DynamicConfiguration(String scriptFolder, String... libraries) { super(scriptFolder, libraries); } @Override protected void configureModule() { // setup poller service bindService(PollingFilesystemMonitorService.class); // send filesystem notifications to the configuration reloader multiBind(FilesystemMonitor.class).to(LoggingFilesystemMonitor.class); multiBind(FilesystemMonitor.class).to(ConfigurationReloader.class); // we need at least one binding to configuration monitor or guice complains multiBind(ConfigurationMonitor.class).to(LoggingConfigurationMonitor.class); bind(Configuration.class).toProvider(ConfigurationReloader.class); } }