test_class.file: blog-code/src/test/java/pl/ciruk/blog/fanout/CompletableFuturesTest.java
test_class.identifier: CompletableFuturesTest
test_case.body: @Test
  	public void shouldExecuteAllFunctionsFromMappings() throws Exception {
  		// Given
  		CompletableFuture<String> future = CompletableFuture.completedFuture("SampleText");
  
  		// When
  		CompletableFuture<Stream<Integer>> actualFuture = future.thenCompose(
  				fanOut(ImmutableList.of(
  						text -> 1,
  						text -> 2,
  						text -> 4
  				))
  		);
  		CompletableFuture<Integer> actualSum = actualFuture.thenApply(
  				stream -> stream.reduce((a, b) -> a + b).orElse(-1)
  		);
  
  		// Then
  		assertThat(actualSum.get(), is(equalTo(7)));
  	}
test_case.class_method_signature: CompletableFuturesTest.shouldExecuteAllFunctionsFromMappings()
test_case.full_signature: @Test public void shouldExecuteAllFunctionsFromMappings()
test_case.identifier: shouldExecuteAllFunctionsFromMappings
test_case.invocations: completedFuture thenCompose fanOut of thenApply orElse reduce assertThat get is equalTo
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void shouldExecuteAllFunctionsFromMappings()
focal_class.file: blog-code/src/main/java/pl/ciruk/blog/fanout/CompletableFutures.java
focal_class.identifier: CompletableFutures
focal_class.class_method_signature: CompletableFutures.fanOut(Collection<Function<F, T>> mappings)
focal_class.full_signature: static Function<F, CompletableFuture<Stream<T>>> fanOut(Collection<Function<F, T>> mappings)
focal_class.identifier: fanOut
focal_class.modifiers: static
focal_class.parameters: (Collection<Function<F, T>> mappings)
focal_class.return: Function<F, CompletableFuture<Stream<T>>>
focal_class.signature: Function<F, CompletableFuture<Stream<T>>> fanOut(Collection<Function<F, T>> mappings)
focal_class.class_method_signature: CompletableFutures.fanOut(Collection<Function<F, T>> mappings, ExecutorService executorService)
focal_class.full_signature: static Function<F, CompletableFuture<Stream<T>>> fanOut(Collection<Function<F, T>> mappings, ExecutorService executorService)
focal_class.identifier: fanOut
focal_class.modifiers: static
focal_class.parameters: (Collection<Function<F, T>> mappings, ExecutorService executorService)
focal_class.return: Function<F, CompletableFuture<Stream<T>>>
focal_class.signature: Function<F, CompletableFuture<Stream<T>>> fanOut(Collection<Function<F, T>> mappings, ExecutorService executorService)
focal_class.class_method_signature: CompletableFutures.combineUsing(BiFunction<T, T, T> combiningFunction)
focal_class.full_signature: public static BinaryOperator<CompletableFuture<T>> combineUsing(BiFunction<T, T, T> combiningFunction)
focal_class.identifier: combineUsing
focal_class.modifiers: public static
focal_class.parameters: (BiFunction<T, T, T> combiningFunction)
focal_class.return: BinaryOperator<CompletableFuture<T>>
focal_class.signature: BinaryOperator<CompletableFuture<T>> combineUsing(BiFunction<T, T, T> combiningFunction)
focal_class.class_method_signature: CompletableFutures.combineUsing(BiFunction<T, T, T> combiningFunction, ExecutorService executorService)
focal_class.full_signature: public static BinaryOperator<CompletableFuture<T>> combineUsing(BiFunction<T, T, T> combiningFunction, ExecutorService executorService)
focal_class.identifier: combineUsing
focal_class.modifiers: public static
focal_class.parameters: (BiFunction<T, T, T> combiningFunction, ExecutorService executorService)
focal_class.return: BinaryOperator<CompletableFuture<T>>
focal_class.signature: BinaryOperator<CompletableFuture<T>> combineUsing(BiFunction<T, T, T> combiningFunction, ExecutorService executorService)
focal_class.class_method_signature: CompletableFutures.CompletableFutures()
focal_class.full_signature: private  CompletableFutures()
focal_class.identifier: CompletableFutures
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  CompletableFutures()
focal_method.body: static <F, T> Function<F, CompletableFuture<Stream<T>>> fanOut(Collection<Function<F, T>> mappings) {
  		return fanOut(mappings, ForkJoinPool.commonPool());
  	}
focal_method.class_method_signature: CompletableFutures.fanOut(Collection<Function<F, T>> mappings)
focal_method.full_signature: static Function<F, CompletableFuture<Stream<T>>> fanOut(Collection<Function<F, T>> mappings)
focal_method.identifier: fanOut
focal_method.invocations: fanOut commonPool
focal_method.modifiers: static
focal_method.parameters: (Collection<Function<F, T>> mappings)
focal_method.return: Function<F, CompletableFuture<Stream<T>>>
focal_method.signature: Function<F, CompletableFuture<Stream<T>>> fanOut(Collection<Function<F, T>> mappings)