FutureCollectors.java

1
package com.pivovarit.collectors;
2
3
import java.util.List;
4
import java.util.Objects;
5
import java.util.concurrent.CompletableFuture;
6
import java.util.stream.Collector;
7
import java.util.stream.Collectors;
8
9
import static java.util.stream.Collectors.toList;
10
11
/**
12
 * @author Grzegorz Piwowarek
13
 */
14
final class FutureCollectors {
15
    static <T, R> Collector<CompletableFuture<T>, ?, CompletableFuture<R>> toFuture(Collector<T, ?, R> collector) {
16
        Objects.requireNonNull(collector, "collector cannot be null");
17
18 1 1. toFuture : replaced return value with null for com/pivovarit/collectors/FutureCollectors::toFuture → KILLED
        return Collectors.collectingAndThen(toList(), list -> {
19 1 1. lambda$toFuture$1 : replaced return value with null for com/pivovarit/collectors/FutureCollectors::lambda$toFuture$1 → KILLED
            var future = CompletableFuture.allOf(list.toArray(CompletableFuture[]::new))
20 1 1. lambda$toFuture$2 : replaced return value with null for com/pivovarit/collectors/FutureCollectors::lambda$toFuture$2 → KILLED
              .thenApply(__ -> list.stream()
21
                .map(CompletableFuture::join)
22
                .collect(collector));
23
24
            for (var f : list) {
25
                f.whenComplete((__, throwable) -> {
26 1 1. lambda$toFuture$3 : negated conditional → KILLED
                    if (throwable != null) {
27
                        future.completeExceptionally(throwable);
28
                    }
29
                });
30
            }
31
32 1 1. lambda$toFuture$0 : replaced return value with null for com/pivovarit/collectors/FutureCollectors::lambda$toFuture$0 → KILLED
            return future;
33
        });
34
    }
35
36
    static <T> Collector<CompletableFuture<T>, ?, CompletableFuture<List<T>>> toFuture() {
37 1 1. toFuture : replaced return value with null for com/pivovarit/collectors/FutureCollectors::toFuture → KILLED
        return toFuture(toList());
38
    }
39
}

Mutations

18

1.1
Location : toFuture
Killed by : com.pivovarit.collectors.FutureCollectorsTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.FutureCollectorsTest]/[method:shouldCollect()]
replaced return value with null for com/pivovarit/collectors/FutureCollectors::toFuture → KILLED

19

1.1
Location : lambda$toFuture$1
Killed by : com.pivovarit.collectors.FutureCollectorsTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.FutureCollectorsTest]/[method:shouldCollect()]
replaced return value with null for com/pivovarit/collectors/FutureCollectors::lambda$toFuture$1 → KILLED

20

1.1
Location : lambda$toFuture$2
Killed by : com.pivovarit.collectors.FutureCollectorsTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.FutureCollectorsTest]/[method:shouldCollect()]
replaced return value with null for com/pivovarit/collectors/FutureCollectors::lambda$toFuture$2 → KILLED

26

1.1
Location : lambda$toFuture$3
Killed by : com.pivovarit.collectors.FutureCollectorsTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.FutureCollectorsTest]/[method:shouldShortcircuit()]
negated conditional → KILLED

32

1.1
Location : lambda$toFuture$0
Killed by : com.pivovarit.collectors.FutureCollectorsTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.FutureCollectorsTest]/[method:shouldCollect()]
replaced return value with null for com/pivovarit/collectors/FutureCollectors::lambda$toFuture$0 → KILLED

37

1.1
Location : toFuture
Killed by : com.pivovarit.collectors.FutureCollectorsTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.FutureCollectorsTest]/[method:shouldCollect()]
replaced return value with null for com/pivovarit/collectors/FutureCollectors::toFuture → KILLED

Active mutators

Tests examined


Report generated by PIT 1.21.0