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