You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mr...@apache.org on 2007/10/20 17:07:10 UTC
svn commit: r586739 - in /struts/struts2/trunk/core/src:
main/java/org/apache/struts2/ main/java/org/apache/struts2/interceptor/
test/java/org/apache/struts2/ test/java/org/apache/struts2/config/
test/java/org/apache/struts2/dispatcher/ test/java/org/a...
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();