You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/08/05 13:56:36 UTC
svn commit: r801145 - in /camel/trunk/components:
camel-http/src/main/java/org/apache/camel/component/http/
camel-jetty/src/test/java/org/apache/camel/component/jetty/
Author: davsclaus
Date: Wed Aug 5 11:56:35 2009
New Revision: 801145
URL: http://svn.apache.org/viewvc?rev=801145&view=rev
Log:
CAMEL-1879: added http servlet response as well to HttpMessage so end users can get hold of it when needed.
Added:
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRequestResponseTest.java
- copied, changed from r801074, camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyRouteTest.java
Modified:
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpConverter.java
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMessage.java
Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java?rev=801145&r1=801144&r2=801145&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java Wed Aug 5 11:56:35 2009
@@ -54,7 +54,7 @@
// Have the camel process the HTTP exchange.
DefaultExchange exchange = new DefaultExchange(consumer.getEndpoint(), ExchangePattern.InOut);
- exchange.setIn(new HttpMessage(exchange, request));
+ exchange.setIn(new HttpMessage(exchange, request, response));
consumer.getProcessor().process(exchange);
// HC: The getBinding() is interesting because it illustrates the
Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpConverter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpConverter.java?rev=801145&r1=801144&r2=801145&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpConverter.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpConverter.java Wed Aug 5 11:56:35 2009
@@ -21,6 +21,7 @@
import java.io.InputStream;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.apache.camel.Converter;
import org.apache.camel.Exchange;
@@ -47,6 +48,14 @@
}
@Converter
+ public static HttpServletResponse toServletResponse(HttpMessage message) {
+ if (message == null) {
+ return null;
+ }
+ return message.getResponse();
+ }
+
+ @Converter
public static ServletInputStream toServletInputStream(HttpMessage message) throws IOException {
HttpServletRequest request = toServletRequest(message);
if (request != null) {
Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java?rev=801145&r1=801144&r2=801145&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java Wed Aug 5 11:56:35 2009
@@ -84,7 +84,7 @@
public Exchange createExchange(HttpServletRequest request, HttpServletResponse response) {
DefaultExchange exchange = new DefaultExchange(this, ExchangePattern.InOut);
- exchange.setIn(new HttpMessage(exchange, request));
+ exchange.setIn(new HttpMessage(exchange, request, response));
return exchange;
}
Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMessage.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMessage.java?rev=801145&r1=801144&r2=801145&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMessage.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpMessage.java Wed Aug 5 11:56:35 2009
@@ -19,6 +19,7 @@
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.apache.camel.Exchange;
import org.apache.camel.RuntimeCamelException;
@@ -30,10 +31,12 @@
public class HttpMessage extends DefaultMessage {
private HttpServletRequest request;
+ private HttpServletResponse response;
- public HttpMessage(Exchange exchange, HttpServletRequest request) {
+ public HttpMessage(Exchange exchange, HttpServletRequest request, HttpServletResponse response) {
setExchange(exchange);
this.request = request;
+ this.response = response;
// use binding to read the request allowing end users to use their
// implementation of the binding
@@ -44,6 +47,10 @@
return request;
}
+ public HttpServletResponse getResponse() {
+ return response;
+ }
+
@Override
protected Object createBody() {
try {
Copied: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRequestResponseTest.java (from r801074, camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyRouteTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRequestResponseTest.java?p2=camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRequestResponseTest.java&p1=camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyRouteTest.java&r1=801074&r2=801145&rev=801145&view=diff
==============================================================================
--- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyRouteTest.java (original)
+++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRequestResponseTest.java Wed Aug 5 11:56:35 2009
@@ -17,24 +17,26 @@
package org.apache.camel.component.jetty;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
+import org.apache.camel.component.http.HttpMessage;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
/**
- * Unit test for wiki demonstration.
+ * Unit test for request response in message
*/
-public class JettyRouteTest extends CamelTestSupport {
+public class HttpRequestResponseTest extends CamelTestSupport {
@Test
- public void testSendToJetty() throws Exception {
+ public void testHttpServletRequestResponse() throws Exception {
Object response = template.requestBody("http://localhost:9080/myapp/myservice", "bookid=123");
// convert the response to a String
String body = context.getTypeConverter().convertTo(String.class, response);
- assertEquals("<html><body>Book 123 is Camel in Action</body></html>", body);
+ assertEquals("Written by servlet response<html><body>Book 123 is Camel in Action</body></html>", body);
}
@Override
@@ -48,7 +50,6 @@
};
}
- // START SNIPPET: e2
public class MyBookService implements Processor {
public void process(Exchange exchange) throws Exception {
// just get the body as a string
@@ -58,6 +59,18 @@
HttpServletRequest req = exchange.getIn().getBody(HttpServletRequest.class);
assertNotNull(req);
+ // we have access to the HttpServletResponse here and we can grab it if we need it
+ HttpServletResponse res = exchange.getIn().getBody(HttpServletResponse.class);
+ assertNotNull(res);
+
+ // and they should also be on HttpMessage
+ HttpMessage msg = (HttpMessage) exchange.getIn();
+ assertNotNull(msg.getRequest());
+ assertNotNull(msg.getResponse());
+
+ // and we can use servlet response to write to output stream also
+ res.getOutputStream().print("Written by servlet response");
+
// for unit testing
assertEquals("bookid=123", body);
@@ -65,6 +78,5 @@
exchange.getOut().setBody("<html><body>Book 123 is Camel in Action</body></html>");
}
}
- // END SNIPPET: e2
-}
+}
\ No newline at end of file