in src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java [219:265]
public void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {
requestsServed.increment();
Timer.Context requestTimerContext = requestTimer.time();
try {
String suffix = request.getRequestPathInfo().getSuffix();
if (suffix != null) {
if (StringUtils.isNotEmpty(suffixPersisted) && suffix.startsWith(suffixPersisted)) {
Matcher matcher = patternGetPersistedQuery.matcher(suffix);
if (matcher.matches()) {
String queryHash = matcher.group(1);
String extension = matcher.group(2);
String requestExtension = request.getRequestPathInfo().getExtension();
if (requestExtension != null && requestExtension.equals(extension)) {
if (StringUtils.isNotEmpty(queryHash)) {
String query = cacheProvider.getQuery(queryHash, request.getResource().getResourceType(),
request.getRequestPathInfo().getSelectorString());
if (query != null) {
boolean isAuthenticated = request.getHeaders("Authorization").hasMoreElements();
StringBuilder cacheControlValue = new StringBuilder("max-age=").append(cacheControlMaxAge);
if (isAuthenticated) {
cacheControlValue.append(",private");
}
response.addHeader("Cache-Control", cacheControlValue.toString());
execute(query, request, response);
cacheHits.increment();
} else {
cacheMisses.increment();
response.sendError(HttpServletResponse.SC_NOT_FOUND, "Cannot find persisted query " + queryHash);
}
}
} else {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "The persisted query's extension does not match the " +
"servlet extension.");
}
} else {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Unexpected hash.");
}
} else {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Persisted queries are disabled.");
}
} else {
execute(request.getResource(), request, response);
}
} finally {
requestTimerContext.stop();
}
}