ScriptEngine pickScriptEngine()

in src/main/java/org/apache/sling/scripting/core/impl/SlingScriptEnginePicker.java [57:76]


    ScriptEngine pickScriptEngine(
            @NotNull final List<ScriptEngine> scriptEngines, @NotNull Resource resource, @NotNull String extension) {
        final String scriptingMapping = findScriptingMapping(resource, extension);
        logger.debug("scripting mapping: {}", scriptingMapping);
        if (scriptingMapping == null || scriptingMapping.isEmpty()) {
            return !scriptEngines.isEmpty() ? scriptEngines.get(0) : null;
        }

        final Conditions conditions = parseScriptingMapping(scriptingMapping);
        logger.debug("scripting conditions: {}", conditions);
        for (final ScriptEngine scriptEngine : scriptEngines) {
            final ScriptEngineFactory scriptEngineFactory = scriptEngine.getFactory();
            if (conditions.matches(scriptEngineFactory.getLanguageName())) {
                logger.debug(
                        "script engine {} found for conditions {}", scriptEngineFactory.getEngineName(), conditions);
                return scriptEngine;
            }
        }
        return null;
    }