Respect configurable search order in getURLs().
authorrjung <rjung@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 22 Apr 2010 15:14:11 +0000 (15:14 +0000)
committerrjung <rjung@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 22 Apr 2010 15:14:11 +0000 (15:14 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@936892 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/loader/WebappClassLoader.java

index 2919727..484d6cf 100644 (file)
@@ -1679,19 +1679,30 @@ public class WebappClassLoader
 
         int filesLength = files.length;
         int jarFilesLength = jarRealFiles.length;
-        int length = filesLength + jarFilesLength + external.length;
+        int externalsLength = external.length;
+        int off = 0;
         int i;
 
         try {
 
-            URL[] urls = new URL[length];
-            for (i = 0; i < length; i++) {
-                if (i < filesLength) {
-                    urls[i] = getURL(files[i], true);
-                } else if (i < filesLength + jarFilesLength) {
-                    urls[i] = getURL(jarRealFiles[i - filesLength], true);
-                } else {
-                    urls[i] = external[i - filesLength - jarFilesLength];
+            URL[] urls = new URL[filesLength + jarFilesLength + externalsLength];
+            if (searchExternalFirst) {
+                for (i = 0; i < externalsLength; i++) {
+                    urls[i] = external[i];
+                }
+                off = externalsLength;
+            }
+            for (i = 0; i < filesLength; i++) {
+                urls[off + i] = getURL(files[i], true);
+            }
+            off += filesLength;
+            for (i = 0; i < jarFilesLength; i++) {
+                urls[off + i] = getURL(jarRealFiles[i], true);
+            }
+            off += jarFilesLength;
+            if (!searchExternalFirst) {
+                for (i = 0; i < externalsLength; i++) {
+                    urls[off + i] = external[i];
                 }
             }