in src/main/java/org/apache/sling/hc/support/impl/ScriptedHealthCheck.java [150:191]
public Result execute() {
FormattingResultLog log = new FormattingResultLog();
ResourceResolver resourceResolver = null;
try {
resourceResolver = resourceResolverFactory.getServiceResourceResolver(null);
boolean urlIsUsed = StringUtils.isBlank(script);
String scriptToExecute;
if (urlIsUsed) {
if (scriptUrl.startsWith(JCR_FILE_URL_PREFIX)) {
String jcrPath = StringUtils.substringAfter(scriptUrl, JCR_FILE_URL_PREFIX);
scriptToExecute = getScriptFromRepository(resourceResolver, jcrPath);
} else {
scriptToExecute = scriptHelper.getFileContents(scriptUrl);
}
} else {
scriptToExecute = script;
}
log.info("Executing script {} ({} lines)...", (urlIsUsed ? scriptUrl : " as configured"), scriptToExecute.split("\n").length);
try {
ScriptEngine scriptEngine = getScriptEngine(language);
Map<String, Object> additionalBindings = new HashMap<>();
additionalBindings.put("resourceResolver", resourceResolver);
additionalBindings.put("session", resourceResolver.adaptTo(Session.class));
scriptHelper.evalScript(bundleContext, scriptEngine, scriptToExecute, log, additionalBindings, true);
} catch (Exception e) {
log.healthCheckError("Exception while executing script: " + e, e);
}
return new Result(log);
} catch (LoginException e) {
throw new IllegalStateException("Could not get resource resolver: " + e, e);
} finally {
if (resourceResolver != null) {
resourceResolver.close();
}
}
}