public void logConfiguration(ConfigurationRegistry configuration) { logger.info("# stagemonitor configuration, listing non-default values:"); boolean hasOnlyDefaultOptions = true; for (List<ConfigurationOption<?>> options : configuration.getConfigurationOptionsByCategory().values()) { for (ConfigurationOption<?> option : options) { if (!option.isDefault()) { hasOnlyDefaultOptions = false; logger.info("{}: {} (source: {})", option.getKey(), prepareOptionValueForLog(option), option.getNameOfCurrentConfigurationSource()); if (option.getTags().contains("deprecated")) { logger.warn("Detected usage of deprecated configuration option '{}'. " + "This option might be removed in the future. " + "Please refer to the documentation about alternatives.", option.getKey()); } if (!option.getKey().equals(option.getUsedKey())) { logger.warn("Detected usage of an old configuration key: '{}'. Please use '{}' instead.", option.getUsedKey(), option.getKey()); } } } } if (hasOnlyDefaultOptions) { logger.warn("stagemonitor has not been configured. Have a look at " + "https://github.com/stagemonitor/stagemonitor/wiki/How-should-I-configure-stagemonitor%3F " + "and " + "https://github.com/stagemonitor/stagemonitor/wiki/Configuration-Options " + "for further instructions"); } }
private void add(final ConfigurationOption<?> configurationOption) { configurationOption.setConfiguration(this); configurationOption.setConfigurationSources(configurationSources); final String key = configurationOption.getKey(); addConfigurationOptionByKey(configurationOption, key); for (String alternateKey : configurationOption.getAliasKeys()) { addConfigurationOptionByKey(configurationOption, alternateKey); } addConfigurationOptionByCategory(configurationOption.getConfigurationCategory(), configurationOption); }
markdown.append(configurationOption.getDescription()).append("\n\n"); markdown.append("Key: `").append(configurationOption.getKey()).append("`\n\n"); markdown.append("Default Value: "); final String defaultValue = configurationOption.getDefaultValueAsString();
@Test public void testOnConfigurationChanged() throws Exception { AtomicBoolean changeListenerFired = new AtomicBoolean(false); final ConfigurationOption<String> configurationOption = ConfigurationOption.stringOption() .key("foo") .dynamic(true) .addChangeListener((opt, oldValue, newValue) -> { assertEquals("foo", opt.getKey()); assertEquals("old", oldValue); assertEquals("new", newValue); changeListenerFired.set(true); throw new RuntimeException("This is an expected test exception. " + "It is thrown to test whether Configuration can cope with change listeners that throw an exception."); }).buildWithDefault("old"); final ConfigurationOptionProvider optionProvider = TestConfigurationOptionProvider.of(configurationOption); final SimpleSource configurationSource = new SimpleSource("test"); final ConfigurationRegistry config = ConfigurationRegistry.builder() .addOptionProvider(optionProvider) .addConfigSource(configurationSource) .build(); config.save("foo", "new", "test"); assertTrue(changeListenerFired.get()); }
private void logConfigWithNonDefaultValue(Logger logger, ConfigurationOption<?> option) { logger.debug("{}: '{}' (source: {})", option.getKey(), option.isSensitive() ? "XXXX" : option.getValueAsSafeString(), option.getNameOfCurrentConfigurationSource()); if (option.getTags().contains("deprecated")) { logger.warn("Detected usage of deprecated configuration option '{}'. " + "This option might be removed in the future. " + "Please refer to the documentation about alternatives.", option.getKey()); } if (!option.getKey().equals(option.getUsedKey())) { logger.warn("Detected usage of an old configuration key: '{}'. Please use '{}' instead.", option.getUsedKey(), option.getKey()); } if (option.getValue() instanceof TimeDuration && !TimeDuration.DURATION_PATTERN.matcher(option.getValueAsString()).matches()) { logger.warn("DEPRECATION WARNING: {}: '{}' (source: {}) is not using a time unit. Please use one of 'ms', 's' or 'm'.", option.getKey(), option.getValueAsString(), option.getNameOfCurrentConfigurationSource()); } }