@OnEnabled public void onEnabled(final ConfigurationContext context) throws InitializationException { final String config = context.getProperty(CONFIGURATION_FILE).evaluateAttributeExpressions().getValue(); final FileBasedBuilderParameters params = new Parameters().fileBased().setFile(new File(config)); this.builder = new ReloadingFileBasedConfigurationBuilder<>(resultClass).configure(params); builder.addEventListener(ConfigurationBuilderEvent.CONFIGURATION_REQUEST, new EventListener<ConfigurationBuilderEvent>() { @Override public void onEvent(ConfigurationBuilderEvent event) { if (builder.getReloadingController().checkForReloading(null)) { getLogger().debug("Reloading " + config); } } }); try { // Try getting configuration to see if there is any issue, for example wrong file format. // Then throw InitializationException to keep this service in 'Enabling' state. builder.getConfiguration(); } catch (ConfigurationException e) { throw new InitializationException(e); } }
/** * {@inheritDoc} This implementation creates a builder for XML * configurations with reloading support. */ @Override protected ConfigurationBuilder<? extends HierarchicalConfiguration<?>> createXMLDefinitionBuilder( final BuilderParameters builderParams) { return new ReloadingFileBasedConfigurationBuilder<>( XMLConfiguration.class).configure(builderParams); }
/** * The singleton map os not entirely awesome, but this allows our legacy code to * benefit from live reloads for configuration while the application is running * * @param configFile the path to the config file which should be loaded * @return configuration file */ public static INIConfiguration parseConfig(String configFile) { if (!MAP.containsKey(configFile)) { ReloadingFileBasedConfigurationBuilder<INIConfiguration> builder = new ReloadingFileBasedConfigurationBuilder<>( INIConfiguration.class).configure(new Parameters().properties().setFileName(configFile)); PeriodicReloadingTrigger trigger = new PeriodicReloadingTrigger(builder.getReloadingController(), null, 1, TimeUnit.MINUTES); trigger.start(); MAP.put(configFile, builder); } try { return MAP.get(configFile).getConfiguration(); } catch (ConfigurationException ex) { throw new RuntimeException("Could not read " + configFile); } }
params.setReloadingRefreshDelay(refDelay); ReloadingFileBasedConfigurationBuilder<PropertiesConfiguration> builder = new ReloadingFileBasedConfigurationBuilder<>(PropertiesConfiguration.class); builder.configure(params); cfgReloadTrigger = new PeriodicReloadingTrigger(builder.getReloadingController(), null, refDelay, TimeUnit.MILLISECONDS); config = builder;