private void doPostPersistedQuery()

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.");
        }
    }