From 1cc2bebffe8fb99840ed36d106db417bf4fa8e92 Mon Sep 17 00:00:00 2001 From: yshepilov Date: Fri, 29 May 2020 15:40:15 +0200 Subject: [PATCH] #1855 add ExecutionStrategyParameters parameter to handleResults method --- .../graphql/execution/AbstractAsyncExecutionStrategy.java | 5 +++++ src/main/java/graphql/execution/AsyncExecutionStrategy.java | 2 +- .../java/graphql/execution/AsyncSerialExecutionStrategy.java | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index c2bb3b096e..3d290bd5ab 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -19,6 +19,11 @@ public AbstractAsyncExecutionStrategy(DataFetcherExceptionHandler dataFetcherExc super(dataFetcherExceptionHandler); } + protected BiConsumer, Throwable> handleResults(ExecutionContext executionContext, List fieldNames, CompletableFuture overallResult, ExecutionStrategyParameters parameters) { + return this.handleResults(executionContext, fieldNames, overallResult); + } + + // This method is kept for backward compatibility. Prefer calling/overriding another handleResults method protected BiConsumer, Throwable> handleResults(ExecutionContext executionContext, List fieldNames, CompletableFuture overallResult) { return (List results, Throwable exception) -> { if (exception != null) { diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index f5a33b0452..d2e196ca15 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -79,7 +79,7 @@ public CompletableFuture execute(ExecutionContext executionCont executionStrategyCtx.onDispatched(overallResult); Async.each(futures).whenComplete((completeValueInfos, throwable) -> { - BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, resolvedFields, overallResult); + BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, resolvedFields, overallResult, parameters); if (throwable != null) { handleResultsConsumer.accept(null, throwable.getCause()); return; diff --git a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java index 1be2e3bb7f..01a3ccc31c 100644 --- a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java @@ -24,7 +24,7 @@ public AsyncSerialExecutionStrategy(DataFetcherExceptionHandler exceptionHandler } @Override - @SuppressWarnings({"TypeParameterUnusedInFormals","FutureReturnValueIgnored"}) + @SuppressWarnings({"TypeParameterUnusedInFormals", "FutureReturnValueIgnored"}) public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -44,7 +44,7 @@ public CompletableFuture execute(ExecutionContext executionCont CompletableFuture overallResult = new CompletableFuture<>(); executionStrategyCtx.onDispatched(overallResult); - resultsFuture.whenComplete(handleResults(executionContext, fieldNames, overallResult)); + resultsFuture.whenComplete(handleResults(executionContext, fieldNames, overallResult, parameters)); overallResult.whenComplete(executionStrategyCtx::onCompleted); return overallResult; }