@Override public boolean cancel(boolean mayInterruptIfRunning) { return futureImp.cancel(mayInterruptIfRunning); }
@Override public boolean cancel(boolean mayInterruptIfRunning) { return futureImp.cancel(mayInterruptIfRunning); }
@Override public boolean cancel(boolean mayInterruptIfRunning) { return futureImp.cancel(mayInterruptIfRunning); }
@Override public boolean cancel(boolean mayInterruptIfRunning) { return futureImp.cancel(mayInterruptIfRunning); }
protected boolean cancelRegardlessOfDelegateFutureState(boolean interruptThread) { ListenableFuture<?> cancelDelegateFuture = this.delegateFuture; if (super.cancel(interruptThread)) { cancelDelegateFuture.cancel(interruptThread); return true; } else { return false; } }
protected boolean cancelRegardlessOfDelegateFutureState(boolean interruptThread) { ListenableFuture<?> cancelDelegateFuture = this.delegateFuture; if (super.cancel(interruptThread)) { cancelDelegateFuture.cancel(interruptThread); return true; } else { return false; } }
@Override public boolean cancel(boolean interrupt) { StackTraceElement[] cancelStack = delegateFuture.getRunningStackTrace(); // must get stack BEFORE cancel if (delegateFuture.cancel(interrupt)) { this.cancelStack = cancelStack; return true; } else { return false; } }
@Override public boolean cancel(boolean interrupt) { StackTraceElement[] cancelStack = delegateFuture.getRunningStackTrace(); // must get stack BEFORE cancel if (delegateFuture.cancel(interrupt)) { this.cancelStack = cancelStack; return true; } else { return false; } }
public static void cancelTest(ListenableFuture<?> testFuture) { assertFalse(testFuture.cancel(true)); assertFalse(testFuture.isCancelled()); }
@Test public void makeCompleteFutureCancelTest() { SettableListenableFuture<?> slf = new SettableListenableFuture<>(); assertTrue(FutureUtils.makeCompleteFuture(Collections.singletonList(slf)).cancel(true)); assertTrue(slf.isCancelled()); }
@Test public void makeResultListFutureCancelTest() { SettableListenableFuture<?> slf = new SettableListenableFuture<>(); assertTrue(FutureUtils.makeResultListFuture(Collections.singletonList(slf), true).cancel(true)); assertTrue(slf.isCancelled()); }
@Test public void makeFailurePropagatingCompleteFutureWithResultCancelTest() { SettableListenableFuture<?> slf = new SettableListenableFuture<>(); assertTrue(FutureUtils.makeFailurePropagatingCompleteFuture(Collections.singletonList(slf), null).cancel(true)); assertTrue(slf.isCancelled()); }
@Test public void makeCompleteListFutureCancelTest() { SettableListenableFuture<?> slf = new SettableListenableFuture<>(); assertTrue(FutureUtils.makeCompleteListFuture(Collections.singletonList(slf)).cancel(true)); assertTrue(slf.isCancelled()); }
@Test public void makeCompleteFutureWithResultCancelTest() { SettableListenableFuture<?> slf = new SettableListenableFuture<>(); assertTrue(FutureUtils.makeCompleteFuture(Collections.singletonList(slf), null).cancel(true)); assertTrue(slf.isCancelled()); }
@Test public void makeSuccessListFutureCancelTest() { SettableListenableFuture<?> slf = new SettableListenableFuture<>(); assertTrue(FutureUtils.makeSuccessListFuture(Collections.singletonList(slf)).cancel(true)); assertTrue(slf.isCancelled()); }
@Test public void makeFailureListFutureCancelTest() { SettableListenableFuture<?> slf = new SettableListenableFuture<>(); assertTrue(FutureUtils.makeFailureListFuture(Collections.singletonList(slf)).cancel(true)); assertTrue(slf.isCancelled()); }
@Test public void makeFailurePropagatingCompleteFutureCancelTest() { SettableListenableFuture<?> slf = new SettableListenableFuture<>(); assertTrue(FutureUtils.makeFailurePropagatingCompleteFuture(Collections.singletonList(slf)).cancel(true)); assertTrue(slf.isCancelled()); }
@Test public void shutdownNowIgnoreCanceledFuturesTest() { SingleThreadScheduler sts = new SingleThreadScheduler(); try { Runnable nonCanceledRunnable = new TestRunnable(); sts.submitScheduled(nonCanceledRunnable, 1000 * 60 * 60); ListenableFuture<?> future = sts.submitScheduled(DoNothingRunnable.instance(), 1000 * 60 * 60); future.cancel(false); List<Runnable> result = sts.shutdownNow(); assertEquals(1, result.size()); // only canceled task removed } finally { sts.shutdown(); } }
@Test public void cancelFlatMappedAsyncFutureTest() { SettableListenableFuture<Void> asyncSLF = new SettableListenableFuture<>(); ListenableFuture<Void> mappedLF = slf.flatMap(asyncSLF); slf.setResult(null); // complete source future before cancel assertFalse(mappedLF.isDone()); assertTrue(mappedLF.cancel(false)); // no interrupt needed, delegate future not started assertTrue(asyncSLF.isCancelled()); }
@Test public void cancelFlatMappedAsyncFutureTest() { ListenableFutureTask<Object> future = makeFutureTask(DoNothingRunnable.instance(), null); SettableListenableFuture<Void> asyncSLF = new SettableListenableFuture<>(); ListenableFuture<Void> mappedLF = future.flatMap(asyncSLF); future.run(); // complete source future before cancel assertFalse(mappedLF.isDone()); assertTrue(mappedLF.cancel(false)); // no interrupt needed, delegate future not started assertTrue(asyncSLF.isCancelled()); }