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 index c1eda26ac1842..5abf0008e1f0f 100644 --- 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 @@ -34,10 +34,10 @@ public class CommunityFacadeFactory extends GraphDatabaseFacadeFactory { @Override - public GraphDatabaseFacade newFacade( File storeDir, Map params, Dependencies dependencies, + public GraphDatabaseFacade initFacade( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return super.newFacade( storeDir, params, newDependencies( dependencies ).settingsClasses( + return super.initFacade( storeDir, params, newDependencies( dependencies ).settingsClasses( asList( append( GraphDatabaseSettings.class, dependencies.settingsClasses() ) ) ), graphDatabaseFacade ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/EditionModule.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/EditionModule.java index b50dec0c2a113..a8392eecc923f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/EditionModule.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/EditionModule.java @@ -54,6 +54,10 @@ */ public abstract class EditionModule { + public interface SPI + { + } + public IdGeneratorFactory idGeneratorFactory; public LabelTokenHolder labelTokenHolder; @@ -111,4 +115,9 @@ protected AuthManager createAuthManager(Config config, LifeSupport life, LogProv } } + + protected EditionModule.SPI spi() + { + return null; + } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java index 679aa5e53427f..c616ea18f5ac8 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java @@ -112,6 +112,7 @@ public class GraphDatabaseFacade implements GraphDatabaseAPI private NodeProxy.NodeActions nodeActions; private RelationshipProxy.RelationshipActions relActions; private SPI spi; + private EditionModule.SPI editionSPI; /** * This is what you need to implemenent to get your very own {@link GraphDatabaseFacade}. This SPI exists as a thin @@ -184,14 +185,21 @@ public GraphDatabaseFacade() { } + public void init( SPI spi ) + { + init( spi, null ); + } + /** * Create a new Core API facade, backed by the given SPI. */ - public void init( SPI spi ) + public void init( SPI spi, EditionModule.SPI editionSPI ) { IndexProviderImpl idxProvider = new IndexProviderImpl( this, spi::currentStatement ); this.spi = spi; + this.editionSPI = editionSPI; + this.relActions = new StandardRelationshipActions( spi::currentStatement, spi::currentTransaction, this::assertTransactionOpen, ( id ) -> new NodeProxy( nodeActions, id ), this ); this.nodeActions = @@ -591,6 +599,11 @@ public StoreId storeId() return spi.storeId(); } + public EditionModule.SPI editionSPI() + { + return editionSPI; + } + @Override public URL validateURLAccess( URL url ) throws URLAccessValidationError { 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 9cf35acb90b3f..a4283d8ef254a 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 @@ -47,7 +47,7 @@ *

* It is abstract in order for subclasses to specify their own {@link org.neo4j.kernel.impl.factory.EditionModule} * implementations. Subclasses also have to set the edition name - * in overridden version of {@link #newFacade(File, Map, GraphDatabaseFacadeFactory.Dependencies, GraphDatabaseFacade)}, + * in overridden version of {@link #initFacade(File, Map, GraphDatabaseFacadeFactory.Dependencies, GraphDatabaseFacade)}, * which is used for logging and similar. *

* To create test versions of databases, override an edition factory (e.g. {@link org.neo4j.kernel.impl.factory @@ -105,7 +105,7 @@ public static class Configuration */ public GraphDatabaseFacade newFacade( File storeDir, Map params, final Dependencies dependencies ) { - return newFacade( storeDir, params, dependencies, new GraphDatabaseFacade() ); + return initFacade( storeDir, params, dependencies, new GraphDatabaseFacade() ); } /** @@ -118,7 +118,7 @@ public GraphDatabaseFacade newFacade( File storeDir, Map params, * @param graphDatabaseFacade the already created facade which needs initialisation * @return the initialised {@link GraphDatabaseFacade} */ - public GraphDatabaseFacade newFacade( File storeDir, Map params, final Dependencies dependencies, + public GraphDatabaseFacade initFacade( File storeDir, Map params, final Dependencies dependencies, final GraphDatabaseFacade graphDatabaseFacade ) { PlatformModule platform = createPlatform( storeDir, params, dependencies, graphDatabaseFacade ); @@ -128,7 +128,7 @@ public GraphDatabaseFacade newFacade( File storeDir, Map params, CoreAPIAvailabilityGuard coreAPIAvailabilityGuard = edition.coreAPIAvailabilityGuard; // Start it - graphDatabaseFacade.init( new ClassicCoreSPI( platform, dataSource, msgLog, coreAPIAvailabilityGuard ) ); + graphDatabaseFacade.init( new ClassicCoreSPI( platform, dataSource, msgLog, coreAPIAvailabilityGuard ), edition.spi() ); Throwable error = null; try 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 f41c44b513fb6..860d702fc2751 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 @@ -68,6 +68,6 @@ public EmbeddedGraphDatabase( File storeDir, protected void create( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies) { - new CommunityFacadeFactory().newFacade( storeDir, params, dependencies, this ); + new CommunityFacadeFactory().initFacade( storeDir, params, dependencies, 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 f7855f1c670ac..2b6e7c7eae16c 100644 --- a/community/kernel/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java +++ b/community/kernel/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java @@ -645,7 +645,7 @@ protected PlatformModule createPlatform( File storeDir, Map para { return new ImpermanentPlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ); } - }.newFacade( storeDir, params, dependencies, this ); + }.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 71fab4b78b357..89af830ed17c7 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/GraphDatabaseFacadeFactoryTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/GraphDatabaseFacadeFactoryTest.java @@ -78,7 +78,7 @@ public void shouldThrowAppropriateExceptionIfStartFails() try { // When - db.newFacade( dir.graphDbDir(), Collections.emptyMap(), deps, mockFacade ); + db.initFacade( dir.graphDbDir(), Collections.emptyMap(), deps, mockFacade ); fail( "Should have thrown " + RuntimeException.class ); } catch ( RuntimeException exception ) @@ -100,7 +100,7 @@ public void shouldThrowAppropriateExceptionIfBothStartAndShutdownFail() try { // When - db.newFacade( dir.graphDbDir(), Collections.emptyMap(), deps, mockFacade ); + db.initFacade( dir.graphDbDir(), Collections.emptyMap(), deps, mockFacade ); fail( "Should have thrown " + RuntimeException.class ); } catch ( RuntimeException exception ) 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 f90d0632fbc2f..84ef1c34cc1be 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 @@ -105,7 +105,7 @@ public void assertSchemaWritesAllowed() throws InvalidTransactionTypeKernelExcep } }; } - }.newFacade( storeDir, params, dependencies, this ); + }.initFacade( storeDir, params, dependencies, this ); } } } 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 58079a682255c..0c26064c41a73 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 @@ -247,7 +247,7 @@ protected FileSystemAbstraction createFileSystemAbstraction() } }; } - }.newFacade( storeDir, params, dependencies, this ); + }.initFacade( storeDir, params, dependencies, this ); } } 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 6e9142b5ef3fd..7bf3c930f7bd5 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 @@ -97,7 +97,7 @@ protected FileSystemAbstraction createFileSystemAbstraction() } }; } - }.newFacade( storeDir, params, dependencies, this ); + }.initFacade( storeDir, params, dependencies, this ); } }; 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 133d220e66e8b..c1f2b1051343b 100644 --- a/community/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java +++ b/community/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java @@ -146,7 +146,7 @@ protected PlatformModule createPlatform( File storeDir, Map para { return new ImpermanentPlatformModule( storeDir, params, databaseInfo(), dependencies, graphDatabaseFacade ); } - }.newFacade( storeDir, new HashMap<>( params ), dependencies, this ); + }.initFacade( storeDir, new HashMap<>( params ), dependencies, this ); } private void trackUnclosedUse( File storeDir ) 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 c6d03d276110c..b81eb7d78a6af 100644 --- a/community/kernel/src/test/java/org/neo4j/test/LimitedFileSystemGraphDatabase.java +++ b/community/kernel/src/test/java/org/neo4j/test/LimitedFileSystemGraphDatabase.java @@ -55,7 +55,7 @@ protected FileSystemAbstraction createFileSystemAbstraction() } }; } - }.newFacade( storeDir, params, dependencies, this ); + }.initFacade( storeDir, params, dependencies, this ); } 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 index 05705fa7cdb3f..237c1c17c83fa 100644 --- 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 @@ -32,10 +32,10 @@ abstract class EnterpriseCoreEdgeFacadeFactory extends GraphDatabaseFacadeFactory { @Override - public GraphDatabaseFacade newFacade( File storeDir, Map params, Dependencies dependencies, + public GraphDatabaseFacade initFacade( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return super.newFacade( storeDir, params, dependencies, graphDatabaseFacade ); + return super.initFacade( storeDir, params, dependencies, graphDatabaseFacade ); } protected void makeHazelcastQuiet( PlatformModule platformModule ) @@ -43,7 +43,7 @@ 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 programmtic way doesn't seem to work + // 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/core/CoreGraphDatabase.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/core/CoreGraphDatabase.java index 4f69908de3f6d..16dc590816e29 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 @@ -39,7 +39,7 @@ public CoreGraphDatabase( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies, DiscoveryServiceFactory discoveryServiceFactory ) { - new EnterpriseCoreFacadeFactory( discoveryServiceFactory ).newFacade( storeDir, params, dependencies, this ); + new EnterpriseCoreFacadeFactory( discoveryServiceFactory ).initFacade( storeDir, params, dependencies, this ); // See same thing in HighlyAvailableGraphDatabase for details raft = getDependencyResolver().resolveDependency( RaftInstance.class ); 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 e928e78f874c6..5b24ab2df87f0 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 @@ -38,6 +38,6 @@ public EdgeGraphDatabase( File storeDir, Map params, Dependencie public EdgeGraphDatabase( File storeDir, Map params, Dependencies dependencies, DiscoveryServiceFactory discoveryServiceFactory ) { - new EnterpriseEdgeFacadeFactory( discoveryServiceFactory ).newFacade( storeDir, params, dependencies, this ); + new EnterpriseEdgeFacadeFactory( discoveryServiceFactory ).initFacade( storeDir, params, dependencies, this ); } } 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 40943a2ddd58a..816cf39ec1022 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 @@ -38,7 +38,7 @@ public class HighlyAvailableGraphDatabase extends GraphDatabaseFacade { public HighlyAvailableGraphDatabase( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - newHighlyAvailableFacadeFactory().newFacade( storeDir, params, dependencies, this ); + newHighlyAvailableFacadeFactory().initFacade( storeDir, params, dependencies, this ); } protected HighlyAvailableFacadeFactory newHighlyAvailableFacadeFactory() 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 index 54e32f5bced0a..5d2440eb195cc 100644 --- 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 @@ -36,10 +36,10 @@ public class HighlyAvailableFacadeFactory extends GraphDatabaseFacadeFactory { @Override - public GraphDatabaseFacade newFacade( File storeDir, Map params, Dependencies dependencies, + public GraphDatabaseFacade initFacade( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return super.newFacade( storeDir, params, dependencies, graphDatabaseFacade ); + return super.initFacade( storeDir, params, dependencies, graphDatabaseFacade ); } @Override 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 e14db2659347d..f84c30462a53c 100644 --- a/enterprise/kernel/src/main/java/org/neo4j/graphdb/EnterpriseGraphDatabase.java +++ b/enterprise/kernel/src/main/java/org/neo4j/graphdb/EnterpriseGraphDatabase.java @@ -54,6 +54,6 @@ public EnterpriseGraphDatabase( File storeDir, Map params, public EnterpriseGraphDatabase( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - new EnterpriseFacadeFactory().newFacade( storeDir, params, dependencies, this ); + new EnterpriseFacadeFactory().initFacade( storeDir, params, dependencies, this ); } -} \ No newline at end of file +} 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 index 8a61ec4b4d4ea..805bab204f6b7 100644 --- 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 @@ -36,10 +36,10 @@ public class EnterpriseFacadeFactory extends GraphDatabaseFacadeFactory { @Override - public GraphDatabaseFacade newFacade( File storeDir, Map params, Dependencies dependencies, + public GraphDatabaseFacade initFacade( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return super.newFacade( storeDir, params, dependencies, graphDatabaseFacade ); + return super.initFacade( storeDir, params, dependencies, graphDatabaseFacade ); } @Override