You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2014/04/27 14:02:36 UTC

svn commit: r1590381 - in /tomcat/tc7.0.x/trunk: java/org/apache/tomcat/util/file/Matcher.java java/org/apache/tomcat/util/scan/StandardJarScanner.java webapps/docs/changelog.xml

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org