test_class.declarator: POOL_SIZE = 4
test_class.modifier: public static final
test_class.original_string: public static final int POOL_SIZE = 4;
test_class.type: int
test_class.var_name: POOL_SIZE
test_class.declarator: pool
test_class.modifier: private
test_class.original_string: private ExecutorService pool;
test_class.type: ExecutorService
test_class.var_name: pool
test_class.file: blog-code/src/test/java/pl/ciruk/blog/flow/CompletableFutureFlowTest.java
test_class.identifier: CompletableFutureFlowTest
test_case.body: @Test
      public void testFlowWithCustomForkJoinPool() throws Exception {
          pool = new ForkJoinPool(POOL_SIZE);
  
          List<CompletableFuture<Integer>> futures = new ArrayList<>();
  
          for (int i = 0; i < 20; i++) {
              futures.add(
                      CompletableFutureFlow.flowWithId(i, pool));
          }
  
          futures.forEach(CompletableFutureFlow::getFuture);
      }
test_case.class_method_signature: CompletableFutureFlowTest.testFlowWithCustomForkJoinPool()
test_case.full_signature: @Test public void testFlowWithCustomForkJoinPool()
test_case.identifier: testFlowWithCustomForkJoinPool
test_case.invocations: add flowWithId forEach
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testFlowWithCustomForkJoinPool()
focal_class.file: blog-code/src/main/java/pl/ciruk/blog/flow/CompletableFutureFlow.java
focal_class.identifier: CompletableFutureFlow
focal_class.class_method_signature: CompletableFutureFlow.flowWithId(int id, ExecutorService pool)
focal_class.full_signature: static CompletableFuture<Integer> flowWithId(int id, ExecutorService pool)
focal_class.identifier: flowWithId
focal_class.modifiers: static
focal_class.parameters: (int id, ExecutorService pool)
focal_class.return: CompletableFuture<Integer>
focal_class.signature: CompletableFuture<Integer> flowWithId(int id, ExecutorService pool)
focal_class.class_method_signature: CompletableFutureFlow.firstOperation(int id, ExecutorService pool)
focal_class.full_signature: private static CompletableFuture<Integer> firstOperation(int id, ExecutorService pool)
focal_class.identifier: firstOperation
focal_class.modifiers: private static
focal_class.parameters: (int id, ExecutorService pool)
focal_class.return: CompletableFuture<Integer>
focal_class.signature: CompletableFuture<Integer> firstOperation(int id, ExecutorService pool)
focal_class.class_method_signature: CompletableFutureFlow.slowOperationAsync(int flow, int step, ExecutorService pool)
focal_class.full_signature: private static CompletableFuture<Integer> slowOperationAsync(int flow, int step, ExecutorService pool)
focal_class.identifier: slowOperationAsync
focal_class.modifiers: private static
focal_class.parameters: (int flow, int step, ExecutorService pool)
focal_class.return: CompletableFuture<Integer>
focal_class.signature: CompletableFuture<Integer> slowOperationAsync(int flow, int step, ExecutorService pool)
focal_class.class_method_signature: CompletableFutureFlow.slowOperation(int flow, int step)
focal_class.full_signature: private static int slowOperation(int flow, int step)
focal_class.identifier: slowOperation
focal_class.modifiers: private static
focal_class.parameters: (int flow, int step)
focal_class.return: int
focal_class.signature: int slowOperation(int flow, int step)
focal_class.class_method_signature: CompletableFutureFlow.secondOperation(int id, ExecutorService pool)
focal_class.full_signature: private static CompletableFuture<Integer> secondOperation(int id, ExecutorService pool)
focal_class.identifier: secondOperation
focal_class.modifiers: private static
focal_class.parameters: (int id, ExecutorService pool)
focal_class.return: CompletableFuture<Integer>
focal_class.signature: CompletableFuture<Integer> secondOperation(int id, ExecutorService pool)
focal_class.class_method_signature: CompletableFutureFlow.thirdOperation(int id, ExecutorService pool)
focal_class.full_signature: private static CompletableFuture<Integer> thirdOperation(int id, ExecutorService pool)
focal_class.identifier: thirdOperation
focal_class.modifiers: private static
focal_class.parameters: (int id, ExecutorService pool)
focal_class.return: CompletableFuture<Integer>
focal_class.signature: CompletableFuture<Integer> thirdOperation(int id, ExecutorService pool)
focal_class.class_method_signature: CompletableFutureFlow.getFuture(CompletableFuture<Integer> future)
focal_class.full_signature: static void getFuture(CompletableFuture<Integer> future)
focal_class.identifier: getFuture
focal_class.modifiers: static
focal_class.parameters: (CompletableFuture<Integer> future)
focal_class.return: void
focal_class.signature: void getFuture(CompletableFuture<Integer> future)
focal_method.body: static CompletableFuture<Integer> flowWithId(int id, ExecutorService pool) {
          return firstOperation(id, pool)
                  .thenCompose(__ -> secondOperation(id, pool))
                  .thenCompose(__ -> thirdOperation(id, pool));
      }
focal_method.class_method_signature: CompletableFutureFlow.flowWithId(int id, ExecutorService pool)
focal_method.full_signature: static CompletableFuture<Integer> flowWithId(int id, ExecutorService pool)
focal_method.identifier: flowWithId
focal_method.invocations: thenCompose thenCompose firstOperation secondOperation thirdOperation
focal_method.modifiers: static
focal_method.parameters: (int id, ExecutorService pool)
focal_method.return: CompletableFuture<Integer>
focal_method.signature: CompletableFuture<Integer> flowWithId(int id, ExecutorService pool)