| | |
| | | * The type of the outer result. |
| | | */ |
| | | public abstract class RecursiveFutureResult<M, N> implements FutureResult<N>, ResultHandler<M> { |
| | | private final class FutureResultImpl extends AsynchronousFutureResult<N> { |
| | | |
| | | private final class FutureResultImpl extends AsynchronousFutureResult<N, ResultHandler<? super N>> { |
| | | |
| | | private FutureResultImpl(final ResultHandler<? super N> handler) { |
| | | super(handler); |
| | | } |
| | | |
| | | @Override |
| | | public int getRequestID() { |
| | | if (innerFuture instanceof FutureResult<?>) { |
| | | final FutureResult<?> tmp = (FutureResult<?>) innerFuture; |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public final boolean cancel(final boolean mayInterruptIfRunning) { |
| | | return impl.cancel(mayInterruptIfRunning); |
| | | } |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public final N get() throws ErrorResultException, InterruptedException { |
| | | return impl.get(); |
| | | } |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public final N get(final long timeout, final TimeUnit unit) throws ErrorResultException, |
| | | TimeoutException, InterruptedException { |
| | | return impl.get(timeout, unit); |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public final int getRequestID() { |
| | | return impl.getRequestID(); |
| | | } |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public final void handleErrorResult(final ErrorResultException error) { |
| | | try { |
| | | outerFuture = chainErrorResult(error, impl); |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public final void handleResult(final M result) { |
| | | try { |
| | | outerFuture = chainResult(result, impl); |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public final boolean isCancelled() { |
| | | return impl.isCancelled(); |
| | | } |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public final boolean isDone() { |
| | | return impl.isDone(); |
| | | } |