Updated Branches:
  refs/heads/wicket-1.5.x 3d8368cf4 -> 031b5eb97

WICKET-4841 Return error code 400 when an Ajax request has no base url set in 
header/request parameters.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/031b5eb9
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/031b5eb9
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/031b5eb9

Branch: refs/heads/wicket-1.5.x
Commit: 031b5eb97c74f6c0908742a8ee4a4def4d2b72c7
Parents: 3d8368c
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Mon Nov 5 11:26:42 2012 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon Nov 5 11:27:56 2012 +0200

----------------------------------------------------------------------
 .../protocol/http/servlet/ServletWebRequest.java   |    9 +++-
 .../http/servlet/ServletWebRequestTest.java        |   35 ++++++++++++++-
 2 files changed, 41 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/031b5eb9/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
index a0a6170..569ad94 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
@@ -30,15 +30,16 @@ import java.util.Set;
 import javax.servlet.ServletRequest;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 import org.apache.wicket.protocol.http.RequestUtils;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.IWritableRequestParameters;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.http.WebRequest;
+import org.apache.wicket.request.http.flow.AbortWithHttpErrorCodeException;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Bytes;
-import org.apache.wicket.util.lang.Checks;
 import org.apache.wicket.util.string.PrependingStringBuffer;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
@@ -168,7 +169,11 @@ public class ServletWebRequest extends WebRequest
                                base = 
getRequestParameters().getParameterValue(PARAM_AJAX_BASE_URL).toString(null);
                        }
 
-                       Checks.notNull(base, "Current ajax request is missing 
the base url header or parameter");
+                       if (base == null)
+                       {
+                               throw new 
AbortWithHttpErrorCodeException(HttpServletResponse.SC_BAD_REQUEST,
+                                       "Current ajax request is missing the 
base url header or parameter");
+                       }
 
                        return setParameters(Url.parse(base, getCharset()));
                }

http://git-wip-us.apache.org/repos/asf/wicket/blob/031b5eb9/wicket-core/src/test/java/org/apache/wicket/protocol/http/servlet/ServletWebRequestTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/protocol/http/servlet/ServletWebRequestTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/protocol/http/servlet/ServletWebRequestTest.java
index fdfd171..394bcd7 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/protocol/http/servlet/ServletWebRequestTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/protocol/http/servlet/ServletWebRequestTest.java
@@ -17,6 +17,7 @@
 package org.apache.wicket.protocol.http.servlet;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
@@ -26,6 +27,7 @@ import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.http.WebRequest;
+import org.apache.wicket.request.http.flow.AbortWithHttpErrorCodeException;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 import org.apache.wicket.util.tester.WicketTester;
@@ -130,7 +132,38 @@ public class ServletWebRequestTest extends Assert
                };
 
                WicketTester tester = new WicketTester(application);
-               tester.startPage(new CustomRequestPage());
+               try
+               {
+                       tester.startPage(new CustomRequestPage());
+               }
+               finally
+               {
+                       tester.destroy();
+               }
+       }
+
+       /**
+        * Assert that ServletWebRequest#getClientUrl() will throw an 
AbortWithHttpErrorCodeException
+        * with error code 400 (Bad Request) when an Ajax request doesn't 
provide the base url.
+        *
+        * https://issues.apache.org/jira/browse/WICKET-4841
+        */
+       @Test
+       public void getClientUrlAjaxWithoutBaseUrl()
+       {
+
+               MockHttpServletRequest httpRequest = new 
MockHttpServletRequest(null, null, null);
+               httpRequest.setHeader(ServletWebRequest.HEADER_AJAX, "true");
+               ServletWebRequest webRequest = new 
ServletWebRequest(httpRequest, "");
+               try
+               {
+                       webRequest.getClientUrl();
+                       fail("Should not be possible to get the request client 
url in Ajax request without base url");
+               }
+               catch (AbortWithHttpErrorCodeException awhex)
+               {
+                       assertEquals(HttpServletResponse.SC_BAD_REQUEST, 
awhex.getErrorCode());
+               }
        }
 
        private static class CustomRequestPage extends WebPage implements 
IMarkupResourceStreamProvider

Reply via email to