public ProviderOutcome provide()

in src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java [79:109]


    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 = scriptEngineManager.getEngineByName(JS_ENGINE_NAME);
        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();
            }
        }
    }