public Result execute()

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();
            }
        }
    }