PromisorsImpl.java
package io.github.jonloucks.contracts.impl;
import io.github.jonloucks.contracts.api.Promisors;
import io.github.jonloucks.contracts.api.Promisor;
import java.util.function.Function;
/**
* Implementation for {@link io.github.jonloucks.contracts.api.Promisors}
* @see io.github.jonloucks.contracts.api.Promisors
*/
final class PromisorsImpl implements Promisors {
@Override
public <T> Promisor<T> createValuePromisor(T deliverable) {
return () -> deliverable;
}
@Override
public <T> Promisor<T> createSingletonPromisor(Promisor<T> promisor) {
return new SingletonPromisorImpl<>(promisor);
}
@Override
public <T> Promisor<T> createLifeCyclePromisor(Promisor<T> promisor) {
return new LifeCyclePromisorImpl<>(promisor);
}
@Override
public <T, R> Promisor<R> createExtractPromisor(Promisor<T> promisor, Function<T, R> extractor) {
return new ExtractPromisorImpl<>(promisor, extractor);
}
PromisorsImpl() {
}
}