From: <pj...@us...> - 2010-12-24 01:37:08
|
Revision: 7175 http://jython.svn.sourceforge.net/jython/?rev=7175&view=rev Author: pjenvey Date: 2010-12-24 01:37:01 +0000 (Fri, 24 Dec 2010) Log Message: ----------- special case type objects in the jsr223 Scope assignment as we don't want their proxy objects fixes #1681 Modified Paths: -------------- trunk/jython/NEWS trunk/jython/src/org/python/jsr223/PyScriptEngineScope.java trunk/jython/tests/java/org/python/jsr223/ScriptEngineTest.java Modified: trunk/jython/NEWS =================================================================== --- trunk/jython/NEWS 2010-12-24 00:34:31 UTC (rev 7174) +++ trunk/jython/NEWS 2010-12-24 01:37:01 UTC (rev 7175) @@ -4,6 +4,7 @@ Bugs Fixed - [ 1674 ] PDB crashes under the JSR-223 scripting engine - [ 1680 ] jython -c option is not parsed right + - [ 1681 ] JSR-223, Jython 2.5.2 and implementing Java Interfaces from Python Jython 2.5.2rc2 Bugs Fixed Modified: trunk/jython/src/org/python/jsr223/PyScriptEngineScope.java =================================================================== --- trunk/jython/src/org/python/jsr223/PyScriptEngineScope.java 2010-12-24 00:34:31 UTC (rev 7174) +++ trunk/jython/src/org/python/jsr223/PyScriptEngineScope.java 2010-12-24 01:37:01 UTC (rev 7175) @@ -104,7 +104,9 @@ int scope = context.getAttributesScope(key); if (scope == -1) scope = ScriptContext.ENGINE_SCOPE; - context.setAttribute(key, value.__tojava__(Object.class), scope); + context.setAttribute(key, + value instanceof PyType ? value : value.__tojava__(Object.class), + scope); } @ExposedMethod Modified: trunk/jython/tests/java/org/python/jsr223/ScriptEngineTest.java =================================================================== --- trunk/jython/tests/java/org/python/jsr223/ScriptEngineTest.java 2010-12-24 00:34:31 UTC (rev 7174) +++ trunk/jython/tests/java/org/python/jsr223/ScriptEngineTest.java 2010-12-24 01:37:01 UTC (rev 7175) @@ -249,5 +249,18 @@ pythonEngine.eval("arepr = `var_a`"); assertEquals("4", pythonEngine.get("arepr")); } + + public void testIssue1681() throws ScriptException{ + ScriptEngineManager manager = new ScriptEngineManager(); + ScriptEngine pythonEngine = manager.getEngineByName("python"); + pythonEngine.eval("import PythonCallable\n" + + "class MyPythonCallable(PythonCallable):\n" + + " def getAString(self): return 'a string'\n\n" + + "result = MyPythonCallable().getAString()\n" + + "test = MyPythonCallable()\n" + + "result2 = test.getAString()"); + assertEquals("a string", pythonEngine.get("result")); + assertEquals("a string", pythonEngine.get("result2")); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |