diff --git a/community/kernel/src/main/java/org/neo4j/kernel/CommunityIdTypeConfigurationProvider.java b/community/kernel/src/main/java/org/neo4j/kernel/CommunityIdTypeConfigurationProvider.java index e5c939e890ec5..10fecee209ac9 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/CommunityIdTypeConfigurationProvider.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/CommunityIdTypeConfigurationProvider.java @@ -33,8 +33,8 @@ public class CommunityIdTypeConfigurationProvider implements IdTypeConfigurationProvider { - private Map typeConfigurations = new EnumMap<>(IdType.class); - private Set typesToAllowReuse = EnumSet.of( IdType.PROPERTY, IdType.STRING_BLOCK, + private final Map typeConfigurations = new EnumMap<>(IdType.class); + private final Set typesToAllowReuse = EnumSet.of( IdType.PROPERTY, IdType.STRING_BLOCK, IdType.ARRAY_BLOCK, IdType.NODE_LABELS); @Override diff --git a/community/kernel/src/main/java/org/neo4j/kernel/DefaultIdGeneratorFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/DefaultIdGeneratorFactory.java index deed68d7330e7..962390e51b8a6 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/DefaultIdGeneratorFactory.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/DefaultIdGeneratorFactory.java @@ -53,8 +53,7 @@ public DefaultIdGeneratorFactory( FileSystemAbstraction fs, IdTypeConfigurationP public IdGenerator open( File filename, IdType idType, long highId ) { IdTypeConfiguration idTypeConfiguration = idTypeConfigurationProvider.getIdTypeConfiguration( idType ); - return open( filename, idTypeConfiguration.getGrabSize(), idType, - idTypeConfiguration.allowAggressiveReuse(), highId ); + return open( filename, idTypeConfiguration.getGrabSize(), idType, idTypeConfiguration.allowAggressiveReuse(), highId ); } public IdGenerator open( File fileName, int grabSize, IdType idType, long highId ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/IdGeneratorFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/IdGeneratorFactory.java index 14c0c73a0c3e6..1b350c0d3742c 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/IdGeneratorFactory.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/IdGeneratorFactory.java @@ -38,37 +38,4 @@ public interface IdGeneratorFactory IdGenerator get( IdType idType ); - class Delegate implements IdGeneratorFactory - { - private final IdGeneratorFactory delegate; - - public Delegate( IdGeneratorFactory delegate ) - { - this.delegate = delegate; - } - - @Override - public IdGenerator open( File filename, IdType idType, long highId ) - { - return delegate.open( filename, idType, highId ); - } - - @Override - public IdGenerator open( File filename, int grabSize, IdType idType, long highId ) - { - return delegate.open( filename, grabSize, idType, highId ); - } - - @Override - public void create( File filename, long highId, boolean throwIfFileExists ) - { - delegate.create( filename, highId, throwIfFileExists ); - } - - @Override - public IdGenerator get( IdType idType ) - { - return delegate.get( idType ); - } - } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/IdTypeConfiguration.java b/community/kernel/src/main/java/org/neo4j/kernel/IdTypeConfiguration.java index a1e4b5584fa71..7326119b60484 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/IdTypeConfiguration.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/IdTypeConfiguration.java @@ -26,7 +26,7 @@ */ public class IdTypeConfiguration { - private boolean allowAggressiveReuse; + private final boolean allowAggressiveReuse; public IdTypeConfiguration( boolean allowAggressiveReuse ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/id/BufferingIdGeneratorFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/id/BufferingIdGeneratorFactory.java index 0317ba4ffa4c9..4f2c8d53cf628 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/id/BufferingIdGeneratorFactory.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/id/BufferingIdGeneratorFactory.java @@ -34,17 +34,19 @@ * so that ids can be {@link IdGenerator#freeId(long) freed} at safe points in time, after all transactions * which were active at the time of freeing, have been closed. */ -public class BufferingIdGeneratorFactory extends IdGeneratorFactory.Delegate +public class BufferingIdGeneratorFactory implements IdGeneratorFactory { private final BufferingIdGenerator[/*IdType#ordinal as key*/] overriddenIdGenerators = new BufferingIdGenerator[IdType.values().length]; private Supplier boundaries; private Predicate safeThreshold; - private IdTypeConfigurationProvider idTypeConfigurationProvider; + private final IdGeneratorFactory delegate; + private final IdTypeConfigurationProvider idTypeConfigurationProvider; - public BufferingIdGeneratorFactory( IdGeneratorFactory delegate, IdTypeConfigurationProvider idTypeConfigurationProvider ) + public BufferingIdGeneratorFactory( IdGeneratorFactory delegate, + IdTypeConfigurationProvider idTypeConfigurationProvider ) { - super( delegate ); + this.delegate = delegate; this.idTypeConfigurationProvider = idTypeConfigurationProvider; } @@ -68,10 +70,17 @@ public boolean test( KernelTransactionsSnapshot snapshot ) } } + @Override + public IdGenerator open( File filename, IdType idType, long highId ) + { + IdTypeConfiguration typeConfiguration = idTypeConfigurationProvider.getIdTypeConfiguration( idType ); + return open( filename, typeConfiguration.getGrabSize(), idType, highId); + } + @Override public IdGenerator open( File filename, int grabSize, IdType idType, long highId ) { - IdGenerator generator = super.open( filename, grabSize, idType, highId ); + IdGenerator generator = delegate.open( filename, grabSize, idType, highId ); IdTypeConfiguration typeConfiguration = getIdTypeConfiguration(idType); if ( typeConfiguration.allowAggressiveReuse() ) { @@ -103,6 +112,12 @@ public IdGenerator open( File filename, int grabSize, IdType idType, long highId return generator; } + @Override + public void create( File filename, long highId, boolean throwIfFileExists ) + { + delegate.create( filename, highId, throwIfFileExists ); + } + private IdTypeConfiguration getIdTypeConfiguration( IdType idType ) { return idTypeConfigurationProvider.getIdTypeConfiguration( idType ); @@ -112,7 +127,7 @@ private IdTypeConfiguration getIdTypeConfiguration( IdType idType ) public IdGenerator get( IdType idType ) { IdGenerator generator = overriddenIdGenerators[idType.ordinal()]; - return generator != null ? generator : super.get( idType ); + return generator != null ? generator : delegate.get( idType ); } public void maintenance()