You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2015/03/18 17:41:15 UTC
svn commit: r1667586 -
/sling/trunk/contrib/scripting/sightly/js-use-provider/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java
Author: radu
Date: Wed Mar 18 16:41:15 2015
New Revision: 1667586
URL: http://svn.apache.org/r1667586
Log:
SLING-4515 - Insufficient cleanup of the JavaScript execution engine leads to runtime errors
* made sure to always call JsEnvironment#cleanup before finishing execution for JsUseProvider#provide
Modified:
sling/trunk/contrib/scripting/sightly/js-use-provider/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java
Modified: sling/trunk/contrib/scripting/sightly/js-use-provider/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/js-use-provider/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java?rev=1667586&r1=1667585&r2=1667586&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/sightly/js-use-provider/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java (original)
+++ sling/trunk/contrib/scripting/sightly/js-use-provider/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsUseProvider.java Wed Mar 18 16:41:15 2015
@@ -90,12 +90,19 @@ public class JsUseProvider implements Us
return ProviderOutcome.failure(new SightlyException("No JavaScript engine was defined."));
}
SlingScriptHelper scriptHelper = Utils.getHelper(globalBindings);
- JsEnvironment environment = new JsEnvironment(jsEngine);
- environment.initialize();
- String callerPath = scriptHelper.getScript().getScriptResource().getPath();
- ResourceResolver adminResolver = renderContext.getScriptResourceResolver();
- Resource caller = adminResolver.getResource(callerPath);
- AsyncContainer asyncContainer = environment.run(caller, identifier, globalBindings, arguments);
- return ProviderOutcome.success(jsValueAdapter.adapt(asyncContainer));
+ JsEnvironment environment = null;
+ try {
+ environment = new JsEnvironment(jsEngine);
+ environment.initialize();
+ String callerPath = scriptHelper.getScript().getScriptResource().getPath();
+ ResourceResolver adminResolver = renderContext.getScriptResourceResolver();
+ Resource caller = adminResolver.getResource(callerPath);
+ AsyncContainer asyncContainer = environment.run(caller, identifier, globalBindings, arguments);
+ return ProviderOutcome.success(jsValueAdapter.adapt(asyncContainer));
+ } finally {
+ if (environment != null) {
+ environment.cleanup();
+ }
+ }
}
}