From: <nr...@us...> - 2009-07-26 07:45:54
|
Revision: 6586 http://jython.svn.sourceforge.net/jython/?rev=6586&view=rev Author: nriley Date: 2009-07-26 07:45:38 +0000 (Sun, 26 Jul 2009) Log Message: ----------- JSR 223: use Writer and ErrorWriter from ScriptContext; remove unnecessary PySystemState setting. Modified Paths: -------------- trunk/jython/src/org/python/jsr223/PyScriptEngine.java Modified: trunk/jython/src/org/python/jsr223/PyScriptEngine.java =================================================================== --- trunk/jython/src/org/python/jsr223/PyScriptEngine.java 2009-07-25 22:34:45 UTC (rev 6585) +++ trunk/jython/src/org/python/jsr223/PyScriptEngine.java 2009-07-26 07:45:38 UTC (rev 6586) @@ -30,11 +30,13 @@ } public Object eval(String script, ScriptContext context) throws ScriptException { - return eval(compileScript(script, context)); + return eval(compileScript(script, context), context); } - private Object eval(PyCode code) throws ScriptException { + private Object eval(PyCode code, ScriptContext context) throws ScriptException { try { + interp.setOut(context.getWriter()); + interp.setErr(context.getErrorWriter()); return interp.eval(code).__tojava__(Object.class); } catch (PyException pye) { throw scriptException(pye); @@ -42,7 +44,7 @@ } public Object eval(Reader reader, ScriptContext context) throws ScriptException { - return eval(compileScript(reader, context)); + return eval(compileScript(reader, context), context); } public Bindings createBindings() { @@ -190,11 +192,9 @@ private class PyCompiledScript extends CompiledScript { private PyCode code; - private PySystemState systemState; PyCompiledScript(PyCode code) { this.code = code; - this.systemState = Py.getSystemState(); } public ScriptEngine getEngine() { @@ -202,9 +202,7 @@ } public Object eval(ScriptContext ctx) throws ScriptException { - // can't read filename from context at this point - Py.setSystemState(systemState); - return PyScriptEngine.this.eval(code); + return PyScriptEngine.this.eval(code, ctx); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2009-08-01 21:19:46
|
Revision: 6621 http://jython.svn.sourceforge.net/jython/?rev=6621&view=rev Author: pjenvey Date: 2009-08-01 21:19:21 +0000 (Sat, 01 Aug 2009) Log Message: ----------- no longer needed Modified Paths: -------------- trunk/jython/src/org/python/jsr223/PyScriptEngine.java Modified: trunk/jython/src/org/python/jsr223/PyScriptEngine.java =================================================================== --- trunk/jython/src/org/python/jsr223/PyScriptEngine.java 2009-08-01 21:15:59 UTC (rev 6620) +++ trunk/jython/src/org/python/jsr223/PyScriptEngine.java 2009-08-01 21:19:21 UTC (rev 6621) @@ -33,7 +33,6 @@ return eval(compileScript(script, context), context); } - @SuppressWarnings("deprecation") private Object eval(PyCode code, ScriptContext context) throws ScriptException { try { interp.setIn(context.getReader()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nr...@us...> - 2009-12-09 07:49:02
|
Revision: 6956 http://jython.svn.sourceforge.net/jython/?rev=6956&view=rev Author: nriley Date: 2009-12-09 07:48:45 +0000 (Wed, 09 Dec 2009) Log Message: ----------- Fix incorrect conversion of AttributeError to NoSuchMethodException (#1490) in JSR 223 interface. Thanks to Robert Macaulay. Modified Paths: -------------- trunk/jython/src/org/python/jsr223/PyScriptEngine.java Modified: trunk/jython/src/org/python/jsr223/PyScriptEngine.java =================================================================== --- trunk/jython/src/org/python/jsr223/PyScriptEngine.java 2009-12-08 03:07:15 UTC (rev 6955) +++ trunk/jython/src/org/python/jsr223/PyScriptEngine.java 2009-12-09 07:48:45 UTC (rev 6956) @@ -96,9 +96,13 @@ if (!(thiz instanceof PyObject)) { thiz = Py.java2py(thiz); } - return ((PyObject) thiz).invoke(name, Py.javas2pys(args)).__tojava__(Object.class); + PyObject method = ((PyObject) thiz).__findattr__(name); + if (method == null) { + throw new NoSuchMethodException(name); + } + return method.__call__(Py.javas2pys(args)).__tojava__(Object.class); } catch (PyException pye) { - return throwInvokeException(pye, name); + throw scriptException(pye); } } @@ -111,7 +115,7 @@ } return function.__call__(Py.javas2pys(args)).__tojava__(Object.class); } catch (PyException pye) { - return throwInvokeException(pye, name); + throw scriptException(pye); } } @@ -134,24 +138,19 @@ new InvocationHandler() { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { try { - PyObject result = thiz.invoke(method.getName(), Py.javas2pys(args)); + PyObject pyMethod = thiz.__findattr__(method.getName()); + if (pyMethod == null) + throw new NoSuchMethodException(method.getName()); + PyObject result = pyMethod.__call__(Py.javas2pys(args)); return result.__tojava__(Object.class); } catch (PyException pye) { - return throwInvokeException(pye, method.getName()); + throw scriptException(pye); } } }); return proxy; } - private static Object throwInvokeException(PyException pye, String methodName) - throws ScriptException, NoSuchMethodException { - if (pye.match(Py.AttributeError)) { - throw new NoSuchMethodException(methodName); - } - throw scriptException(pye); - } - private static ScriptException scriptException(PyException pye) { ScriptException se = null; try { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |