You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ma...@apache.org on 2008/04/21 21:34:08 UTC

svn commit: r650231 - in /wicket: branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/ branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/ trunk/wicket/src/main/java/org/apache/wicket/proto...

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());
+
 	}
 }