Author: markt
Date: Tue Jun 18 08:04:34 2013
New Revision: 1494060
URL: http://svn.apache.org/r1494060
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=55073
Small performance improvement
Patch provided by Adrian Nistor
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Validator.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1494056
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Validator.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Validator.java?rev=1494060&r1=1494059&r2=1494060&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Validator.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Validator.java Tue Jun
18 08:04:34 2013
@@ -5,9 +5,9 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -46,7 +46,7 @@ import org.xml.sax.Attributes;
* mandatory presence, entry value validity, and consistency. As a side effect,
* some page global value (such as those from page directives) are stored, for
* later use.
- *
+ *
* @author Kin-man Chung
* @author Jan Luehe
* @author Shawn Bayern
@@ -321,10 +321,10 @@ class Validator {
/*
* Compares page encodings specified in various places, and throws
* exception in case of page encoding mismatch.
- *
+ *
* @param pageDirEnc The value of the pageEncoding attribute of the
page
* directive @param pageDir The page directive node
- *
+ *
* @throws JasperException in case of page encoding mismatch
*/
private String comparePageEncodings(String thePageDirEnc,
@@ -372,17 +372,17 @@ class Validator {
return pageEnc;
}
}
-
+
return pageDirEnc;
}
-
+
/*
* Compares page encodings specified in various places, and throws
* exception in case of page encoding mismatch.
- *
+ *
* @param thePageDirEnc The value of the pageEncoding attribute of the
page
* directive @param pageDir The page directive node
- *
+ *
* @throws JasperException in case of page encoding mismatch
*/
private void compareTagEncodings(String thePageDirEnc,
@@ -785,7 +785,7 @@ class Validator {
if (value == null) {
return false;
}
-
+
int i = 0;
int len = value.length();
boolean prevCharIsEscape = false;
@@ -1048,19 +1048,19 @@ class Validator {
/*
* Make sure the given custom action does not have any invalid
* attributes.
- *
+ *
* A custom action and its declared attributes always belong to the
same
* namespace, which is identified by the prefix name of the custom tag
* invocation. For example, in this invocation:
- *
+ *
* <my:test a="1" b="2" c="3"/>, the action
- *
+ *
* "test" and its attributes "a", "b", and "c" all belong to the
* namespace identified by the prefix "my". The above invocation would
* be equivalent to:
- *
+ *
* <my:test my:a="1" my:b="2" my:c="3"/>
- *
+ *
* An action attribute may have a prefix different from that of the
* action invocation only if the underlying tag handler supports
dynamic
* attributes, in which case the attribute with the different prefix is
@@ -1079,7 +1079,7 @@ class Validator {
for (int i = 0; attrs != null && i < attrs.getLength(); i++) {
boolean found = false;
-
+
boolean runtimeExpression = ((n.getRoot().isXmlSyntax() &&
attrs.getValue(i).startsWith("%="))
|| (!n.getRoot().isXmlSyntax() &&
attrs.getValue(i).startsWith("<%=")));
boolean elExpression = false;
@@ -1127,7 +1127,7 @@ class Validator {
TagAttributeInfo tldAttr = tldAttrs[j];
if (tldAttr.canBeRequestTime()
|| tldAttr.isDeferredMethod() ||
tldAttr.isDeferredValue()) { // JSP 2.1
-
+
if (!expression) {
String expectedType = null;
@@ -1207,12 +1207,12 @@ class Validator {
err.jspError(n,
"jsp.error.attribute.custom.non_rt_with_expr",
tldAttr.getName());
}
-
+
if (elExpression) {
// El expression
validateFunctions(el, n);
jspAttrs[i] = new
Node.JspAttribute(tldAttr,
- attrs.getQName(i),
attrs.getURI(i),
+ attrs.getQName(i), attrs.getURI(i),
attrs.getLocalName(i),
attrs.getValue(i), false, el,
false);
ELContextImpl ctx = new ELContextImpl();
@@ -1221,7 +1221,7 @@ class Validator {
jspAttrs[i].validateEL(this.pageInfo.getExpressionFactory(), ctx);
} catch (ELException e) {
this.err.jspError(n.getStart(),
-
"jsp.error.invalid.expression",
+ "jsp.error.invalid.expression",
attrs.getValue(i),
e.toString());
}
} else {
@@ -1232,7 +1232,7 @@ class Validator {
.getValue(i), n, false);
}
}
-
+
} else {
// Attribute does not accept any expressions.
// Make sure its value does not contain any.
@@ -1274,7 +1274,7 @@ class Validator {
* attributes
*/
private void checkNamedAttributes(Node.CustomTag n,
- Node.JspAttribute[] jspAttrs, int start,
+ Node.JspAttribute[] jspAttrs, int start,
Hashtable<String, Object> tagDataAttrs)
throws JasperException {
@@ -1426,7 +1426,7 @@ class Validator {
* expression.
*/
private boolean isExpression(Node n, String value, boolean
checkDeferred) {
-
+
boolean runtimeExpression = ((n.getRoot().isXmlSyntax() &&
value.startsWith("%="))
|| (!n.getRoot().isXmlSyntax() &&
value.startsWith("<%=")));
boolean elExpression = false;
@@ -1439,9 +1439,12 @@ class Validator {
if (node instanceof ELNode.Root) {
if (((ELNode.Root) node).getType() == '$') {
elExpression = true;
- } else if (checkDeferred &&
!pageInfo.isDeferredSyntaxAllowedAsLiteral()
- && ((ELNode.Root) node).getType() == '#') {
+ break;
+ } else if (checkDeferred &&
+ !pageInfo.isDeferredSyntaxAllowedAsLiteral() &&
+ ((ELNode.Root) node).getType() == '#') {
elExpression = true;
+ break;
}
}
}
@@ -1604,7 +1607,7 @@ class Validator {
/**
* Get the parameters types from the function signature.
- *
+ *
* @return An array of parameter class names
*/
private String[] getParameters(ELNode.Function func)
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1494060&r1=1494059&r2=1494060&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Tue Jun 18 08:04:34 2013
@@ -70,8 +70,9 @@
methods that does not include GET. (markt)
</fix>
<fix>
- <bug>55108</bug>, <bug>55109</bug> & <bug>55110</bug>: Small
- performance improvements. Patches provided by Adrian Nistor. (markt)
+ <bug>55073</bug>, <bug>55108</bug>, <bug>55109</bug> &
+ <bug>55110</bug>: Small performance improvements. Patches provided by
+ Adrian Nistor. (markt)
</fix>
</changelog>
</subsection>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]