Author: kkolinko
Date: Tue Aug 12 13:49:51 2014
New Revision: 1617475
URL: http://svn.apache.org/r1617475
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56801
Improve performance of org.apache.tomcat.util.file.Matcher which is to filter
JARs for scanning during web application start. Based on a patch by Sheldon
Shao.
It is backport of r1615876 and r1617470.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/file/Matcher.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1615876,1617470
Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/file/Matcher.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/file/Matcher.java?rev=1617475&r1=1617474&r2=1617475&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/file/Matcher.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/file/Matcher.java Tue Aug
12 13:49:51 2014
@@ -45,14 +45,16 @@ public final class Matcher {
* file name, or <code>false</code> otherwise.
*/
public static boolean matchName(Set<String> patternSet, String fileName) {
+ char[] fileNameArray = fileName.toCharArray();
for (String pattern: patternSet) {
- if (match(pattern, fileName, true)) {
+ if (match(pattern, fileNameArray, true)) {
return true;
}
}
return false;
}
+
/**
* Tests whether or not a string matches against a pattern.
* The pattern may contain two special characters:<br>
@@ -61,8 +63,8 @@ public final class Matcher {
*
* @param pattern The pattern to match against.
* Must not be <code>null</code>.
- * @param str The string which must be matched against the pattern.
- * Must not be <code>null</code>.
+ * @param str The string which must be matched against the
+ * pattern. Must not be <code>null</code>.
* @param caseSensitive Whether or not matching should be performed
* case sensitively.
*
@@ -71,9 +73,32 @@ public final class Matcher {
* or <code>false</code> otherwise.
*/
public static boolean match(String pattern, String str,
+ boolean caseSensitive) {
+
+ return match(pattern, str.toCharArray(), caseSensitive);
+ }
+
+
+ /**
+ * Tests whether or not a string matches against a pattern.
+ * The pattern may contain two special characters:<br>
+ * '*' means zero or more characters<br>
+ * '?' means one and only one character
+ *
+ * @param pattern The pattern to match against.
+ * Must not be <code>null</code>.
+ * @param strArr The character array which must be matched against the
+ * pattern. Must not be <code>null</code>.
+ * @param caseSensitive Whether or not matching should be performed
+ * case sensitively.
+ *
+ *
+ * @return <code>true</code> if the string matches against the pattern,
+ * or <code>false</code> otherwise.
+ */
+ private static boolean match(String pattern, char[] strArr,
boolean caseSensitive) {
char[] patArr = pattern.toCharArray();
- char[] strArr = str.toCharArray();
int patIdxStart = 0;
int patIdxEnd = patArr.length - 1;
int strIdxStart = 0;
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=1617475&r1=1617474&r2=1617475&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Tue Aug 12 13:49:51 2014
@@ -89,6 +89,12 @@
application. (markt)
</fix>
<fix>
+ <bug>56801</bug>: Improve performance of
+ <code>org.apache.tomcat.util.file.Matcher</code> which is to filter
JARs
+ for scanning during web application start. Based on a patch by Sheldon
+ Shao. (kkolinko)
+ </fix>
+ <fix>
<bug>56825</bug>: Enable pre-emptive authentication to work with the
SSL authenticator. Based on a patch by jlmonteiro. (markt)
</fix>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]