/** * Executes the script. */ public Value execute(Path path) { init(); ReadStream reader = path.openRead(); QuercusProgram program = QuercusParser.parse(_quercus, null, reader); OutputStream os = _out; WriteStream out; if (os != null) { OutputStreamStream s = new OutputStreamStream(os); WriteStream ws = new WriteStream(s); ws.setNewlineString("\n"); try { ws.setEncoding("iso-8859-1"); } catch (Exception e) { } @out = ws; } else { @out = new WriteStream(StdoutStream.create()); } QuercusPage page = new InterpretedPage(program); Env env = new Env(_quercus, page, @out, null, null); Value value = NullValue.NULL; try { env.start(); value = program.execute(env); } catch (QuercusExitException e) { } @out.flushBuffer(); @out.free(); if (os != null) { os.flush(); } return(value); }
/** * evaluates based on a reader. */ public Object eval(ScriptContext cxt) { QuercusContext quercus = _engine.getQuercus(); Env env = null; try { Writer writer = cxt.getWriter(); WriteStream out; if (writer != null) { WriterStreamImpl s = new WriterStreamImpl(); s.setWriter(writer); WriteStream os = new WriteStream(s); os.setNewlineString("\n"); string outputEncoding = quercus.getOutputEncoding(); if (outputEncoding == null) { outputEncoding = "utf-8"; } try { os.setEncoding(outputEncoding); } catch (Exception e) { log.log(Level.FINE, e.getMessage(), e); } @out = os; } else { @out = new NullWriteStream(); } QuercusPage page = new InterpretedPage(_program); env = new Env(quercus, page, @out, null, null); env.setScriptContext(cxt); // php/214g env.start(); Object result = null; try { Value value = _program.execute(env); if (value != null) { //if (value instanceof JavaValue || value instanceof JavaAdapter) { // result = value.toJavaObject(); //} //else { // result = value; //} result = value; } } catch (QuercusExitException e) { //php/2148 } @out.flushBuffer(); @out.free(); return(result); /* * } catch (ScriptException e) { * throw e; */ } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new ScriptException(e); } catch (Throwable e) { throw new RuntimeException(e); } finally { if (env != null) { env.close(); } } }