Author: kkolinko Date: Mon Jun 23 19:57:29 2014 New Revision: 1604918 URL: http://svn.apache.org/r1604918 Log: Simplify internalMapWrapper methods. No change in functionality. This completes backport 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=1604918&r1=1604917&r2=1604918&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:57:29 2014 @@ -965,10 +965,10 @@ public final class Mapper { */ private final void internalMapExactWrapper (Wrapper[] wrappers, CharChunk path, MappingData mappingData) { - int pos = find(wrappers, path); - if ((pos != -1) && (path.equals(wrappers[pos].name))) { - mappingData.requestPath.setString(wrappers[pos].name); - mappingData.wrapper = wrappers[pos].object; + Wrapper wrapper = exactFind(wrappers, path); + if (wrapper != null) { + mappingData.requestPath.setString(wrapper.name); + mappingData.wrapper = wrapper.object; if (path.equals("/")) { // Special handling for Context Root mapped servlet mappingData.pathInfo.setString("/"); @@ -976,7 +976,7 @@ public final class Mapper { // This seems wrong but it is what the spec says... mappingData.contextPath.setString(""); } else { - mappingData.wrapperPath.setString(wrappers[pos].name); + mappingData.wrapperPath.setString(wrapper.name); } } } @@ -1064,14 +1064,14 @@ public final class Mapper { if (period >= 0) { path.setOffset(period + 1); path.setEnd(pathEnd); - int pos = find(wrappers, path); - if ((pos != -1) && (path.equals(wrappers[pos].name)) && - (resourceExpected || !wrappers[pos].resourceOnly)) { - mappingData.wrapperPath.setChars - (buf, servletPath, pathEnd - servletPath); - mappingData.requestPath.setChars - (buf, servletPath, pathEnd - servletPath); - mappingData.wrapper = wrappers[pos].object; + Wrapper wrapper = exactFind(wrappers, path); + if (wrapper != null + && (resourceExpected || !wrapper.resourceOnly)) { + mappingData.wrapperPath.setChars(buf, servletPath, pathEnd + - servletPath); + mappingData.requestPath.setChars(buf, servletPath, pathEnd + - servletPath); + mappingData.wrapper = wrapper.object; } path.setOffset(servletPath); path.setEnd(pathEnd); @@ -1261,6 +1261,23 @@ public final class Mapper { * 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>. + */ + private static final <E extends MapElement> E exactFind(E[] map, + CharChunk name) { + int pos = find(map, name); + if (pos >= 0) { + E result = map[pos]; + if (name.equals(result.name)) { + return result; + } + } + 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, --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org