/**
         * 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);
        }
示例#2
0
        /**
         * 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();
                }
            }
        }