Skip to content
This repository was archived by the owner on Oct 25, 2021. It is now read-only.

Commit 31ab4f9

Browse files
authored
Merge pull request #12 from marceloverdijk/data_loader_registry
Add support for DataLoaderRegistry in DefaultGraphQLInvocation
2 parents 612d644 + b93f973 commit 31ab4f9

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

graphql-java-spring-webflux/src/main/java/graphql/spring/web/reactive/components/DefaultGraphQLInvocation.java

+10-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import graphql.spring.web.reactive.ExecutionInputCustomizer;
88
import graphql.spring.web.reactive.GraphQLInvocation;
99
import graphql.spring.web.reactive.GraphQLInvocationData;
10+
import org.dataloader.DataLoaderRegistry;
1011
import org.springframework.beans.factory.annotation.Autowired;
1112
import org.springframework.stereotype.Component;
1213
import org.springframework.web.server.ServerWebExchange;
@@ -19,16 +20,22 @@ public class DefaultGraphQLInvocation implements GraphQLInvocation {
1920
@Autowired
2021
GraphQL graphQL;
2122

23+
@Autowired(required = false)
24+
DataLoaderRegistry dataLoaderRegistry;
25+
2226
@Autowired
2327
ExecutionInputCustomizer executionInputCustomizer;
2428

2529
@Override
2630
public Mono<ExecutionResult> invoke(GraphQLInvocationData invocationData, ServerWebExchange serverWebExchange) {
27-
ExecutionInput executionInput = ExecutionInput.newExecutionInput()
31+
ExecutionInput.Builder executionInputBuilder = ExecutionInput.newExecutionInput()
2832
.query(invocationData.getQuery())
2933
.operationName(invocationData.getOperationName())
30-
.variables(invocationData.getVariables())
31-
.build();
34+
.variables(invocationData.getVariables());
35+
if (dataLoaderRegistry != null) {
36+
executionInputBuilder.dataLoaderRegistry(dataLoaderRegistry);
37+
}
38+
ExecutionInput executionInput = executionInputBuilder.build();
3239
Mono<ExecutionInput> customizedExecutionInputMono = executionInputCustomizer.customizeExecutionInput(executionInput, serverWebExchange);
3340
return customizedExecutionInputMono.flatMap(customizedExecutionInput -> Mono.fromCompletionStage(graphQL.executeAsync(customizedExecutionInput)));
3441
}

graphql-java-spring-webmvc/src/main/java/graphql/spring/web/servlet/components/DefaultGraphQLInvocation.java

+10-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import graphql.spring.web.servlet.ExecutionInputCustomizer;
88
import graphql.spring.web.servlet.GraphQLInvocation;
99
import graphql.spring.web.servlet.GraphQLInvocationData;
10+
import org.dataloader.DataLoaderRegistry;
1011
import org.springframework.beans.factory.annotation.Autowired;
1112
import org.springframework.stereotype.Component;
1213
import org.springframework.web.context.request.WebRequest;
@@ -20,16 +21,22 @@ public class DefaultGraphQLInvocation implements GraphQLInvocation {
2021
@Autowired
2122
GraphQL graphQL;
2223

24+
@Autowired(required = false)
25+
DataLoaderRegistry dataLoaderRegistry;
26+
2327
@Autowired
2428
ExecutionInputCustomizer executionInputCustomizer;
2529

2630
@Override
2731
public CompletableFuture<ExecutionResult> invoke(GraphQLInvocationData invocationData, WebRequest webRequest) {
28-
ExecutionInput executionInput = ExecutionInput.newExecutionInput()
32+
ExecutionInput.Builder executionInputBuilder = ExecutionInput.newExecutionInput()
2933
.query(invocationData.getQuery())
3034
.operationName(invocationData.getOperationName())
31-
.variables(invocationData.getVariables())
32-
.build();
35+
.variables(invocationData.getVariables());
36+
if (dataLoaderRegistry != null) {
37+
executionInputBuilder.dataLoaderRegistry(dataLoaderRegistry);
38+
}
39+
ExecutionInput executionInput = executionInputBuilder.build();
3340
CompletableFuture<ExecutionInput> customizedExecutionInput = executionInputCustomizer.customizeExecutionInput(executionInput, webRequest);
3441
return customizedExecutionInput.thenCompose(graphQL::executeAsync);
3542
}

0 commit comments

Comments
 (0)