public void execute(ReadStream stream) { QuercusPage page = parse(stream); WriteStream os = new WriteStream(StdoutStream.create()); os.setNewlineString("\n"); os.setEncoding("iso-8859-1"); Env env = createEnv(page, os, null, null); env.start(); try { env.execute(); } catch (QuercusDieException e) { log.log(Level.FINER, e.ToString(), e); } catch (QuercusExitException e) { log.log(Level.FINER, e.ToString(), e); } catch (QuercusErrorException e) { log.log(Level.FINER, e.ToString(), e); } finally { env.close(); os.flush(); } }
public override void execute() { string path = getPwd().lookup(getFileName()); QuercusPage page = parse(path); WriteStream os = new WriteStream(StdoutStream.create()); os.setNewlineString("\n"); os.setEncoding("iso-8859-1"); Env env = createEnv(page, os, null, null); env.start(); try { env.execute(); } catch (QuercusDieException e) { } catch (QuercusExitException e) { } env.close(); os.flush(); }
public override QuercusDotNet.Env.Env createEnv(QuercusPage page, WriteStream @out, QuercusHttpServletRequest request, QuercusHttpServletResponse response) { return(new CliEnv(this, page, @out, getArgv())); }
public override Env createEnv(QuercusPage page, WriteStream @out, QuercusHttpServletRequest request, QuercusHttpServletResponse response) { return(new CgiEnv(this, page, @out, request, response)); }
public GoogleEnv(QuercusContext quercus, QuercusPage page, WriteStream @out, QuercusHttpServletRequest request, QuercusHttpServletResponse response) { super(quercus, page, @out, request, response); }
public CliEnv(QuercusContext quercus, QuercusPage page, WriteStream @out, String[] argv) { super(quercus, page, @out, null, null); _argv = argv; }
/** * Creates a new quercus program * * @param quercus the owning quercus engine * @param sourceFile the path to the source file * @param statement the top-level statement */ public QuercusProgram(QuercusContext quercus, string sourceFile, QuercusPage page) { _quercus = quercus; _sourceFile = sourceFile; _compiledPage = page; _depend = new BasicDependencyContainer(); _topDepend = new BasicDependencyContainer(); _topDepend.setCheckInterval(quercus.getDependencyCheckInterval()); _topDepend.add(new PageDependency()); }
/** * Evaluates the callback with 1 arguments. * * @param env the calling environment */ public QuercusClass loadClass(Env env, string name) { ClassLoader loader = Thread.currentThread().getContextClassLoader(); URL url = loader.getResource(_prefix + name + ".php"); if (url == null) { return(null); } string urlStr = url.ToString(); // for JBoss, #5606 // XXX: use this for resin and no-resin? if (!env.getQuercus().isResin() && urlStr.startsWith("vfs:")) { try { InputStream @is = url.openStream(); try { ReadStream rs = new ReadStream(new VfsStream(@is, null)); QuercusPage page = env.getQuercus().parse(rs); page.execute(env); } finally { try { @is.close(); } catch (Exception e) { } } } catch (Exception e) { throw new QuercusException(e); } } else { string path = env.getPwd().lookup(urlStr); env.executePage(path); } return(env.findClass(name, -1, false, false, false)); }
public bool equals(Object o) { if (!(o instanceof DefinitionKey)) { return(false); } DefinitionKey key = (DefinitionKey)o; QuercusPage page = _includePageRef.get(); QuercusPage keyPage = key._includePageRef.get(); if (page == null || keyPage == null) { return(false); } return(_crc == key._crc && page.equals(keyPage)); }
/** * Service. */ public override void service(HttpServletRequest request, HttpServletResponse response) { Env env = null; WriteStream ws = null; QuercusHttpServletRequest req = new QuercusHttpServletRequestImpl(request); QuercusHttpServletResponse res = new QuercusHttpServletResponseImpl(response); try { string path = getPath(req); QuercusPage page; try { page = getQuercus().parse(path); } catch (FileNotFoundException e) { // php/2001 log.log(Level.FINER, e.ToString(), e); response.sendError(HttpServletResponse.SC_NOT_FOUND); return; } ws = openWrite(response); // php/2002 // for non-Resin containers // for servlet filters that do post-request work after Quercus ws.setDisableCloseSource(true); // php/6006 ws.setNewlineString("\n"); QuercusContext quercus = getQuercus(); env = quercus.createEnv(page, ws, req, res); // php/815d env.setPwd(path.getParent()); quercus.setServletContext(new QuercusServletContextImpl(_servletContext)); try { env.start(); // php/2030, php/2032, php/2033 // Jetty hides server classes from web-app // http://docs.codehaus.org/display/JETTY/Classloading // // env.setGlobalValue("request", env.wrapJava(request)); // env.setGlobalValue("response", env.wrapJava(response)); // env.setGlobalValue("servletContext", env.wrapJava(_servletContext)); StringValue prepend = quercus.getIniValue("auto_prepend_file").ToStringValue(env); if (prepend.length() > 0) { string prependPath = env.lookup(prepend); if (prependPath == null) { env.error(L.l("auto_prepend_file '{0}' not found.", prepend)); } else { QuercusPage prependPage = getQuercus().parse(prependPath); prependPage.executeTop(env); } } env.executeTop(); StringValue append = quercus.getIniValue("auto_append_file").ToStringValue(env); if (append.length() > 0) { string appendPath = env.lookup(append); if (appendPath == null) { env.error(L.l("auto_append_file '{0}' not found.", append)); } else { QuercusPage appendPage = getQuercus().parse(appendPath); appendPage.executeTop(env); } } // return; } catch (QuercusExitException e) { throw e; } catch (QuercusErrorException e) { throw e; } catch (QuercusLineRuntimeException e) { log.log(Level.FINE, e.ToString(), e); ws.println(e.getMessage()); // return; } catch (QuercusValueException e) { log.log(Level.FINE, e.ToString(), e); ws.println(e.ToString()); // return; } catch (StackOverflowError e) { RuntimeException myException = new RuntimeException(L.l("StackOverflowError at {0}", env.getLocation()), e); throw myException; } catch (Throwable e) { if (response.isCommitted()) { e.printStackTrace(ws.getPrintWriter()); } ws = null; throw e; } finally { if (env != null) { env.close(); } // don't want a flush for an exception if (ws != null && env.getDuplex() == null) { ws.close(); } } } catch (QuercusDieException e) { // normal exit log.log(Level.FINE, e.ToString(), e); } catch (QuercusExitException e) { // normal exit log.log(Level.FINER, e.ToString(), e); } catch (QuercusErrorException e) { // error exit log.log(Level.FINE, e.ToString(), e); } catch (RuntimeException e) { throw e; } catch (Throwable e) { handleThrowable(response, e); } }
/** * Sets the profiling page. */ public void setProfilePage(QuercusPage page) { _profilePage = page; }
/** * Sets the compiled page. */ public void setCompiledPage(QuercusPage page) { _compiledPage = page; }
public string ToString() { QuercusPage page = _includePageRef.get(); return("DefinitionKey[" + _crc + ", " + page + "]"); }
DefinitionKey(long crc, QuercusPage includePage) { _crc = crc; _includePageRef = new WeakReference <QuercusPage>(includePage); }