You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2009/06/25 17:30:29 UTC

svn commit: r788393 - in /camel/trunk/components: camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java

Author: ningjiang
Date: Thu Jun 25 15:30:27 2009
New Revision: 788393

URL: http://svn.apache.org/viewvc?rev=788393&view=rev
Log:
CAMEL-1760 fixed the issue of post params in camel-jetty component

Modified:
    camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
    camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java

Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java?rev=788393&r1=788392&r2=788393&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java Thu Jun 25 15:30:27 2009
@@ -54,6 +54,9 @@
     }
 
     public void readRequest(HttpServletRequest request, HttpMessage message) {
+        // lets parser the parameterMap first to avoid consuming the POST parameters as InputStream
+        request.getParameterMap();
+        
         // lets force a parse of the body and headers
         message.getBody();
         // populate the headers from the request

Modified: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java?rev=788393&r1=788392&r2=788393&view=diff
==============================================================================
--- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java (original)
+++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java Thu Jun 25 15:30:27 2009
@@ -23,6 +23,7 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
 import org.apache.camel.Exchange;
@@ -33,6 +34,9 @@
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.converter.stream.InputStreamCache;
 import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.NameValuePair;
+import org.apache.commons.httpclient.methods.PostMethod;
 import org.junit.Test;
 
 /**
@@ -81,6 +85,19 @@
         String out = template.requestBody("http://localhost:9080/echo", "HelloWorld", String.class);
         assertEquals("Get a wrong output " , "HelloWorld", out);
     }
+    
+    @Test
+    public void testPostParameter() throws Exception {
+        NameValuePair[] data = {new NameValuePair("request", "PostParameter"),
+                                new NameValuePair("others", "bloggs")};
+        HttpClient client = new HttpClient();
+        PostMethod post = new PostMethod("http://localhost:9080/post");
+        post.setRequestBody(data);
+        client.executeMethod(post);
+        InputStream response = post.getResponseBodyAsStream();
+        String out = context.getTypeConverter().convertTo(String.class, response);
+        assertEquals("Get a wrong output " , "PostParameter", out);
+    }
 
     protected void invokeHttpEndpoint() throws IOException {
         template.requestBodyAndHeader("http://localhost:9080/test", expectedBody, "Content-Type", "application/xml");
@@ -90,7 +107,7 @@
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                // enable strem cache
+                // enable stream cache
                 context.setStreamCaching(true);
 
                 from("jetty:http://localhost:9080/test").to("mock:a");
@@ -121,6 +138,20 @@
                 from("jetty:http://localhost:9080/hello?sessionSupport=true").process(proc);
                 
                 from("jetty:http://localhost:9080/echo").process(printProcessor).process(printProcessor);
+                
+                Processor procPostParameters = new Processor() {
+                    public void process(Exchange exchange) throws Exception {
+                        HttpServletRequest req = exchange.getIn().getBody(HttpServletRequest.class);
+                        String value = req.getParameter("request");                        
+                        if (value != null) {
+                            exchange.getOut().setBody(value);
+                        } else {
+                            exchange.getOut().setBody("Can't get a right parameter");
+                        }
+                    }
+                };
+                
+                from("jetty:http://localhost:9080/post").process(procPostParameters);
             }
         };
     }