private PreparsedDocumentEntry parseAndValidate(AtomicReference<ExecutionInput> executionInputRef, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { ExecutionInput executionInput = executionInputRef.get(); String query = executionInput.getQuery(); log.debug("Parsing query: '{}'...", query); ParseResult parseResult = parse(executionInput, graphQLSchema, instrumentationState); if (parseResult.isFailure()) { log.warn("Query failed to parse : '{}'", executionInput.getQuery()); return new PreparsedDocumentEntry(parseResult.getException().toInvalidSyntaxError()); } else { final Document document = parseResult.getDocument(); // they may have changed the document and the variables via instrumentation so update the reference to it executionInput = executionInput.transform(builder -> builder.variables(parseResult.getVariables())); executionInputRef.set(executionInput); log.debug("Validating query: '{}'", query); final List<ValidationError> errors = validate(executionInput, document, graphQLSchema, instrumentationState); if (!errors.isEmpty()) { log.warn("Query failed to validate : '{}'", query); return new PreparsedDocumentEntry(errors); } return new PreparsedDocumentEntry(document); } }
private PreparsedDocumentEntry parseAndValidate(AtomicReference<ExecutionInput> executionInputRef, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { ExecutionInput executionInput = executionInputRef.get(); String query = executionInput.getQuery(); log.debug("Parsing query: '{}'...", query); ParseResult parseResult = parse(executionInput, graphQLSchema, instrumentationState); if (parseResult.isFailure()) { log.warn("Query failed to parse : '{}'", executionInput.getQuery()); return new PreparsedDocumentEntry(parseResult.getException().toInvalidSyntaxError()); } else { final Document document = parseResult.getDocument(); // they may have changed the document and the variables via instrumentation so update the reference to it executionInput = executionInput.transform(builder -> builder.variables(parseResult.getVariables())); executionInputRef.set(executionInput); log.debug("Validating query: '{}'", query); final List<ValidationError> errors = validate(executionInput, document, graphQLSchema, instrumentationState); if (!errors.isEmpty()) { log.warn("Query failed to validate : '{}'", query); return new PreparsedDocumentEntry(errors); } return new PreparsedDocumentEntry(document); } }