/** * Builds the option with a default value so that {@link ConfigurationOption#getValue()} will never return * <code>null</code> * * @param defaultValue The default value which has to be non-<code>null</code> * @throws IllegalArgumentException When <code>null</code> was provided */ public ConfigurationOption<T> buildWithDefault(T defaultValue) { if (defaultValue == null) { throw new IllegalArgumentException("Default value must not be null"); } this.required = true; this.defaultValue = defaultValue; return build(); }
@Test public void testToJsonDoesNotThrowException() throws Exception { final ConfigurationOptionProvider optionProvider = TestConfigurationOptionProvider.of( ConfigurationOption.stringOption().key("foo").description("Foo").configurationCategory("Foos").build()); final ConfigurationRegistry configuration = ConfigurationRegistry.builder().addOptionProvider(optionProvider).build(); new ObjectMapper().writeValueAsString(configuration.getConfigurationOptionsByCategory()); }
@Test(expected = IllegalArgumentException.class) public void testDuplicateAlternateKeys() { createConfiguration(Arrays.asList( ConfigurationOption.stringOption().key("primaryKey1").aliasKeys("alternateKey1").build(), ConfigurationOption.stringOption().key("primaryKey2").aliasKeys("alternateKey1").build() ), new SimpleSource()); }
/** * Builds the option and marks it as required. * * <p> Use this method if you don't want to provide a default value but setting a value is still required. You * will have to make sure to provide a value is present on startup. </p> * * <p> When a required option does not have a value the behavior depends on {@link * ConfigurationRegistry#failOnMissingRequiredValues}. Either an {@link IllegalStateException} is raised, which * can potentially prevent the application form starting or a warning gets logged. </p> */ public ConfigurationOption<T> buildRequired() { this.required = true; return build(); }
@Test(expected = IllegalArgumentException.class) public void testDuplicateLabel() throws Exception { final ConfigurationOptionProvider optionProvider = TestConfigurationOptionProvider.of( ConfigurationOption.stringOption().key("foo").description("Foo").build(), ConfigurationOption.stringOption().key("foo").label("Bar").build()); ConfigurationRegistry.builder().addOptionProvider(optionProvider).build(); }