You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ki...@apache.org on 2004/07/27 23:57:03 UTC
cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler JspReader.java
kinman 2004/07/27 14:57:03
Modified: jasper2/src/share/org/apache/jasper/compiler JspReader.java
Log:
- Replace tabs with 8 spaces, in preparation for next commit.
Revision Changes Path
1.22 +250 -250 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspReader.java
Index: JspReader.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspReader.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- JspReader.java 13 Jul 2004 18:40:08 -0000 1.21
+++ JspReader.java 27 Jul 2004 21:57:02 -0000 1.22
@@ -70,34 +70,34 @@
* Constructor.
*/
public JspReader(JspCompilationContext ctxt,
- String fname,
- String encoding,
- JarFile jarFile,
- ErrorDispatcher err)
- throws JasperException, FileNotFoundException, IOException {
-
- this(ctxt, fname, encoding,
- JspUtil.getReader(fname, encoding, jarFile, ctxt, err),
- err);
+ String fname,
+ String encoding,
+ JarFile jarFile,
+ ErrorDispatcher err)
+ throws JasperException, FileNotFoundException, IOException {
+
+ this(ctxt, fname, encoding,
+ JspUtil.getReader(fname, encoding, jarFile, ctxt, err),
+ err);
}
/*
* Constructor.
*/
public JspReader(JspCompilationContext ctxt,
- String fname,
- String encoding,
- InputStreamReader reader,
- ErrorDispatcher err)
- throws JasperException, FileNotFoundException {
+ String fname,
+ String encoding,
+ InputStreamReader reader,
+ ErrorDispatcher err)
+ throws JasperException, FileNotFoundException {
this.context = ctxt;
- this.err = err;
- sourceFiles = new Vector();
- currFileId = 0;
- size = 0;
- singleFile = false;
- pushFile(fname, encoding, reader);
+ this.err = err;
+ sourceFiles = new Vector();
+ currFileId = 0;
+ size = 0;
+ singleFile = false;
+ pushFile(fname, encoding, reader);
}
/*
@@ -109,35 +109,35 @@
}
String getFile(int fileid) {
- return (String) sourceFiles.elementAt(fileid);
+ return (String) sourceFiles.elementAt(fileid);
}
-
+
boolean hasMoreInput() throws JasperException {
- if (current.cursor >= current.stream.length) {
+ if (current.cursor >= current.stream.length) {
if (singleFile) return false;
- while (popFile()) {
- if (current.cursor < current.stream.length) return true;
- }
- return false;
- }
- return true;
+ while (popFile()) {
+ if (current.cursor < current.stream.length) return true;
+ }
+ return false;
+ }
+ return true;
}
int nextChar() throws JasperException {
- if (!hasMoreInput())
- return -1;
-
- int ch = current.stream[current.cursor];
-
- current.cursor++;
-
- if (ch == '\n') {
- current.line++;
- current.col = 0;
- } else {
- current.col++;
- }
- return ch;
+ if (!hasMoreInput())
+ return -1;
+
+ int ch = current.stream[current.cursor];
+
+ current.cursor++;
+
+ if (ch == '\n') {
+ current.line++;
+ current.col = 0;
+ } else {
+ current.col++;
+ }
+ return ch;
}
/**
@@ -145,46 +145,46 @@
* and that the char to be pushed back is not '\n'.
*/
void pushChar() {
- current.cursor--;
- current.col--;
+ current.cursor--;
+ current.col--;
}
String getText(Mark start, Mark stop) throws JasperException {
- Mark oldstart = mark();
- reset(start);
- CharArrayWriter caw = new CharArrayWriter();
- while (!stop.equals(mark()))
- caw.write(nextChar());
- caw.close();
- reset(oldstart);
- return caw.toString();
+ Mark oldstart = mark();
+ reset(start);
+ CharArrayWriter caw = new CharArrayWriter();
+ while (!stop.equals(mark()))
+ caw.write(nextChar());
+ caw.close();
+ reset(oldstart);
+ return caw.toString();
}
int peekChar() {
- return current.stream[current.cursor];
+ return current.stream[current.cursor];
}
Mark mark() {
- return new Mark(current);
+ return new Mark(current);
}
void reset(Mark mark) {
- current = new Mark(mark);
+ current = new Mark(mark);
}
boolean matchesIgnoreCase(String string) throws JasperException {
- Mark mark = mark();
- int ch = 0;
- int i = 0;
- do {
- ch = nextChar();
- if (Character.toLowerCase((char) ch) != string.charAt(i++)) {
- reset(mark);
- return false;
- }
- } while (i < string.length());
- reset(mark);
- return true;
+ Mark mark = mark();
+ int ch = 0;
+ int i = 0;
+ do {
+ ch = nextChar();
+ if (Character.toLowerCase((char) ch) != string.charAt(i++)) {
+ reset(mark);
+ return false;
+ }
+ } while (i < string.length());
+ reset(mark);
+ return true;
}
/**
@@ -192,33 +192,33 @@
* @param string The string to match
* @return <strong>true</strong> is one is found, the current position
* in stream is positioned after the search string, <strong>
- * false</strong> otherwise, position in stream unchanged.
+ * false</strong> otherwise, position in stream unchanged.
*/
boolean matches(String string) throws JasperException {
- Mark mark = mark();
- int ch = 0;
- int i = 0;
- do {
- ch = nextChar();
- if (((char) ch) != string.charAt(i++)) {
- reset(mark);
- return false;
- }
- } while (i < string.length());
- return true;
+ Mark mark = mark();
+ int ch = 0;
+ int i = 0;
+ do {
+ ch = nextChar();
+ if (((char) ch) != string.charAt(i++)) {
+ reset(mark);
+ return false;
+ }
+ } while (i < string.length());
+ return true;
}
boolean matchesETag(String tagName) throws JasperException {
- Mark mark = mark();
+ Mark mark = mark();
- if (!matches("</" + tagName))
- return false;
- skipSpaces();
- if (nextChar() == '>')
- return true;
+ if (!matches("</" + tagName))
+ return false;
+ skipSpaces();
+ if (nextChar() == '>')
+ return true;
- reset(mark);
- return false;
+ reset(mark);
+ return false;
}
boolean matchesETagWithoutLessThan(String tagName)
@@ -244,7 +244,7 @@
* position is restored to where we were before.
*/
boolean matchesOptionalSpacesFollowedBy( String s )
- throws JasperException
+ throws JasperException
{
Mark mark = mark();
@@ -258,12 +258,12 @@
}
int skipSpaces() throws JasperException {
- int i = 0;
- while (hasMoreInput() && isSpace()) {
- i++;
- nextChar();
- }
- return i;
+ int i = 0;
+ while (hasMoreInput() && isSpace()) {
+ i++;
+ nextChar();
+ }
+ return i;
}
/**
@@ -310,28 +310,28 @@
* otherwise.
*/
Mark skipUntilIgnoreEsc(String limit) throws JasperException {
- Mark ret = null;
- int limlen = limit.length();
- int ch;
- int prev = 'x'; // Doesn't matter
-
+ Mark ret = null;
+ int limlen = limit.length();
+ int ch;
+ int prev = 'x'; // Doesn't matter
+
skip:
- for (ret = mark(), ch = nextChar() ; ch != -1 ;
- ret = mark(), prev = ch, ch = nextChar()) {
- if (ch == '\\' && prev == '\\') {
- ch = 0; // Double \ is not an escape char anymore
- }
- else if (ch == limit.charAt(0) && prev != '\\') {
- for (int i = 1 ; i < limlen ; i++) {
- if (peekChar() == limit.charAt(i))
- nextChar();
- else
- continue skip;
- }
- return ret;
- }
- }
- return null;
+ for (ret = mark(), ch = nextChar() ; ch != -1 ;
+ ret = mark(), prev = ch, ch = nextChar()) {
+ if (ch == '\\' && prev == '\\') {
+ ch = 0; // Double \ is not an escape char anymore
+ }
+ else if (ch == limit.charAt(0) && prev != '\\') {
+ for (int i = 1 ; i < limlen ; i++) {
+ if (peekChar() == limit.charAt(i))
+ nextChar();
+ else
+ continue skip;
+ }
+ return ret;
+ }
+ }
+ return null;
}
/**
@@ -340,21 +340,21 @@
*
* @param tag The name of the tag whose ETag (</tag>) to match.
* @return A non-null <code>Mark</code> instance (positioned immediately
- * before the ETag) if found, <strong>null</strong> otherwise.
+ * before the ETag) if found, <strong>null</strong> otherwise.
*/
Mark skipUntilETag(String tag) throws JasperException {
- Mark ret = skipUntil("</" + tag);
- if (ret != null) {
- skipSpaces();
- if (nextChar() != '>')
- ret = null;
- }
- return ret;
+ Mark ret = skipUntil("</" + tag);
+ if (ret != null) {
+ skipSpaces();
+ if (nextChar() != '>')
+ ret = null;
+ }
+ return ret;
}
final boolean isSpace() {
// Note: If this logic changes, also update Node.TemplateText.rtrim()
- return peekChar() <= ' ';
+ return peekChar() <= ' ';
}
/**
@@ -365,48 +365,48 @@
* @param quoted If <strong>true</strong> accept quoted strings.
*/
String parseToken(boolean quoted) throws JasperException {
- StringBuffer stringBuffer = new StringBuffer();
- skipSpaces();
- stringBuffer.setLength(0);
-
- int ch = peekChar();
-
- if (quoted) {
- if (ch == '"' || ch == '\'') {
-
- char endQuote = ch == '"' ? '"' : '\'';
- // Consume the open quote:
- ch = nextChar();
- for (ch = nextChar(); ch != -1 && ch != endQuote;
- ch = nextChar()) {
- if (ch == '\\')
- ch = nextChar();
- stringBuffer.append((char) ch);
- }
- // Check end of quote, skip closing quote:
- if (ch == -1) {
- err.jspError(mark(), "jsp.error.quotes.unterminated");
- }
- } else {
- err.jspError(mark(), "jsp.error.attr.quoted");
- }
- } else {
- if (!isDelimiter()) {
- // Read value until delimiter is found:
- do {
- ch = nextChar();
- // Take care of the quoting here.
- if (ch == '\\') {
- if (peekChar() == '"' || peekChar() == '\'' ||
- peekChar() == '>' || peekChar() == '%')
- ch = nextChar();
- }
- stringBuffer.append((char) ch);
- } while (!isDelimiter());
- }
- }
+ StringBuffer stringBuffer = new StringBuffer();
+ skipSpaces();
+ stringBuffer.setLength(0);
+
+ int ch = peekChar();
+
+ if (quoted) {
+ if (ch == '"' || ch == '\'') {
+
+ char endQuote = ch == '"' ? '"' : '\'';
+ // Consume the open quote:
+ ch = nextChar();
+ for (ch = nextChar(); ch != -1 && ch != endQuote;
+ ch = nextChar()) {
+ if (ch == '\\')
+ ch = nextChar();
+ stringBuffer.append((char) ch);
+ }
+ // Check end of quote, skip closing quote:
+ if (ch == -1) {
+ err.jspError(mark(), "jsp.error.quotes.unterminated");
+ }
+ } else {
+ err.jspError(mark(), "jsp.error.attr.quoted");
+ }
+ } else {
+ if (!isDelimiter()) {
+ // Read value until delimiter is found:
+ do {
+ ch = nextChar();
+ // Take care of the quoting here.
+ if (ch == '\\') {
+ if (peekChar() == '"' || peekChar() == '\'' ||
+ peekChar() == '>' || peekChar() == '%')
+ ch = nextChar();
+ }
+ stringBuffer.append((char) ch);
+ } while (!isDelimiter());
+ }
+ }
- return stringBuffer.toString();
+ return stringBuffer.toString();
}
void setSingleFile(boolean val) {
@@ -437,29 +437,29 @@
* @return A boolean.
*/
private boolean isDelimiter() throws JasperException {
- if (! isSpace()) {
- int ch = peekChar();
- // Look for a single-char work delimiter:
- if (ch == '=' || ch == '>' || ch == '"' || ch == '\''
- || ch == '/') {
- return true;
- }
- // Look for an end-of-comment or end-of-tag:
- if (ch == '-') {
- Mark mark = mark();
- if (((ch = nextChar()) == '>')
- || ((ch == '-') && (nextChar() == '>'))) {
- reset(mark);
- return true;
- } else {
- reset(mark);
- return false;
- }
- }
- return false;
- } else {
- return true;
- }
+ if (! isSpace()) {
+ int ch = peekChar();
+ // Look for a single-char work delimiter:
+ if (ch == '=' || ch == '>' || ch == '"' || ch == '\''
+ || ch == '/') {
+ return true;
+ }
+ // Look for an end-of-comment or end-of-tag:
+ if (ch == '-') {
+ Mark mark = mark();
+ if (((ch = nextChar()) == '>')
+ || ((ch == '-') && (nextChar() == '>'))) {
+ reset(mark);
+ return true;
+ } else {
+ reset(mark);
+ return false;
+ }
+ }
+ return false;
+ } else {
+ return true;
+ }
}
/**
@@ -473,9 +473,9 @@
private int registerSourceFile(String file) {
if (sourceFiles.contains(file))
return -1;
- sourceFiles.addElement(file);
- this.size++;
- return sourceFiles.size() - 1;
+ sourceFiles.addElement(file);
+ this.size++;
+ return sourceFiles.size() - 1;
}
@@ -490,9 +490,9 @@
private int unregisterSourceFile(String file) {
if (!sourceFiles.contains(file))
return -1;
- sourceFiles.removeElement(file);
- this.size--;
- return sourceFiles.size() - 1;
+ sourceFiles.removeElement(file);
+ this.size--;
+ return sourceFiles.size() - 1;
}
/**
@@ -500,45 +500,45 @@
* current position in the current file is remembered.
*/
private void pushFile(String file, String encoding,
- InputStreamReader reader)
- throws JasperException, FileNotFoundException {
+ InputStreamReader reader)
+ throws JasperException, FileNotFoundException {
- // Register the file
- String longName = file;
+ // Register the file
+ String longName = file;
- int fileid = registerSourceFile(longName);
+ int fileid = registerSourceFile(longName);
if (fileid == -1) {
err.jspError("jsp.error.file.already.registered", file);
- }
+ }
- currFileId = fileid;
+ 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, encoding);
- } else {
- current.pushStream(caw.toCharArray(), fileid, getFile(fileid),
- longName, encoding);
- }
- } catch (Throwable 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) {}
- }
- }
+ 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, encoding);
+ } else {
+ current.pushStream(caw.toCharArray(), fileid, getFile(fileid),
+ longName, encoding);
+ }
+ } catch (Throwable 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) {}
+ }
+ }
}
/**
@@ -550,29 +550,29 @@
*/
private boolean popFile() throws JasperException {
- // Is stack created ? (will happen if the Jsp file we're looking at is
- // missing.
- if (current == null || currFileId < 0) {
- return false;
- }
-
- // Restore parser state:
- String fName = getFile(currFileId);
- currFileId = unregisterSourceFile(fName);
- if (currFileId < -1) {
- err.jspError("jsp.error.file.not.registered", fName);
- }
-
- Mark previous = current.popStream();
- if (previous != null) {
- master = current.baseDir;
- current = previous;
- return true;
- }
- // Note that although the current file is undefined here, "current"
- // is not set to null just for convience, for it maybe used to
- // set the current (undefined) position.
- return false;
+ // Is stack created ? (will happen if the Jsp file we're looking at is
+ // missing.
+ if (current == null || currFileId < 0) {
+ return false;
+ }
+
+ // Restore parser state:
+ String fName = getFile(currFileId);
+ currFileId = unregisterSourceFile(fName);
+ if (currFileId < -1) {
+ err.jspError("jsp.error.file.not.registered", fName);
+ }
+
+ Mark previous = current.popStream();
+ if (previous != null) {
+ master = current.baseDir;
+ current = previous;
+ return true;
+ }
+ // Note that although the current file is undefined here, "current"
+ // is not set to null just for convience, for it maybe used to
+ // set the current (undefined) position.
+ return false;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org