private static Map<String, Object> introspect(GraphQLSchema schema) { GraphQL gql = GraphQL.newGraphQL(schema).build(); ExecutionResult result = gql.execute(IntrospectionQuery.INTROSPECTION_QUERY); Assert.assertTrue(result.getErrors().size() == 0, "The schema has errors during Introspection"); return result.getData(); } }
private void equivalentSerialAndAsyncQueryExecution() throws Exception { //::FigureC ExecutionResult executionResult = graphQL.execute(executionInput); // the above is equivalent to the following code (in long hand) CompletableFuture<ExecutionResult> promise = graphQL.executeAsync(executionInput); ExecutionResult executionResult2 = promise.join(); //::/FigureC }
public GraphQL build() { assertNotNull(graphQLSchema, "graphQLSchema must be non null"); assertNotNull(queryExecutionStrategy, "queryStrategy must be non null"); assertNotNull(idProvider, "idProvider must be non null"); return new GraphQL(graphQLSchema, queryExecutionStrategy, mutationExecutionStrategy, subscriptionExecutionStrategy, idProvider, instrumentation, preparsedDocumentProvider); } }
private CompletableFuture<ExecutionResult> parseValidateAndExecute(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { AtomicReference<ExecutionInput> executionInputRef = new AtomicReference<>(executionInput); PreparsedDocumentEntry preparsedDoc = preparsedDocumentProvider.get(executionInput.getQuery(), transformedQuery -> { // if they change the original query in the pre-parser, then we want to see it downstream from then on executionInputRef.set(executionInput.transform(bldr -> bldr.query(transformedQuery))); return parseAndValidate(executionInputRef, graphQLSchema, instrumentationState); }); if (preparsedDoc.hasErrors()) { return CompletableFuture.completedFuture(new ExecutionResultImpl(preparsedDoc.getErrors())); } return execute(executionInputRef.get(), preparsedDoc.getDocument(), graphQLSchema, instrumentationState); }
@SuppressWarnings("rawtypes") private UserDTO getUserNode(String id) throws IOException { ExecutionResult result = new GraphQL(schema).execute(String.format("{ node(id:\"%s\") {...on User {id, name, email} } }", id)); assertEquals(0, result.getErrors().size()); return objectMapper.readValue(objectMapper.writeValueAsString(((Map) result.getData()).get("node")), UserDTO.class); }
/** * Executes the graphql query using the provided input object builder * * @param executionInputBuilder {@link ExecutionInput.Builder} * * @return an {@link ExecutionResult} which can include errors */ public ExecutionResult execute(ExecutionInput.Builder executionInputBuilder) { return execute(executionInputBuilder.build()); }
private GraphQL buildSchema() { return GraphQL.newGraphQL(schema) .build(); }
/** * Executes the graphql query using the provided input object builder * <p> * This will return a promise (aka {@link CompletableFuture}) to provide a {@link ExecutionResult} * which is the result of executing the provided query. * * @param executionInputBuilder {@link ExecutionInput.Builder} * * @return a promise to an {@link ExecutionResult} which can include errors */ public CompletableFuture<ExecutionResult> executeAsync(ExecutionInput.Builder executionInputBuilder) { return executeAsync(executionInputBuilder.build()); }
@SuppressWarnings("rawtypes") private GameDTO getGameNode(String id) throws IOException { ExecutionResult result = new GraphQL(schema).execute(String.format("{ node(id:\"%s\") {...on Game {id, name} } }", id)); assertEquals(0, result.getErrors().size()); return objectMapper.readValue(objectMapper.writeValueAsString(((Map) result.getData()).get("node")), GameDTO.class); }
public Response getGraphQLResponse(String query, Map<String, Object> variables, String operationName) { ExecutionResult executionResult = graphQL.execute(query, operationName, null, variables); Response.ResponseBuilder res = Response.status(Response.Status.OK); HashMap<String, Object> content = new HashMap<>(); if (!executionResult.getErrors().isEmpty()) { res = Response.status(Response.Status.INTERNAL_SERVER_ERROR); content.put("errors", executionResult.getErrors()); } if (executionResult.getData() != null) { content.put("data", executionResult.getData()); } return res.entity(content).build(); }
private GraphQL buildSchema() { return GraphQL.newGraphQL(schema) .build(); }
/** * Executes the graphql query using the provided input object * * @param executionInput {@link ExecutionInput} * * @return an {@link ExecutionResult} which can include errors */ public ExecutionResult execute(ExecutionInput executionInput) { try { return executeAsync(executionInput).join(); } catch (CompletionException e) { if (e.getCause() instanceof RuntimeException) { throw (RuntimeException) e.getCause(); } else { throw e; } } }
new DataLoaderDispatcherInstrumentation(dataLoaderRegistry), new TracingInstrumentation())); GraphQL graphql = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build(); .context(dataLoaderRegistry) .build(); ExecutionResult executionResult = graphql.execute(executionInput); resp.setContentType("application/json"); resp.setStatus(HttpServletResponse.SC_OK);
private DeleteUserPayload deleteUser(String id, String clientMutationId) throws IOException { ExecutionResult result = new GraphQL(schema).execute(String .format("mutation M { Mutations { deleteUser(input: { id:\"%s\", clientMutationId:\"%s\"}) {clientMutationId} } }", id, clientMutationId)); assertEquals(0, result.getErrors().size()); DeleteUserPayload payload = objectMapper.readValue(objectMapper.writeValueAsString(getMutationResults(result, "deleteUser")), DeleteUserPayload.class); assertEquals(clientMutationId, payload.getClientMutationId()); return payload; }
/** * Executes the graphql query using calling the builder function and giving it a new builder. * <p> * This allows a lambda style like : * <pre> * {@code * ExecutionResult result = graphql.execute(input -> input.query("{hello}").root(startingObj).context(contextObj)); * } * </pre> * * @param builderFunction a function that is given a {@link ExecutionInput.Builder} * * @return an {@link ExecutionResult} which can include errors */ public ExecutionResult execute(UnaryOperator<ExecutionInput.Builder> builderFunction) { return execute(builderFunction.apply(ExecutionInput.newExecutionInput()).build()); }
private GraphQL buildSchema() { return GraphQL.newGraphQL(schema) .build(); }
/** * Executes the graphql query using the provided input object builder * <p> * This will return a promise (aka {@link CompletableFuture}) to provide a {@link ExecutionResult} * which is the result of executing the provided query. * <p> * This allows a lambda style like : * <pre> * {@code * ExecutionResult result = graphql.execute(input -> input.query("{hello}").root(startingObj).context(contextObj)); * } * </pre> * * @param builderFunction a function that is given a {@link ExecutionInput.Builder} * * @return a promise to an {@link ExecutionResult} which can include errors */ public CompletableFuture<ExecutionResult> executeAsync(UnaryOperator<ExecutionInput.Builder> builderFunction) { return executeAsync(builderFunction.apply(ExecutionInput.newExecutionInput()).build()); }
serviceCodes = graph.serviceCodes; this.graph = graph; graphQL = new GraphQL( new IndexGraphQLSchema(this).indexSchema, new ExecutorServiceExecutionStrategy(Executors.newCachedThreadPool(
new DataLoaderDispatcherInstrumentation(dataLoaderRegistry), new TracingInstrumentation())); GraphQL graphql = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build(); .context(dataLoaderRegistry) .build(); ExecutionResult executionResult = graphql.execute(executionInput); resp.setContentType("application/json"); resp.setStatus(HttpServletResponse.SC_OK);
private DeleteGamePayload deleteGame(String id, String clientMutationId) throws IOException { ExecutionResult result = new GraphQL(schema).execute( String.format("mutation M { Mutations {deleteGame(input:{ id:\"%s\", clientMutationId:\"%s\"}) {clientMutationId} } }", id, clientMutationId)); assertEquals(0, result.getErrors().size()); DeleteGamePayload payload = objectMapper.readValue(objectMapper.writeValueAsString(getMutationResults(result, "deleteGame")), DeleteGamePayload.class); assertEquals(clientMutationId, payload.getClientMutationId()); return payload; }