|
17 | 17 |
|
18 | 18 | import java.lang.reflect.InvocationTargetException;
|
19 | 19 | import java.lang.reflect.Method;
|
| 20 | +import java.util.ArrayList; |
20 | 21 | import java.util.Arrays;
|
21 | 22 | import java.util.List;
|
22 | 23 | import java.util.concurrent.Callable;
|
23 | 24 | import java.util.concurrent.CompletableFuture;
|
24 | 25 | import java.util.concurrent.Executor;
|
25 |
| -import java.util.stream.Collectors; |
26 |
| -import java.util.stream.Stream; |
27 | 26 |
|
28 | 27 | import graphql.GraphQLContext;
|
29 | 28 | import io.micrometer.context.ContextSnapshot;
|
@@ -132,16 +131,19 @@ private Object handleReturnValue(GraphQLContext graphQLContext, @Nullable Object
|
132 | 131 | */
|
133 | 132 | @SuppressWarnings("unchecked")
|
134 | 133 | protected Mono<Object[]> toArgsMono(Object[] args) {
|
135 |
| - |
136 |
| - List<Mono<Object>> monoList = Arrays.stream(args) |
137 |
| - .map(arg -> { |
138 |
| - Mono<Object> argMono = (arg instanceof Mono ? (Mono<Object>) arg : Mono.justOrEmpty(arg)); |
139 |
| - return argMono.defaultIfEmpty(NO_VALUE); |
140 |
| - }) |
141 |
| - .collect(Collectors.toList()); |
142 |
| - |
143 |
| - return Mono.zip(monoList, |
144 |
| - values -> Stream.of(values).map(value -> value != NO_VALUE ? value : null).toArray()); |
| 134 | + List<Mono<Object>> monoList = new ArrayList<>(); |
| 135 | + for (Object arg : args) { |
| 136 | + Mono<Object> argMono = (arg instanceof Mono ? (Mono<Object>) arg : Mono.justOrEmpty(arg)); |
| 137 | + monoList.add(argMono.defaultIfEmpty(NO_VALUE)); |
| 138 | + } |
| 139 | + return Mono.zip(monoList, values -> { |
| 140 | + for (int i = 0; i < values.length; i++) { |
| 141 | + if (values[i] == NO_VALUE) { |
| 142 | + values[i] = null; |
| 143 | + } |
| 144 | + } |
| 145 | + return values; |
| 146 | + }); |
145 | 147 | }
|
146 | 148 |
|
147 | 149 | }
|
0 commit comments