RhinoJavaScriptEngine does not preserve scope between eval()s
-------------------------------------------------------------
Key: SLING-1111
URL: https://issues.apache.org/jira/browse/SLING-1111
Project: Sling
Issue Type: Bug
Components: Scripting
Affects Versions: Scripting JavaScript 2.0.4
Reporter: Vidar S. Ramdal
Fix For: Scripting JavaScript 2.0.6
The RhinoJavaScriptEngine does not preserve it scope, so that the scope is
reset between each call to eval().
So that:
RhinoJavaScriptEngineFactory factory = new RhinoJavaScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine();
engine.eval("var f = 1");
engine.eval("f += 1");
... fails with a "ReferenceError: "f" is not defined"
The problem seems to be that "scope" is a local variable in
RhinoJavaScriptEngine.eval(), while it should have been a class field.
I have prepared a patch and a test (coming up), but I'm not familiar with the
script engine code, so the fix might very likely break other stuff.
So please review this.
More background:
http://www.coderanch.com/t/460570/Other-JSE-JEE-APIs/java/javax-script-Save-state-scope
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.