11package graphql .servlet ;
22
3+ import graphql .ExecutionInput ;
34import graphql .ExecutionResult ;
45
56import java .io .IOException ;
67import java .io .Writer ;
7- import java .util .ArrayList ;
88import java .util .Iterator ;
9- import java .util .List ;
9+ import java .util .function . BiFunction ;
1010
1111public class DefaultGraphQLExecutionResultHandlerFactory implements GraphQLExecutionResultHandlerFactory {
1212 @ Override
@@ -16,8 +16,6 @@ public ExecutionResultHandler getBatchHandler(Writer respWriter, GraphQLObjectMa
1616
1717 private class DefaultGraphQLExecutionResultHandler implements ExecutionResultHandler {
1818
19- private final List <ExecutionResult > results = new ArrayList <>();
20-
2119 private final Writer respWriter ;
2220
2321 private final GraphQLObjectMapper graphQLObjectMapper ;
@@ -28,19 +26,16 @@ private DefaultGraphQLExecutionResultHandler(Writer respWriter, GraphQLObjectMap
2826 }
2927
3028 @ Override
31- public void accept (ExecutionResult result ) {
32- results .add (result );
33- }
34-
35- @ Override
36- public void finalizeResults () {
29+ public void handleBatch (GraphQLBatchedInvocationInput batchedInvocationInput , BiFunction <GraphQLInvocationInput , ExecutionInput ,
30+ ExecutionResult > queryFunction ) {
31+ Iterator <ExecutionInput > executionInputIterator = batchedInvocationInput .getExecutionInputs ().iterator ();
3732 try {
3833 respWriter .write ("[" );
39- Iterator < ExecutionResult > iterator = results . iterator ();
40- while ( iterator . hasNext ()) {
41- respWriter .write (graphQLObjectMapper .serializeResultAsJson (iterator . next () ));
42- if (iterator .hasNext ()) {
43- respWriter .write ("," );
34+ while ( executionInputIterator . hasNext ()) {
35+ ExecutionResult result = queryFunction . apply ( batchedInvocationInput , executionInputIterator . next ());
36+ respWriter .write (graphQLObjectMapper .serializeResultAsJson (result ));
37+ if (executionInputIterator .hasNext ()) {
38+ respWriter .write ("," );
4439 }
4540 }
4641 respWriter .write ("]" );
0 commit comments