Skip to content

Commit 6f822c3

Browse files
committed
refactor: null check input cfs 👻 ; replace null check logic by requireCfsAndEleNonNull in combine methods
1 parent 342b9a6 commit 6f822c3

File tree

1 file changed

+10
-19
lines changed

1 file changed

+10
-19
lines changed

src/main/java/io/foldright/cffu/CompletableFutureUtils.java

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ public final class CompletableFutureUtils {
4545
@SafeVarargs
4646
@SuppressWarnings("unchecked")
4747
public static <T> CompletableFuture<List<T>> allOfWithResult(CompletableFuture<T>... cfs) {
48+
requireCfsAndEleNonNull(cfs);
4849
final int size = cfs.length;
4950
if (size == 0) return CompletableFuture.completedFuture(Collections.emptyList());
5051
if (size == 1) return cfs[0].thenApply(Arrays::asList);
51-
requireCfEleNonNull(cfs);
5252

5353
final Object[] result = new Object[size];
5454

@@ -82,10 +82,10 @@ public static <T> CompletableFuture<List<T>> allOfWithResult(CompletableFuture<T
8282
@Contract(pure = true)
8383
@SuppressWarnings({"unchecked", "rawtypes"})
8484
public static CompletableFuture<Void> allOfFastFail(CompletableFuture<?>... cfs) {
85+
requireCfsAndEleNonNull(cfs);
8586
final int size = cfs.length;
8687
if (size == 0) return CompletableFuture.completedFuture(null);
8788
if (size == 1) return cfs[0].thenApply(v -> null);
88-
requireCfEleNonNull(cfs);
8989

9090
final CompletableFuture[] successOrBeIncomplete = new CompletableFuture[size];
9191
// NOTE: fill ONE MORE element of failedOrBeIncomplete LATER
@@ -122,10 +122,10 @@ public static CompletableFuture<Void> allOfFastFail(CompletableFuture<?>... cfs)
122122
@SafeVarargs
123123
@SuppressWarnings({"unchecked", "rawtypes"})
124124
public static <T> CompletableFuture<List<T>> allOfFastFailWithResult(CompletableFuture<T>... cfs) {
125+
requireCfsAndEleNonNull(cfs);
125126
final int size = cfs.length;
126127
if (size == 0) return CompletableFuture.completedFuture(Collections.emptyList());
127128
if (size == 1) return cfs[0].thenApply(Arrays::asList);
128-
requireCfEleNonNull(cfs);
129129

130130
final CompletableFuture[] successOrBeIncomplete = new CompletableFuture[size];
131131
// NOTE: fill ONE MORE element of failedOrBeIncomplete LATER
@@ -139,7 +139,8 @@ public static <T> CompletableFuture<List<T>> allOfFastFailWithResult(Completable
139139
return (CompletableFuture) CompletableFuture.anyOf(failedOrBeIncomplete);
140140
}
141141

142-
private static void requireCfEleNonNull(CompletableFuture<?>... cfs) {
142+
private static void requireCfsAndEleNonNull(CompletableFuture<?>... cfs) {
143+
requireNonNull(cfs, "cfs is null");
143144
for (int i = 0; i < cfs.length; i++) {
144145
requireNonNull(cfs[i], "cf" + i + " is null");
145146
}
@@ -200,10 +201,10 @@ public static <T> CompletableFuture<T> anyOfWithType(CompletableFuture<T>... cfs
200201
@Contract(pure = true)
201202
@SuppressWarnings({"unchecked", "rawtypes"})
202203
public static CompletableFuture<Object> anyOfSuccess(CompletableFuture<?>... cfs) {
204+
requireCfsAndEleNonNull(cfs);
203205
final int size = cfs.length;
204206
if (size == 0) return failedFuture(new NoCfsProvidedException());
205207
if (size == 1) return (CompletableFuture<Object>) copy(cfs[0]);
206-
requireCfEleNonNull(cfs);
207208

208209
// NOTE: fill ONE MORE element of successOrBeIncompleteCfs LATER
209210
final CompletableFuture[] successOrBeIncomplete = new CompletableFuture[size + 1];
@@ -254,8 +255,7 @@ public static <T> CompletableFuture<T> anyOfSuccessWithType(CompletableFuture<T>
254255
@SuppressWarnings("unchecked")
255256
public static <T1, T2> CompletableFuture<Tuple2<T1, T2>> combine(
256257
CompletableFuture<T1> cf1, CompletableFuture<T2> cf2) {
257-
requireNonNull(cf1, "cf1 is null");
258-
requireNonNull(cf2, "cf2 is null");
258+
requireCfsAndEleNonNull(cf1, cf2);
259259

260260
final Object[] result = new Object[2];
261261
return CompletableFuture.allOf(
@@ -279,9 +279,7 @@ public static <T1, T2> CompletableFuture<Tuple2<T1, T2>> combine(
279279
@SuppressWarnings("unchecked")
280280
public static <T1, T2, T3> CompletableFuture<Tuple3<T1, T2, T3>> combine(
281281
CompletableFuture<T1> cf1, CompletableFuture<T2> cf2, CompletableFuture<T3> cf3) {
282-
requireNonNull(cf1, "cf1 is null");
283-
requireNonNull(cf2, "cf2 is null");
284-
requireNonNull(cf3, "cf3 is null");
282+
requireCfsAndEleNonNull(cf1, cf2, cf3);
285283

286284
final Object[] result = new Object[3];
287285
return CompletableFuture.allOf(
@@ -307,10 +305,7 @@ public static <T1, T2, T3> CompletableFuture<Tuple3<T1, T2, T3>> combine(
307305
public static <T1, T2, T3, T4> CompletableFuture<Tuple4<T1, T2, T3, T4>> combine(
308306
CompletableFuture<T1> cf1, CompletableFuture<T2> cf2,
309307
CompletableFuture<T3> cf3, CompletableFuture<T4> cf4) {
310-
requireNonNull(cf1, "cf1 is null");
311-
requireNonNull(cf2, "cf2 is null");
312-
requireNonNull(cf3, "cf3 is null");
313-
requireNonNull(cf4, "cf4 is null");
308+
requireCfsAndEleNonNull(cf1, cf2, cf3, cf4);
314309

315310
final Object[] result = new Object[4];
316311
return CompletableFuture.allOf(
@@ -337,11 +332,7 @@ public static <T1, T2, T3, T4> CompletableFuture<Tuple4<T1, T2, T3, T4>> combine
337332
public static <T1, T2, T3, T4, T5> CompletableFuture<Tuple5<T1, T2, T3, T4, T5>> combine(
338333
CompletableFuture<T1> cf1, CompletableFuture<T2> cf2,
339334
CompletableFuture<T3> cf3, CompletableFuture<T4> cf4, CompletableFuture<T5> cf5) {
340-
requireNonNull(cf1, "cf1 is null");
341-
requireNonNull(cf2, "cf2 is null");
342-
requireNonNull(cf3, "cf3 is null");
343-
requireNonNull(cf4, "cf4 is null");
344-
requireNonNull(cf5, "cf5 is null");
335+
requireCfsAndEleNonNull(cf1, cf2, cf3, cf4, cf5);
345336

346337
final Object[] result = new Object[5];
347338
return CompletableFuture.allOf(

0 commit comments

Comments
 (0)