From 3f95da1167d4761c71cd99a8d90ce15762b72a7b Mon Sep 17 00:00:00 2001 From: markt Date: Wed, 25 Aug 2010 16:44:08 +0000 Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=38113 git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@989211 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/connector/Request.java | 7 +--- .../org/apache/catalina/connector/TestRequest.java | 46 +++++++++++++++++++++- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/java/org/apache/catalina/connector/Request.java b/java/org/apache/catalina/connector/Request.java index c0d0ebdaa..2b7bdce53 100644 --- a/java/org/apache/catalina/connector/Request.java +++ b/java/org/apache/catalina/connector/Request.java @@ -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(); } diff --git a/test/org/apache/catalina/connector/TestRequest.java b/test/org/apache/catalina/connector/TestRequest.java index f444d886a..72f3dbe63 100644 --- a/test/org/apache/catalina/connector/TestRequest.java +++ b/test/org/apache/catalina/connector/TestRequest.java @@ -201,6 +201,51 @@ public class TestRequest extends TomcatBaseTest { } /** + * Test case for + * bug + * 38118. + */ + 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()); } -- 2.11.0