From 4b83a04984518e7ca4e66d30f7563a7e9f94e0f5 Mon Sep 17 00:00:00 2001 From: markt Date: Wed, 30 Mar 2011 20:06:25 +0000 Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50997 Relax the requirement that directories must have a name ending in .jar to be treated as an expanded JAR file by the default JarScanner. Based on patch by Rodion Zhitomirsky. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1087062 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/startup/ContextConfig.java | 15 +++++---------- java/org/apache/tomcat/util/scan/StandardJarScanner.java | 3 +++ webapps/docs/changelog.xml | 5 +++++ 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/java/org/apache/catalina/startup/ContextConfig.java b/java/org/apache/catalina/startup/ContextConfig.java index a638767a3..76fec6ca8 100644 --- a/java/org/apache/catalina/startup/ContextConfig.java +++ b/java/org/apache/catalina/startup/ContextConfig.java @@ -2347,7 +2347,7 @@ public class ContextConfig public void scan(File file) throws IOException { InputStream stream = null; - WebXml fragment = null; + WebXml fragment = new WebXml(); try { File fragmentFile = new File(file, FRAGMENT_LOCATION); @@ -2356,7 +2356,6 @@ public class ContextConfig InputSource source = new InputSource(fragmentFile.toURI().toURL().toString()); source.setByteStream(stream); - fragment = new WebXml(); parseWebXml(source, fragment, true); } } finally { @@ -2367,15 +2366,11 @@ public class ContextConfig ExceptionUtils.handleThrowable(t); } } - if (fragment == null) { - fragments.put(file.toURI().toURL().toString(), fragment); - } else { - fragment.setURL(file.toURI().toURL()); - if (fragment.getName() == null) { - fragment.setName(fragment.getURL().toString()); - } - fragments.put(fragment.getName(), fragment); + fragment.setURL(file.toURI().toURL()); + if (fragment.getName() == null) { + fragment.setName(fragment.getURL().toString()); } + fragments.put(fragment.getName(), fragment); } } diff --git a/java/org/apache/tomcat/util/scan/StandardJarScanner.java b/java/org/apache/tomcat/util/scan/StandardJarScanner.java index 769bc258f..546b073f8 100644 --- a/java/org/apache/tomcat/util/scan/StandardJarScanner.java +++ b/java/org/apache/tomcat/util/scan/StandardJarScanner.java @@ -271,6 +271,9 @@ public class StandardJarScanner implements JarScanner { if (end != -1) { int start = path.lastIndexOf('/', end); name = path.substring(start + 1, end + 4); + } else if (isScanAllDirectories()){ + int start = path.lastIndexOf('/'); + name = path.substring(start + 1); } return name; diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index cdcb07804..a74e36389 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -123,6 +123,11 @@ Correctly track changes to context.xml files and trigger redeployment when copyXML is set to false. (markt) + + 50997: Relax the requirement that directories must have a + name ending in .jar to be treated as an expanded JAR file + by the default JarScanner. Based on patch by Rodion Zhitomirsky. (markt) + -- 2.11.0