Author: kkolinko
Date: Mon Jun 23 19:13:27 2014
New Revision: 1604910

URL: http://svn.apache.org/r1604910
Log:
Simplify. No change in functionality.
This backports part of r1604066.

Modified:
    tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java?rev=1604910&r1=1604909&r2=1604910&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java 
Mon Jun 23 19:13:27 2014
@@ -662,35 +662,29 @@ public final class Mapper {
 
         uri.setLimit(-1);
 
-        Context[] contexts;
         Context context = null;
         ContextVersion contextVersion = null;
 
-        int nesting = 0;
-
         // Virtual host mapping
         Host[] hosts = this.hosts;
-        int pos = findIgnoreCase(hosts, host);
-        if ((pos != -1) && (host.equalsIgnoreCase(hosts[pos].name))) {
-            mappingData.host = hosts[pos].object;
-            contexts = hosts[pos].contextList.contexts;
-            nesting = hosts[pos].contextList.nesting;
-        } else {
+        Host mappedHost = exactFindIgnoreCase(hosts, host);
+        if (mappedHost == null) {
             if (defaultHostName == null) {
                 return;
             }
-            pos = find(hosts, defaultHostName);
-            if ((pos != -1) && (defaultHostName.equals(hosts[pos].name))) {
-                mappingData.host = hosts[pos].object;
-                contexts = hosts[pos].contextList.contexts;
-                nesting = hosts[pos].contextList.nesting;
-            } else {
+            mappedHost = exactFind(hosts, defaultHostName);
+            if (mappedHost == null) {
                 return;
             }
         }
+        mappingData.host = mappedHost.object;
 
         // Context mapping
-        pos = find(contexts, uri);
+        ContextList contextList = mappedHost.contextList;
+        Context[] contexts = contextList.contexts;
+        int nesting = contextList.nesting;
+
+        int pos = find(contexts, uri);
         if (pos == -1) {
             return;
         }
@@ -1270,6 +1264,24 @@ public final class Mapper {
         return null;
     }
 
+    /**
+     * Find a map element given its name in a sorted array of map elements. 
This
+     * will return the element that you were searching for. Otherwise it will
+     * return <code>null</code>.
+     * @see #findIgnoreCase(MapElement[], CharChunk)
+     */
+    private static final <E extends MapElement> E exactFindIgnoreCase(E[] map,
+            CharChunk name) {
+        int pos = findIgnoreCase(map, name);
+        if (pos >= 0) {
+            E result = map[pos];
+            if (name.equalsIgnoreCase(result.name)) {
+                return result;
+            }
+        }
+        return null;
+    }
+
 
     /**
      * Compare given char chunk with String.



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

Reply via email to