in src/main/java/org/apache/sling/graphql/core/servlet/GraphQLServlet.java [155:209]
private void activate(Config config, ComponentContext componentContext) {
String servicePid = PropertiesUtil.toString(componentContext.getProperties().get(Constants.SERVICE_PID),
GraphQLServlet.class.getName());
String[] extensions = config.sling_servlet_extensions();
StringBuilder extensionsPattern = new StringBuilder();
for (String extension : extensions) {
if (extensionsPattern.length() > 0) {
extensionsPattern.append("|");
}
extensionsPattern.append(extension);
}
if (extensionsPattern.length() > 0) {
extensionsPattern.insert(0, "(");
extensionsPattern.append(")");
}
cacheControlMaxAge = config.cache$_$control_max$_$age() >= 0 ? config.cache$_$control_max$_$age() : 0;
String suffix = config.persistedQueries_suffix();
if (StringUtils.isNotEmpty(suffix) && suffix.startsWith("/")) {
suffixPersisted = suffix;
patternGetPersistedQuery = Pattern.compile("^" + suffixPersisted + "/([a-f0-9]{64})" + (extensionsPattern.length() > 0 ?
"\\." + extensionsPattern.toString() + "$" : "$"));
} else {
suffixPersisted = null;
patternGetPersistedQuery = null;
}
StringBuilder sb = new StringBuilder();
String[] resourceTypes = config.sling_servlet_resourceTypes();
Arrays.sort(resourceTypes);
sb.append("rt:").append(String.join("_", resourceTypes));
if (config.sling_servlet_methods().length > 0) {
String[] methods = config.sling_servlet_methods();
Arrays.sort(methods);
sb.append(".m:").append(String.join("_", methods));
}
if (config.sling_servlet_selectors().length > 0) {
String[] selectors = config.sling_servlet_selectors();
Arrays.sort(selectors);
sb.append(".s:").append(String.join("_", selectors));
}
if (extensions.length > 0) {
Arrays.sort(extensions);
sb.append(".e:").append(String.join("_", extensions));
}
String servletRegistrationProperties = sb.toString();
cacheHits = metricsService.counter(servicePid + "." + servletRegistrationProperties + ".cache_hits");
cacheMisses = metricsService.counter(servicePid + "." + servletRegistrationProperties + ".cache_misses");
requestsServed = metricsService.counter(servicePid + "." + servletRegistrationProperties + ".requests_total");
gaugeCacheHitRate = servicePid + "." + servletRegistrationProperties + ".cache_hit_rate";
metricRegistry.register(gaugeCacheHitRate, (Gauge<Float>) () -> {
float hitCount = cacheHits.getCount();
float missCount = cacheMisses.getCount();
return hitCount > 0 || missCount > 0 ? hitCount / (hitCount + missCount) : 0.0f;
});
requestTimer = metricsService.timer(servicePid + "." + servletRegistrationProperties + ".requests_timer");
}