/** * Equivalent to {@code map("map", f)}. * @see #map(String, Function2) */ default <R> Task<R> map(final Function2<T1, T2, R> f) { return map("map: " + _taskDescriptor.getDescription(f.getClass().getName()), tuple -> f.apply(tuple._1(), tuple._2())); }
/** * Equivalent to {@code andThen("andThen", consumer)}. * @see #andThen(String, Consumer2) */ default Tuple2Task<T1, T2> andThen(final Consumer2<T1, T2> consumer) { return cast(andThen("andThen: " + _taskDescriptor.getDescription(consumer.getClass().getName()), tuple -> consumer.accept(tuple._1(), tuple._2()))); }
/** * Equivalent to {@code flatMap("flatMap", f)}. * @see #flatMap(String, Function2) */ default <R> Task<R> flatMap(final Function2<T1, T2, Task<R>> f) { return flatMap("flatMap: " + _taskDescriptor.getDescription(f.getClass().getName()), tuple -> f.apply(tuple._1(), tuple._2())); }
/** * {@inheritDoc} */ @Override default Tuple2Task<T1, T2> recover(final Function1<Throwable, Tuple2<T1, T2>> f) { return cast(Task.super.recover(f)); }
@Test public void testPar2AndThen() { AtomicInteger value = new AtomicInteger(); Task<?> task = Task.par(Task.value(1), Task.value(2)).andThen((a, b) -> value.set(a + b)); runAndWait("TestTaskFactoryMethods.testPar2AndThen", task); assertEquals(value.get(), 1 + 2); assertEquals(countTasks(task.getTrace()), 2 + 1 + 2); }
@Test public void testGetSubResourceRequests() { Tuple2Task<Response<Message>,Response<Message>> task = Task.par(associationsGet("a", "b", "x"), associationsGet("a", "b", "y")); if (expectBatching()) { runAndWaitException(task, RestLiResponseException.class); assertTrue(((RestLiResponseException)task.getError()).getServiceErrorMessage().contains("associationsSub?ids=List(x,y)")); } else { runAndWait(getTestClassName() + ".testGetSubResourceRequests", task); assertEquals(task.get()._1().getEntity().getMessage(), "b"); assertEquals(task.get()._1().getEntity().getId(), "a"); assertEquals(task.get()._2().getEntity().getMessage(), "b"); assertEquals(task.get()._2().getEntity().getId(), "a"); } }
/** * {@inheritDoc} */ @Override public default Tuple2Task<T1, T2> onFailure(final Consumer1<Throwable> consumer) { return cast(Task.super.onFailure(consumer)); };
@Test public void testPar2AndThenDsc() { AtomicInteger value = new AtomicInteger(); Task<?> task = Task.par(Task.value(1), Task.value(2)).andThen("test", (a, b) -> value.set(a + b)); runAndWait("TestTaskFactoryMethods.testPar2AndThenDsc", task); assertEquals(value.get(), 1 + 2); assertEquals(countTasks(task.getTrace()), 2 + 1 + 2); }
@Test public void testGetSubResourceRequestsOverrides() { Tuple2Task<Response<Message>,Response<Message>> task = Task.par(associationsGet("a", "b", "x", overrides()), associationsGet("a", "b", "y", overrides())); if (expectBatchingOverrides()) { runAndWaitException(task, RestLiResponseException.class); assertTrue(((RestLiResponseException)task.getError()).getServiceErrorMessage().contains("associationsSub?ids=List(x,y)")); } else { runAndWait(getTestClassName() + ".testGetSubResourceRequestsOverrides", task); assertEquals(task.get()._1().getEntity().getMessage(), "b"); assertEquals(task.get()._1().getEntity().getId(), "a"); assertEquals(task.get()._2().getEntity().getMessage(), "b"); assertEquals(task.get()._2().getEntity().getId(), "a"); } }
Task<String> createMailboxSummary(int id) { return Task.par(createExtendedSummary(id), fetchMailbox(id)) .map("createMailboxSummary", (summary, mailbox) -> summary + " has " + mailbox.size() + " messages"); }
/** * {@inheritDoc} */ @Override public default Tuple2Task<T1, T2> withTimeout(final long time, final TimeUnit unit) { return cast(Task.super.withTimeout(time, unit)); };
return flatMap(desc, tuple -> f.apply(tuple._1(), tuple._2()));
return map(desc, tuple -> f.apply(tuple._1(), tuple._2()));
/** * Equivalent to {@code andThen("andThen", consumer)}. * @see #andThen(String, Consumer2) */ default Tuple2Task<T1, T2> andThen(final Consumer2<T1, T2> consumer) { return cast(andThen("andThen: " + _taskDescriptor.getDescription(consumer.getClass().getName()), tuple -> consumer.accept(tuple._1(), tuple._2()))); }
/** * {@inheritDoc} */ @Override default Tuple2Task<T1, T2> recoverWith(final String desc, final Function1<Throwable, Task<Tuple2<T1, T2>>> f) { return cast(Task.super.recoverWith(desc, f)); }
@Test public void testPar2FlatMap() { Task<Integer> task = Task.par(Task.value(1), Task.value(2)).flatMap((a, b) -> Task.value(a + b)); runAndWait("TestTaskFactoryMethods.testPar2FlatMap", task); assertEquals((int)task.get(), 1 + 2); assertEquals(countTasks(task.getTrace()), 2 + 3 + 2); }
@Test public void testNone() { Task<String> task = Task.par(Task.value("0"), Task.value("1")) .map("concat", (s0, s1) -> s0 + s1); String result = runAndWait("TestSimpleBatchingStrategy.testNone", task); assertEquals(result, "01"); }
/** * {@inheritDoc} */ @Override default Tuple2Task<T1, T2> recoverWith(final Function1<Throwable, Task<Tuple2<T1, T2>>> f) { return cast(Task.super.recoverWith(f)); }