/** * Migrates and validates all string values in the provided <code>settings</code> map. * * This will update the configuration with the provided values regardless whether errors are encountered or not. * * @param settings the settings to migrate and validate. * @param warnOnUnknownSettings if true method log messages to {@link Config#log}. * @throws InvalidSettingException when and invalid setting is found and {@link * GraphDatabaseSettings#strict_config_validation} is true. */ private void migrateAndValidateAndUpdateSettings( Map<String,String> settings, boolean warnOnUnknownSettings ) throws InvalidSettingException { Map<String,String> migratedSettings = migrateSettings( settings ); params.putAll( migratedSettings ); List<SettingValidator> settingValidators = configOptions.stream() .map( ConfigOptions::settingGroup ) .collect( Collectors.toList() ); // Validate settings Map<String,String> additionalSettings = new IndividualSettingsValidator( settingValidators, warnOnUnknownSettings ).validate( this, log ); params.putAll( additionalSettings ); // Validate configuration for ( ConfigurationValidator validator : validators ) { validator.validate( this, log ); } }
@Test public void strictAllowsStuffOutsideOurNamespace() { IndividualSettingsValidator iv = new IndividualSettingsValidator( singletonList( strict_config_validation ), true ); final Map<String,String> rawConfig = stringMap( strict_config_validation.name(), TRUE, "external_plugin.foo", "bar" ); Config config = mockConfig( rawConfig ); iv.validate( config, log ); verifyNoMoreInteractions( log ); }
@Test public void nonStrictRetainsSettings() { IndividualSettingsValidator iv = new IndividualSettingsValidator( singletonList( strict_config_validation ), true ); final Map<String,String> rawConfig = stringMap( strict_config_validation.name(), FALSE, "dbms.jibber.jabber", "bla", "external_plugin.foo", "bar" ); Config config = mockConfig( rawConfig ); iv.validate( config, log ); verify( log ).warn( "Unknown config option: %s", "dbms.jibber.jabber" ); verifyNoMoreInteractions( log ); }
@Test public void strictErrorsOnUnknownSettingsInOurNamespace() { IndividualSettingsValidator iv = new IndividualSettingsValidator( singletonList( strict_config_validation ), true ); final Map<String,String> rawConfig = stringMap( strict_config_validation.name(), TRUE, "dbms.jibber.jabber", "bla", "external_plugin.foo", "bar" ); Config config = mockConfig( rawConfig ); expected.expect( InvalidSettingException.class ); expected.expectMessage( String.format( "Unknown config option 'dbms.jibber.jabber'. To resolve either remove" + " it from your configuration or set '%s' to false.", strict_config_validation.name() ) ); iv.validate( config, log ); }
/** * Migrates and validates all string values in the provided <code>settings</code> map. * * This will update the configuration with the provided values regardless whether errors are encountered or not. * * @param settings the settings to migrate and validate. * @param warnOnUnknownSettings if true method log messages to {@link Config#log}. * @throws InvalidSettingException when and invalid setting is found and {@link * GraphDatabaseSettings#strict_config_validation} is true. */ private void migrateAndValidateAndUpdateSettings( Map<String,String> settings, boolean warnOnUnknownSettings ) throws InvalidSettingException { Map<String,String> migratedSettings = migrateSettings( settings ); params.putAll( migratedSettings ); List<SettingValidator> settingValidators = configOptions.stream() .map( ConfigOptions::settingGroup ) .collect( Collectors.toList() ); // Validate settings Map<String,String> additionalSettings = new IndividualSettingsValidator( settingValidators, warnOnUnknownSettings ).validate( this, log ); params.putAll( additionalSettings ); // Validate configuration for ( ConfigurationValidator validator : validators ) { validator.validate( this, log ); } }