|
41 | 41 | import java.util.Collections; |
42 | 42 | import java.util.HashMap; |
43 | 43 | import java.util.Iterator; |
| 44 | +import java.util.LinkedHashMap; |
44 | 45 | import java.util.List; |
45 | 46 | import java.util.Map; |
46 | 47 | import java.util.Objects; |
@@ -240,7 +241,7 @@ public String[] getMutations() { |
240 | 241 | public String executeQuery(String query) { |
241 | 242 | try { |
242 | 243 | final ExecutionResult result = newGraphQL(getSchemaProvider().getSchema()).execute(new ExecutionInput(query, null, createContext(Optional.empty(), Optional.empty()), createRootObject(Optional.empty(), Optional.empty()), new HashMap<>())); |
243 | | - return getMapper().writeValueAsString(createResultFromDataAndErrors(result.getData(), result.getErrors())); |
| 244 | + return getMapper().writeValueAsString(createResultFromDataErrorsAndExtensions(result.getData(), result.getErrors(), result.getExtensions())); |
244 | 245 | } catch (Exception e) { |
245 | 246 | return e.getMessage(); |
246 | 247 | } |
@@ -338,33 +339,38 @@ private void query(String query, String operationName, Map<String, Object> varia |
338 | 339 | final ExecutionResult executionResult = newGraphQL(schema).execute(new ExecutionInput(query, operationName, context, rootObject, variables)); |
339 | 340 | final List<GraphQLError> errors = executionResult.getErrors(); |
340 | 341 | final Object data = executionResult.getData(); |
| 342 | + final Object extensions = executionResult.getExtensions(); |
341 | 343 |
|
342 | | - final String response = getMapper().writeValueAsString(createResultFromDataAndErrors(data, errors)); |
| 344 | + final String response = getMapper().writeValueAsString(createResultFromDataErrorsAndExtensions(data, errors, extensions)); |
343 | 345 |
|
344 | 346 | GraphQLResponse graphQLResponse = new GraphQLResponse(); |
345 | 347 | graphQLResponse.setStatus(STATUS_OK); |
346 | 348 | graphQLResponse.setResponse(response); |
347 | 349 | responseHandler.handle(graphQLResponse); |
348 | 350 |
|
349 | 351 | if(getGraphQLErrorHandler().errorsPresent(errors)) { |
350 | | - runCallbacks(operationCallbacks, c -> c.onError(context, operationName, query, variables, data, errors)); |
| 352 | + runCallbacks(operationCallbacks, c -> c.onError(context, operationName, query, variables, data, errors, extensions)); |
351 | 353 | } else { |
352 | | - runCallbacks(operationCallbacks, c -> c.onSuccess(context, operationName, query, variables, data)); |
| 354 | + runCallbacks(operationCallbacks, c -> c.onSuccess(context, operationName, query, variables, data, extensions)); |
353 | 355 | } |
354 | 356 |
|
355 | | - runCallbacks(operationCallbacks, c -> c.onFinally(context, operationName, query, variables, data)); |
| 357 | + runCallbacks(operationCallbacks, c -> c.onFinally(context, operationName, query, variables, data, extensions)); |
356 | 358 | } |
357 | 359 | } |
358 | 360 |
|
359 | | - private Map<String, Object> createResultFromDataAndErrors(Object data, List<GraphQLError> errors) { |
| 361 | + private Map<String, Object> createResultFromDataErrorsAndExtensions(Object data, List<GraphQLError> errors, Object extensions) { |
360 | 362 |
|
361 | | - final Map<String, Object> result = new HashMap<>(); |
| 363 | + final Map<String, Object> result = new LinkedHashMap<>(); |
362 | 364 | result.put("data", data); |
363 | 365 |
|
364 | 366 | if (getGraphQLErrorHandler().errorsPresent(errors)) { |
365 | 367 | result.put("errors", getGraphQLErrorHandler().processErrors(errors)); |
366 | 368 | } |
367 | 369 |
|
| 370 | + if(extensions != null){ |
| 371 | + result.put("extensions", extensions); |
| 372 | + } |
| 373 | + |
368 | 374 | return result; |
369 | 375 | } |
370 | 376 |
|
|
0 commit comments