/** * {@inheritDoc} */ @Override public default Tuple4Task<T1, T2, T3, T4> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple13Task<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple11Task<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple15Task<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple9Task<T1, T2, T3, T4, T5, T6, T7, T8, T9> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple8Task<T1, T2, T3, T4, T5, T6, T7, T8> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple12Task<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple3Task<T1, T2, T3> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple14Task<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple5Task<T1, T2, T3, T4, T5> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple6Task<T1, T2, T3, T4, T5, T6> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple2Task<T1, T2> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple7Task<T1, T2, T3, T4, T5, T6, T7> shareable() { return cast(Task.super.shareable()); };
/** * {@inheritDoc} */ @Override public default Tuple10Task<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> shareable() { return cast(Task.super.shareable()); };
@Test public void testShareableWithPar() { final AtomicInteger counter = new AtomicInteger(); Task<String> task = Task.callable("increaser", () -> { counter.incrementAndGet(); return "hello"; } ); Task<String> test = Task.par(task.shareable().map(x -> x + "1"), task.shareable().map(x -> x + "2")).map((a, b) -> a + b); runAndWait("TestTaskReuse.testShareableWithPar", test); assertEquals(counter.get(), 1); assertEquals(test.get(), "hello1hello2"); }
@Test public void testLastTaskAlreadyResolvedShareable() { final AtomicInteger counter = new AtomicInteger(); final Task<String> bob = Task.value("bob", "bob"); runAndWait("TestTaskReuse.testLastTaskAlreadyResolvedShareable-bob", bob); Task<String> task = Task.callable("increaser", () -> { counter.incrementAndGet(); return "hello"; } ); Task<String> test1 = task.andThen(bob.shareable()); runAndWait("TestTaskReuse.testLastTaskAlreadyResolvedShareable", test1); assertEquals(counter.get(), 1); }
@Test public void testShareableTaskType() { Task<Integer> value = Task.value(10); Task<Integer> shareableTask = value.shareable(); assertEquals(shareableTask.getShallowTrace().getTaskType(), TaskType.SHAREABLE.getName()); }
private Task<?> task() { return Task.value("kldfjlajflskjflsjfslkajflkasj").map("length", s -> s.length()).map("+1", s -> s + 1) .map("+2", s -> s + 2).map("+3", s -> s + 3).shareable().recoverWith(t -> Task.value(0)) .flatMap(x -> Task.value(x * 40)).map(x -> x -10); }
@Test public void testShareableCancellationPar() { Task<String> task = delayedValue("hello", 50, TimeUnit.MILLISECONDS); Task<String> test1 = Task.par(task.shareable().map(x -> x + "1"), Task.failure(new RuntimeException("ups"))).map((a, b) -> a + b); try { runAndWait("TestTaskReuse.testShareableCancellationPar-test1", test1); fail("should have failed!"); } catch (Exception ex) { assertTrue(test1.isFailed()); } Task<String> test2 = Task.par(task.shareable().map("1", x -> x + "1"), task.shareable().map("2", x -> x + "2")).map((a, b) -> a + b); runAndWait("TestTaskReuse.testShareableCancellationPar-test2", test2); assertEquals(test2.get(), "hello1hello2"); }