2929import graphql .ExecutionInput ;
3030import graphql .GraphQL ;
3131import graphql .GraphQLContext ;
32+ import graphql .execution .ExecutionStrategy ;
3233import graphql .execution .instrumentation .ChainedInstrumentation ;
3334import graphql .execution .instrumentation .Instrumentation ;
3435import graphql .execution .instrumentation .dataloader .DataLoaderDispatcherInstrumentation ;
@@ -48,6 +49,9 @@ public class GraphQLJpaExecutorContext implements GraphQLExecutorContext {
4849 private final Supplier <GraphQLContext > graphqlContext ;
4950 private final Supplier <DataLoaderDispatcherInstrumentationOptions > dataLoaderDispatcherInstrumentationOptions ;
5051 private final Supplier <DataLoaderRegistry > dataLoaderRegistry ;
52+ private final Supplier <ExecutionStrategy > queryExecutionStrategy ;
53+ private final Supplier <ExecutionStrategy > mutationExecutionStrategy ;
54+ private final Supplier <ExecutionStrategy > subscriptionExecutionStrategy ;
5155
5256 private GraphQLJpaExecutorContext (Builder builder ) {
5357 this .graphQLSchema = builder .graphQLSchema ;
@@ -57,6 +61,9 @@ private GraphQLJpaExecutorContext(Builder builder) {
5761 this .graphqlContext = builder .graphqlContext ;
5862 this .dataLoaderDispatcherInstrumentationOptions = builder .dataLoaderDispatcherInstrumentationOptions ;
5963 this .dataLoaderRegistry = builder .dataLoaderRegistry ;
64+ this .queryExecutionStrategy = builder .queryExecutionStrategy ;
65+ this .mutationExecutionStrategy = builder .mutationExecutionStrategy ;
66+ this .subscriptionExecutionStrategy = builder .subscriptionExecutionStrategy ;
6067 }
6168
6269 @ Override
@@ -74,7 +81,10 @@ public GraphQL.Builder newGraphQL() {
7481 Instrumentation instrumentation = newIstrumentation ();
7582
7683 return GraphQL .newGraphQL (getGraphQLSchema ())
77- .instrumentation (instrumentation );
84+ .instrumentation (instrumentation )
85+ .queryExecutionStrategy (queryExecutionStrategy .get ())
86+ .mutationExecutionStrategy (mutationExecutionStrategy .get ())
87+ .subscriptionExecutionStrategy (subscriptionExecutionStrategy .get ());
7888 }
7989
8090 public GraphQLContext newGraphQLContext (DataLoaderRegistry dataLoaderRegistry ) {
@@ -135,6 +145,12 @@ public interface IBuildStage {
135145
136146 public IBuildStage dataLoaderRegistry (Supplier <DataLoaderRegistry > dataLoaderRegistry );
137147
148+ public IBuildStage queryExecutionStrategy (Supplier <ExecutionStrategy > queryExecutionStrategy );
149+
150+ public IBuildStage mutationExecutionStrategy (Supplier <ExecutionStrategy > mutationExecutionStrategy );
151+
152+ public IBuildStage subscriptionExecutionStrategy (Supplier <ExecutionStrategy > subscriptionExecutionStrategy );
153+
138154 public GraphQLJpaExecutorContext build ();
139155 }
140156
@@ -150,6 +166,9 @@ public static final class Builder implements IGraphQLSchemaStage, IBuildStage {
150166 private Supplier <GraphQLContext > graphqlContext ;
151167 private Supplier <DataLoaderDispatcherInstrumentationOptions > dataLoaderDispatcherInstrumentationOptions ;
152168 private Supplier <DataLoaderRegistry > dataLoaderRegistry ;
169+ private Supplier <ExecutionStrategy > queryExecutionStrategy ;
170+ private Supplier <ExecutionStrategy > mutationExecutionStrategy ;
171+ private Supplier <ExecutionStrategy > subscriptionExecutionStrategy ;
153172
154173 private Builder () {
155174 }
@@ -198,6 +217,27 @@ public IBuildStage dataLoaderRegistry(Supplier<DataLoaderRegistry> dataLoaderReg
198217 return this ;
199218 }
200219
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+
201241 @ Override
202242 public GraphQLJpaExecutorContext build () {
203243 return new GraphQLJpaExecutorContext (this );
0 commit comments