in src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java [287:306]
private void doPostPersistedQuery(@NotNull SlingHttpServletRequest request, @NotNull SlingHttpServletResponse response)
throws IOException {
String rawQuery = IOUtils.toString(request.getReader());
QueryParser.Result query = QueryParser.fromJSON(rawQuery);
ValidationResult validationResult = queryExecutor
.validate(query.getQuery(), query.getVariables(), request.getResource(), request.getRequestPathInfo().getSelectors());
if (validationResult.isValid()) {
String hash = cacheProvider.cacheQuery(rawQuery, request.getResource().getResourceType(),
request.getRequestPathInfo().getSelectorString());
if (hash != null) {
response.addHeader("Location", getLocationHeaderValue(request, hash));
response.setStatus(HttpServletResponse.SC_CREATED);
} else {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Cannot store persisted query.");
}
} else {
LOGGER.error("Invalid GraphQL query: " + String.join(System.lineSeparator(), validationResult.getErrors()));
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid GraphQL query.");
}
}