From 3dfd76717483ef3edc826ef24e5ef75db674ba30 Mon Sep 17 00:00:00 2001 From: MishaDemianenko Date: Thu, 13 Sep 2018 11:57:56 +0200 Subject: [PATCH] Split EditionModule. Introduce Abstract and Default edition modules. --- .../neo4j/test/TestGraphDatabaseFactory.java | 4 +- .../neo4j/graphdb/LabelsAcceptanceTest.java | 4 +- .../org/neo4j/kernel/impl/api/KernelTest.java | 4 +- .../dmbs/database/DefaultDatabaseManager.java | 6 +- .../facade/GraphDatabaseFacadeFactory.java | 16 ++--- .../factory/module/DataSourceModule.java | 4 +- .../factory/module/PlatformModule.java | 4 +- ...Module.java => AbstractEditionModule.java} | 46 +----------- .../edition/CommunityEditionModule.java | 4 +- .../module/edition/DefaultEditionModule.java | 71 +++++++++++++++++++ .../DefaultEditionModuleDatabaseContext.java | 7 +- .../GraphDatabaseFacadeFactoryTest.java | 4 +- .../module/edition/EditionModuleTest.java | 2 +- .../test/java/org/neo4j/backup/BackupIT.java | 4 +- .../core/CoreGraphDatabase.java | 4 +- .../core/EnterpriseCoreEditionModule.java | 7 +- .../EnterpriseReadReplicaEditionModule.java | 7 +- .../readreplica/ReadReplicaGraphDatabase.java | 4 +- .../factory/HighlyAvailableEditionModule.java | 7 +- .../enterprise/EnterpriseEditionModule.java | 6 +- .../java/org/neo4j/TransactionGuardIT.java | 6 +- .../test/java/org/neo4j/bolt/BookmarkIT.java | 4 +- 22 files changed, 130 insertions(+), 95 deletions(-) rename community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/{EditionModule.java => AbstractEditionModule.java} (87%) create mode 100644 community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/DefaultEditionModule.java diff --git a/community/community-it/it-test-support/src/main/java/org/neo4j/test/TestGraphDatabaseFactory.java b/community/community-it/it-test-support/src/main/java/org/neo4j/test/TestGraphDatabaseFactory.java index c4bf19930a754..f6d39ba4335af 100644 --- a/community/community-it/it-test-support/src/main/java/org/neo4j/test/TestGraphDatabaseFactory.java +++ b/community/community-it/it-test-support/src/main/java/org/neo4j/test/TestGraphDatabaseFactory.java @@ -33,8 +33,8 @@ import org.neo4j.graphdb.factory.GraphDatabaseFactory; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.factory.module.PlatformModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.factory.module.edition.CommunityEditionModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; import org.neo4j.graphdb.mockfs.EphemeralFileSystemAbstraction; import org.neo4j.graphdb.mockfs.UncloseableDelegatingFileSystemAbstraction; import org.neo4j.graphdb.security.URLAccessRule; @@ -254,7 +254,7 @@ protected TestGraphDatabaseFacadeFactory( TestGraphDatabaseFactoryState state, b } protected TestGraphDatabaseFacadeFactory( TestGraphDatabaseFactoryState state, boolean impermanent, - DatabaseInfo databaseInfo, Function editionFactory ) + DatabaseInfo databaseInfo, Function editionFactory ) { super( databaseInfo, editionFactory ); this.state = state; diff --git a/community/community-it/kernel-it/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java b/community/community-it/kernel-it/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java index e7567ffa19514..2af272968cfab 100644 --- a/community/community-it/kernel-it/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java +++ b/community/community-it/kernel-it/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java @@ -37,8 +37,8 @@ import org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory; import org.neo4j.graphdb.factory.GraphDatabaseBuilder; import org.neo4j.graphdb.factory.module.PlatformModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.factory.module.edition.CommunityEditionModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; import org.neo4j.graphdb.factory.module.id.IdContextFactoryBuilder; import org.neo4j.helpers.collection.Iterables; import org.neo4j.internal.kernel.api.LabelSet; @@ -749,7 +749,7 @@ protected void create( Config config, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - Function factory = + Function factory = platformModule -> new CommunityEditionModuleWithCustomIdContextFactory( platformModule, idFactory ); new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, factory ) { diff --git a/community/community-it/kernel-it/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java b/community/community-it/kernel-it/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java index fc0e725320caf..9e1adf7c4c7ae 100644 --- a/community/community-it/kernel-it/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java +++ b/community/community-it/kernel-it/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java @@ -28,8 +28,8 @@ import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory; import org.neo4j.graphdb.factory.module.PlatformModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.factory.module.edition.CommunityEditionModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.configuration.Config; @@ -77,7 +77,7 @@ class FakeHaDatabase extends ImpermanentGraphDatabase @Override protected void create( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - Function factory = + Function factory = platformModule -> new CommunityEditionModule( platformModule ) { @Override diff --git a/community/neo4j/src/main/java/org/neo4j/dmbs/database/DefaultDatabaseManager.java b/community/neo4j/src/main/java/org/neo4j/dmbs/database/DefaultDatabaseManager.java index 6debf95e67113..b45926a6cf166 100644 --- a/community/neo4j/src/main/java/org/neo4j/dmbs/database/DefaultDatabaseManager.java +++ b/community/neo4j/src/main/java/org/neo4j/dmbs/database/DefaultDatabaseManager.java @@ -25,7 +25,7 @@ import org.neo4j.graphdb.facade.spi.ClassicCoreSPI; import org.neo4j.graphdb.factory.module.DataSourceModule; import org.neo4j.graphdb.factory.module.PlatformModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.proc.Procedures; import org.neo4j.kernel.lifecycle.LifecycleAdapter; @@ -37,12 +37,12 @@ public final class DefaultDatabaseManager extends LifecycleAdapter implements Da { private GraphDatabaseFacade database; private final PlatformModule platform; - private final EditionModule edition; + private final AbstractEditionModule edition; private final Procedures procedures; private final Logger log; private final GraphDatabaseFacade graphDatabaseFacade; - public DefaultDatabaseManager( PlatformModule platform, EditionModule edition, Procedures procedures, + public DefaultDatabaseManager( PlatformModule platform, AbstractEditionModule edition, Procedures procedures, Logger log, GraphDatabaseFacade graphDatabaseFacade ) { this.platform = platform; diff --git a/community/neo4j/src/main/java/org/neo4j/graphdb/facade/GraphDatabaseFacadeFactory.java b/community/neo4j/src/main/java/org/neo4j/graphdb/facade/GraphDatabaseFacadeFactory.java index 30b6343da3ed0..f901ab29f6385 100644 --- a/community/neo4j/src/main/java/org/neo4j/graphdb/facade/GraphDatabaseFacadeFactory.java +++ b/community/neo4j/src/main/java/org/neo4j/graphdb/facade/GraphDatabaseFacadeFactory.java @@ -32,7 +32,7 @@ import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.factory.module.DataSourceModule; import org.neo4j.graphdb.factory.module.PlatformModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.security.URLAccessRule; import org.neo4j.graphdb.spatial.Geometry; import org.neo4j.graphdb.spatial.Point; @@ -74,10 +74,10 @@ /** * This is the main factory for creating database instances. It delegates creation to three different modules - * ({@link PlatformModule}, {@link EditionModule}, and {@link DataSourceModule}), + * ({@link PlatformModule}, {@link AbstractEditionModule}, and {@link DataSourceModule}), * which create all the specific services needed to run a graph database. *

- * It is abstract in order for subclasses to specify their own {@link EditionModule} + * It is abstract in order for subclasses to specify their own {@link AbstractEditionModule} * implementations. Subclasses also have to set the edition name in overridden version of * {@link #initFacade(File, Map, GraphDatabaseFacadeFactory.Dependencies, GraphDatabaseFacade)}, * which is used for logging and similar. @@ -109,10 +109,10 @@ public interface Dependencies } protected final DatabaseInfo databaseInfo; - private final Function editionFactory; + private final Function editionFactory; public GraphDatabaseFacadeFactory( DatabaseInfo databaseInfo, - Function editionFactory ) + Function editionFactory ) { this.databaseInfo = databaseInfo; this.editionFactory = editionFactory; @@ -161,7 +161,7 @@ public GraphDatabaseFacade initFacade( File storeDir, Config config, final Depen final GraphDatabaseFacade graphDatabaseFacade ) { PlatformModule platform = createPlatform( storeDir, config, dependencies ); - EditionModule edition = editionFactory.apply( platform ); + AbstractEditionModule edition = editionFactory.apply( platform ); Procedures procedures = setupProcedures( platform, edition, graphDatabaseFacade ); platform.dependencies.satisfyDependency( new NonTransactionalDbmsOperations( procedures ) ); @@ -235,7 +235,7 @@ protected PlatformModule createPlatform( File storeDir, Config config, final Dep return new PlatformModule( storeDir, config, databaseInfo, dependencies ); } - private static Procedures setupProcedures( PlatformModule platform, EditionModule editionModule, GraphDatabaseFacade facade ) + private static Procedures setupProcedures( PlatformModule platform, AbstractEditionModule editionModule, GraphDatabaseFacade facade ) { File pluginDir = platform.config.get( GraphDatabaseSettings.plugin_dir ); Log internalLog = platform.logging.getInternalLog( Procedures.class ); @@ -287,7 +287,7 @@ private static Procedures setupProcedures( PlatformModule platform, EditionModul return procedures; } - private static BoltServer createBoltServer( PlatformModule platform, EditionModule edition, DatabaseManager databaseManager ) + private static BoltServer createBoltServer( PlatformModule platform, AbstractEditionModule edition, DatabaseManager databaseManager ) { return new BoltServer( databaseManager, platform.jobScheduler, platform.connectorPortRegister, edition.getConnectionTracker(), platform.usageData, platform.config, platform.clock, platform.monitors, diff --git a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/DataSourceModule.java b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/DataSourceModule.java index b64428ec66582..ce38158e0520d 100644 --- a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/DataSourceModule.java +++ b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/DataSourceModule.java @@ -22,7 +22,7 @@ import java.util.function.Supplier; import org.neo4j.graphdb.GraphDatabaseService; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.factory.module.edition.context.DatabaseEditionContext; import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.api.InwardKernel; @@ -41,7 +41,7 @@ public class DataSourceModule public final CoreAPIAvailabilityGuard coreAPIAvailabilityGuard; - public DataSourceModule( String databaseName, PlatformModule platformModule, EditionModule editionModule, Procedures procedures, + public DataSourceModule( String databaseName, PlatformModule platformModule, AbstractEditionModule editionModule, Procedures procedures, GraphDatabaseFacade graphDatabaseFacade ) { platformModule.diagnosticsManager.prependProvider( platformModule.config ); diff --git a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/PlatformModule.java b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/PlatformModule.java index 8e3c665f3efc3..24dbbbb84e926 100644 --- a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/PlatformModule.java +++ b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/PlatformModule.java @@ -24,7 +24,7 @@ import org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory; import org.neo4j.graphdb.factory.GraphDatabaseSettings; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.security.URLAccessRule; import org.neo4j.index.internal.gbptree.GroupingRecoveryCleanupWorkCollector; import org.neo4j.index.internal.gbptree.RecoveryCleanupWorkCollector; @@ -86,7 +86,7 @@ /** * Platform module for {@link GraphDatabaseFacadeFactory}. This creates - * all the services needed by {@link EditionModule} implementations. + * all the services needed by {@link AbstractEditionModule} implementations. */ public class PlatformModule { diff --git a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/EditionModule.java b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/AbstractEditionModule.java similarity index 87% rename from community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/EditionModule.java rename to community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/AbstractEditionModule.java index ed7c534863e31..38d4632e5f297 100644 --- a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/EditionModule.java +++ b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/AbstractEditionModule.java @@ -23,7 +23,6 @@ import java.time.Clock; import java.util.function.Function; import java.util.function.Predicate; -import java.util.function.Supplier; import org.neo4j.dbms.database.DatabaseManager; import org.neo4j.dmbs.database.DefaultDatabaseManager; @@ -31,8 +30,6 @@ import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.factory.module.PlatformModule; import org.neo4j.graphdb.factory.module.edition.context.DatabaseEditionContext; -import org.neo4j.graphdb.factory.module.edition.context.DefaultEditionModuleDatabaseContext; -import org.neo4j.graphdb.factory.module.id.IdContextFactory; import org.neo4j.helpers.Service; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.io.fs.FileSystemAbstraction; @@ -44,16 +41,12 @@ import org.neo4j.kernel.availability.AvailabilityGuard; import org.neo4j.kernel.availability.DatabaseAvailabilityGuard; import org.neo4j.kernel.configuration.Config; -import org.neo4j.kernel.impl.api.CommitProcessFactory; import org.neo4j.kernel.impl.api.SchemaWriteGuard; import org.neo4j.kernel.impl.constraints.ConstraintSemantics; import org.neo4j.kernel.impl.core.ThreadToStatementContextBridge; -import org.neo4j.kernel.impl.core.TokenHolders; import org.neo4j.kernel.impl.factory.AccessCapability; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; -import org.neo4j.kernel.impl.locking.Locks; -import org.neo4j.kernel.impl.locking.StatementLocksFactory; import org.neo4j.kernel.impl.proc.ProcedureConfig; import org.neo4j.kernel.impl.proc.Procedures; import org.neo4j.kernel.impl.transaction.TransactionHeaderInformationFactory; @@ -75,16 +68,11 @@ * Edition module for {@link GraphDatabaseFacadeFactory}. Implementations of this class * need to create all the services that would be specific for a particular edition of the database. */ -public abstract class EditionModule +public abstract class AbstractEditionModule { private final DatabaseTransactionStats databaseStatistics = new DatabaseTransactionStats(); protected NetworkConnectionTracker connectionTracker; protected ThreadToStatementContextBridge threadToTransactionBridge; - protected IdContextFactory idContextFactory; - protected Function tokenHoldersProvider; - protected Supplier locksSupplier; - protected Function statementLocksFactoryProvider; - protected CommitProcessFactory commitProcessFactory; protected long transactionStartTimeout; protected TransactionHeaderInformationFactory headerInformationFactory; protected SchemaWriteGuard schemaWriteGuard; @@ -95,10 +83,7 @@ public abstract class EditionModule protected AvailabilityGuard globalAvailabilityGuard; protected SecurityProvider securityProvider; - public DatabaseEditionContext createDatabaseContext( String databaseName ) - { - return new DefaultEditionModuleDatabaseContext( this, databaseName ); - } + public abstract DatabaseEditionContext createDatabaseContext( String databaseName ); protected FileSystemWatcherService createFileSystemWatcherService( FileSystemAbstraction fileSystem, File databaseDirectory, LogService logging, JobScheduler jobScheduler, Config config, Predicate fileNameFilter ) @@ -148,7 +133,7 @@ protected void publishEditionInfo( UsageData sysInfo, DatabaseInfo databaseInfo, config.augment( GraphDatabaseSettings.editionName, databaseInfo.edition.toString() ); } - public DatabaseManager createDatabaseManager( GraphDatabaseFacade graphDatabaseFacade, PlatformModule platform, EditionModule edition, + public DatabaseManager createDatabaseManager( GraphDatabaseFacade graphDatabaseFacade, PlatformModule platform, AbstractEditionModule edition, Procedures procedures, Logger msgLog ) { return new DefaultDatabaseManager( platform, edition, procedures, msgLog, graphDatabaseFacade ); @@ -232,11 +217,6 @@ public TransactionHeaderInformationFactory getHeaderInformationFactory() return headerInformationFactory; } - public CommitProcessFactory getCommitProcessFactory() - { - return commitProcessFactory; - } - public ConstraintSemantics getConstraintSemantics() { return constraintSemantics; @@ -257,26 +237,6 @@ public Function getWatcherServiceFactory() return watcherServiceFactory; } - public IdContextFactory getIdContextFactory() - { - return idContextFactory; - } - - public Function getTokenHoldersProvider() - { - return tokenHoldersProvider; - } - - public Supplier getLocksSupplier() - { - return locksSupplier; - } - - public Function getStatementLocksFactoryProvider() - { - return statementLocksFactoryProvider; - } - public ThreadToStatementContextBridge getThreadToTransactionBridge() { return threadToTransactionBridge; diff --git a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/CommunityEditionModule.java b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/CommunityEditionModule.java index 258057c39d243..908df2460a71d 100644 --- a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/CommunityEditionModule.java +++ b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/CommunityEditionModule.java @@ -71,10 +71,10 @@ import static org.neo4j.graphdb.factory.EditionLocksFactories.createLockManager; /** - * This implementation of {@link EditionModule} creates the implementations of services + * This implementation of {@link AbstractEditionModule} creates the implementations of services * that are specific to the Community edition. */ -public class CommunityEditionModule extends EditionModule +public class CommunityEditionModule extends DefaultEditionModule { public static final String COMMUNITY_SECURITY_MODULE_ID = "community-security-module"; diff --git a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/DefaultEditionModule.java b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/DefaultEditionModule.java new file mode 100644 index 0000000000000..e19206e128415 --- /dev/null +++ b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/DefaultEditionModule.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2002-2018 "Neo4j," + * Neo4j Sweden AB [http://neo4j.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.graphdb.factory.module.edition; + +import java.util.function.Function; +import java.util.function.Supplier; + +import org.neo4j.graphdb.factory.module.edition.context.DatabaseEditionContext; +import org.neo4j.graphdb.factory.module.edition.context.DefaultEditionModuleDatabaseContext; +import org.neo4j.graphdb.factory.module.id.IdContextFactory; +import org.neo4j.kernel.impl.api.CommitProcessFactory; +import org.neo4j.kernel.impl.core.TokenHolders; +import org.neo4j.kernel.impl.locking.Locks; +import org.neo4j.kernel.impl.locking.StatementLocksFactory; + +public abstract class DefaultEditionModule extends AbstractEditionModule +{ + protected CommitProcessFactory commitProcessFactory; + protected IdContextFactory idContextFactory; + protected Function tokenHoldersProvider; + protected Supplier locksSupplier; + protected Function statementLocksFactoryProvider; + + @Override + public DatabaseEditionContext createDatabaseContext( String databaseName ) + { + return new DefaultEditionModuleDatabaseContext( this, databaseName ); + } + + public CommitProcessFactory getCommitProcessFactory() + { + return commitProcessFactory; + } + + public IdContextFactory getIdContextFactory() + { + return idContextFactory; + } + + public Function getTokenHoldersProvider() + { + return tokenHoldersProvider; + } + + public Supplier getLocksSupplier() + { + return locksSupplier; + } + + public Function getStatementLocksFactoryProvider() + { + return statementLocksFactoryProvider; + } +} diff --git a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/context/DefaultEditionModuleDatabaseContext.java b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/context/DefaultEditionModuleDatabaseContext.java index 4bf986d1c7f6e..00ec1e43b37ce 100644 --- a/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/context/DefaultEditionModuleDatabaseContext.java +++ b/community/neo4j/src/main/java/org/neo4j/graphdb/factory/module/edition/context/DefaultEditionModuleDatabaseContext.java @@ -22,7 +22,8 @@ import java.io.File; import java.util.function.Function; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; +import org.neo4j.graphdb.factory.module.edition.DefaultEditionModule; import org.neo4j.graphdb.factory.module.id.DatabaseIdContext; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.kernel.availability.DatabaseAvailabilityGuard; @@ -54,11 +55,11 @@ public class DefaultEditionModuleDatabaseContext implements DatabaseEditionConte private final TokenHolders tokenHolders; private final Locks locks; private final DatabaseTransactionStats transactionMonitor; - private final EditionModule editionModule; + private final AbstractEditionModule editionModule; private final DatabaseIdContext idContext; private final StatementLocksFactory statementLocksFactory; - public DefaultEditionModuleDatabaseContext( EditionModule editionModule, String databaseName ) + public DefaultEditionModuleDatabaseContext( DefaultEditionModule editionModule, String databaseName ) { this.databaseName = databaseName; this.transactionStartTimeout = editionModule.getTransactionStartTimeout(); diff --git a/community/neo4j/src/test/java/org/neo4j/graphdb/facade/GraphDatabaseFacadeFactoryTest.java b/community/neo4j/src/test/java/org/neo4j/graphdb/facade/GraphDatabaseFacadeFactoryTest.java index f2293da783b1c..4225be717578a 100644 --- a/community/neo4j/src/test/java/org/neo4j/graphdb/facade/GraphDatabaseFacadeFactoryTest.java +++ b/community/neo4j/src/test/java/org/neo4j/graphdb/facade/GraphDatabaseFacadeFactoryTest.java @@ -27,8 +27,8 @@ import java.util.Collections; import org.neo4j.graphdb.factory.module.PlatformModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.factory.module.edition.CommunityEditionModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; import org.neo4j.helpers.Exceptions; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.api.SchemaWriteGuard; @@ -98,7 +98,7 @@ void shouldThrowAppropriateExceptionIfBothStartAndShutdownFail() private GraphDatabaseFacadeFactory newFaultyGraphDatabaseFacadeFactory( final RuntimeException startupError ) { PlatformModule platformModule = new PlatformModule( testDirectory.storeDir(), Config.defaults(), COMMUNITY, newDependencies() ); - EditionModule editionModule = new CommunityEditionModule( platformModule ) + AbstractEditionModule editionModule = new CommunityEditionModule( platformModule ) { @Override protected SchemaWriteGuard createSchemaWriteGuard() diff --git a/community/neo4j/src/test/java/org/neo4j/graphdb/factory/module/edition/EditionModuleTest.java b/community/neo4j/src/test/java/org/neo4j/graphdb/factory/module/edition/EditionModuleTest.java index 78aa14cf0b7e9..baf1b77deea24 100644 --- a/community/neo4j/src/test/java/org/neo4j/graphdb/factory/module/edition/EditionModuleTest.java +++ b/community/neo4j/src/test/java/org/neo4j/graphdb/factory/module/edition/EditionModuleTest.java @@ -33,7 +33,7 @@ class EditionModuleTest void shouldFailWhenAuthEnabledAndNoSecurityModuleFound() { IllegalArgumentException argumentException = assertThrows( IllegalArgumentException.class, - () -> EditionModule.setupSecurityModule( null, mock( Log.class ), null, "non-existent-security-module" ) ); + () -> AbstractEditionModule.setupSecurityModule( null, mock( Log.class ), null, "non-existent-security-module" ) ); assertEquals( "Failed to load security module with key 'non-existent-security-module'.", argumentException.getMessage() ); } } diff --git a/enterprise/backup/src/test/java/org/neo4j/backup/BackupIT.java b/enterprise/backup/src/test/java/org/neo4j/backup/BackupIT.java index 26abd83ac56dd..7e43bb234607f 100644 --- a/enterprise/backup/src/test/java/org/neo4j/backup/BackupIT.java +++ b/enterprise/backup/src/test/java/org/neo4j/backup/BackupIT.java @@ -55,8 +55,8 @@ import org.neo4j.graphdb.factory.GraphDatabaseFactory; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.factory.module.PlatformModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.factory.module.edition.CommunityEditionModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; import org.neo4j.graphdb.index.Index; import org.neo4j.io.layout.DatabaseLayout; import org.neo4j.io.pagecache.PageCache; @@ -694,7 +694,7 @@ private GraphDatabaseService startGraphDatabase( File storeDir, boolean withOnli protected GraphDatabaseService newDatabase( File storeDir, Config config, GraphDatabaseFacadeFactory.Dependencies dependencies ) { - Function factory = + Function factory = platformModule -> new CommunityEditionModule( platformModule ) { diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/CoreGraphDatabase.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/CoreGraphDatabase.java index b0d2323cbe8b2..cb580a4604896 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/CoreGraphDatabase.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/CoreGraphDatabase.java @@ -30,7 +30,7 @@ import org.neo4j.causalclustering.discovery.DiscoveryServiceFactory; import org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory; import org.neo4j.graphdb.factory.module.PlatformModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; @@ -46,7 +46,7 @@ protected CoreGraphDatabase() public CoreGraphDatabase( File storeDir, Config config, GraphDatabaseFacadeFactory.Dependencies dependencies, DiscoveryServiceFactory discoveryServiceFactory ) { - Function factory = platformModule -> + Function factory = platformModule -> { editionModule = new EnterpriseCoreEditionModule( platformModule, discoveryServiceFactory ); return editionModule; diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/EnterpriseCoreEditionModule.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/EnterpriseCoreEditionModule.java index 7e6e8dc345287..254019ad5b3e0 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/EnterpriseCoreEditionModule.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/EnterpriseCoreEditionModule.java @@ -96,7 +96,8 @@ import org.neo4j.function.Predicates; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.factory.module.PlatformModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; +import org.neo4j.graphdb.factory.module.edition.DefaultEditionModule; import org.neo4j.graphdb.factory.module.id.IdContextFactoryBuilder; import org.neo4j.helpers.AdvertisedSocketAddress; import org.neo4j.helpers.SocketAddress; @@ -141,10 +142,10 @@ import static org.neo4j.causalclustering.core.CausalClusteringSettings.raft_messages_log_path; /** - * This implementation of {@link EditionModule} creates the implementations of services + * This implementation of {@link AbstractEditionModule} creates the implementations of services * that are specific to the Enterprise Core edition that provides a core cluster. */ -public class EnterpriseCoreEditionModule extends EditionModule +public class EnterpriseCoreEditionModule extends DefaultEditionModule { private final ConsensusModule consensusModule; private final ReplicationModule replicationModule; diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/EnterpriseReadReplicaEditionModule.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/EnterpriseReadReplicaEditionModule.java index 73e8dcbe30a78..5c46fb7aa6fd7 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/EnterpriseReadReplicaEditionModule.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/EnterpriseReadReplicaEditionModule.java @@ -90,7 +90,8 @@ import org.neo4j.function.Predicates; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.factory.module.PlatformModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; +import org.neo4j.graphdb.factory.module.edition.DefaultEditionModule; import org.neo4j.graphdb.factory.module.id.IdContextFactoryBuilder; import org.neo4j.internal.kernel.api.exceptions.KernelException; import org.neo4j.io.fs.FileSystemAbstraction; @@ -144,10 +145,10 @@ import static org.neo4j.causalclustering.discovery.ResolutionResolverFactory.chooseResolver; /** - * This implementation of {@link EditionModule} creates the implementations of services + * This implementation of {@link AbstractEditionModule} creates the implementations of services * that are specific to the Enterprise Read Replica edition. */ -public class EnterpriseReadReplicaEditionModule extends EditionModule +public class EnterpriseReadReplicaEditionModule extends DefaultEditionModule { private final TopologyService topologyService; private final LogProvider logProvider; diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/ReadReplicaGraphDatabase.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/ReadReplicaGraphDatabase.java index be3aed1004962..02c5f37a8f262 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/ReadReplicaGraphDatabase.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/ReadReplicaGraphDatabase.java @@ -31,7 +31,7 @@ import org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory; import org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory.Dependencies; import org.neo4j.graphdb.factory.module.PlatformModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; @@ -50,7 +50,7 @@ public ReadReplicaGraphDatabase( File storeDir, Config config, Dependencies depe public ReadReplicaGraphDatabase( File storeDir, Config config, Dependencies dependencies, DiscoveryServiceFactory discoveryServiceFactory, MemberId memberId ) { - Function factory = + Function factory = platformModule -> new EnterpriseReadReplicaEditionModule( platformModule, discoveryServiceFactory, memberId ); new GraphDatabaseFacadeFactory( DatabaseInfo.READ_REPLICA, factory ).initFacade( storeDir, config, diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java index f48d3c18d852c..085efed040cac 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java @@ -62,7 +62,8 @@ import org.neo4j.graphdb.factory.EditionLocksFactories; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.factory.module.PlatformModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; +import org.neo4j.graphdb.factory.module.edition.DefaultEditionModule; import org.neo4j.graphdb.factory.module.id.DatabaseIdContext; import org.neo4j.graphdb.factory.module.id.IdContextFactoryBuilder; import org.neo4j.helpers.HostnamePort; @@ -198,10 +199,10 @@ import static org.neo4j.kernel.impl.transaction.log.TransactionMetadataCache.TransactionMetadata; /** - * This implementation of {@link EditionModule} creates the implementations of services + * This implementation of {@link AbstractEditionModule} creates the implementations of services * that are specific to the Enterprise edition. */ -public class HighlyAvailableEditionModule extends EditionModule +public class HighlyAvailableEditionModule extends DefaultEditionModule { public HighAvailabilityMemberStateMachine memberStateMachine; public ClusterMembers members; diff --git a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/EnterpriseEditionModule.java b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/EnterpriseEditionModule.java index 40c5131fd7de2..30ab36ba6c419 100644 --- a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/EnterpriseEditionModule.java +++ b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/EnterpriseEditionModule.java @@ -27,8 +27,8 @@ import org.neo4j.function.Predicates; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.factory.module.PlatformModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.factory.module.edition.CommunityEditionModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; import org.neo4j.graphdb.factory.module.id.IdContextFactory; import org.neo4j.graphdb.factory.module.id.IdContextFactoryBuilder; import org.neo4j.internal.kernel.api.exceptions.KernelException; @@ -55,7 +55,7 @@ import org.neo4j.logging.internal.LogService; /** - * This implementation of {@link EditionModule} creates the implementations of services + * This implementation of {@link AbstractEditionModule} creates the implementations of services * that are specific to the Enterprise edition, without HA */ public class EnterpriseEditionModule extends CommunityEditionModule @@ -120,7 +120,7 @@ public void createSecurityModule( PlatformModule platformModule, Procedures proc EnterpriseEditionModule.createEnterpriseSecurityModule( this, platformModule, procedures ); } - public static void createEnterpriseSecurityModule( EditionModule editionModule, PlatformModule platformModule, Procedures procedures ) + public static void createEnterpriseSecurityModule( AbstractEditionModule editionModule, PlatformModule platformModule, Procedures procedures ) { SecurityProvider securityProvider; if ( platformModule.config.get( GraphDatabaseSettings.auth_enabled ) ) diff --git a/integrationtests/src/test/java/org/neo4j/TransactionGuardIT.java b/integrationtests/src/test/java/org/neo4j/TransactionGuardIT.java index 1d469b54d25d2..d95c2ab99dc86 100644 --- a/integrationtests/src/test/java/org/neo4j/TransactionGuardIT.java +++ b/integrationtests/src/test/java/org/neo4j/TransactionGuardIT.java @@ -55,7 +55,7 @@ import org.neo4j.graphdb.factory.GraphDatabaseBuilder; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.graphdb.factory.module.PlatformModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.factory.module.id.IdContextFactory; import org.neo4j.graphdb.factory.module.id.IdContextFactoryBuilder; import org.neo4j.helpers.collection.MapUtil; @@ -739,10 +739,10 @@ private class CustomClockEnterpriseFacadeFactory extends GraphDatabaseFacadeFact CustomClockEnterpriseFacadeFactory() { // XXX: This has to be a Function, JVM crashes with ClassFormatError if you pass a lambda here - super( DatabaseInfo.ENTERPRISE, new Function() // Don't make a lambda + super( DatabaseInfo.ENTERPRISE, new Function() // Don't make a lambda { @Override - public EditionModule apply( PlatformModule platformModule ) + public AbstractEditionModule apply( PlatformModule platformModule ) { return new TransactionGuardTerminationEditionModule( platformModule ); } diff --git a/integrationtests/src/test/java/org/neo4j/bolt/BookmarkIT.java b/integrationtests/src/test/java/org/neo4j/bolt/BookmarkIT.java index 743a1995342c8..ee45aaf842f94 100644 --- a/integrationtests/src/test/java/org/neo4j/bolt/BookmarkIT.java +++ b/integrationtests/src/test/java/org/neo4j/bolt/BookmarkIT.java @@ -39,8 +39,8 @@ import org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory; import org.neo4j.graphdb.factory.GraphDatabaseFactoryState; import org.neo4j.graphdb.factory.module.PlatformModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.factory.module.edition.CommunityEditionModule; -import org.neo4j.graphdb.factory.module.edition.EditionModule; import org.neo4j.internal.kernel.api.exceptions.TransactionFailureException; import org.neo4j.io.IOUtils; import org.neo4j.kernel.configuration.Config; @@ -121,7 +121,7 @@ private GraphDatabaseAPI createDb( CommitBlocker commitBlocker ) return createDb( platformModule -> new CustomCommunityEditionModule( platformModule, commitBlocker ) ); } - private GraphDatabaseAPI createDb( Function editionModuleFactory ) + private GraphDatabaseAPI createDb( Function editionModuleFactory ) { GraphDatabaseFactoryState state = new GraphDatabaseFactoryState(); GraphDatabaseFacadeFactory facadeFactory = new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, editionModuleFactory );