Skip to content

Commit

Permalink
Cache factories per name to allow id controller factory to reference the
Browse files Browse the repository at this point in the history
same factory instance.
  • Loading branch information
MishaDemianenko committed Aug 30, 2018
1 parent 740d35c commit a682d0f
Showing 1 changed file with 14 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@

import java.io.File;
import java.time.Clock;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
Expand Down Expand Up @@ -259,9 +261,18 @@ protected void createIdComponents( PlatformModule platformModule, Dependencies d
Function<String,? extends IdGeneratorFactory> factoryProvider = idGeneratorFactoryProvider;
if ( safeIdBuffering )
{
Function<String, BufferingIdGeneratorFactory> bufferingIdGeneratorFactory =
databaseName -> new BufferingIdGeneratorFactory( idGeneratorFactoryProvider.apply( databaseName ), eligibleForIdReuse,
idTypeConfigurationProvider );
Function<String,BufferingIdGeneratorFactory> bufferingIdGeneratorFactory = new Function<String,BufferingIdGeneratorFactory>()
{
private final Map<String,BufferingIdGeneratorFactory> idGenerators = new HashMap<>();

@Override
public BufferingIdGeneratorFactory apply( String databaseName )
{
return idGenerators.computeIfAbsent( databaseName,
s -> new BufferingIdGeneratorFactory( idGeneratorFactoryProvider.apply( databaseName ), eligibleForIdReuse,
idTypeConfigurationProvider ) );
}
};
idControllerFactory = databaseName -> createBufferedIdController( bufferingIdGeneratorFactory.apply( databaseName ), platformModule.jobScheduler );
factoryProvider = bufferingIdGeneratorFactory;
}
Expand Down

0 comments on commit a682d0f

Please sign in to comment.