public Object eval()

in src/main/java/org/apache/sling/scripting/freemarker/internal/FreemarkerScriptEngine.java [44:67]


    public Object eval(final Reader reader, final ScriptContext scriptContext) throws ScriptException {
        final Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
        final SlingScriptHelper helper = (SlingScriptHelper) bindings.get(SlingBindings.SLING);
        if (helper == null) {
            throw new ScriptException("SlingScriptHelper missing from bindings");
        }

        bindings.putAll(freemarkerScriptEngineFactory.getTemplateModels());

        final String scriptName = helper.getScript().getScriptResource().getPath();
        final Configuration configuration = freemarkerScriptEngineFactory.getConfiguration();

        try {
            final Template template = new Template(scriptName, reader, configuration);
            template.process(bindings, scriptContext.getWriter());
        } catch (Exception e) {
            final String message = String.format("Failure processing FreeMarker template %s.", scriptName);
            final ScriptException scriptException = new ScriptException(message);
            scriptException.initCause(e);
            throw scriptException;
        }

        return null;
    }