Author: mrdon
Date: Sat Oct 20 08:07:09 2007
New Revision: 586739
URL: http://svn.apache.org/viewvc?rev=586739&view=rev
Log:
Better handling of urls that use semicolons
WW-2268
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/RequestUtils.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/RequestUtilsTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/util/ResourceUtilTest.java
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/RequestUtils.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/RequestUtils.java?rev=586739&r1=586738&r2=586739&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/RequestUtils.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/RequestUtils.java
Sat Oct 20 08:07:09 2007
@@ -37,12 +37,20 @@
*/
public static String getServletPath(HttpServletRequest request) {
String servletPath = request.getServletPath();
-
+
+ String requestUri = request.getRequestURI();
+ // Detecting other characters that the servlet container cut off (like
anything after ';')
+ if (requestUri != null && servletPath != null &&
!requestUri.endsWith(servletPath)) {
+ int pos = requestUri.indexOf(servletPath);
+ if (pos > -1) {
+ servletPath =
requestUri.substring(requestUri.indexOf(servletPath));
+ }
+ }
+
if (null != servletPath && !"".equals(servletPath)) {
return servletPath;
}
-
- String requestUri = request.getRequestURI();
+
int startIndex = request.getContextPath().equals("") ? 0 :
request.getContextPath().length();
int endIndex = request.getPathInfo() == null ? requestUri.length() :
requestUri.lastIndexOf(request.getPathInfo());
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java?rev=586739&r1=586738&r2=586739&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ParameterAware.java
Sat Oct 20 08:07:09 2007
@@ -41,5 +41,5 @@
*
* @param parameters a Map of parameters (name/value Strings).
*/
- public void setParameters(Map parameters);
+ public void setParameters(Map<String,String[]> parameters);
}
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/RequestUtilsTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/RequestUtilsTest.java?rev=586739&r1=586738&r2=586739&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/RequestUtilsTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/RequestUtilsTest.java
Sat Oct 20 08:07:09 2007
@@ -37,6 +37,7 @@
public void testGetServletPathWithServletPathSet() throws Exception {
control.expectAndReturn(requestMock.getServletPath(), "/mycontext/");
+ control.expectAndReturn(requestMock.getRequestURI(), "/mycontext/");
control.replay();
assertEquals("/mycontext/", RequestUtils.getServletPath(requestMock));
control.verify();
@@ -73,6 +74,14 @@
control.expectAndReturn(requestMock.getPathInfo(), null);
control.replay();
assertEquals("/mycontext/", RequestUtils.getServletPath(requestMock));
+ control.verify();
+ }
+
+ public void testGetServletPathWithSemicolon() throws Exception {
+ control.expectAndReturn(requestMock.getRequestURI(),
"/friend/mycontext/jim;bob");
+ control.expectAndReturn(requestMock.getServletPath(),
"/mycontext/jim");
+ control.replay();
+ assertEquals("/mycontext/jim;bob",
RequestUtils.getServletPath(requestMock));
control.verify();
}
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java?rev=586739&r1=586738&r2=586739&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java
Sat Oct 20 08:07:09 2007
@@ -98,6 +98,10 @@
provider.loadPackages();
*/
}
+
+ public void testNothing() {
+ // now stop complaining!
+ }
/**
* Provides the "custom-package" configuration.
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java?rev=586739&r1=586738&r2=586739&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java
Sat Oct 20 08:07:09 2007
@@ -88,6 +88,7 @@
view.setLocation("foo.jsp");
requestMock.expectAndReturn("getParameterMap", new HashMap());
requestMock.expectAndReturn("getServletPath",
"/namespace/some.action");
+ requestMock.expectAndReturn("getRequestURI", "/namespace/some.action");
requestMock.expectAndReturn("getAttribute", C.ANY_ARGS, null);
responseMock.expectAndReturn("encodeRedirectURL",
"/context/namespace/foo.jsp", "/context/namespace/foo.jsp");
responseMock.expect("sendRedirect",
C.args(C.eq("/context/namespace/foo.jsp")));
@@ -102,6 +103,7 @@
view.setLocation("foo.jsp?foo=bar&baz=jim");
requestMock.expectAndReturn("getParameterMap", new HashMap());
requestMock.expectAndReturn("getServletPath",
"/namespace/some.action");
+ requestMock.expectAndReturn("getRequestURI", "/namespace/some.action");
requestMock.expectAndReturn("getAttribute", C.ANY_ARGS, null);
responseMock.expectAndReturn("encodeRedirectURL",
"/context/namespace/foo.jsp?foo=bar&baz=jim",
"/context/namespace/foo.jsp?foo=bar&baz=jim");
responseMock.expect("sendRedirect",
C.args(C.eq("/context/namespace/foo.jsp?foo=bar&baz=jim")));
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/util/ResourceUtilTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/util/ResourceUtilTest.java?rev=586739&r1=586738&r2=586739&view=diff
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/util/ResourceUtilTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/util/ResourceUtilTest.java
Sat Oct 20 08:07:09 2007
@@ -36,6 +36,7 @@
public void testGetResourceBase() throws Exception {
control.expectAndReturn(requestMock.getServletPath(), "/mycontext/");
+ control.expectAndReturn(requestMock.getRequestURI(), "/mycontext/");
control.replay();
assertEquals("/mycontext", ResourceUtil.getResourceBase(requestMock));
control.verify();
@@ -43,7 +44,9 @@
control.reset();
control.expectAndReturn(requestMock.getServletPath(),
"/mycontext/test.jsp");
+ control.expectAndReturn(requestMock.getRequestURI(),
"/mycontext/test.jsp");
control.replay();
+
assertEquals("/mycontext", ResourceUtil.getResourceBase(requestMock));
control.verify();