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: [email protected]
For additional commands, e-mail: [email protected]