SPR-8596 Detect case in UriPathHelper where originating request query (before forwarding) is null.

This commit is contained in:
Rossen Stoyanchev 2011-08-31 13:00:24 +00:00
parent ce70c985b4
commit 7bf44f06a0
2 changed files with 28 additions and 5 deletions

View File

@ -287,14 +287,15 @@ public class UrlPathHelper {
* @return the query string * @return the query string
*/ */
public String getOriginatingQueryString(HttpServletRequest request) { public String getOriginatingQueryString(HttpServletRequest request) {
String queryString = (String) request.getAttribute(WebUtils.FORWARD_QUERY_STRING_ATTRIBUTE); if ((request.getAttribute(WebUtils.FORWARD_REQUEST_URI_ATTRIBUTE) != null) ||
if (queryString == null) { (request.getAttribute(WebUtils.ERROR_REQUEST_URI_ATTRIBUTE) != null)) {
queryString = request.getQueryString(); return (String) request.getAttribute(WebUtils.FORWARD_QUERY_STRING_ATTRIBUTE);
}
else {
return request.getQueryString();
} }
return queryString;
} }
/** /**
* Decode the supplied URI string and strips any extraneous portion after a ';'. * Decode the supplied URI string and strips any extraneous portion after a ';'.
*/ */

View File

@ -289,4 +289,26 @@ public class UrlPathHelperTests {
request.setAttribute(WEBSPHERE_URI_ATTRIBUTE, "/test/foo/foo/"); request.setAttribute(WEBSPHERE_URI_ATTRIBUTE, "/test/foo/foo/");
tomcatCasualServletFolder(); tomcatCasualServletFolder();
} }
@Test
public void getOriginatingQueryString() {
request.setQueryString("forward=on");
request.setAttribute(WebUtils.FORWARD_REQUEST_URI_ATTRIBUTE, "/path");
request.setAttribute(WebUtils.FORWARD_QUERY_STRING_ATTRIBUTE, "original=on");
assertEquals("original=on", this.helper.getOriginatingQueryString(request));
}
@Test
public void getOriginatingQueryStringNotPresent() {
request.setQueryString("forward=true");
assertEquals("forward=true", this.helper.getOriginatingQueryString(request));
}
@Test
public void getOriginatingQueryStringIsNull() {
request.setQueryString("forward=true");
request.setAttribute(WebUtils.FORWARD_REQUEST_URI_ATTRIBUTE, "/path");
assertNull(this.helper.getOriginatingQueryString(request));
}
} }