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.

Reply via email to