CompletionFactoryImpl.java
package io.github.jonloucks.concurrency.impl;
import io.github.jonloucks.concurrency.api.Completion;
import io.github.jonloucks.concurrency.api.CompletionFactory;
import java.util.function.Consumer;
import static io.github.jonloucks.contracts.api.Checks.builderConsumerCheck;
final class CompletionFactoryImpl implements CompletionFactory {
@Override
public <T> Completion<T> createCompletion(Consumer<Completion.Config.Builder<T>> builderConsumer) {
final Consumer<Completion.Config.Builder<T>> validConsumerBuilder = builderConsumerCheck(builderConsumer);
final CompletionBuilderImpl<T> builder = new CompletionBuilderImpl<>();
validConsumerBuilder.accept(builder);
return createCompletion(builder);
}
@Override
public <T> Completion<T> createCompletion(Completion.Config<T> config) {
return new ImmutableCompletionImpl<>(config);
}
CompletionFactoryImpl() {
}
}