in src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java [75:107]
public ProviderOutcome provide(String identifier, RenderContext renderContext, Bindings arguments) {
Bindings globalBindings = new LazyBindings();
globalBindings.putAll(renderContext.getBindings());
if (!Utils.isJsScript(identifier)) {
return ProviderOutcome.failure();
}
ScriptEngine jsEngine = scriptEngineFactory.getScriptEngine();
if (jsEngine == null) {
return ProviderOutcome.failure(
new SightlyException("Failed to obtain a " + JS_ENGINE_NAME + " JavaScript engine."));
}
JsEnvironment environment = null;
try {
ResourceResolver slingScriptingResolver =
scriptingResourceResolverProvider.getRequestScopedResourceResolver();
DependencyResolver dependencyResolver = new DependencyResolver(slingScriptingResolver);
environment = new JsEnvironment(jsEngine, dependencyResolver);
environment.initialize();
ScriptNameAwareReader reader = dependencyResolver.resolve(globalBindings, identifier);
if (reader != null) {
proxyAsyncScriptableFactory.registerProxies(slingScriptingResolver, environment, globalBindings);
AsyncContainer asyncContainer = environment.runScript(reader, globalBindings, arguments);
return ProviderOutcome.success(jsValueAdapter.adapt(asyncContainer));
}
return ProviderOutcome.failure();
} catch (Exception e) {
return ProviderOutcome.failure(e);
} finally {
if (environment != null) {
environment.cleanup();
}
}
}