Author: markt Date: Tue Aug 5 07:38:18 2014 New Revision: 1615876 URL: http://svn.apache.org/r1615876 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56801 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.
Modified: tomcat/trunk/java/org/apache/tomcat/util/file/Matcher.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/tomcat/util/file/Matcher.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/file/Matcher.java?rev=1615876&r1=1615875&r2=1615876&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/file/Matcher.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/file/Matcher.java Tue Aug 5 07:38:18 2014 @@ -45,14 +45,28 @@ 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; } + + /** + * @deprecated Use {@link #match(String, char[], boolean)}. This method will + * be removed in Tomcat 9.0.x onwards. + */ + @Deprecated + 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> @@ -61,8 +75,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 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. * @@ -70,10 +84,9 @@ public final class Matcher { * @return <code>true</code> if the string matches against the pattern, * or <code>false</code> otherwise. */ - public static boolean match(String pattern, String str, + public 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/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1615876&r1=1615875&r2=1615876&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Tue Aug 5 07:38:18 2014 @@ -90,6 +90,12 @@ <bug>56796</bug>: Remove unnecessary sleep when stopping a web 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. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org