public BufferingIdGeneratorFactory( IdGeneratorFactory delegate, IdReuseEligibility eligibleForReuse, IdTypeConfigurationProvider idTypeConfigurationProvider ) { this.delegate = delegate; this.idTypeConfigurationProvider = idTypeConfigurationProvider; this.safeThreshold = snapshot -> snapshot.allClosed() && eligibleForReuse.isEligible( snapshot ); }
@Test void createContextWithProvidedReusabilityCheck() { IdReuseEligibility reuseEligibility = mock( IdReuseEligibility.class ); IdContextFactory contextFactory = IdContextFactoryBuilder.of( fs, jobScheduler ).withIdReuseEligibility( reuseEligibility ).build(); DatabaseIdContext idContext = contextFactory.createIdContext( "database" ); IdGeneratorFactory bufferedGeneratorFactory = idContext.getIdGeneratorFactory(); assertThat( bufferedGeneratorFactory, instanceOf( BufferingIdGeneratorFactory.class ) ); BufferingIdGeneratorFactory bufferedFactory = (BufferingIdGeneratorFactory) bufferedGeneratorFactory; KernelTransactionsSnapshot snapshot = mock( KernelTransactionsSnapshot.class ); when( snapshot.allClosed() ).thenReturn( true ); bufferedFactory.initialize( () -> snapshot ); try ( IdGenerator idGenerator = bufferedFactory.open( testDirectory.file( "a" ), IdType.PROPERTY, () -> 100, 100 ) ) { idGenerator.freeId( 15 ); bufferedFactory.maintenance(); verify( reuseEligibility ).isEligible( snapshot ); } }
public BufferingIdGeneratorFactory( IdGeneratorFactory delegate, IdReuseEligibility eligibleForReuse, IdTypeConfigurationProvider idTypeConfigurationProvider ) { this.delegate = delegate; this.idTypeConfigurationProvider = idTypeConfigurationProvider; this.safeThreshold = snapshot -> snapshot.allClosed() && eligibleForReuse.isEligible( snapshot ); }