diff --git a/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseFactory.java b/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseFactory.java index 8021e1979dbc6..b63c4fb4e5d6c 100644 --- a/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseFactory.java +++ b/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseFactory.java @@ -24,7 +24,8 @@ import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.security.URLAccessRule; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.Edition; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.monitoring.Monitors; @@ -96,7 +97,8 @@ protected void configure( GraphDatabaseBuilder builder ) protected GraphDatabaseService newDatabase( File storeDir, Map config, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - return new CommunityFacadeFactory().newFacade( storeDir, config, dependencies ); + return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) + .newFacade( storeDir, config, dependencies ); } public GraphDatabaseFactory addURLAccessRule( String protocol, URLAccessRule rule ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityEditionModule.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityEditionModule.java index 6134a8860cc14..be5dc000632d1 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityEditionModule.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityEditionModule.java @@ -186,7 +186,7 @@ public static Locks createLockManager( Config config, LogService logging ) } else if ( key.equals( "" ) ) { - logging.getInternalLog( CommunityFacadeFactory.class ) + logging.getInternalLog( CommunityEditionModule.class ) .info( "No locking implementation specified, defaulting to '" + candidateId + "'" ); return candidate.newInstance( ResourceTypes.values() ); } @@ -198,7 +198,7 @@ else if ( key.equals( "" ) ) } else if ( key.equals( "" ) ) { - logging.getInternalLog( CommunityFacadeFactory.class ) + logging.getInternalLog( CommunityEditionModule.class ) .info( "No locking implementation specified, defaulting to 'community'" ); return new CommunityLockManger(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityFacadeFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityFacadeFactory.java deleted file mode 100644 index cbb0fdbe04251..0000000000000 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityFacadeFactory.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2002-2016 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.neo4j.kernel.impl.factory; - -/** - * This facade creates instances of the Community edition of Neo4j. - */ -public class CommunityFacadeFactory extends GraphDatabaseFacadeFactory -{ - protected EditionModule createEdition( PlatformModule platformModule ) - { - return new CommunityEditionModule( platformModule ); - } - - @Override - protected DatabaseInfo databaseInfo() - { - return new DatabaseInfo( Edition.community, OperationalMode.single ); - } -} diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/DatabaseInfo.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/DatabaseInfo.java index a6d751ee27e3b..80b939574e721 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/DatabaseInfo.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/DatabaseInfo.java @@ -22,11 +22,16 @@ public class DatabaseInfo { public static final DatabaseInfo UNKNOWN = new DatabaseInfo( Edition.unknown, OperationalMode.unknown ); + public static final DatabaseInfo COMMUNITY = new DatabaseInfo( Edition.community, OperationalMode.single ); + public static final DatabaseInfo ENTERPRISE = new DatabaseInfo( Edition.enterprise, OperationalMode.single ); + public static final DatabaseInfo HA = new DatabaseInfo( Edition.enterprise, OperationalMode.ha ); + public static final DatabaseInfo CORE = new DatabaseInfo( Edition.enterprise, OperationalMode.core ); + public static final DatabaseInfo EDGE = new DatabaseInfo( Edition.enterprise, OperationalMode.edge ); public final Edition edition; public final OperationalMode operationalMode; - public DatabaseInfo( Edition edition, OperationalMode operationalMode ) + private DatabaseInfo( Edition edition, OperationalMode operationalMode ) { this.edition = edition; this.operationalMode = operationalMode; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeFactory.java index d459bdcafd29a..7107e55042ace 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeFactory.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeFactory.java @@ -21,6 +21,7 @@ import java.io.File; import java.util.Map; +import java.util.function.Function; import org.neo4j.graphdb.config.Setting; import org.neo4j.graphdb.security.URLAccessRule; @@ -54,7 +55,7 @@ * .CommunityFacadeFactory}), and replace modules * with custom versions that instantiate alternative services. */ -public abstract class GraphDatabaseFacadeFactory +public class GraphDatabaseFacadeFactory { public interface Dependencies { @@ -78,12 +79,13 @@ public interface Dependencies public static class Configuration { - public static final Setting ephemeral = setting( "unsupported.dbms.ephemeral", Settings.BOOLEAN, Settings.FALSE ); - public static final Setting ephemeral_keep_logical_logs = setting( "dbms.tx_log.rotation.retention_policy", STRING, "1 " + - "files", illegalValueMessage( "must be `true`/`false` or of format ' ' " + - "for example `100M size` for " + - "limiting logical log space on disk to 100Mb," + - " or `200k txs` for limiting the number of transactions to keep to 200 000", matches( ANY ) ) ); + public static final Setting ephemeral = + setting( "unsupported.dbms.ephemeral", Settings.BOOLEAN, Settings.FALSE ); + public static final Setting ephemeral_keep_logical_logs = + setting( "dbms.tx_log.rotation.retention_policy", STRING, "1 " + "files", illegalValueMessage( "must be `true`/`false` or of format ' ' " + + "for example `100M size` for " + + "limiting logical log space on disk to 100Mb," + + " or `200k txs` for limiting the number of transactions to keep to 200 000", matches( ANY ) ) ); // Kept here to have it not be publicly documented. public static final Setting lock_manager = setting( "unsupported.dbms.lock_manager", Settings.STRING, "" ); @@ -91,8 +93,16 @@ public static class Configuration public static final Setting tracer = setting( "unsupported.dbms.tracer", Settings.STRING, (String) null ); // 'null' default. - public static final Setting editionName = setting( "unsupported.dbms.edition", Settings.STRING, - Edition.unknown.toString() ); + public static final Setting editionName = setting( "unsupported.dbms.edition", Settings.STRING, Edition.unknown.toString() ); + } + + protected final DatabaseInfo databaseInfo; + private final Function editionFactory; + + public GraphDatabaseFacadeFactory( DatabaseInfo databaseInfo, Function editionFactory ) + { + this.databaseInfo = databaseInfo; + this.editionFactory = editionFactory; } /** @@ -103,7 +113,7 @@ public static class Configuration * @param dependencies the dependencies required to construct the {@link GraphDatabaseFacade} * @return the newly constructed {@link GraphDatabaseFacade} */ - public GraphDatabaseFacade newFacade( File storeDir, Map params, final Dependencies dependencies ) + public GraphDatabaseFacade newFacade( File storeDir, Map params, final Dependencies dependencies ) { return initFacade( storeDir, params, dependencies, new GraphDatabaseFacade() ); } @@ -118,11 +128,11 @@ public GraphDatabaseFacade newFacade( File storeDir, Map params, * @param graphDatabaseFacade the already created facade which needs initialisation * @return the initialised {@link GraphDatabaseFacade} */ - public GraphDatabaseFacade initFacade( File storeDir, Map params, final Dependencies dependencies, - final GraphDatabaseFacade graphDatabaseFacade ) + public GraphDatabaseFacade initFacade( File storeDir, Map params, final Dependencies dependencies, + final GraphDatabaseFacade graphDatabaseFacade ) { PlatformModule platform = createPlatform( storeDir, params, dependencies, graphDatabaseFacade ); - EditionModule edition = createEdition( platform ); + EditionModule edition = editionFactory.apply( platform ); final DataSourceModule dataSource = createDataSource( dependencies, platform, edition ); Logger msgLog = platform.logging.getInternalLog( getClass() ).infoLogger(); CoreAPIAvailabilityGuard coreAPIAvailabilityGuard = edition.coreAPIAvailabilityGuard; @@ -171,23 +181,17 @@ public GraphDatabaseFacade initFacade( File storeDir, Map params /** * Create the platform module. Override to replace with custom module. */ - protected PlatformModule createPlatform( File storeDir, Map params, final Dependencies dependencies, - final GraphDatabaseFacade graphDatabaseFacade ) + protected PlatformModule createPlatform( File storeDir, Map params, final Dependencies dependencies, + final GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ); + return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ); } - /** - * Create the edition module. Implement to provide the edition services specified by the public fields in {@link - * org.neo4j.kernel.impl.factory.EditionModule}. - */ - protected abstract EditionModule createEdition( PlatformModule platformModule ); - /** * Create the datasource module. Override to replace with custom module. */ - protected DataSourceModule createDataSource( final Dependencies dependencies, - final PlatformModule platformModule, EditionModule editionModule ) + protected DataSourceModule createDataSource( final Dependencies dependencies, final PlatformModule platformModule, + EditionModule editionModule ) { return new DataSourceModule( dependencies, platformModule, editionModule ); } @@ -209,6 +213,4 @@ public void unavailable() } } ); } - - protected abstract DatabaseInfo databaseInfo(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/internal/EmbeddedGraphDatabase.java b/community/kernel/src/main/java/org/neo4j/kernel/internal/EmbeddedGraphDatabase.java index bf0e7d8b95a87..9ddbf3a713804 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/internal/EmbeddedGraphDatabase.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/internal/EmbeddedGraphDatabase.java @@ -25,7 +25,8 @@ import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.kernel.GraphDatabaseDependencies; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; @@ -76,6 +77,7 @@ protected void create( File storeDir, Map params, { GraphDatabaseDependencies newDependencies = newDependencies( dependencies ) .settingsClasses( asList( append( GraphDatabaseSettings.class, dependencies.settingsClasses() ) ) ); - new CommunityFacadeFactory().initFacade( storeDir, params, newDependencies, this ); + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) + .initFacade( storeDir, params, newDependencies, this ); } } diff --git a/community/kernel/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java b/community/kernel/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java index 8afa3619c477d..0ef49512dac03 100644 --- a/community/kernel/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java +++ b/community/kernel/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java @@ -40,7 +40,8 @@ import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.impl.core.ThreadToStatementContextBridge; import org.neo4j.kernel.impl.factory.CommunityEditionModule; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.DatabaseInfo; +import org.neo4j.kernel.impl.factory.Edition; import org.neo4j.kernel.impl.factory.EditionModule; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; @@ -732,25 +733,23 @@ public GraphDatabaseService newDatabase( Map config ) protected void create( File storeDir, Map params, GraphDatabaseFacadeFactory .Dependencies dependencies ) { - new CommunityFacadeFactory() - { - @Override - protected EditionModule createEdition( PlatformModule platformModule ) - { - return new CommunityEditionModule( platformModule ) + Function factory = + ( platformModule ) -> new CommunityEditionModule( platformModule ) { @Override - protected IdGeneratorFactory createIdGeneratorFactory( FileSystemAbstraction fs ) + protected IdGeneratorFactory createIdGeneratorFactory( + FileSystemAbstraction fs ) { return idFactory; } }; - } + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, factory ) + { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new ImpermanentPlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ); + return new ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ); } }.initFacade( storeDir, params, dependencies, this ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/GraphDatabaseFacadeFactoryTest.java b/community/kernel/src/test/java/org/neo4j/kernel/GraphDatabaseFacadeFactoryTest.java index f6584d2098a70..65a74be7ef9be 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/GraphDatabaseFacadeFactoryTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/GraphDatabaseFacadeFactoryTest.java @@ -113,7 +113,8 @@ public void shouldThrowAppropriateExceptionIfBothStartAndShutdownFail() private GraphDatabaseFacadeFactory newFaultyGraphDatabaseFacadeFactory( final RuntimeException startupError ) { - return new GraphDatabaseFacadeFactory() + return new GraphDatabaseFacadeFactory( DatabaseInfo.UNKNOWN, + (p) -> Mockito.mock( EditionModule.class, Mockito.RETURNS_DEEP_STUBS )) { @Override protected PlatformModule createPlatform( File storeDir, Map params, @@ -121,16 +122,9 @@ protected PlatformModule createPlatform( File storeDir, Map param { final LifeSupport lifeMock = mock( LifeSupport.class ); doThrow( startupError ).when( lifeMock ).start(); - doAnswer( new Answer() - { - @Override - public Object answer( InvocationOnMock invocationOnMock ) throws Throwable - { - return invocationOnMock.getArguments()[0]; - } - } ).when( lifeMock ).add( any( Lifecycle.class ) ); + doAnswer( invocation -> invocation.getArguments()[0] ).when( lifeMock ).add( any( Lifecycle.class ) ); - return new PlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) { @Override public LifeSupport createLife() @@ -139,25 +133,12 @@ public LifeSupport createLife() } }; } - - @Override - protected EditionModule createEdition( PlatformModule platformModule ) - { - return Mockito.mock( EditionModule.class, Mockito.RETURNS_DEEP_STUBS ); - } - @Override protected DataSourceModule createDataSource( Dependencies dependencies, PlatformModule platformModule, EditionModule editionModule ) { return null; } - - @Override - protected DatabaseInfo databaseInfo() - { - return DatabaseInfo.UNKNOWN; - } }; } } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java index 84ef1c34cc1be..c181a0900aaf6 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java @@ -23,14 +23,15 @@ import java.io.File; import java.util.Map; +import java.util.function.Function; import org.neo4j.graphdb.Transaction; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.internal.GraphDatabaseAPI; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.impl.core.ThreadToStatementContextBridge; import org.neo4j.kernel.impl.factory.CommunityEditionModule; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; import org.neo4j.kernel.impl.factory.EditionModule; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; @@ -75,35 +76,26 @@ class FakeHaDatabase extends ImpermanentGraphDatabase @Override protected void create( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - new CommunityFacadeFactory() - { - @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) - { - return new ImpermanentPlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ); - } - - @Override - protected EditionModule createEdition( PlatformModule platformModule ) - { - return new CommunityEditionModule( platformModule ) + Function factory = + ( platformModule ) -> new CommunityEditionModule( platformModule ) { @Override protected SchemaWriteGuard createSchemaWriteGuard() { - return new SchemaWriteGuard() - { - @Override - public void assertSchemaWritesAllowed() throws InvalidTransactionTypeKernelException - { - throw new InvalidTransactionTypeKernelException( - "Creation or deletion of constraints is not possible while running in a HA cluster. " + - "In order to do that, please restart in non-HA mode and propagate the database copy to " + - "all slaves" ); - } + return () -> { + throw new InvalidTransactionTypeKernelException( + "Creation or deletion of constraints is not possible while running in a HA cluster. " + + "In order to do that, please restart in non-HA mode and propagate the database copy" + + "to all slaves" ); }; } }; + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, factory ) + { + @Override + protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) + { + return new ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ); } }.initFacade( storeDir, params, dependencies, this ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/core/BigJumpingStoreIT.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/core/BigJumpingStoreIT.java index 5b77bbab23c82..96226c30b66bf 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/core/BigJumpingStoreIT.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/core/BigJumpingStoreIT.java @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.function.Function; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.GraphDatabaseService; @@ -39,9 +40,10 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.GraphDatabaseDependencies; import org.neo4j.kernel.impl.factory.CommunityEditionModule; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.EditionModule; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; +import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.PlatformModule; import org.neo4j.kernel.impl.store.id.IdGeneratorFactory; @@ -67,29 +69,26 @@ public class BigJumpingStoreIT public void doBefore() { deleteFileOrDirectory( PATH ); - db = new CommunityFacadeFactory() - { - @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) - { - return new PlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ) + Function factory = + ( platformModule ) -> new CommunityEditionModule( platformModule ) { - protected FileSystemAbstraction createFileSystemAbstraction() + @Override + protected IdGeneratorFactory createIdGeneratorFactory( FileSystemAbstraction fs ) { - return new JumpingFileSystemAbstraction( SIZE_PER_JUMP ); + return new JumpingIdGeneratorFactory( SIZE_PER_JUMP ); } }; - } - + db = new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, factory ) + { @Override - protected EditionModule createEdition( PlatformModule platformModule ) + protected PlatformModule createPlatform( File storeDir, Map params, + Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new CommunityEditionModule( platformModule ) + return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) { - @Override - protected IdGeneratorFactory createIdGeneratorFactory( FileSystemAbstraction fs ) + protected FileSystemAbstraction createFileSystemAbstraction() { - return new JumpingIdGeneratorFactory( SIZE_PER_JUMP ); + return new JumpingFileSystemAbstraction( SIZE_PER_JUMP ); } }; } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/IdGeneratorRebuildFailureEmulationTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/IdGeneratorRebuildFailureEmulationTest.java index 4aa1650f219f7..8006e45ed7a1c 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/IdGeneratorRebuildFailureEmulationTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/IdGeneratorRebuildFailureEmulationTest.java @@ -43,7 +43,8 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.configuration.Settings; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.PlatformModule; @@ -233,12 +234,12 @@ public Database( File storeDir ) @Override protected void create( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - new CommunityFacadeFactory() + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade facade ) { - return new ImpermanentPlatformModule( storeDir, params, databaseInfo(), dependencies, facade ) + return new ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, facade ) { @Override protected FileSystemAbstraction createFileSystemAbstraction() diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/CommitContentionTests.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/CommitContentionTests.java index d3c3f7d2181fe..f789517adea48 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/CommitContentionTests.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/CommitContentionTests.java @@ -33,8 +33,10 @@ import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.factory.GraphDatabaseFactoryState; import org.neo4j.kernel.impl.api.index.RemoveOrphanConstraintIndexesOnStartup; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; +import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.PlatformModule; import org.neo4j.test.rule.TargetDirectory; @@ -128,12 +130,12 @@ private GraphDatabaseService createDb() { GraphDatabaseFactoryState state = new GraphDatabaseFactoryState(); //noinspection deprecation - return new CommunityFacadeFactory() + return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) { @Override protected TransactionStats createTransactionStats() diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PartialTransactionFailureIT.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PartialTransactionFailureIT.java index 272b92fd7553c..cbf5e7b5c0d7e 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PartialTransactionFailureIT.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PartialTransactionFailureIT.java @@ -40,7 +40,8 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.impl.api.index.inmemory.InMemoryIndexProviderFactory; import org.neo4j.kernel.impl.api.scan.InMemoryLabelScanStoreExtension; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.PlatformModule; @@ -83,12 +84,12 @@ public void concurrentlyCommittingTransactionsMustNotRotateOutLoggedCommandsOfFa @Override protected void create( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - new CommunityFacadeFactory() + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) { @Override protected FileSystemAbstraction createFileSystemAbstraction() diff --git a/community/kernel/src/test/java/org/neo4j/test/AdversarialPageCacheGraphDatabaseFactory.java b/community/kernel/src/test/java/org/neo4j/test/AdversarialPageCacheGraphDatabaseFactory.java index 3b8cc1c2fc3ee..88143d9e3d2f4 100644 --- a/community/kernel/src/test/java/org/neo4j/test/AdversarialPageCacheGraphDatabaseFactory.java +++ b/community/kernel/src/test/java/org/neo4j/test/AdversarialPageCacheGraphDatabaseFactory.java @@ -29,8 +29,10 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.configuration.Config; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; +import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.PlatformModule; import org.neo4j.kernel.impl.logging.LogService; import org.neo4j.kernel.monitoring.tracing.Tracers; @@ -51,13 +53,13 @@ public static GraphDatabaseFactory create( FileSystemAbstraction fs, Adversary a @Override protected GraphDatabaseService newDatabase( File dir, Map config, Dependencies dependencies ) { - return new CommunityFacadeFactory() + return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade facade ) { - return new PlatformModule( storeDir, params, databaseInfo(), dependencies, facade ) + return new PlatformModule( storeDir, params, databaseInfo, dependencies, facade ) { @Override protected FileSystemAbstraction createFileSystemAbstraction() diff --git a/community/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java b/community/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java index bcc172a5115ac..9ebdda09cf3a6 100644 --- a/community/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java +++ b/community/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java @@ -29,7 +29,7 @@ import org.neo4j.helpers.collection.Iterables; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.extension.KernelExtensionFactory; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; @@ -138,12 +138,12 @@ public ImpermanentGraphDatabase( File storeDir, Map params, Grap @Override protected void create( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - new CommunityFacadeFactory() + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new ImpermanentPlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ); + return new ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ); } }.initFacade( storeDir, new HashMap<>( params ), dependencies, this ); } diff --git a/community/kernel/src/test/java/org/neo4j/test/LimitedFileSystemGraphDatabase.java b/community/kernel/src/test/java/org/neo4j/test/LimitedFileSystemGraphDatabase.java index 55dda7abd71b8..63f44f50a44f5 100644 --- a/community/kernel/src/test/java/org/neo4j/test/LimitedFileSystemGraphDatabase.java +++ b/community/kernel/src/test/java/org/neo4j/test/LimitedFileSystemGraphDatabase.java @@ -24,7 +24,8 @@ import org.neo4j.graphdb.mockfs.LimitedFilesystemAbstraction; import org.neo4j.io.fs.FileSystemAbstraction; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.PlatformModule; @@ -41,12 +42,12 @@ public LimitedFileSystemGraphDatabase( File storeDir ) @Override protected void create( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - new CommunityFacadeFactory() + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade facade ) { - return new ImpermanentPlatformModule( storeDir, params, databaseInfo(), dependencies, facade) + return new ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, facade) { @Override protected FileSystemAbstraction createFileSystemAbstraction() diff --git a/community/kernel/src/test/java/org/neo4j/test/TestGraphDatabaseFactory.java b/community/kernel/src/test/java/org/neo4j/test/TestGraphDatabaseFactory.java index a5704579f5108..e51ce5d14582d 100644 --- a/community/kernel/src/test/java/org/neo4j/test/TestGraphDatabaseFactory.java +++ b/community/kernel/src/test/java/org/neo4j/test/TestGraphDatabaseFactory.java @@ -35,8 +35,10 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.GraphDatabaseDependencies; import org.neo4j.kernel.extension.KernelExtensionFactory; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; +import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.PlatformModule; import org.neo4j.kernel.impl.logging.AbstractLogService; import org.neo4j.kernel.impl.logging.LogService; @@ -178,13 +180,13 @@ protected GraphDatabaseBuilder.DatabaseCreator createImpermanentDatabaseCreator( @SuppressWarnings( "deprecation" ) public GraphDatabaseService newDatabase( Map config ) { - return new CommunityFacadeFactory() + return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new ImpermanentGraphDatabase.ImpermanentPlatformModule( storeDir, params, databaseInfo(), + return new ImpermanentGraphDatabase.ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) { @Override diff --git a/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/NonUniqueIndexTests.java b/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/NonUniqueIndexTests.java index 59fd47d401dc1..d7493b3bfdfba 100644 --- a/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/NonUniqueIndexTests.java +++ b/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/NonUniqueIndexTests.java @@ -41,8 +41,10 @@ import org.neo4j.kernel.api.index.SchemaIndexProvider; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.api.index.sampling.IndexSamplingConfig; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; +import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.PlatformModule; import org.neo4j.kernel.impl.logging.LogService; import org.neo4j.kernel.impl.logging.NullLogService; @@ -93,12 +95,12 @@ private GraphDatabaseService newEmbeddedGraphDatabaseWithSlowJobScheduler() { GraphDatabaseFactoryState graphDatabaseFactoryState = new GraphDatabaseFactoryState(); graphDatabaseFactoryState.setUserLogProvider( NullLogService.getInstance().getUserLogProvider() ); - return new CommunityFacadeFactory() + return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) { @Override protected Neo4jJobScheduler createJobScheduler() diff --git a/community/server/src/main/java/org/neo4j/server/CommunityNeoServer.java b/community/server/src/main/java/org/neo4j/server/CommunityNeoServer.java index 66b4478737216..36262eb980e00 100644 --- a/community/server/src/main/java/org/neo4j/server/CommunityNeoServer.java +++ b/community/server/src/main/java/org/neo4j/server/CommunityNeoServer.java @@ -26,12 +26,14 @@ import org.neo4j.dbms.DatabaseManagementSystemSettings; import org.neo4j.kernel.configuration.Config; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.CommunityEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.logging.LogProvider; import org.neo4j.server.database.Database; import org.neo4j.server.database.LifecycleManagingDatabase.GraphFactory; import org.neo4j.server.modules.AuthorizationModule; +import org.neo4j.server.modules.ConsoleModule; import org.neo4j.server.modules.DBMSModule; import org.neo4j.server.modules.ManagementApiModule; import org.neo4j.server.modules.Neo4jBrowserModule; @@ -39,7 +41,6 @@ import org.neo4j.server.modules.SecurityRulesModule; import org.neo4j.server.modules.ServerModule; import org.neo4j.server.modules.ThirdPartyJAXRSModule; -import org.neo4j.server.modules.ConsoleModule; import org.neo4j.server.rest.management.AdvertisableService; import org.neo4j.server.rest.management.JmxService; import org.neo4j.server.rest.management.console.ConsoleService; @@ -50,9 +51,10 @@ public class CommunityNeoServer extends AbstractNeoServer { - public static final GraphFactory COMMUNITY_FACTORY = ( config, dependencies ) -> { + protected static final GraphFactory COMMUNITY_FACTORY = ( config, dependencies ) -> { File storeDir = config.get( DatabaseManagementSystemSettings.database_path ); - return new CommunityFacadeFactory().newFacade( storeDir, config.getParams(), dependencies ); + return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) + .newFacade( storeDir, config.getParams(), dependencies ); }; public CommunityNeoServer( Config config, GraphDatabaseFacadeFactory.Dependencies dependencies, diff --git a/community/server/src/main/java/org/neo4j/server/database/Database.java b/community/server/src/main/java/org/neo4j/server/database/Database.java index 2434a5c38882f..09e1e99a47e90 100644 --- a/community/server/src/main/java/org/neo4j/server/database/Database.java +++ b/community/server/src/main/java/org/neo4j/server/database/Database.java @@ -20,15 +20,15 @@ package org.neo4j.server.database; import org.neo4j.kernel.configuration.Config; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; +import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.lifecycle.Lifecycle; public interface Database extends Lifecycle { interface Factory { - Database newDatabase( Config config, CommunityFacadeFactory.Dependencies dependencies); + Database newDatabase( Config config, GraphDatabaseFacadeFactory.Dependencies dependencies); } String getLocation(); diff --git a/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java b/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java index e660a07bedfba..922404bf9fad9 100644 --- a/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java +++ b/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java @@ -34,7 +34,6 @@ import org.neo4j.helpers.HostnamePort; import org.neo4j.kernel.GraphDatabaseDependencies; import org.neo4j.kernel.configuration.Config; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.logging.Log; @@ -64,25 +63,25 @@ public class CommunityServerBuilder protected final LogProvider logProvider; private HostnamePort address = new HostnamePort( "localhost", 7474 ); private String maxThreads = null; - protected String dataDir = null; + private String dataDir = null; private String managementUri = "/db/manage/"; private String restUri = "/db/data/"; - protected PreFlightTasks preflightTasks; + private PreFlightTasks preflightTasks; private final HashMap thirdPartyPackages = new HashMap<>(); private final Properties arbitraryProperties = new Properties(); - public static LifecycleManagingDatabase.GraphFactory IN_MEMORY_DB = ( config, dependencies ) -> { + private static LifecycleManagingDatabase.GraphFactory IN_MEMORY_DB = ( config, dependencies ) -> { File storeDir = config.get( DatabaseManagementSystemSettings.database_path ); Map params = config.getParams(); - params.put( CommunityFacadeFactory.Configuration.ephemeral.name(), "true" ); + params.put( GraphDatabaseFacadeFactory.Configuration.ephemeral.name(), "true" ); return new ImpermanentGraphDatabase( storeDir, params, GraphDatabaseDependencies.newDependencies(dependencies) ); }; - protected Clock clock = null; + private Clock clock = null; private String[] autoIndexedNodeKeys = null; private final String[] autoIndexedRelationshipKeys = null; private String[] securityRuleClassNames; - public boolean persistent; + private boolean persistent; private boolean httpsEnabled = false; public static CommunityServerBuilder server( LogProvider logProvider ) diff --git a/enterprise/backup/src/test/java/org/neo4j/backup/TestBackup.java b/enterprise/backup/src/test/java/org/neo4j/backup/TestBackup.java index 07c007e17e47d..5db1eb7d33071 100644 --- a/enterprise/backup/src/test/java/org/neo4j/backup/TestBackup.java +++ b/enterprise/backup/src/test/java/org/neo4j/backup/TestBackup.java @@ -36,6 +36,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.function.Function; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Label; @@ -51,7 +52,7 @@ import org.neo4j.kernel.configuration.Settings; import org.neo4j.kernel.impl.api.TransactionHeaderInformation; import org.neo4j.kernel.impl.factory.CommunityEditionModule; -import org.neo4j.kernel.impl.factory.CommunityFacadeFactory; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.EditionModule; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.PlatformModule; @@ -628,13 +629,8 @@ private GraphDatabaseService startGraphDatabase( File storeDir, boolean withOnli protected GraphDatabaseService newDatabase( File storeDir, Map config, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - return new CommunityFacadeFactory() - { - - @Override - protected EditionModule createEdition( PlatformModule platformModule ) - { - return new CommunityEditionModule( platformModule ) + Function factory = + ( platformModule ) -> new CommunityEditionModule( platformModule ) { @Override @@ -650,8 +646,8 @@ protected TransactionHeaderInformation createUsing( byte[] additionalHeader ) }; } }; - } - }.newFacade( storeDir, config, dependencies ); + return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, factory ) + .newFacade( storeDir, config, dependencies ); } }; return dbFactory.newEmbeddedDatabaseBuilder( storeDir ) diff --git a/enterprise/com/src/main/java/org/neo4j/com/storecopy/ExternallyManagedPageCache.java b/enterprise/com/src/main/java/org/neo4j/com/storecopy/ExternallyManagedPageCache.java index 9ff67976f2214..5f415832ed793 100644 --- a/enterprise/com/src/main/java/org/neo4j/com/storecopy/ExternallyManagedPageCache.java +++ b/enterprise/com/src/main/java/org/neo4j/com/storecopy/ExternallyManagedPageCache.java @@ -31,7 +31,8 @@ import org.neo4j.io.pagecache.PageCache; import org.neo4j.io.pagecache.PagedFile; import org.neo4j.kernel.extension.KernelExtensionFactory; -import org.neo4j.kernel.impl.enterprise.EnterpriseFacadeFactory; +import org.neo4j.kernel.impl.enterprise.EnterpriseEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.configuration.Config; @@ -111,12 +112,12 @@ public GraphDatabaseFactoryWithPageCacheFactory( PageCache delegatePageCache ) protected GraphDatabaseService newDatabase( File storeDir, Map config, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - return new EnterpriseFacadeFactory() + return new GraphDatabaseFacadeFactory( DatabaseInfo.ENTERPRISE, EnterpriseEditionModule::new ) { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) { @Override diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/HazelcastDiscoveryServiceFactory.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/HazelcastDiscoveryServiceFactory.java index d200f73d3a9e4..2e6a26ac33a82 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/HazelcastDiscoveryServiceFactory.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/HazelcastDiscoveryServiceFactory.java @@ -19,6 +19,7 @@ */ package org.neo4j.coreedge.discovery; +import org.neo4j.coreedge.server.CoreEdgeClusterSettings; import org.neo4j.coreedge.server.CoreMember; import org.neo4j.kernel.configuration.Config; import org.neo4j.logging.LogProvider; @@ -28,12 +29,24 @@ public class HazelcastDiscoveryServiceFactory implements DiscoveryServiceFactory @Override public CoreTopologyService coreDiscoveryService( Config config, CoreMember myself, LogProvider logProvider ) { + makeHazelcastSilent( config ); return new HazelcastServerLifecycle( config, myself, logProvider ); } @Override public EdgeTopologyService edgeDiscoveryService( Config config, LogProvider logProvider ) { + makeHazelcastSilent( config ); return new HazelcastClient( new HazelcastClientConnector( config ), logProvider ); } + + private static void makeHazelcastSilent( Config config ) + { + // Make hazelcast quiet for core and edge servers + if ( config.get( CoreEdgeClusterSettings.disable_middleware_logging ) ) + { + // This is clunky, but the documented programmatic way doesn't seem to work + System.setProperty( "hazelcast.logging.type", "none" ); + } + } } diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/EnterpriseCoreEdgeFacadeFactory.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/EnterpriseCoreEdgeFacadeFactory.java deleted file mode 100644 index 5721119108815..0000000000000 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/EnterpriseCoreEdgeFacadeFactory.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2002-2016 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.neo4j.coreedge.server; - -import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; -import org.neo4j.kernel.impl.factory.PlatformModule; - -/** - * This facade creates instances of the Enterprise Core-Edge edition of Neo4j. - */ -abstract class EnterpriseCoreEdgeFacadeFactory extends GraphDatabaseFacadeFactory -{ - protected void makeHazelcastQuiet( PlatformModule platformModule ) - { - // Make hazelcast quiet for core and edge servers - if ( platformModule.config.get( CoreEdgeClusterSettings.disable_middleware_logging ) ) - { - // This is clunky, but the documented programmatic way doesn't seem to work - System.setProperty( "hazelcast.logging.type", "none" ); - } - } -} diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/EnterpriseCoreFacadeFactory.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/EnterpriseCoreFacadeFactory.java deleted file mode 100644 index c97f9ac7cbc38..0000000000000 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/EnterpriseCoreFacadeFactory.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2002-2016 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.neo4j.coreedge.server; - -import org.neo4j.coreedge.discovery.DiscoveryServiceFactory; -import org.neo4j.coreedge.server.core.EnterpriseCoreEditionModule; -import org.neo4j.kernel.impl.factory.DatabaseInfo; -import org.neo4j.kernel.impl.factory.Edition; -import org.neo4j.kernel.impl.factory.EditionModule; -import org.neo4j.kernel.impl.factory.OperationalMode; -import org.neo4j.kernel.impl.factory.PlatformModule; - -public class EnterpriseCoreFacadeFactory extends EnterpriseCoreEdgeFacadeFactory -{ - private final DiscoveryServiceFactory discoveryServiceFactory; - - public EnterpriseCoreFacadeFactory( DiscoveryServiceFactory discoveryServiceFactory ) - { - this.discoveryServiceFactory = discoveryServiceFactory; - } - - @Override - protected EditionModule createEdition( PlatformModule platformModule ) - { - makeHazelcastQuiet( platformModule ); - return new EnterpriseCoreEditionModule( platformModule, discoveryServiceFactory ); - } - - @Override - protected DatabaseInfo databaseInfo() - { - return new DatabaseInfo( Edition.enterprise, OperationalMode.core ); - } -} diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/EnterpriseEdgeFacadeFactory.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/EnterpriseEdgeFacadeFactory.java deleted file mode 100644 index d3cbebbb6d595..0000000000000 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/EnterpriseEdgeFacadeFactory.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2002-2016 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.neo4j.coreedge.server; - -import org.neo4j.coreedge.discovery.DiscoveryServiceFactory; -import org.neo4j.coreedge.server.edge.EnterpriseEdgeEditionModule; -import org.neo4j.kernel.impl.factory.DatabaseInfo; -import org.neo4j.kernel.impl.factory.Edition; -import org.neo4j.kernel.impl.factory.EditionModule; -import org.neo4j.kernel.impl.factory.OperationalMode; -import org.neo4j.kernel.impl.factory.PlatformModule; - -public class EnterpriseEdgeFacadeFactory extends EnterpriseCoreEdgeFacadeFactory -{ - private final DiscoveryServiceFactory discoveryServiceFactory; - - public EnterpriseEdgeFacadeFactory( DiscoveryServiceFactory discoveryServiceFactory ) - { - this.discoveryServiceFactory = discoveryServiceFactory; - } - - @Override - protected EditionModule createEdition( PlatformModule platformModule ) - { - makeHazelcastQuiet( platformModule ); - return new EnterpriseEdgeEditionModule( platformModule, discoveryServiceFactory ); - } - - @Override - protected DatabaseInfo databaseInfo() - { - return new DatabaseInfo( Edition.enterprise, OperationalMode.edge ); - } -} diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/core/CoreGraphDatabase.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/core/CoreGraphDatabase.java index 045c4eeee2e05..eafea227ddea4 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/core/CoreGraphDatabase.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/core/CoreGraphDatabase.java @@ -21,15 +21,19 @@ import java.io.File; import java.util.Map; +import java.util.function.Function; import org.neo4j.coreedge.discovery.DiscoveryServiceFactory; import org.neo4j.coreedge.discovery.HazelcastDiscoveryServiceFactory; import org.neo4j.coreedge.raft.RaftInstance; import org.neo4j.coreedge.raft.roles.Role; import org.neo4j.coreedge.server.CoreMember; -import org.neo4j.coreedge.server.EnterpriseCoreFacadeFactory; +import org.neo4j.coreedge.server.edge.EnterpriseEdgeEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; +import org.neo4j.kernel.impl.factory.EditionModule; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; +import org.neo4j.kernel.impl.factory.PlatformModule; public class CoreGraphDatabase extends GraphDatabaseFacade { @@ -43,7 +47,9 @@ public CoreGraphDatabase( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies, DiscoveryServiceFactory discoveryServiceFactory ) { - new EnterpriseCoreFacadeFactory( discoveryServiceFactory ).initFacade( storeDir, params, dependencies, this ); + Function factory = + (platformModule) -> new EnterpriseCoreEditionModule( platformModule, discoveryServiceFactory ); + new GraphDatabaseFacadeFactory( DatabaseInfo.CORE, factory ).initFacade( storeDir, params, dependencies, this ); } public CoreMember id() diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EdgeGraphDatabase.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EdgeGraphDatabase.java index 5b24ab2df87f0..614729c45a065 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EdgeGraphDatabase.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EdgeGraphDatabase.java @@ -21,12 +21,16 @@ import java.io.File; import java.util.Map; +import java.util.function.Function; -import org.neo4j.coreedge.server.EnterpriseEdgeFacadeFactory; import org.neo4j.coreedge.discovery.DiscoveryServiceFactory; import org.neo4j.coreedge.discovery.HazelcastDiscoveryServiceFactory; +import org.neo4j.kernel.impl.factory.DatabaseInfo; +import org.neo4j.kernel.impl.factory.EditionModule; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; +import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.Dependencies; +import org.neo4j.kernel.impl.factory.PlatformModule; public class EdgeGraphDatabase extends GraphDatabaseFacade { @@ -38,6 +42,8 @@ public EdgeGraphDatabase( File storeDir, Map params, Dependencie public EdgeGraphDatabase( File storeDir, Map params, Dependencies dependencies, DiscoveryServiceFactory discoveryServiceFactory ) { - new EnterpriseEdgeFacadeFactory( discoveryServiceFactory ).initFacade( storeDir, params, dependencies, this ); + Function factory = + (platformModule) -> new EnterpriseEdgeEditionModule( platformModule, discoveryServiceFactory ); + new GraphDatabaseFacadeFactory( DatabaseInfo.EDGE, factory ).initFacade( storeDir, params, dependencies, this ); } } diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java index ca68bf42af3de..27ee7ff1eafdc 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java @@ -97,8 +97,6 @@ */ public class EnterpriseEdgeEditionModule extends EditionModule { - private EdgeTopologyService discoveryService; - public EnterpriseEdgeEditionModule( final PlatformModule platformModule, DiscoveryServiceFactory discoveryServiceFactory ) { @@ -156,7 +154,7 @@ public EnterpriseEdgeEditionModule( final PlatformModule platformModule, LogProvider logProvider = platformModule.logging.getInternalLogProvider(); - discoveryService = discoveryServiceFactory.edgeDiscoveryService( config, logProvider); + EdgeTopologyService discoveryService = discoveryServiceFactory.edgeDiscoveryService( config, logProvider ); life.add(dependencies.satisfyDependency( discoveryService )); NonBlockingChannels nonBlockingChannels = new NonBlockingChannels(); diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HighlyAvailableGraphDatabase.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HighlyAvailableGraphDatabase.java index 816cf39ec1022..8108b1df77b4b 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HighlyAvailableGraphDatabase.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HighlyAvailableGraphDatabase.java @@ -26,7 +26,8 @@ import org.neo4j.kernel.ha.cluster.HighAvailabilityMemberStateMachine; import org.neo4j.kernel.ha.cluster.member.ClusterMembers; import org.neo4j.kernel.ha.cluster.modeswitch.HighAvailabilityModeSwitcher; -import org.neo4j.kernel.ha.factory.HighlyAvailableFacadeFactory; +import org.neo4j.kernel.ha.factory.HighlyAvailableEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; @@ -36,14 +37,11 @@ */ public class HighlyAvailableGraphDatabase extends GraphDatabaseFacade { - public HighlyAvailableGraphDatabase( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) + public HighlyAvailableGraphDatabase( File storeDir, Map params, + GraphDatabaseFacadeFactory.Dependencies dependencies ) { - newHighlyAvailableFacadeFactory().initFacade( storeDir, params, dependencies, this ); - } - - protected HighlyAvailableFacadeFactory newHighlyAvailableFacadeFactory() - { - return new HighlyAvailableFacadeFactory(); + new GraphDatabaseFacadeFactory( DatabaseInfo.HA, HighlyAvailableEditionModule::new ) + .initFacade( storeDir, params, dependencies, this ); } public HighAvailabilityMemberState getInstanceState() diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableFacadeFactory.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableFacadeFactory.java deleted file mode 100644 index 9245201450007..0000000000000 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableFacadeFactory.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2002-2016 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.neo4j.kernel.ha.factory; - -import org.neo4j.kernel.impl.factory.DatabaseInfo; -import org.neo4j.kernel.impl.factory.Edition; -import org.neo4j.kernel.impl.factory.EditionModule; -import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; -import org.neo4j.kernel.impl.factory.OperationalMode; -import org.neo4j.kernel.impl.factory.PlatformModule; - -/** - * This facade creates instances of the Enterprise edition of Neo4j. - */ -public class HighlyAvailableFacadeFactory extends GraphDatabaseFacadeFactory -{ - @Override - protected EditionModule createEdition( PlatformModule platformModule ) - { - return new HighlyAvailableEditionModule(platformModule); - } - - @Override - protected DatabaseInfo databaseInfo() - { - return new DatabaseInfo( Edition.enterprise, OperationalMode.ha ); - } -} diff --git a/enterprise/kernel/src/main/java/org/neo4j/graphdb/EnterpriseGraphDatabase.java b/enterprise/kernel/src/main/java/org/neo4j/graphdb/EnterpriseGraphDatabase.java index f84c30462a53c..395c65ae8f0fe 100644 --- a/enterprise/kernel/src/main/java/org/neo4j/graphdb/EnterpriseGraphDatabase.java +++ b/enterprise/kernel/src/main/java/org/neo4j/graphdb/EnterpriseGraphDatabase.java @@ -22,38 +22,17 @@ import java.io.File; import java.util.Map; -import org.neo4j.graphdb.factory.GraphDatabaseSettings; -import org.neo4j.kernel.extension.KernelExtensionFactory; -import org.neo4j.kernel.impl.enterprise.EnterpriseFacadeFactory; +import org.neo4j.kernel.impl.enterprise.EnterpriseEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; -import org.neo4j.kernel.monitoring.Monitors; - -import static org.neo4j.kernel.GraphDatabaseDependencies.newDependencies; public class EnterpriseGraphDatabase extends GraphDatabaseFacade { - - public EnterpriseGraphDatabase( File storeDir, Map params, - Iterable> kernelExtensions, - Monitors monitors ) - { - this( storeDir, params, newDependencies() - .settingsClasses( GraphDatabaseSettings.class ) - .kernelExtensions( kernelExtensions ).monitors( monitors ) ); - } - - public EnterpriseGraphDatabase( File storeDir, Map params, - Iterable> kernelExtensions ) - { - this( storeDir, params, newDependencies() - .settingsClasses( GraphDatabaseSettings.class ) - .kernelExtensions( kernelExtensions ) ); - } - public EnterpriseGraphDatabase( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - new EnterpriseFacadeFactory().initFacade( storeDir, params, dependencies, this ); + new GraphDatabaseFacadeFactory( DatabaseInfo.ENTERPRISE, EnterpriseEditionModule::new ) + .initFacade( storeDir, params, dependencies, this ); } } diff --git a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/EnterpriseFacadeFactory.java b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/EnterpriseFacadeFactory.java deleted file mode 100644 index 401e268f23495..0000000000000 --- a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/EnterpriseFacadeFactory.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2002-2016 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.neo4j.kernel.impl.enterprise; - -import org.neo4j.kernel.impl.factory.DatabaseInfo; -import org.neo4j.kernel.impl.factory.Edition; -import org.neo4j.kernel.impl.factory.EditionModule; -import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; -import org.neo4j.kernel.impl.factory.OperationalMode; -import org.neo4j.kernel.impl.factory.PlatformModule; - -/** - * This facade creates instances of the Enterprise edition of Neo4j. - */ -public class EnterpriseFacadeFactory extends GraphDatabaseFacadeFactory -{ - @Override - protected EditionModule createEdition( PlatformModule platformModule ) - { - return new EnterpriseEditionModule( platformModule ); - } - - @Override - protected DatabaseInfo databaseInfo() - { - return new DatabaseInfo( Edition.enterprise, OperationalMode.single ); - } -} diff --git a/enterprise/kernel/src/test/java/org/neo4j/test/TestEnterpriseGraphDatabaseFactory.java b/enterprise/kernel/src/test/java/org/neo4j/test/TestEnterpriseGraphDatabaseFactory.java index 05e411f2c40ca..1e0b37d160259 100644 --- a/enterprise/kernel/src/test/java/org/neo4j/test/TestEnterpriseGraphDatabaseFactory.java +++ b/enterprise/kernel/src/test/java/org/neo4j/test/TestEnterpriseGraphDatabaseFactory.java @@ -26,8 +26,10 @@ import org.neo4j.graphdb.factory.GraphDatabaseBuilder; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.GraphDatabaseDependencies; -import org.neo4j.kernel.impl.enterprise.EnterpriseFacadeFactory; +import org.neo4j.kernel.impl.enterprise.EnterpriseEditionModule; +import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; +import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; import org.neo4j.kernel.impl.factory.PlatformModule; import org.neo4j.kernel.impl.logging.AbstractLogService; import org.neo4j.kernel.impl.logging.LogService; @@ -45,13 +47,13 @@ protected GraphDatabaseBuilder.DatabaseCreator createImpermanentDatabaseCreator( @SuppressWarnings( "deprecation" ) public GraphDatabaseService newDatabase( Map config ) { - return new EnterpriseFacadeFactory() + return new GraphDatabaseFacadeFactory( DatabaseInfo.ENTERPRISE, EnterpriseEditionModule::new ) { @Override protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new ImpermanentGraphDatabase.ImpermanentPlatformModule( storeDir, params, databaseInfo(), + return new ImpermanentGraphDatabase.ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) { @Override