You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2014/06/23 21:57:29 UTC
svn commit: r1604918 -
/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org