public InstrumentationExecutionParameters(ExecutionInput executionInput, GraphQLSchema schema, InstrumentationState instrumentationState) { this.executionInput = executionInput; this.query = executionInput.getQuery(); this.operation = executionInput.getOperationName(); this.context = executionInput.getContext(); this.variables = executionInput.getVariables() != null ? executionInput.getVariables() : Collections.emptyMap(); this.instrumentationState = instrumentationState; this.schema = schema; }
public InstrumentationExecutionParameters(ExecutionInput executionInput, GraphQLSchema schema, InstrumentationState instrumentationState) { this.executionInput = executionInput; this.query = executionInput.getQuery(); this.operation = executionInput.getOperationName(); this.context = executionInput.getContext(); this.variables = executionInput.getVariables() != null ? executionInput.getVariables() : Collections.emptyMap(); this.instrumentationState = instrumentationState; this.schema = schema; }
private CompletableFuture<ExecutionResult> execute(ExecutionInput executionInput, Document document, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { String query = executionInput.getQuery(); String operationName = executionInput.getOperationName(); Object context = executionInput.getContext(); Execution execution = new Execution(); ExecutionId executionId = idProvider.provide(query, operationName, context); log.debug("Executing '{}'. operation name: '{}'. query: '{}'. variables '{}'", executionId, executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables()); CompletableFuture<ExecutionResult> future = execution.execute(executionStrategy, document, graphQLSchema, executionId, executionInput, instrumentationState); future = future.whenComplete((result, throwable) -> { if (throwable != null) { log.error(String.format("Execution '%s' threw exception when executing : query : '%s'. variables '%s'", executionId, executionInput.getQuery(), executionInput.getVariables()), throwable); } else { int errorCount = result.getErrors().size(); if (errorCount > 0) { log.debug("Execution '{}' completed with '{}' errors", executionId, errorCount); } else { log.debug("Execution '{}' completed with zero errors", executionId); } } }); return future; }
private CompletableFuture<ExecutionResult> execute(ExecutionInput executionInput, Document document, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { String query = executionInput.getQuery(); String operationName = executionInput.getOperationName(); Object context = executionInput.getContext(); Execution execution = new Execution(queryStrategy, mutationStrategy, subscriptionStrategy, instrumentation); ExecutionId executionId = idProvider.provide(query, operationName, context); log.debug("Executing '{}'. operation name: '{}'. query: '{}'. variables '{}'", executionId, executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables()); CompletableFuture<ExecutionResult> future = execution.execute(document, graphQLSchema, executionId, executionInput, instrumentationState); future = future.whenComplete((result, throwable) -> { if (throwable != null) { log.error(String.format("Execution '%s' threw exception when executing : query : '%s'. variables '%s'", executionId, executionInput.getQuery(), executionInput.getVariables()), throwable); } else { int errorCount = result.getErrors().size(); if (errorCount > 0) { log.debug("Execution '{}' completed with '{}' errors", executionId, errorCount); } else { log.debug("Execution '{}' completed with zero errors", executionId); } } }); return future; }
log.debug("Executing request. operation name: '{}'. query: '{}'. variables '{}'", executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables());
log.debug("Executing request. operation name: '{}'. query: '{}'. variables '{}'", executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables());
private ParseResult parse(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { InstrumentationExecutionParameters parameters = new InstrumentationExecutionParameters(executionInput, graphQLSchema, instrumentationState); InstrumentationContext<Document> parseInstrumentation = instrumentation.beginParse(parameters); Parser parser = new Parser(); Document document; DocumentAndVariables documentAndVariables; try { document = parser.parseDocument(executionInput.getQuery()); documentAndVariables = newDocumentAndVariables() .document(document).variables(executionInput.getVariables()).build(); documentAndVariables = instrumentation.instrumentDocumentAndVariables(documentAndVariables, parameters); } catch (InvalidSyntaxException e) { parseInstrumentation.onCompleted(null, e); return ParseResult.ofError(e); } parseInstrumentation.onCompleted(documentAndVariables.getDocument(), null); return ParseResult.of(documentAndVariables); }
private ParseResult parse(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { InstrumentationExecutionParameters parameters = new InstrumentationExecutionParameters(executionInput, graphQLSchema, instrumentationState); InstrumentationContext<Document> parseInstrumentation = instrumentation.beginParse(parameters); Parser parser = new Parser(); Document document; DocumentAndVariables documentAndVariables; try { document = parser.parseDocument(executionInput.getQuery()); documentAndVariables = newDocumentAndVariables() .document(document).variables(executionInput.getVariables()).build(); documentAndVariables = instrumentation.instrumentDocumentAndVariables(documentAndVariables, parameters); } catch (InvalidSyntaxException e) { parseInstrumentation.onCompleted(null, e); return ParseResult.ofError(e); } parseInstrumentation.onCompleted(documentAndVariables.getDocument(), null); return ParseResult.of(documentAndVariables); }
OperationDefinition operationDefinition = getOperationResult.operationDefinition; Map<String, Object> inputVariables = executionInput.getVariables(); List<VariableDefinition> variableDefinitions = operationDefinition.getVariableDefinitions();
Map<String, Object> inputVariables = executionInput.getVariables(); List<VariableDefinition> variableDefinitions = operationDefinition.getVariableDefinitions();
public InstrumentationExecutionParameters(ExecutionInput executionInput, GraphQLSchema schema, InstrumentationState instrumentationState) { this.executionInput = executionInput; this.query = executionInput.getQuery(); this.operation = executionInput.getOperationName(); this.context = executionInput.getContext(); this.variables = executionInput.getVariables() != null ? executionInput.getVariables() : Collections.emptyMap(); this.instrumentationState = instrumentationState; this.schema = schema; }
public InstrumentationExecutionParameters(ExecutionInput executionInput, GraphQLSchema schema, InstrumentationState instrumentationState) { this.executionInput = executionInput; this.query = executionInput.getQuery(); this.operation = executionInput.getOperationName(); this.context = executionInput.getContext(); this.variables = executionInput.getVariables() != null ? executionInput.getVariables() : Collections.emptyMap(); this.instrumentationState = instrumentationState; this.schema = schema; }
private CompletableFuture<ExecutionResult> execute(ExecutionInput executionInput, Document document, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { String query = executionInput.getQuery(); String operationName = executionInput.getOperationName(); Object context = executionInput.getContext(); Execution execution = new Execution(); ExecutionId executionId = idProvider.provide(query, operationName, context); log.debug("Executing '{}'. operation name: '{}'. query: '{}'. variables '{}'", executionId, executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables()); CompletableFuture<ExecutionResult> future = execution.execute(executionStrategy, document, graphQLSchema, executionId, executionInput, instrumentationState); future = future.whenComplete((result, throwable) -> { if (throwable != null) { log.error(String.format("Execution '%s' threw exception when executing : query : '%s'. variables '%s'", executionId, executionInput.getQuery(), executionInput.getVariables()), throwable); } else { int errorCount = result.getErrors().size(); if (errorCount > 0) { log.debug("Execution '{}' completed with '{}' errors", executionId, errorCount); } else { log.debug("Execution '{}' completed with zero errors", executionId); } } }); return future; }
private CompletableFuture<ExecutionResult> execute(ExecutionInput executionInput, Document document, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { String query = executionInput.getQuery(); String operationName = executionInput.getOperationName(); Object context = executionInput.getContext(); Execution execution = new Execution(queryStrategy, mutationStrategy, subscriptionStrategy, instrumentation); ExecutionId executionId = idProvider.provide(query, operationName, context); log.debug("Executing '{}'. operation name: '{}'. query: '{}'. variables '{}'", executionId, executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables()); CompletableFuture<ExecutionResult> future = execution.execute(document, graphQLSchema, executionId, executionInput, instrumentationState); future = future.whenComplete((result, throwable) -> { if (throwable != null) { log.error(String.format("Execution '%s' threw exception when executing : query : '%s'. variables '%s'", executionId, executionInput.getQuery(), executionInput.getVariables()), throwable); } else { int errorCount = result.getErrors().size(); if (errorCount > 0) { log.debug("Execution '{}' completed with '{}' errors", executionId, errorCount); } else { log.debug("Execution '{}' completed with zero errors", executionId); } } }); return future; }
log.debug("Executing request. operation name: '{}'. query: '{}'. variables '{}'", executionInput.getOperationName(), executionInput.getQuery(), executionInput.getVariables());
@Test public void testGetRequest() throws Exception { String variablesJson = "{\"variable\":\"variableValue\"}"; String variablesValue = URLEncoder.encode(variablesJson, "UTF-8"); String query = "query myQuery {foo}"; String queryString = URLEncoder.encode(query, "UTF-8"); String operationName = "myQuery"; ExecutionResultImpl executionResult = ExecutionResultImpl.newExecutionResult() .data("bar") .build(); CompletableFuture cf = CompletableFuture.completedFuture(executionResult); ArgumentCaptor<ExecutionInput> captor = ArgumentCaptor.forClass(ExecutionInput.class); Mockito.when(graphql.executeAsync(captor.capture())).thenReturn(cf); client.get().uri(uriBuilder -> uriBuilder.path("/graphql") .queryParam("variables", variablesValue) .queryParam("query", queryString) .queryParam("operationName", operationName) .build(variablesJson, queryString)) .accept(MediaType.APPLICATION_JSON_UTF8) .exchange() .expectStatus().isOk() .expectBody() .jsonPath("data").isEqualTo("bar"); assertThat(captor.getAllValues().size(), is(1)); Map<String, Object> variables = new LinkedHashMap<>(); variables.put("variable", "variableValue"); assertThat(captor.getValue().getQuery(), is(query)); assertThat(captor.getValue().getVariables(), is(variables)); assertThat(captor.getValue().getOperationName(), is(operationName)); }
@Test public void testGetRequest() throws Exception { String variablesJson = "{\"variable\":\"variableValue\"}"; String query = "query myQuery {foo}"; String operationName = "myQuery"; ExecutionResultImpl executionResult = ExecutionResultImpl.newExecutionResult() .data("bar") .build(); CompletableFuture cf = CompletableFuture.completedFuture(executionResult); ArgumentCaptor<ExecutionInput> captor = ArgumentCaptor.forClass(ExecutionInput.class); Mockito.when(graphql.executeAsync(captor.capture())).thenReturn(cf); MvcResult mvcResult = this.mockMvc.perform(get("/graphql") .param("query", query) .param("variables", variablesJson) .param("operationName", operationName)) .andExpect(status().isOk()) .andExpect(request().asyncStarted()) .andReturn(); this.mockMvc.perform(asyncDispatch(mvcResult)) .andDo(print()).andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) .andExpect(jsonPath("data", is("bar"))) .andReturn(); assertThat(captor.getAllValues().size(), is(1)); Map<String, Object> variables = new LinkedHashMap<>(); variables.put("variable", "variableValue"); assertThat(captor.getValue().getQuery(), is(query)); assertThat(captor.getValue().getVariables(), is(variables)); assertThat(captor.getValue().getOperationName(), is(operationName)); }
private ParseResult parse(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { InstrumentationExecutionParameters parameters = new InstrumentationExecutionParameters(executionInput, graphQLSchema, instrumentationState); InstrumentationContext<Document> parseInstrumentation = instrumentation.beginParse(parameters); Parser parser = new Parser(); Document document; DocumentAndVariables documentAndVariables; try { document = parser.parseDocument(executionInput.getQuery()); documentAndVariables = newDocumentAndVariables() .document(document).variables(executionInput.getVariables()).build(); documentAndVariables = instrumentation.instrumentDocumentAndVariables(documentAndVariables, parameters); } catch (InvalidSyntaxException e) { parseInstrumentation.onCompleted(null, e); return ParseResult.ofError(e); } parseInstrumentation.onCompleted(documentAndVariables.getDocument(), null); return ParseResult.of(documentAndVariables); }
private ParseResult parse(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { InstrumentationExecutionParameters parameters = new InstrumentationExecutionParameters(executionInput, graphQLSchema, instrumentationState); InstrumentationContext<Document> parseInstrumentation = instrumentation.beginParse(parameters); Parser parser = new Parser(); Document document; DocumentAndVariables documentAndVariables; try { document = parser.parseDocument(executionInput.getQuery()); documentAndVariables = newDocumentAndVariables() .document(document).variables(executionInput.getVariables()).build(); documentAndVariables = instrumentation.instrumentDocumentAndVariables(documentAndVariables, parameters); } catch (InvalidSyntaxException e) { parseInstrumentation.onCompleted(null, e); return ParseResult.ofError(e); } parseInstrumentation.onCompleted(documentAndVariables.getDocument(), null); return ParseResult.of(documentAndVariables); }
OperationDefinition operationDefinition = getOperationResult.operationDefinition; Map<String, Object> inputVariables = executionInput.getVariables(); List<VariableDefinition> variableDefinitions = operationDefinition.getVariableDefinitions();