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


Reply via email to