1616
1717public class Execution {
1818
19- private final FieldCollector fieldCollector = new FieldCollector ();
20- private final ExecutionStrategy strategy ;
19+ private FieldCollector fieldCollector = new FieldCollector ();
20+ private ExecutionStrategy queryStrategy ;
21+ private ExecutionStrategy mutationStrategy ;
2122
22- public Execution (ExecutionStrategy executionStrategy ) {
23- this .strategy = executionStrategy == null ? new SimpleExecutionStrategy () : executionStrategy ;
23+ public Execution (ExecutionStrategy queryStrategy , ExecutionStrategy mutationStrategy ) {
24+ this .queryStrategy = queryStrategy != null ? queryStrategy : new SimpleExecutionStrategy ();
25+ this .mutationStrategy = mutationStrategy != null ? mutationStrategy : new SimpleExecutionStrategy ();
2426 }
2527
2628 public ExecutionResult execute (ExecutionId executionId , GraphQLSchema graphQLSchema , Object root , Document document , String operationName , Map <String , Object > args ) {
2729 ExecutionContextBuilder executionContextBuilder = new ExecutionContextBuilder (new ValuesResolver ());
2830 ExecutionContext executionContext = executionContextBuilder
2931 .executionId (executionId )
30- .build (graphQLSchema , strategy , root , document , operationName , args );
31-
32+ .build (graphQLSchema , queryStrategy , mutationStrategy , root , document , operationName , args );
3233 return executeOperation (executionContext , root , executionContext .getOperationDefinition ());
3334 }
3435
@@ -54,9 +55,9 @@ private ExecutionResult executeOperation(
5455 fieldCollector .collectFields (executionContext , operationRootType , operationDefinition .getSelectionSet (), new ArrayList <String >(), fields );
5556
5657 if (operationDefinition .getOperation () == OperationDefinition .Operation .MUTATION ) {
57- return new SimpleExecutionStrategy () .execute (executionContext , operationRootType , root , fields );
58+ return mutationStrategy .execute (executionContext , operationRootType , root , fields );
5859 } else {
59- return strategy .execute (executionContext , operationRootType , root , fields );
60+ return queryStrategy .execute (executionContext , operationRootType , root , fields );
6061 }
6162 }
6263}
0 commit comments