1 29 30 package com.caucho.quercus.script; 31 32 import com.caucho.quercus.env.Env; 33 import com.caucho.quercus.page.InterpretedPage; 34 import com.caucho.quercus.page.QuercusPage; 35 import com.caucho.quercus.program.QuercusProgram; 36 import com.caucho.vfs.*; 37 38 import javax.script.CompiledScript; 39 import javax.script.ScriptContext; 40 import javax.script.ScriptEngine; 41 import javax.script.ScriptException; 42 import java.io.Writer ; 43 44 47 public class QuercusCompiledScript extends CompiledScript { 48 private final QuercusScriptEngine _engine; 49 private final QuercusProgram _program; 50 51 QuercusCompiledScript(QuercusScriptEngine engine, QuercusProgram program) 52 { 53 _engine = engine; 54 _program = program; 55 } 56 57 60 public Object eval(ScriptContext cxt) 61 throws ScriptException 62 { 63 try { 64 Writer writer = cxt.getWriter(); 65 66 WriteStream out; 67 68 if (writer != null) { 69 ReaderWriterStream s = new ReaderWriterStream(null, writer); 70 WriteStream os = new WriteStream(s); 71 72 try { 73 os.setEncoding("utf-8"); 74 } catch (Exception e) { 75 } 76 77 out = os; 78 } 79 else 80 out = new NullWriteStream(); 81 82 QuercusPage page = new InterpretedPage(_program); 83 84 Env env = new Env(_engine.getQuercus(), page, out, null, null); 85 86 env.setScriptContext(cxt); 87 88 Object value = _program.execute(env).toJavaObject(); 89 90 out.flushBuffer(); 91 out.free(); 92 93 return value; 94 98 } catch (RuntimeException e) { 99 throw e; 100 } catch (Exception e) { 101 throw new ScriptException(e); 102 } catch (Throwable e) { 103 throw new RuntimeException (e); 104 } 105 } 106 107 110 public ScriptEngine getEngine() 111 { 112 return _engine; 113 } 114 115 public String toString() 116 { 117 return "QuercusCompiledScript[]"; 118 } 119 } 120 121 | Popular Tags |