Message5411
While processing scripts, Jython does not take into account the bindings it gets through PyScriptEngine.eval() method:
import org.junit.Test;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.SimpleBindings;
public class TestJSR223BindingsWithJython {
@Test public void should_set_bindings_to_engine_scope() throws Exception {
final ScriptEngineManager manager = new ScriptEngineManager();
final ScriptEngine engine = manager.getEngineByName("jython");
final Bindings bindings = new SimpleBindings();
bindings.put("name", "Tiago");
engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
engine.eval("print \"Hello, \" + name + \"!\"");
}
@Test public void should_override_engine_scopes_bindings() throws Exception {
final ScriptEngineManager manager = new ScriptEngineManager();
final ScriptEngine engine = manager.getEngineByName("jython");
final Bindings bindings = new SimpleBindings();
bindings.put("name", "Tiago");
engine.eval("print \"Hello, \" + name + \"!\"", bindings);
/*
javax.script.ScriptException: NameError: name 'name' is not defined in <script> at line number 1
at org.python.jsr223.PyScriptEngine.scriptException(PyScriptEngine.java:182)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:43)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:33)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:216)
at TestJSR223BindingsWithJython.should_override_engine_scopes_bindings(TestJSR223BindingsWithJython.java:29)
...
*/
}
}
Maybe it's related to #1426. |
|
Date |
User |
Action |
Args |
2010-01-06 13:39:22 | tiago182 | set | recipients:
+ tiago182 |
2010-01-06 13:39:22 | tiago182 | set | messageid: <1262785162.65.0.351732176278.issue1535@psf.upfronthosting.co.za> |
2010-01-06 13:39:22 | tiago182 | link | issue1535 messages |
2010-01-06 13:39:22 | tiago182 | create | |
|