Skip to content

Commit 69f3b24

Browse files
committed
Merge branch '1.2.x'
2 parents c5acccf + 43a76c4 commit 69f3b24

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

spring-graphql/src/main/java/org/springframework/graphql/execution/DataLoaderRegistrar.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import graphql.ExecutionInput;
1919
import graphql.GraphQLContext;
20-
import org.dataloader.BatchLoaderContextProvider;
2120
import org.dataloader.DataLoaderRegistry;
2221

2322
/**

spring-graphql/src/main/java/org/springframework/graphql/execution/DefaultExecutionGraphQlService.java

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ public class DefaultExecutionGraphQlService implements ExecutionGraphQlService {
5252

5353
private final List<DataLoaderRegistrar> dataLoaderRegistrars = new ArrayList<>();
5454

55+
private boolean hasDataLoaderRegistrations;
56+
5557
private final boolean isDefaultExecutionIdProvider;
5658

5759

@@ -69,6 +71,13 @@ public DefaultExecutionGraphQlService(GraphQlSource graphQlSource) {
6971
*/
7072
public void addDataLoaderRegistrar(DataLoaderRegistrar registrar) {
7173
this.dataLoaderRegistrars.add(registrar);
74+
this.hasDataLoaderRegistrations = (this.hasDataLoaderRegistrations || hasRegistrations(registrar));
75+
}
76+
77+
private static boolean hasRegistrations(DataLoaderRegistrar registrar) {
78+
DataLoaderRegistry registry = DataLoaderRegistry.newRegistry().build();
79+
registrar.registerDataLoaders(registry, GraphQLContext.newContext().build());
80+
return !registry.getDataLoaders().isEmpty();
7281
}
7382

7483

@@ -78,26 +87,30 @@ public final Mono<ExecutionGraphQlResponse> execute(ExecutionGraphQlRequest requ
7887
if (!this.isDefaultExecutionIdProvider && request.getExecutionId() == null) {
7988
request.configureExecutionInput(RESET_EXECUTION_ID_CONFIGURER);
8089
}
90+
8191
ExecutionInput executionInput = request.toExecutionInput();
92+
93+
GraphQLContext graphQLContext = executionInput.getGraphQLContext();
8294
snapshotFactory.captureFrom(contextView).updateContext(executionInput.getGraphQLContext());
83-
ExecutionInput updatedExecutionInput = registerDataLoaders(executionInput);
95+
96+
ExecutionInput updatedExecutionInput =
97+
(this.hasDataLoaderRegistrations ? registerDataLoaders(executionInput) : executionInput);
98+
8499
return Mono.fromFuture(this.graphQlSource.graphQl().executeAsync(updatedExecutionInput))
85100
.map(result -> new DefaultExecutionGraphQlResponse(updatedExecutionInput, result));
86101
});
87102
}
88103

89104
private ExecutionInput registerDataLoaders(ExecutionInput executionInput) {
90-
if (!this.dataLoaderRegistrars.isEmpty()) {
91-
GraphQLContext graphQLContext = executionInput.getGraphQLContext();
92-
DataLoaderRegistry existingRegistry = executionInput.getDataLoaderRegistry();
93-
if (existingRegistry == DataLoaderDispatcherInstrumentationState.EMPTY_DATALOADER_REGISTRY) {
94-
DataLoaderRegistry newRegistry = DataLoaderRegistry.newRegistry().build();
95-
applyDataLoaderRegistrars(newRegistry, graphQLContext);
96-
executionInput = executionInput.transform(builder -> builder.dataLoaderRegistry(newRegistry));
97-
}
98-
else {
99-
applyDataLoaderRegistrars(existingRegistry, graphQLContext);
100-
}
105+
GraphQLContext graphQLContext = executionInput.getGraphQLContext();
106+
DataLoaderRegistry existingRegistry = executionInput.getDataLoaderRegistry();
107+
if (existingRegistry == DataLoaderDispatcherInstrumentationState.EMPTY_DATALOADER_REGISTRY) {
108+
DataLoaderRegistry newRegistry = DataLoaderRegistry.newRegistry().build();
109+
applyDataLoaderRegistrars(newRegistry, graphQLContext);
110+
executionInput = executionInput.transform(builder -> builder.dataLoaderRegistry(newRegistry));
111+
}
112+
else {
113+
applyDataLoaderRegistrars(existingRegistry, graphQLContext);
101114
}
102115
return executionInput;
103116
}

0 commit comments

Comments
 (0)