Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=38113
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 25 Aug 2010 16:44:08 +0000 (16:44 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 25 Aug 2010 16:44:08 +0000 (16:44 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@989211 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/connector/Request.java
test/org/apache/catalina/connector/TestRequest.java

index c0d0ebd..2b7bdce 100644 (file)
@@ -2032,12 +2032,7 @@ public class Request
      * Return the query string associated with this request.
      */
     public String getQueryString() {
-        String queryString = coyoteRequest.queryString().toString();
-        if (queryString == null || queryString.equals("")) {
-            return null;
-        }
-
-        return queryString;
+        return coyoteRequest.queryString().toString();
     }
 
 
index f444d88..72f3dbe 100644 (file)
@@ -201,6 +201,51 @@ public class TestRequest extends TomcatBaseTest {
     }
 
     /**
+     * Test case for
+     * <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=38113">bug
+     * 38118</a>.
+     */
+    public void testBug38113() throws Exception {
+        // Setup Tomcat instance
+        Tomcat tomcat = getTomcatInstance();
+        
+        // Must have a real docBase - just use temp
+        Context ctx = 
+            tomcat.addContext("/", System.getProperty("java.io.tmpdir"));
+
+        // Add the Servlet
+        Tomcat.addServlet(ctx, "servlet", new EchoQueryStringServlet());
+        ctx.addServletMapping("/", "servlet");
+        
+        tomcat.start();
+
+        // No query string
+        ByteChunk res = getUrl("http://localhost:" + getPort() + "/");
+        assertEquals("QueryString=null", res.toString());
+        
+        // Query string
+        res = getUrl("http://localhost:" + getPort() + "/?a=b");
+        assertEquals("QueryString=a=b", res.toString());
+
+        // Empty string
+        res = getUrl("http://localhost:" + getPort() + "/?");
+        assertEquals("QueryString=", res.toString());
+    }
+    
+    private static final class EchoQueryStringServlet extends HttpServlet {
+
+        private static final long serialVersionUID = 1L;
+
+        @Override
+        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+                throws ServletException, IOException {
+            resp.setContentType("text/plain");
+            PrintWriter pw = resp.getWriter();
+            pw.print("QueryString=" + req.getQueryString());
+        }
+    }
+
+    /**
      * Test case for {@link Request#login(String, String)} and
      * {@link Request#logout()}.
      */
@@ -227,7 +272,6 @@ public class TestRequest extends TomcatBaseTest {
         tomcat.start();
         
         ByteChunk res = getUrl("http://localhost:" + getPort() + "/");
-
         assertEquals(LoginLogoutServlet.OK, res.toString());
     }