29
29
import graphql .ExecutionInput ;
30
30
import graphql .GraphQL ;
31
31
import graphql .GraphQLContext ;
32
+ import graphql .execution .ExecutionStrategy ;
32
33
import graphql .execution .instrumentation .ChainedInstrumentation ;
33
34
import graphql .execution .instrumentation .Instrumentation ;
34
35
import graphql .execution .instrumentation .dataloader .DataLoaderDispatcherInstrumentation ;
@@ -48,6 +49,9 @@ public class GraphQLJpaExecutorContext implements GraphQLExecutorContext {
48
49
private final Supplier <GraphQLContext > graphqlContext ;
49
50
private final Supplier <DataLoaderDispatcherInstrumentationOptions > dataLoaderDispatcherInstrumentationOptions ;
50
51
private final Supplier <DataLoaderRegistry > dataLoaderRegistry ;
52
+ private final Supplier <ExecutionStrategy > queryExecutionStrategy ;
53
+ private final Supplier <ExecutionStrategy > mutationExecutionStrategy ;
54
+ private final Supplier <ExecutionStrategy > subscriptionExecutionStrategy ;
51
55
52
56
private GraphQLJpaExecutorContext (Builder builder ) {
53
57
this .graphQLSchema = builder .graphQLSchema ;
@@ -57,6 +61,9 @@ private GraphQLJpaExecutorContext(Builder builder) {
57
61
this .graphqlContext = builder .graphqlContext ;
58
62
this .dataLoaderDispatcherInstrumentationOptions = builder .dataLoaderDispatcherInstrumentationOptions ;
59
63
this .dataLoaderRegistry = builder .dataLoaderRegistry ;
64
+ this .queryExecutionStrategy = builder .queryExecutionStrategy ;
65
+ this .mutationExecutionStrategy = builder .mutationExecutionStrategy ;
66
+ this .subscriptionExecutionStrategy = builder .subscriptionExecutionStrategy ;
60
67
}
61
68
62
69
@ Override
@@ -74,7 +81,10 @@ public GraphQL.Builder newGraphQL() {
74
81
Instrumentation instrumentation = newIstrumentation ();
75
82
76
83
return GraphQL .newGraphQL (getGraphQLSchema ())
77
- .instrumentation (instrumentation );
84
+ .instrumentation (instrumentation )
85
+ .queryExecutionStrategy (queryExecutionStrategy .get ())
86
+ .mutationExecutionStrategy (mutationExecutionStrategy .get ())
87
+ .subscriptionExecutionStrategy (subscriptionExecutionStrategy .get ());
78
88
}
79
89
80
90
public GraphQLContext newGraphQLContext (DataLoaderRegistry dataLoaderRegistry ) {
@@ -135,6 +145,12 @@ public interface IBuildStage {
135
145
136
146
public IBuildStage dataLoaderRegistry (Supplier <DataLoaderRegistry > dataLoaderRegistry );
137
147
148
+ public IBuildStage queryExecutionStrategy (Supplier <ExecutionStrategy > queryExecutionStrategy );
149
+
150
+ public IBuildStage mutationExecutionStrategy (Supplier <ExecutionStrategy > mutationExecutionStrategy );
151
+
152
+ public IBuildStage subscriptionExecutionStrategy (Supplier <ExecutionStrategy > subscriptionExecutionStrategy );
153
+
138
154
public GraphQLJpaExecutorContext build ();
139
155
}
140
156
@@ -150,6 +166,9 @@ public static final class Builder implements IGraphQLSchemaStage, IBuildStage {
150
166
private Supplier <GraphQLContext > graphqlContext ;
151
167
private Supplier <DataLoaderDispatcherInstrumentationOptions > dataLoaderDispatcherInstrumentationOptions ;
152
168
private Supplier <DataLoaderRegistry > dataLoaderRegistry ;
169
+ private Supplier <ExecutionStrategy > queryExecutionStrategy ;
170
+ private Supplier <ExecutionStrategy > mutationExecutionStrategy ;
171
+ private Supplier <ExecutionStrategy > subscriptionExecutionStrategy ;
153
172
154
173
private Builder () {
155
174
}
@@ -198,6 +217,27 @@ public IBuildStage dataLoaderRegistry(Supplier<DataLoaderRegistry> dataLoaderReg
198
217
return this ;
199
218
}
200
219
220
+ @ Override
221
+ public IBuildStage queryExecutionStrategy (Supplier <ExecutionStrategy > queryExecutionStrategy ) {
222
+ this .queryExecutionStrategy = queryExecutionStrategy ;
223
+
224
+ return this ;
225
+ }
226
+
227
+ @ Override
228
+ public IBuildStage mutationExecutionStrategy (Supplier <ExecutionStrategy > mutationExecutionStrategy ) {
229
+ this .mutationExecutionStrategy = mutationExecutionStrategy ;
230
+
231
+ return this ;
232
+ }
233
+
234
+ @ Override
235
+ public IBuildStage subscriptionExecutionStrategy (Supplier <ExecutionStrategy > subscriptionExecutionStrategy ) {
236
+ this .subscriptionExecutionStrategy = subscriptionExecutionStrategy ;
237
+
238
+ return this ;
239
+ }
240
+
201
241
@ Override
202
242
public GraphQLJpaExecutorContext build () {
203
243
return new GraphQLJpaExecutorContext (this );
0 commit comments