Author: kkolinko Date: Sun Apr 27 12:02:36 2014 New Revision: 1590381 URL: http://svn.apache.org/r1590381 Log: https://issues.apache.org/bugzilla/show_bug.cgi?id=56365 Simplify file name pattern matching code in StandardJarScanner.
Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/file/Matcher.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml 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=1590381&r1=1590380&r2=1590381&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 Sun Apr 27 12:02:36 2014 @@ -36,6 +36,30 @@ import org.apache.tomcat.util.res.String public final class Matcher { /** + * Tests whether or not a given file name matches any file name pattern in + * the given set. The match is performed case-sensitively. + * + * @see #match(String, String, boolean) + * + * @param patternSet The pattern set to match against. Must not be + * <code>null</code>. + * @param fileName The file name to match, as a String. Must not be + * <code>null</code>. It must be just a file name, without + * a path. + * + * @return <code>true</code> if any pattern in the set matches against the + * file name, or <code>false</code> otherwise. + */ + public static boolean matchName(Set<String> patternSet, String fileName) { + for (String pattern: patternSet) { + if (match(pattern, fileName, true)) { + return true; + } + } + return false; + } + + /** * The pattern that matches an arbitrary number of directories. */ public static final String DEEP_TREE_MATCH = "**"; Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java?rev=1590381&r1=1590380&r2=1590381&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java Sun Apr 27 12:02:36 2014 @@ -141,16 +141,12 @@ public class StandardJarScanner implemen log.trace(sm.getString("jarScan.webinflibStart")); } - Set<String> ignoredJars; + final Set<String> ignoredJars; if (jarsToSkip == null) { ignoredJars = defaultJarsToSkip; } else { ignoredJars = jarsToSkip; } - Set<String[]> ignoredJarsTokens = new HashSet<String[]>(); - for (String pattern: ignoredJars) { - ignoredJarsTokens.add(Matcher.tokenizePathAsArray(pattern)); - } // Scan WEB-INF/lib Set<String> dirList = context.getResourcePaths(Constants.WEB_INF_LIB); @@ -159,7 +155,7 @@ public class StandardJarScanner implemen while (it.hasNext()) { String path = it.next(); if (path.endsWith(Constants.JAR_EXT) && - !Matcher.matchPath(ignoredJarsTokens, + !Matcher.matchName(ignoredJars, path.substring(path.lastIndexOf('/')+1))) { // Need to scan this JAR if (log.isDebugEnabled()) { @@ -211,7 +207,7 @@ public class StandardJarScanner implemen // Skip JARs known not to be interesting and JARs // in WEB-INF/lib we have already scanned if (jarName != null && - !(Matcher.matchPath(ignoredJarsTokens, jarName) || + !(Matcher.matchName(ignoredJars, jarName) || urls[i].toString().contains( Constants.WEB_INF_LIB + jarName))) { if (log.isDebugEnabled()) { 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=1590381&r1=1590380&r2=1590381&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Sun Apr 27 12:02:36 2014 @@ -82,6 +82,10 @@ <code>session.invalidate()</code> from the session destroyed event for that session. (markt) </fix> + <scode> + <bug>56365</bug>: Simplify file name pattern matching code in + <code>StandardJarScanner</code>. Improve documentation. (kkolinko) + </scode> <fix> <bug>56369</bug>: Ensure that removing an MBean notification listener reverts all the operations performed when adding an MBean notification --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org