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