| 8 | import java.util.logging.Logger; |
| 9 | |
| 10 | final class ValueFuture<T> implements SatisfiedFuture<T> { |
| 11 | |
| 12 | private static final Logger logger = Logger.getLogger(ExceptionFuture.class.getName()); |
| 13 | |
| 14 | final T value; |
| 15 | |
| 16 | protected ValueFuture(final T value) { |
| 17 | this.value = value; |
| 18 | } |
| 19 | |
| 20 | @Override |
| 21 | public final <R> Future<R> map(final Function<? super T, ? extends R> f) { |
| 22 | try { |
| 23 | return new ValueFuture<>(f.apply(value)); |
| 24 | } catch (final Throwable ex) { |
| 25 | return new ExceptionFuture<>(ex); |
| 26 | } |
| 27 | } |
| 28 | |
| 29 | @Override |
| 30 | public final <R> Future<R> flatMap(final Function<? super T, ? extends Future<R>> f) { |
| 31 | try { |
| 32 | return f.apply(value); |
| 33 | } catch (final Throwable ex) { |
| 34 | return new ExceptionFuture<>(ex); |
| 35 | } |
| 36 | } |
| 37 | |
| 38 | @Override |
| 39 | public <R> Future<R> transform(final Transformer<? super T, ? extends R> t) { |
| 40 | try { |
| 41 | return new ValueFuture<>(t.onValue(value)); |
| 42 | } catch (final Throwable ex) { |
| 43 | return new ExceptionFuture<>(ex); |
| 44 | } |
| 45 | } |
| 46 | |
| 47 | @Override |
| 48 | public <R> Future<R> transformWith(final Transformer<? super T, ? extends Future<R>> t) { |
| 49 | try { |
| 50 | return t.onValue(value); |
| 51 | } catch (final Throwable ex) { |
| 52 | return new ExceptionFuture<>(ex); |
| 53 | } |
| 54 | } |
| 55 | |
| 56 | @Override |
| 57 | public <U, R> Future<R> biMap(final Future<U> other, final BiFunction<? super T, ? super U, ? extends R> f) { |
| 58 | return other.map(u -> f.apply(value, u)); |
| 59 | } |
| 60 | |
| 61 | @Override |
| 62 | public <U, R> Future<R> biFlatMap(final Future<U> other, |
| 63 | final BiFunction<? super T, ? super U, ? extends Future<R>> f) { |
| 64 | return other.flatMap(u -> f.apply(value, u)); |
| 65 | } |
| 66 | |
| 67 | @Override |
nothing calls this directly
no outgoing calls
no test coverage detected
searching dependent graphs…