Author: markt Date: Mon Oct 27 22:21:41 2014 New Revision: 1634706 URL: http://svn.apache.org/r1634706 Log: pushFile() is only called from one location so move the code to that location (since it will allow further simplication).
Modified: tomcat/trunk/java/org/apache/jasper/compiler/JspReader.java Modified: tomcat/trunk/java/org/apache/jasper/compiler/JspReader.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/JspReader.java?rev=1634706&r1=1634705&r2=1634706&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/compiler/JspReader.java (original) +++ tomcat/trunk/java/org/apache/jasper/compiler/JspReader.java Mon Oct 27 22:21:41 2014 @@ -120,9 +120,57 @@ class JspReader { this.err = err; sourceFiles = new Vector<>(); currFileId = 0; - pushFile(fname, reader); + + int fileid = registerSourceFile(fname); + + if (fileid == -1) { + // http://issues.apache.org/bugzilla/show_bug.cgi?id=37407 + try { + reader.close(); + } catch (Exception any) { + if(log.isDebugEnabled()) { + log.debug("Exception closing reader: ", any); + } + } + + err.jspError("jsp.error.file.already.registered", fname); + } + + currFileId = fileid; + + try { + CharArrayWriter caw = new CharArrayWriter(); + char buf[] = new char[1024]; + for (int i = 0 ; (i = reader.read(buf)) != -1 ;) + caw.write(buf, 0, i); + caw.close(); + if (current == null) { + current = new Mark(this, caw.toCharArray(), fileid, + getFile(fileid), master); + } else { + current.pushStream(caw.toCharArray(), fileid, getFile(fileid), + fname); + } + } catch (Throwable ex) { + ExceptionUtils.handleThrowable(ex); + log.error("Exception parsing file ", ex); + // Pop state being constructed: + popFile(); + err.jspError("jsp.error.file.cannot.read", fname); + } finally { + if (reader != null) { + try { + reader.close(); + } catch (Exception any) { + if(log.isDebugEnabled()) { + log.debug("Exception closing reader: ", any); + } + } + } + } } + /** * @return JSP compilation context with which this JspReader is * associated @@ -647,65 +695,6 @@ class JspReader { } /** - * Push a file (and its associated Stream) on the file stack. THe - * current position in the current file is remembered. - */ - private void pushFile(String file, - InputStreamReader reader) throws JasperException { - - // Register the file - String longName = file; - - int fileid = registerSourceFile(longName); - - if (fileid == -1) { - // http://issues.apache.org/bugzilla/show_bug.cgi?id=37407 - try { - reader.close(); - } catch (Exception any) { - if(log.isDebugEnabled()) { - log.debug("Exception closing reader: ", any); - } - } - - err.jspError("jsp.error.file.already.registered", file); - } - - currFileId = fileid; - - try { - CharArrayWriter caw = new CharArrayWriter(); - char buf[] = new char[1024]; - for (int i = 0 ; (i = reader.read(buf)) != -1 ;) - caw.write(buf, 0, i); - caw.close(); - if (current == null) { - current = new Mark(this, caw.toCharArray(), fileid, - getFile(fileid), master); - } else { - current.pushStream(caw.toCharArray(), fileid, getFile(fileid), - longName); - } - } catch (Throwable ex) { - ExceptionUtils.handleThrowable(ex); - log.error("Exception parsing file ", ex); - // Pop state being constructed: - popFile(); - err.jspError("jsp.error.file.cannot.read", file); - } finally { - if (reader != null) { - try { - reader.close(); - } catch (Exception any) { - if(log.isDebugEnabled()) { - log.debug("Exception closing reader: ", any); - } - } - } - } - } - - /** * Pop a file from the file stack. The field "current" is restored * to the value to point to the previous files, if any, and is set * to null otherwise. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org