Author: markt
Date: Wed May  7 17:25:36 2014
New Revision: 1593072

URL: http://svn.apache.org/r1593072
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56481
Work around case insensitivity issue in URLClassLoader

Modified:
    tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=1593072&r1=1593071&r2=1593072&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Wed May 
 7 17:25:36 2014
@@ -42,12 +42,14 @@ import java.security.Policy;
 import java.security.PrivilegedAction;
 import java.security.ProtectionDomain;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.ConcurrentModificationException;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -420,6 +422,13 @@ public class WebappClassLoader extends U
      */
     private boolean hasExternalRepositories = false;
 
+
+    /**
+     * Repositories managed by this class rather than the super class.
+     */
+    private Set<URL> localRepositories = new HashSet<>();
+
+
     private volatile LifecycleState state = LifecycleState.NEW;
 
 
@@ -1370,7 +1379,10 @@ public class WebappClassLoader extends U
      */
     @Override
     public URL[] getURLs() {
-        return super.getURLs();
+        ArrayList<URL> result = new ArrayList<>();
+        result.addAll(localRepositories);
+        result.addAll(Arrays.asList(super.getURLs()));
+        return result.toArray(new URL[result.size()]);
     }
 
 
@@ -1447,12 +1459,12 @@ public class WebappClassLoader extends U
 
         WebResource classes = resources.getResource("/WEB-INF/classes");
         if (classes.isDirectory() && classes.canRead()) {
-            addURL(classes.getURL());
+            localRepositories.add(classes.getURL());
         }
         WebResource[] jars = resources.listResources("/WEB-INF/lib");
         for (WebResource jar : jars) {
             if (jar.getName().endsWith(".jar") && jar.isFile() && 
jar.canRead()) {
-                addURL(jar.getURL());
+                localRepositories.add(jar.getURL());
                 jarModificationTimes.put(
                         jar.getName(), Long.valueOf(jar.getLastModified()));
             }

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1593072&r1=1593071&r2=1593072&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed May  7 17:25:36 2014
@@ -146,6 +146,10 @@
         problem is encountered calling a getter or setter on a component
         attribute. The logging level is raised from debug to warning. (markt)
       </fix>
+      <fix>
+        <bug>56481</bug>: Work around case insensitivity issue in
+        <code>URLClassLoader</code> exposed by some recent refactoring. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to