diff --git a/community/kernel/src/main/java/org/neo4j/kernel/configuration/Config.java b/community/kernel/src/main/java/org/neo4j/kernel/configuration/Config.java index 93e1bd4a57988..8a2893855b9ca 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/configuration/Config.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/configuration/Config.java @@ -40,6 +40,8 @@ import static java.util.Arrays.asList; +import static org.neo4j.helpers.collection.Iterables.concat; + /** * This class holds the overall configuration of a Neo4j database instance. Use the accessors to convert the internal * key-value settings to other types. @@ -101,11 +103,11 @@ public Config( Map params, Iterable> settingsClasses ) * * @return a new modified config, leaves this config unchanged. */ - public Config with( Map additionalConfig ) + public Config with( Map additionalConfig, Class... settingsClasses ) { Map newParams = getParams(); // copy is returned newParams.putAll( additionalConfig ); - return new Config( newParams ); + return new Config( newParams, concat( this.settingsClasses, asList( settingsClasses ) ) ); } // TODO: Get rid of this, to allow us to have something more diff --git a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/store/BatchingNeoStores.java b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/store/BatchingNeoStores.java index b2088b665c768..af624dddc63d9 100644 --- a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/store/BatchingNeoStores.java +++ b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/store/BatchingNeoStores.java @@ -93,20 +93,14 @@ public BatchingNeoStores( FileSystemAbstraction fileSystem, File storeDir, Confi this.fileSystem = fileSystem; this.logProvider = logService.getInternalLogProvider(); this.storeDir = storeDir; - this.neo4jConfig = new Config( stringMap( dbConfig.getParams(), - dense_node_threshold.name(), valueOf( config.denseNodeThreshold() ), - pagecache_memory.name(), valueOf( config.writeBufferSize() ) ), + this.neo4jConfig = dbConfig.with( + stringMap( + dense_node_threshold.name(), valueOf( config.denseNodeThreshold() ), + pagecache_memory.name(), valueOf( config.writeBufferSize() ) ), GraphDatabaseSettings.class ); final PageCacheTracer tracer = new DefaultPageCacheTracer(); this.pageCache = createPageCache( fileSystem, neo4jConfig, logProvider, tracer ); - this.ioTracer = new IoTracer() - { - @Override - public long countBytesWritten() - { - return tracer.bytesWritten(); - } - }; + this.ioTracer = tracer::bytesWritten; this.neoStores = newNeoStores( pageCache ); if ( alreadyContainsData( neoStores ) ) { @@ -131,7 +125,7 @@ public long countBytesWritten() this.relationshipTypeRepository = new BatchingRelationshipTypeTokenRepository( neoStores.getRelationshipTypeTokenStore(), initialIds.highRelationshipTypeTokenId() ); - // Initialze kernel extensions + // Initialize kernel extensions Dependencies dependencies = new Dependencies(); dependencies.satisfyDependency( neo4jConfig ); dependencies.satisfyDependency( fileSystem ); diff --git a/community/server/src/main/java/org/neo4j/server/plugins/ConfigAdapter.java b/community/server/src/main/java/org/neo4j/server/plugins/ConfigAdapter.java index 3ae22f0f23802..d0ca3a16004e7 100644 --- a/community/server/src/main/java/org/neo4j/server/plugins/ConfigAdapter.java +++ b/community/server/src/main/java/org/neo4j/server/plugins/ConfigAdapter.java @@ -32,6 +32,7 @@ import org.neo4j.helpers.collection.Pair; import org.neo4j.kernel.configuration.AnnotatedFieldHarvester; import org.neo4j.kernel.configuration.Config; +import org.neo4j.kernel.configuration.Settings; import static org.neo4j.helpers.collection.MapUtil.stringMap; @@ -60,8 +61,7 @@ public boolean containsKey( String key ) @Override public Object getProperty( String key ) { - Setting setting = getSettingForKey( key ); - return setting == null ? config.getParams().get( key ) : config.get( setting ); + return config.get( getSettingForKey( key ) ); } @Override @@ -87,7 +87,12 @@ protected void addPropertyDirect( String key, Object value ) private Setting getSettingForKey( String key ) { - return getRegisteredSettings().get( key ); + Setting setting = getRegisteredSettings().get( key ); + if ( setting != null ) + { + return setting; + } + return Settings.setting( key, Settings.STRING, Settings.NO_DEFAULT ); } private Map> getRegisteredSettings() diff --git a/community/server/src/test/java/org/neo4j/server/configuration/ServerConfigLoaderTest.java b/community/server/src/test/java/org/neo4j/server/configuration/ServerConfigLoaderTest.java index f4408dd5db66e..45020923db249 100644 --- a/community/server/src/test/java/org/neo4j/server/configuration/ServerConfigLoaderTest.java +++ b/community/server/src/test/java/org/neo4j/server/configuration/ServerConfigLoaderTest.java @@ -37,6 +37,10 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.neo4j.kernel.configuration.Settings.NO_DEFAULT; +import static org.neo4j.kernel.configuration.Settings.STRING; +import static org.neo4j.kernel.configuration.Settings.setting; + public class ServerConfigLoaderTest { @Rule @@ -72,7 +76,7 @@ public void shouldUseSpecifiedConfigFile() throws Exception // then final String EXPECTED_VALUE = "bar"; - assertEquals( EXPECTED_VALUE, testConf.getParams().get( "foo" ) ); + assertEquals( EXPECTED_VALUE, testConf.get( setting( "foo", STRING, NO_DEFAULT ) ) ); } @Test @@ -90,7 +94,7 @@ public void shouldAcceptDuplicateKeysWithSameValue() throws IOException // then assertNotNull( testConf ); final String EXPECTED_VALUE = "bar"; - assertEquals( EXPECTED_VALUE, testConf.getParams().get( "foo" ) ); + assertEquals( EXPECTED_VALUE, testConf.get( setting( "foo", STRING, NO_DEFAULT ) ) ); } @Test diff --git a/community/udc/src/main/java/org/neo4j/ext/udc/impl/UdcKernelExtensionFactory.java b/community/udc/src/main/java/org/neo4j/ext/udc/impl/UdcKernelExtensionFactory.java index 7ca9285f15448..fa11faa51e0d5 100644 --- a/community/udc/src/main/java/org/neo4j/ext/udc/impl/UdcKernelExtensionFactory.java +++ b/community/udc/src/main/java/org/neo4j/ext/udc/impl/UdcKernelExtensionFactory.java @@ -19,19 +19,18 @@ */ package org.neo4j.ext.udc.impl; -import java.io.InputStream; import java.util.HashMap; import java.util.Map; -import java.util.Properties; import java.util.Timer; import org.neo4j.ext.udc.UdcSettings; import org.neo4j.helpers.Service; -import org.neo4j.kernel.impl.spi.KernelContext; -import org.neo4j.kernel.impl.store.id.IdGeneratorFactory; +import org.neo4j.helpers.collection.MapUtil; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.extension.KernelExtensionFactory; import org.neo4j.kernel.impl.core.StartupStatistics; +import org.neo4j.kernel.impl.spi.KernelContext; +import org.neo4j.kernel.impl.store.id.IdGeneratorFactory; import org.neo4j.kernel.impl.transaction.state.DataSourceManager; import org.neo4j.kernel.lifecycle.Lifecycle; import org.neo4j.udc.UsageData; @@ -59,9 +58,6 @@ public interface Dependencies StartupStatistics startupStats(); } - /** - * No-arg constructor, sets the extension key to "kernel udc". - */ public UdcKernelExtensionFactory() { super( KEY ); @@ -78,7 +74,7 @@ public Lifecycle newInstance( KernelContext kernelContext, UdcKernelExtensionFac throws Throwable { return new UdcKernelExtension( - loadConfig( dependencies.config() ), + dependencies.config().with( loadUdcProperties() ), dependencies.dataSourceManager(), dependencies.idGeneratorFactory(), dependencies.startupStats(), @@ -91,33 +87,15 @@ private boolean isAlwaysDaemon() return true; } - private Config loadConfig( Config config ) - { - Properties udcProps = loadUdcProperties(); - HashMap configParams = new HashMap( config.getParams() ); - for ( Map.Entry entry : udcProps.entrySet() ) - { - configParams.put( (String) entry.getKey(), (String) entry.getValue() ); - } - return new Config( configParams ); - } - - private Properties loadUdcProperties() + private Map loadUdcProperties() { - Properties sysProps = new Properties(); try { - InputStream resource = getClass().getResourceAsStream( "/org/neo4j/ext/udc/udc.properties" ); - if ( resource != null ) - { - sysProps.load( resource ); - } + return MapUtil.load( getClass().getResourceAsStream( "/org/neo4j/ext/udc/udc.properties" ) ); } catch ( Exception e ) { - // AN: commenting out as this provides no value to the user - //System.err.println( "failed to load udc.properties, because: " + e ); + return new HashMap<>(); } - return sysProps; } } diff --git a/enterprise/management/src/main/java/org/neo4j/management/impl/HotspotManagementSupport.java b/enterprise/management/src/main/java/org/neo4j/management/impl/HotspotManagementSupport.java index 7f3694284eeae..25e834ee6c706 100644 --- a/enterprise/management/src/main/java/org/neo4j/management/impl/HotspotManagementSupport.java +++ b/enterprise/management/src/main/java/org/neo4j/management/impl/HotspotManagementSupport.java @@ -43,6 +43,10 @@ import org.neo4j.kernel.impl.logging.LogService; import org.neo4j.logging.Log; +import static org.neo4j.kernel.configuration.Settings.BOOLEAN; +import static org.neo4j.kernel.configuration.Settings.INTEGER; +import static org.neo4j.kernel.configuration.Settings.setting; + @Service.Implementation( ManagementSupport.class ) public class HotspotManagementSupport extends AdvancedManagementSupport { @@ -76,11 +80,7 @@ protected JMXServiceURL getJMXServiceURL( KernelData kernel ) { log.warn( "Failed to load local JMX connection URL.", e.getTargetException() ); } - catch ( LinkageError e ) - { - log.warn( "Failed to load local JMX connection URL.", e ); - } - catch ( Exception e ) + catch ( LinkageError | Exception e ) { log.warn( "Failed to load local JMX connection URL.", e ); } @@ -90,7 +90,7 @@ protected JMXServiceURL getJMXServiceURL( KernelData kernel ) int port = 0; try { - port = Integer.parseInt( kernel.getConfig().getParams().get( "jmx.port" ) ); + port = kernel.getConfig().get( setting( "jmx.port", INTEGER, "0" ) ); } catch ( NumberFormatException ok ) { @@ -98,7 +98,7 @@ protected JMXServiceURL getJMXServiceURL( KernelData kernel ) } if ( port > 0 ) { - boolean useSSL = Boolean.parseBoolean( kernel.getConfig().getParams().get( "jmx.use_ssl" ) ); + boolean useSSL = kernel.getConfig().get( setting( "jmx.use_ssl", BOOLEAN, "false" ) ); log.debug( "Creating new MBean server on port %s%s", port, useSSL ? " using ssl" : "" ); JMXConnectorServer server = createServer( port, useSSL, log ); if ( server != null ) @@ -133,7 +133,7 @@ protected JMXServiceURL getJMXServiceURL( KernelData kernel ) private JMXServiceURL getUrlFrom( Map remote ) { - Set instances = new HashSet(); + Set instances = new HashSet<>(); for ( String key : remote.keySet() ) { if ( key.startsWith( "sun.management.JMXConnectorServer" ) ) @@ -248,7 +248,7 @@ private JMXConnectorServer createServer( int port, boolean useSSL, Log log ) log.warn( "Failed to start JMX Server", e ); return null; } - Map env = new HashMap(); + Map env = new HashMap<>(); if ( useSSL ) { env.put( RMIConnectorServer.RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE, new SslRMIClientSocketFactory() );