private void listen(int portNumber) throws IOException { Socket s; Thread t; PySystemState.initialize(); try { sock = new ServerSocket(portNumber); } catch (IOException e) { System.err.println("Could not listen on port: 4444."); return; } while (true) { s = sock.accept(); synchronized (lock) { if (shutdownRequested) { break; } } t = new JythonServerWorker(s, new JythonServerProtocol(s)); t.start(); } sock.close(); }
@Test public void testCreateInstrumentedProxy() throws Exception { final GrinderProperties properties = new GrinderProperties(); final DCRContext context = DCRContextImplementation.create(null); final List<Instrumenter> instrumenters = new JythonScriptEngineService(properties, context, m_pyScript).createInstrumenters(); assertEquals(1, instrumenters.size()); final Instrumenter instrumenter = instrumenters.get(0); assertEquals("traditional Jython instrumenter", instrumenter.getDescription()); final Object foo = new Object(); PySystemState.initialize(); final PyObject proxy = (PyObject) instrumenter.createInstrumentedProxy(m_test, m_recorder, foo); assertSame(proxy.__getattr__("__target__").__tojava__(Object.class), foo); try { instrumenter.createInstrumentedProxy(m_test, m_recorder, new PyObject()); fail("Expected NotWrappableTypeException"); } catch (NotWrappableTypeException e) { } }
public void cleanup() { systemState.callExitFunc(); try { Py.getSystemState().stdout.invoke("flush"); } catch (PyException pye) { // fall through } try { Py.getSystemState().stderr.invoke("flush"); } catch (PyException pye) { // fall through } }
/** * Shut down the engine. * * <p>We don't use m_interpreter.cleanup(), which delegates to PySystemState.callExitFunc, as * callExitFunc logs problems to stderr. Instead we duplicate the callExitFunc behaviour raise our * own exceptions. * * @throws EngineException If the engine could not be shut down. */ @Override public void shutdown() throws EngineException { final PyObject exitfunc = m_systemState.__findattr__("exitfunc"); if (exitfunc != null) { try { exitfunc.__call__(); } catch (final PyException e) { throw new JythonScriptExecutionException("calling script exit function", e); } } }
{ PySystemState.initialize(); }
/** * Set the Python object to use for the standard output stream * * @param outStream Python file-like object to use as output stream */ public void setOut(PyObject outStream) { systemState.stdout = outStream; }
/** * Initializes the jython runtime. This should only be called once, and should be called before * any other python objects are created (including a PythonInterpreter). * * @param preProperties A set of properties. Typically System.getProperties() is used. * @param postProperties An other set of properties. Values like python.home, python.path and all * other values from the registry files can be added to this property set. PostProperties will * override system properties and registry properties. * @param argv Command line argument. These values will assigned to sys.argv. */ public static void initialize( Properties preProperties, Properties postProperties, String[] argv) { PySystemState.initialize(preProperties, postProperties, argv); }
public void setErr(PyObject outStream) { systemState.stderr = outStream; }
public void cleanup() { systemState.callExitFunc(); }