kinman 2003/10/28 15:04:11
Modified:jasper2/src/share/org/apache/jasper/compiler Compiler.java
Node.java Parser.java
Added: jasper2/src/share/org/apache/jasper/compiler
TextOptimizer.java
Log:
- Concatenate text strings of adjecent TemplateText nodes. This may
reduce code size and improve performance.
- Remove previous implementation for mappedfile options from Parser,
since this functionality works for free now.
Revision ChangesPath
1.73 +3 -0
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java
Index: Compiler.java
===
RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -r1.72 -r1.73
--- Compiler.java 28 Oct 2003 19:18:53 - 1.72
+++ Compiler.java 28 Oct 2003 23:04:11 - 1.73
@@ -267,6 +267,9 @@
TagPluginManager tagPluginManager = options.getTagPluginManager();
tagPluginManager.apply(pageNodes, errDispatcher, pageInfo);
+// Optimization: concatenate contiguous template texts.
+TextOptimizer.concatenate(pageNodes);
+
// Generate static function mapper codes.
ELFunctionMapper.map(this, pageNodes);
1.78 +7 -3
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Node.java
Index: Node.java
===
RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Node.java,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -r1.77 -r1.78
--- Node.java 16 Sep 2003 17:46:43 - 1.77
+++ Node.java 28 Oct 2003 23:04:11 - 1.78
@@ -1943,6 +1943,10 @@
text = text.substring(index);
}
+public void setText(String text) {
+this.text = text;
+}
+
/**
* Trim all whitespace from the right of the template text
*/
1.83 +5 -44
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Parser.java
Index: Parser.java
===
RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Parser.java,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -r1.82 -r1.83
--- Parser.java 23 Sep 2003 20:47:23 - 1.82
+++ Parser.java 28 Oct 2003 23:04:11 - 1.83
@@ -101,7 +101,6 @@
private boolean directivesOnly;
private URL jarFileUrl;
private PageInfo pageInfo;
-private boolean mappedFile;
// Virtual body content types, to make parsing a little easier.
// These are not accessible from outside the parser.
@@ -128,7 +127,6 @@
this.directivesOnly = directivesOnly;
this.jarFileUrl = jarFileUrl;
start = reader.mark();
-mappedFile = ctxt.getOptions().getMappedFile();
}
/**
@@ -1409,44 +1407,9 @@
return true;
}
-/**
- * Determines whether the current text is template text
- * or not. Assumes the reader is at the character
- * following the .
- */
-private boolean isTemplateText() throws JasperException {
-
-Mark m = reader.mark();
-int ch = reader.peekChar();
-if (ch == '/') {
-reader.nextChar();
-}
-String tagIdentifier = reader.parseToken(false);
-reader.reset(m);
-
-if (tagIdentifier.startsWith(%)) {
-return false;
-}
-if (tagIdentifier.startsWith(jsp:)) {
-return false;
-}
-
-// Check if this is a user-defined tag.
-int i = tagIdentifier.indexOf(':');
-if (i == -1) {
-return true;
-}
-String prefix = tagIdentifier.substring(0, i);
-String uri = pageInfo.getURI(prefix);
-if (uri == null) {
-return true;
-}
-
-return false;
-}
-
/*
- *
+ * Parse for a template text string until '' or ${ is encountered,
+ * recognizing escape sequences \% and \$.
*/
private void parseTemplateText(Node parent) throws JasperException {
@@ -1461,11 +1424,9 @@
while (reader.hasMoreInput()) {
ch = reader.nextChar();
if (ch == '') {
-if (!mappedFile || !isTemplateText()) {
reader.pushChar();
break;
}
- }
else if( ch == '$' ) {
if (!reader.hasMoreInput()) {
ttext.write('$');
1.1