return entityTypeToStrategyInfo.get(entityType) != null;
}
- public EntityOwnerSelectionStrategy createStrategy(final String entityType) {
+ public EntityOwnerSelectionStrategy createStrategy(String entityType, Map<String, Long> initialStatistics){
final EntityOwnerSelectionStrategy strategy;
final EntityOwnerSelectionStrategy existingStrategy = entityTypeToOwnerSelectionStrategy.get(entityType);
if(existingStrategy != null){
if(strategyInfo == null){
strategy = FirstCandidateSelectionStrategy.INSTANCE;
} else {
- strategy = strategyInfo.createStrategy();
+ strategy = strategyInfo.createStrategy(initialStatistics);
}
entityTypeToOwnerSelectionStrategy.put(entityType, strategy);
}
* using it.
*/
@Deprecated
+ public void clearStrategies() {
+ entityTypeToOwnerSelectionStrategy.clear();
+ }
+
private static final class StrategyInfo {
private final Class<? extends EntityOwnerSelectionStrategy> strategyClass;
private final long delay;
this.delay = delay;
}
- public EntityOwnerSelectionStrategy createStrategy() {
+ public EntityOwnerSelectionStrategy createStrategy(Map<String, Long> initialStatistics){
try {
- return strategyClass.getDeclaredConstructor(long.class).newInstance(delay);
+ return strategyClass.getDeclaredConstructor(long.class, Map.class).newInstance(delay, initialStatistics);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
LOG.warn("could not create custom strategy", e);
}