@Override public void run() { if (promiseCount.decrementAndGet() != 0) { return; } List<T> value = new ArrayList<>(promises.size()); List<Promise< ? >> failed = new ArrayList<>(promises.size()); Throwable cause = null; for (Promise<S> p : promises) { Result<S> result = PromiseImpl.collect(p); if (result.fail != null) { failed.add(p); if (cause == null) { cause = result.fail; } } else { value.add(result.value); } } if (failed.isEmpty()) { chained.tryResolve(value, null); } else { chained.tryResolve(null, new FailedPromisesException(failed, cause)); } } }
@Override public void run() { if (promiseCount.decrementAndGet() != 0) { return; } List<T> value = new ArrayList<>(promises.size()); List<Promise< ? >> failed = new ArrayList<>(promises.size()); Throwable cause = null; for (Promise<S> p : promises) { Result<S> result = PromiseImpl.collect(p); if (result.fail != null) { failed.add(p); if (cause == null) { cause = result.fail; } } else { value.add(result.value); } } if (failed.isEmpty()) { chained.tryResolve(value, null); } else { chained.tryResolve(null, new FailedPromisesException(failed, cause)); } } }
@Override public void run() { if (promiseCount.decrementAndGet() != 0) { return; } List<T> value = new ArrayList<>(promises.size()); List<Promise< ? >> failed = new ArrayList<>(promises.size()); Throwable cause = null; for (Promise<S> p : promises) { Result<S> result = PromiseImpl.collect(p); if (result.fail != null) { failed.add(p); if (cause == null) { cause = result.fail; } } else { value.add(result.value); } } if (failed.isEmpty()) { chained.tryResolve(value, null); } else { chained.tryResolve(null, new FailedPromisesException(failed, cause)); } } }
@Override public void run() { if (promiseCount.decrementAndGet() != 0) { return; } List<T> value = new ArrayList<>(promises.size()); List<Promise< ? >> failed = new ArrayList<>(promises.size()); Throwable cause = null; for (Promise<S> p : promises) { Result<S> result = PromiseImpl.collect(p); if (result.fail != null) { failed.add(p); if (cause == null) { cause = result.fail; } } else { value.add(result.value); } } if (failed.isEmpty()) { chained.tryResolve(value, null); } else { chained.tryResolve(null, new FailedPromisesException(failed, cause)); } } }
@Override public void run() { if (promiseCount.decrementAndGet() != 0) { return; } List<T> value = new ArrayList<>(promises.size()); List<Promise< ? >> failed = new ArrayList<>(promises.size()); Throwable cause = null; for (Promise<S> p : promises) { Result<S> result = PromiseImpl.collect(p); if (result.fail != null) { failed.add(p); if (cause == null) { cause = result.fail; } } else { value.add(result.value); } } if (failed.isEmpty()) { chained.tryResolve(value, null); } else { chained.tryResolve(null, new FailedPromisesException(failed, cause)); } } }
@Override public void run() { if (promiseCount.decrementAndGet() != 0) { return; } List<T> value = new ArrayList<>(promises.size()); List<Promise< ? >> failed = new ArrayList<>(promises.size()); Throwable cause = null; for (Promise<S> p : promises) { Result<S> result = PromiseImpl.collect(p); if (result.fail != null) { failed.add(p); if (cause == null) { cause = result.fail; } } else { value.add(result.value); } } if (failed.isEmpty()) { chained.tryResolve(value, null); } else { chained.tryResolve(null, new FailedPromisesException(failed, cause)); } } }
@Override public void run() { if (promiseCount.decrementAndGet() != 0) { return; } List<T> value = new ArrayList<>(promises.size()); List<Promise< ? >> failed = new ArrayList<>(promises.size()); Throwable cause = null; for (Promise<S> p : promises) { Result<S> result = PromiseImpl.collect(p); if (result.fail != null) { failed.add(p); if (cause == null) { cause = result.fail; } } else { value.add(result.value); } } if (failed.isEmpty()) { chained.tryResolve(value, null); } else { chained.tryResolve(null, new FailedPromisesException(failed, cause)); } } }
/** * Return a holder of the result of the specified Promise. * * @since 1.1 */ static <R> Result<R> collect(Promise< ? extends R> promise) { if (promise instanceof PromiseImpl) { @SuppressWarnings("unchecked") PromiseImpl<R> impl = (PromiseImpl<R>) promise; return impl.collect(); } if (!promise.isDone()) { return new Result<R>(new AssertionError("promise not resolved")); } final boolean interrupted = Thread.interrupted(); try { Throwable fail = promise.getFailure(); if (fail == null) { return new Result<R>(promise.getValue()); } return new Result<R>(fail); } catch (Throwable e) { return new Result<R>(e); // propagate new exception } finally { if (interrupted) { // restore interrupt status Thread.currentThread().interrupt(); } } } }
/** * Return a holder of the result of the specified Promise. * * @since 1.1 */ static <R> Result<R> collect(Promise< ? extends R> promise) { if (promise instanceof PromiseImpl) { @SuppressWarnings("unchecked") PromiseImpl<R> impl = (PromiseImpl<R>) promise; return impl.collect(); } if (!promise.isDone()) { return new Result<R>(new AssertionError("promise not resolved")); } final boolean interrupted = Thread.interrupted(); try { Throwable fail = promise.getFailure(); if (fail == null) { return new Result<R>(promise.getValue()); } return new Result<R>(fail); } catch (Throwable e) { return new Result<R>(e); // propagate new exception } finally { if (interrupted) { // restore interrupt status Thread.currentThread().interrupt(); } } } }
/** * Return a holder of the result of the specified Promise. * * @since 1.1 */ static <R> Result<R> collect(Promise< ? extends R> promise) { if (promise instanceof PromiseImpl) { @SuppressWarnings("unchecked") PromiseImpl<R> impl = (PromiseImpl<R>) promise; return impl.collect(); } if (!promise.isDone()) { return new Result<R>(new AssertionError("promise not resolved")); } final boolean interrupted = Thread.interrupted(); try { Throwable fail = promise.getFailure(); if (fail == null) { return new Result<R>(promise.getValue()); } return new Result<R>(fail); } catch (Throwable e) { return new Result<R>(e); // propagate new exception } finally { if (interrupted) { // restore interrupt status Thread.currentThread().interrupt(); } } } }
/** * Return a holder of the result of the specified Promise. * * @since 1.1 */ static <R> Result<R> collect(Promise< ? extends R> promise) { if (promise instanceof PromiseImpl) { @SuppressWarnings("unchecked") PromiseImpl<R> impl = (PromiseImpl<R>) promise; return impl.collect(); } if (!promise.isDone()) { return new Result<R>(new AssertionError("promise not resolved")); } final boolean interrupted = Thread.interrupted(); try { Throwable fail = promise.getFailure(); if (fail == null) { return new Result<R>(promise.getValue()); } return new Result<R>(fail); } catch (Throwable e) { return new Result<R>(e); // propagate new exception } finally { if (interrupted) { // restore interrupt status Thread.currentThread().interrupt(); } } } }
/** * Return a holder of the result of the specified Promise. * * @since 1.1 */ static <R> Result<R> collect(Promise< ? extends R> promise) { if (promise instanceof PromiseImpl) { @SuppressWarnings("unchecked") PromiseImpl<R> impl = (PromiseImpl<R>) promise; return impl.collect(); } if (!promise.isDone()) { return new Result<R>(new AssertionError("promise not resolved")); } final boolean interrupted = Thread.interrupted(); try { Throwable fail = promise.getFailure(); if (fail == null) { return new Result<R>(promise.getValue()); } return new Result<R>(fail); } catch (Throwable e) { return new Result<R>(e); // propagate new exception } finally { if (interrupted) { // restore interrupt status Thread.currentThread().interrupt(); } } } }
/** * Return a holder of the result of the specified Promise. * * @since 1.1 */ static <R> Result<R> collect(Promise< ? extends R> promise) { if (promise instanceof PromiseImpl) { @SuppressWarnings("unchecked") PromiseImpl<R> impl = (PromiseImpl<R>) promise; return impl.collect(); } if (!promise.isDone()) { return new Result<R>(new AssertionError("promise not resolved")); } final boolean interrupted = Thread.interrupted(); try { Throwable fail = promise.getFailure(); if (fail == null) { return new Result<R>(promise.getValue()); } return new Result<R>(fail); } catch (Throwable e) { return new Result<R>(e); // propagate new exception } finally { if (interrupted) { // restore interrupt status Thread.currentThread().interrupt(); } } } }
/** * Return a holder of the result of the specified Promise. * * @since 1.1 */ static <R> Result<R> collect(Promise< ? extends R> promise) { if (promise instanceof PromiseImpl) { @SuppressWarnings("unchecked") PromiseImpl<R> impl = (PromiseImpl<R>) promise; return impl.collect(); } if (!promise.isDone()) { return new Result<R>(new AssertionError("promise not resolved")); } final boolean interrupted = Thread.interrupted(); try { Throwable fail = promise.getFailure(); if (fail == null) { return new Result<R>(promise.getValue()); } return new Result<R>(fail); } catch (Throwable e) { return new Result<R>(e); // propagate new exception } finally { if (interrupted) { // restore interrupt status Thread.currentThread().interrupt(); } } } }