@@ -45,10 +45,10 @@ public final class CompletableFutureUtils {
45
45
@ SafeVarargs
46
46
@ SuppressWarnings ("unchecked" )
47
47
public static <T > CompletableFuture <List <T >> allOfWithResult (CompletableFuture <T >... cfs ) {
48
+ requireCfsAndEleNonNull (cfs );
48
49
final int size = cfs .length ;
49
50
if (size == 0 ) return CompletableFuture .completedFuture (Collections .emptyList ());
50
51
if (size == 1 ) return cfs [0 ].thenApply (Arrays ::asList );
51
- requireCfEleNonNull (cfs );
52
52
53
53
final Object [] result = new Object [size ];
54
54
@@ -82,10 +82,10 @@ public static <T> CompletableFuture<List<T>> allOfWithResult(CompletableFuture<T
82
82
@ Contract (pure = true )
83
83
@ SuppressWarnings ({"unchecked" , "rawtypes" })
84
84
public static CompletableFuture <Void > allOfFastFail (CompletableFuture <?>... cfs ) {
85
+ requireCfsAndEleNonNull (cfs );
85
86
final int size = cfs .length ;
86
87
if (size == 0 ) return CompletableFuture .completedFuture (null );
87
88
if (size == 1 ) return cfs [0 ].thenApply (v -> null );
88
- requireCfEleNonNull (cfs );
89
89
90
90
final CompletableFuture [] successOrBeIncomplete = new CompletableFuture [size ];
91
91
// NOTE: fill ONE MORE element of failedOrBeIncomplete LATER
@@ -122,10 +122,10 @@ public static CompletableFuture<Void> allOfFastFail(CompletableFuture<?>... cfs)
122
122
@ SafeVarargs
123
123
@ SuppressWarnings ({"unchecked" , "rawtypes" })
124
124
public static <T > CompletableFuture <List <T >> allOfFastFailWithResult (CompletableFuture <T >... cfs ) {
125
+ requireCfsAndEleNonNull (cfs );
125
126
final int size = cfs .length ;
126
127
if (size == 0 ) return CompletableFuture .completedFuture (Collections .emptyList ());
127
128
if (size == 1 ) return cfs [0 ].thenApply (Arrays ::asList );
128
- requireCfEleNonNull (cfs );
129
129
130
130
final CompletableFuture [] successOrBeIncomplete = new CompletableFuture [size ];
131
131
// NOTE: fill ONE MORE element of failedOrBeIncomplete LATER
@@ -139,7 +139,8 @@ public static <T> CompletableFuture<List<T>> allOfFastFailWithResult(Completable
139
139
return (CompletableFuture ) CompletableFuture .anyOf (failedOrBeIncomplete );
140
140
}
141
141
142
- private static void requireCfEleNonNull (CompletableFuture <?>... cfs ) {
142
+ private static void requireCfsAndEleNonNull (CompletableFuture <?>... cfs ) {
143
+ requireNonNull (cfs , "cfs is null" );
143
144
for (int i = 0 ; i < cfs .length ; i ++) {
144
145
requireNonNull (cfs [i ], "cf" + i + " is null" );
145
146
}
@@ -200,10 +201,10 @@ public static <T> CompletableFuture<T> anyOfWithType(CompletableFuture<T>... cfs
200
201
@ Contract (pure = true )
201
202
@ SuppressWarnings ({"unchecked" , "rawtypes" })
202
203
public static CompletableFuture <Object > anyOfSuccess (CompletableFuture <?>... cfs ) {
204
+ requireCfsAndEleNonNull (cfs );
203
205
final int size = cfs .length ;
204
206
if (size == 0 ) return failedFuture (new NoCfsProvidedException ());
205
207
if (size == 1 ) return (CompletableFuture <Object >) copy (cfs [0 ]);
206
- requireCfEleNonNull (cfs );
207
208
208
209
// NOTE: fill ONE MORE element of successOrBeIncompleteCfs LATER
209
210
final CompletableFuture [] successOrBeIncomplete = new CompletableFuture [size + 1 ];
@@ -254,8 +255,7 @@ public static <T> CompletableFuture<T> anyOfSuccessWithType(CompletableFuture<T>
254
255
@ SuppressWarnings ("unchecked" )
255
256
public static <T1 , T2 > CompletableFuture <Tuple2 <T1 , T2 >> combine (
256
257
CompletableFuture <T1 > cf1 , CompletableFuture <T2 > cf2 ) {
257
- requireNonNull (cf1 , "cf1 is null" );
258
- requireNonNull (cf2 , "cf2 is null" );
258
+ requireCfsAndEleNonNull (cf1 , cf2 );
259
259
260
260
final Object [] result = new Object [2 ];
261
261
return CompletableFuture .allOf (
@@ -279,9 +279,7 @@ public static <T1, T2> CompletableFuture<Tuple2<T1, T2>> combine(
279
279
@ SuppressWarnings ("unchecked" )
280
280
public static <T1 , T2 , T3 > CompletableFuture <Tuple3 <T1 , T2 , T3 >> combine (
281
281
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 );
285
283
286
284
final Object [] result = new Object [3 ];
287
285
return CompletableFuture .allOf (
@@ -307,10 +305,7 @@ public static <T1, T2, T3> CompletableFuture<Tuple3<T1, T2, T3>> combine(
307
305
public static <T1 , T2 , T3 , T4 > CompletableFuture <Tuple4 <T1 , T2 , T3 , T4 >> combine (
308
306
CompletableFuture <T1 > cf1 , CompletableFuture <T2 > cf2 ,
309
307
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 );
314
309
315
310
final Object [] result = new Object [4 ];
316
311
return CompletableFuture .allOf (
@@ -337,11 +332,7 @@ public static <T1, T2, T3, T4> CompletableFuture<Tuple4<T1, T2, T3, T4>> combine
337
332
public static <T1 , T2 , T3 , T4 , T5 > CompletableFuture <Tuple5 <T1 , T2 , T3 , T4 , T5 >> combine (
338
333
CompletableFuture <T1 > cf1 , CompletableFuture <T2 > cf2 ,
339
334
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 );
345
336
346
337
final Object [] result = new Object [5 ];
347
338
return CompletableFuture .allOf (
0 commit comments