Author: kkolinko Date: Sun Apr 27 12:57:22 2014 New Revision: 1590387 URL: http://svn.apache.org/r1590387 Log: https://issues.apache.org/bugzilla/show_bug.cgi?id=56365 Document file name pattern syntax for StandardJarScanner. When configuring pattern lists: be tolerant of leading/trailing whitespace, ignore empty patterns.
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/scan/TestJarScanner.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml tomcat/tc7.0.x/trunk/webapps/docs/config/jar-scanner.xml tomcat/tc7.0.x/trunk/webapps/docs/config/systemprops.xml Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1590387&r1=1590386&r2=1590387&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java Sun Apr 27 12:57:22 2014 @@ -167,7 +167,10 @@ public class ContextConfig implements Li if (jarList != null) { StringTokenizer tokenizer = new StringTokenizer(jarList, ","); while (tokenizer.hasMoreElements()) { - pluggabilityJarsToSkip.add(tokenizer.nextToken()); + String token = tokenizer.nextToken().trim(); + if (token.length() > 0) { + pluggabilityJarsToSkip.add(token); + } } } Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java?rev=1590387&r1=1590386&r2=1590387&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java Sun Apr 27 12:57:22 2014 @@ -142,7 +142,10 @@ public final class TldConfig implements } StringTokenizer tokenizer = new StringTokenizer(jarNames, ","); while (tokenizer.hasMoreElements()) { - noTldJars.add(tokenizer.nextToken()); + String token = tokenizer.nextToken().trim(); + if (token.length() > 0) { + noTldJars.add(token); + } } } } Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java?rev=1590387&r1=1590386&r2=1590387&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java Sun Apr 27 12:57:22 2014 @@ -138,7 +138,10 @@ public class TldLocationsCache { } StringTokenizer tokenizer = new StringTokenizer(jarNames, ","); while (tokenizer.hasMoreElements()) { - noTldJars.add(tokenizer.nextToken()); + String token = tokenizer.nextToken().trim(); + if (token.length() > 0) { + noTldJars.add(token); + } } } } 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=1590387&r1=1590386&r2=1590387&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:57:22 2014 @@ -69,7 +69,10 @@ public class StandardJarScanner implemen if (jarList != null) { StringTokenizer tokenizer = new StringTokenizer(jarList, ","); while (tokenizer.hasMoreElements()) { - defaultJarsToSkip.add(tokenizer.nextToken()); + String token = tokenizer.nextToken().trim(); + if (token.length() > 0) { + defaultJarsToSkip.add(token); + } } } } Modified: tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/scan/TestJarScanner.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/scan/TestJarScanner.java?rev=1590387&r1=1590386&r2=1590387&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/scan/TestJarScanner.java (original) +++ tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/scan/TestJarScanner.java Sun Apr 27 12:57:22 2014 @@ -19,11 +19,7 @@ package org.apache.tomcat.util.scan; import java.util.StringTokenizer; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - +import org.junit.Assert; import org.junit.Test; import org.apache.catalina.startup.TomcatBaseTest; @@ -33,19 +29,43 @@ public class TestJarScanner extends Tomc @Test public void testJarsToSkipFormat() { - String jarList = System.getProperty(Constants.SKIP_JARS_PROPERTY); - assertNotNull("Jar skip list is null", jarList); - assertFalse("Jar skip list is empty", jarList.isEmpty()); + testJarsToSkipFormat( + org.apache.tomcat.util.scan.Constants.SKIP_JARS_PROPERTY, false); + testJarsToSkipFormat( + org.apache.catalina.startup.Constants.PLUGGABILITY_JARS_TO_SKIP, + true); + testJarsToSkipFormat( + org.apache.catalina.startup.Constants.TLD_JARS_TO_SKIP, + true); + + } + + private static void testJarsToSkipFormat(String propertyName, boolean allowEmpty) { + String jarList = System.getProperty(propertyName); + if (jarList == null) { + if (!allowEmpty) { + Assert.fail("[" + propertyName + "]: Jar skip list property is not set"); + } + return; + } + jarList = jarList.trim(); + if (jarList.isEmpty()) { + if (!allowEmpty) { + Assert.fail("[" + propertyName + "]: Jar skip list is empty"); + } + return; + } + StringTokenizer tokenizer = new StringTokenizer(jarList, ","); String token; while (tokenizer.hasMoreElements()) { - token = tokenizer.nextToken(); - assertTrue("Token \"" + token + "\" does not end with \".jar\"", - token.endsWith(".jar")); - assertEquals("Token \"" + token + "\" contains sub string \".jar\"" + - " or separator \",\" is missing", - token.length() - ".jar".length(), - token.indexOf(".jar")); + token = tokenizer.nextToken().trim(); + Assert.assertTrue("[" + propertyName + "]: Token \"" + token + + "\" does not end with \".jar\"", token.endsWith(".jar")); + Assert.assertEquals("[" + propertyName + "]: Token \"" + token + + "\" contains sub string \".jar\"" + + " or separator \",\" is missing", + token.length() - ".jar".length(), token.indexOf(".jar")); } } } 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=1590387&r1=1590386&r2=1590387&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:57:22 2014 @@ -82,10 +82,12 @@ <code>session.invalidate()</code> from the session destroyed event for that session. (markt) </fix> - <scode> + <update> <bug>56365</bug>: Simplify file name pattern matching code in - <code>StandardJarScanner</code>. Improve documentation. (kkolinko) - </scode> + <code>StandardJarScanner</code>. Ignore leading and trailing whitespace + and empty strings when configuring patterns. Improve documentation. + (kkolinko) + </update> <fix> <bug>56369</bug>: Ensure that removing an MBean notification listener reverts all the operations performed when adding an MBean notification Modified: tomcat/tc7.0.x/trunk/webapps/docs/config/jar-scanner.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/config/jar-scanner.xml?rev=1590387&r1=1590386&r2=1590387&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/config/jar-scanner.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/config/jar-scanner.xml Sun Apr 27 12:57:22 2014 @@ -72,8 +72,21 @@ <p>The standard implementation of <strong>Jar Scanner</strong> is <strong>org.apache.tomcat.util.scan.StandardJarScanner</strong>. - It supports the following additional attributes (in addition to the - common attributes listed above):</p> + Additional attributes that it supports (in addition to the common attributes + listed above) are listed in the table.</p> + + <p>There are several + <a href="systemprops.html#JAR_Scanning">system properties</a> + that control what JAR files are skipped by JarScanner. + Those properties are lists of file name pattern. The + patterns are separated by comma (','). The leading and trailing whitespace + characters in a pattern are ignored. The patterns are matched + case-sensitively. The following two special characters are supported:</p> + + <ul> + <li>'*' — means zero or more characters,</li> + <li>'?' — means one and only one character.</li> + </ul> <attributes> Modified: tomcat/tc7.0.x/trunk/webapps/docs/config/systemprops.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/config/systemprops.xml?rev=1590387&r1=1590386&r2=1590387&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/config/systemprops.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/config/systemprops.xml Sun Apr 27 12:57:22 2014 @@ -528,9 +528,11 @@ <properties> <property name="tomcat.util.scan. DefaultJarScanner.jarsToSkip"> - <p>The comma-separated list of filenames of JARs that Tomcat will not scan - for configuration information when using the - <a href="jar-scanner.html">JarScanner</a> functionality. Note that + <p>The comma-separated list of file name patterns of JARs that Tomcat will + not scan for configuration information when using the + <a href="jar-scanner.html">JarScanner</a> functionality. The file name + pattern syntax is described in + <a href="jar-scanner.html">JarScanner</a> documentation. Note that there are additional system properties that enable JARs to be excluded from specific scans rather than all scans.</p> <p>The coded default is that no JARs are skipped however the system --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org