Author: marrink
Date: Mon Apr 21 12:33:58 2008
New Revision: 650231
URL: http://svn.apache.org/viewvc?rev=650231&view=rev
Log:
RESOLVED - issue WICKET-1527: WicketTester can not deal with null values in
page parameters
https://issues.apache.org/jira/browse/WICKET-1527
Modified:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
Modified:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java?rev=650231&r1=650230&r2=650231&view=diff
==============================================================================
---
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
(original)
+++
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
Mon Apr 21 12:33:58 2008
@@ -687,9 +687,11 @@
{
final String name =
(String)iterator.next();
final String value =
parameters.getString(name);
- buf.append(URLEncoder.encode(name,
"UTF-8"));
+ if (name != null)
+
buf.append(URLEncoder.encode(name, "UTF-8"));
buf.append('=');
- buf.append(URLEncoder.encode(value,
"UTF-8"));
+ if (value != null)
+
buf.append(URLEncoder.encode(value, "UTF-8"));
if (iterator.hasNext())
{
buf.append('&');
Modified:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java?rev=650231&r1=650230&r2=650231&view=diff
==============================================================================
---
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
(original)
+++
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
Mon Apr 21 12:33:58 2008
@@ -86,7 +86,7 @@
mockRequest.setRequestToRedirectString("?a=1&a=2");
Object obj = mockRequest.getParameterMap().get("a");
assertTrue("Expected " + new String[0].getClass() + ", got " +
obj.getClass(),
- obj instanceof String[]);
+ obj instanceof String[]);
}
/**
@@ -108,5 +108,29 @@
WebRequest webRequest = new ServletWebRequest(mockRequest);
assertEquals(isAjax, webRequest.isAjax());
+ }
+
+ /**
+ * Test handling of null parameter values.
+ */
+ public void testNullHandling()
+ {
+ MockHttpServletRequest mockRequest = tester.getServletRequest();
+ mockRequest.setParameter("a", null);
+ assertNull(mockRequest.getAttribute("a"));
+ assertEquals("a=", mockRequest.getQueryString());
+ }
+
+ /**
+ * Test handling of null parameter keys.
+ */
+ public void testNullHandling2()
+ {
+ MockHttpServletRequest mockRequest = tester.getServletRequest();
+ mockRequest.setRequestToRedirectString("?=m"); // key is
encoded as empty string
+ assertEquals("=m", mockRequest.getQueryString());
+ mockRequest.setParameter(null, "m2"); // force null string
+ assertEquals("=m2&=m", mockRequest.getQueryString());
+
}
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java?rev=650231&r1=650230&r2=650231&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
Mon Apr 21 12:33:58 2008
@@ -481,6 +481,7 @@
return new ServletInputStream()
{
+ @Override
public int read()
{
return bais.read();
@@ -491,6 +492,7 @@
{
return new ServletInputStream()
{
+ @Override
public int read()
{
return -1;
@@ -687,9 +689,11 @@
{
final String name =
(String)iterator.next();
final String value =
parameters.getString(name);
- buf.append(URLEncoder.encode(name,
"UTF-8"));
+ if (name != null)
+
buf.append(URLEncoder.encode(name, "UTF-8"));
buf.append('=');
- buf.append(URLEncoder.encode(value,
"UTF-8"));
+ if (value != null)
+
buf.append(URLEncoder.encode(value, "UTF-8"));
if (iterator.hasNext())
{
buf.append('&');
@@ -725,6 +729,7 @@
* @return The path
* @deprecated Use ServletContext.getRealPath(String) instead.
*/
+ @Deprecated
public String getRealPath(String name)
{
return context.getRealPath(name);
@@ -1175,7 +1180,7 @@
final String pageMapName = pageMap.isDefault() ? "" :
pageMap.getName();
if (component instanceof BookmarkablePageLink)
{
- final Class<? extends Page> clazz =
((BookmarkablePageLink)component).getPageClass();
+ final Class< ? extends Page> clazz =
((BookmarkablePageLink)component).getPageClass();
parameters.put(WebRequestCodingStrategy.BOOKMARKABLE_PAGE_PARAMETER_NAME,
pageMapName +
':' + clazz.getName());
}
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java?rev=650231&r1=650230&r2=650231&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
Mon Apr 21 12:33:58 2008
@@ -86,7 +86,7 @@
mockRequest.setRequestToRedirectString("?a=1&a=2");
Object obj = mockRequest.getParameterMap().get("a");
assertTrue("Expected " + new String[0].getClass() + ", got " +
obj.getClass(),
- obj instanceof String[]);
+ obj instanceof String[]);
}
/**
@@ -108,5 +108,29 @@
WebRequest webRequest = new ServletWebRequest(mockRequest);
assertEquals(isAjax, webRequest.isAjax());
+ }
+
+ /**
+ * Test handling of null parameter values.
+ */
+ public void testNullHandling()
+ {
+ MockHttpServletRequest mockRequest = tester.getServletRequest();
+ mockRequest.setParameter("a", null);
+ assertNull(mockRequest.getAttribute("a"));
+ assertEquals("a=", mockRequest.getQueryString());
+ }
+
+ /**
+ * Test handling of null parameter keys.
+ */
+ public void testNullHandling2()
+ {
+ MockHttpServletRequest mockRequest = tester.getServletRequest();
+ mockRequest.setRequestToRedirectString("?=m"); // key is
encoded as empty string
+ assertEquals("=m", mockRequest.getQueryString());
+ mockRequest.setParameter(null, "m2"); // force null string
+ assertEquals("=m2&=m", mockRequest.getQueryString());
+
}
}