CompletableFactoryImpl.java
package io.github.jonloucks.concurrency.impl;
import io.github.jonloucks.concurrency.api.Completable;
import io.github.jonloucks.concurrency.api.CompletableFactory;
import io.github.jonloucks.concurrency.api.Concurrency;
import java.util.function.Consumer;
import static io.github.jonloucks.contracts.api.Checks.builderConsumerCheck;
import static io.github.jonloucks.contracts.api.Checks.configCheck;
final class CompletableFactoryImpl implements CompletableFactory {
@Override
public <T> Completable<T> createCompletable(Completable.Config<T> config) {
return new CompletableImpl<>(this.config, configCheck(config));
}
@Override
public <T> Completable<T> createCompletable(Consumer<Completable.Config.Builder<T>> builderConsumer) {
final Consumer<Completable.Config.Builder<T>> validBuilderConsumer = builderConsumerCheck(builderConsumer);
final Completable.Config.Builder<T> builder = new Completable.Config.Builder<>() {};
validBuilderConsumer.accept(builder);
return createCompletable(builder);
}
CompletableFactoryImpl(Concurrency.Config config) {
this.config = config;
}
private final Concurrency.Config config;
}