Exemple #1
0
        public QuercusPage parseImpl(Path path, string fileName, int line)

        {
            try {
                SoftReference <QuercusProgram> programRef = _programCache.get(path);

                QuercusProgram program = programRef != null?programRef.get() : null;

                bool isModified = false;

                if (program != null)
                {
                    isModified = program.isModified();

                    if (program.isCompilable())
                    {
                    }
                    else if (isModified)
                    {
                        program.setCompilable(true);
                    }
                    else
                    {
                        if (log.isLoggable(Level.FINE))
                        {
                            log.fine(L.l("Quercus[{0}] loading interpreted page", path));
                        }

                        return(new InterpretedPage(program));
                    }
                }

                if (program == null || isModified)
                {
                    clearProgram(path, program);

                    program = preloadProgram(path, fileName);

                    if (program == null)
                    {
                        if (log.isLoggable(Level.FINE))
                        {
                            log.fine(L.l("Quercus[{0}] parsing page", path));
                        }

                        program = QuercusParser.parse(_quercus,
                                                      path,
                                                      _quercus.getScriptEncoding(),
                                                      fileName,
                                                      line);
                    }

                    _programCache.put(path, new SoftReference <QuercusProgram>(program));
                }

                if (program.getCompiledPage() != null)
                {
                    return(program.getCompiledPage());
                }

                return(compilePage(program, path));
            } catch (IOException e) {
                throw e;
            } catch (RuntimeException e) {
                throw e;
            } catch (Throwable e) {
                throw new IOExceptionWrapper(e);
            }
        }
Exemple #2
0
 /**
  * Returns any profile page.
  */
 public override QuercusPage getCompiledPage()
 {
     return(_program.getCompiledPage());
 }