You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ch...@apache.org on 2007/09/26 19:07:20 UTC
svn commit: r579718 - in /activemq/camel/trunk/components:
camel-http/src/main/java/org/apache/camel/component/http/
camel-jetty/src/main/java/org/apache/camel/component/jetty/
camel-jetty/src/test/java/org/apache/camel/component/jetty/
Author: chirino
Date: Wed Sep 26 10:07:18 2007
New Revision: 579718
URL: http://svn.apache.org/viewvc?rev=579718&view=rev
Log:
Fix for https://issues.apache.org/activemq/browse/CAMEL-158
Modified:
activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
activemq/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
activemq/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
activemq/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java
Modified: activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java?rev=579718&r1=579717&r2=579718&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java (original)
+++ activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java Wed Sep 26 10:07:18 2007
@@ -57,7 +57,7 @@
// protocol exchanges.
// now lets output to the response
- consumer.getBinding().writeResponse(exchange);
+ consumer.getBinding().writeResponse(exchange, response);
} catch (Exception e) {
throw new ServletException(e);
Modified: activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java?rev=579718&r1=579717&r2=579718&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java (original)
+++ activemq/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpBinding.java Wed Sep 26 10:07:18 2007
@@ -17,8 +17,13 @@
package org.apache.camel.component.http;
import java.io.IOException;
+import java.io.InputStream;
+import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.camel.Message;
/**
* @version $Revision$
@@ -26,10 +31,43 @@
public class HttpBinding {
/**
- * Writes the exchange to the servlet response
+ * Writes the exchange to the servlet response
+ *
+ * @param response
+ * @throws IOException
*/
- public void writeResponse(HttpExchange exchange) {
- /** TODO */
+ public void writeResponse(HttpExchange exchange, HttpServletResponse response) throws IOException {
+ Message out = exchange.getOut();
+ if (out != null) {
+
+ // Write out the headers...
+ for (String key : out.getHeaders().keySet()) {
+ String value = out.getHeader(key, String.class);
+ if (value != null) {
+ response.setHeader(key, value);
+ }
+ }
+
+ // Write out the body.
+ if (out.getBody() != null) {
+
+ // Try to stream the body since that would be the most
+ // efficient..
+ InputStream is = out.getBody(InputStream.class);
+ if (is != null) {
+ ServletOutputStream os = response.getOutputStream();
+ int c;
+ while ((c = is.read()) >= 0) {
+ os.write(c);
+ }
+ } else {
+ String data = out.getBody(String.class);
+ if (data != null) {
+ response.getWriter().print(data);
+ }
+ }
+ }
+ }
}
/**
Modified: activemq/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java?rev=579718&r1=579717&r2=579718&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java (original)
+++ activemq/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java Wed Sep 26 10:07:18 2007
@@ -88,14 +88,14 @@
// protocol exchanges.
// now lets output to the response
- consumer.getBinding().writeResponse(exchange);
+ consumer.getBinding().writeResponse(exchange, response);
return;
}
if (continuation.isResumed() ) {
HttpExchange exchange = (HttpExchange)continuation.getObject();
// now lets output to the response
- consumer.getBinding().writeResponse(exchange);
+ consumer.getBinding().writeResponse(exchange, response);
return;
}
Modified: activemq/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java?rev=579718&r1=579717&r2=579718&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java (original)
+++ activemq/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java Wed Sep 26 10:07:18 2007
@@ -97,6 +97,7 @@
getServer().addConnector(connector);
connector.start();
connectorRef = new ConnectorRef(connector);
+ connectors.put(connectorKey, connectorRef);
} else {
// ref track the connector
connectorRef.increment();
Modified: activemq/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java?rev=579718&r1=579717&r2=579718&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java (original)
+++ activemq/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java Wed Sep 26 10:07:18 2007
@@ -16,13 +16,17 @@
*/
package org.apache.camel.component.jetty;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
import java.util.List;
import java.util.Map;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
+import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
@@ -53,6 +57,20 @@
assertTrue("Should be more than one header but was: " + headers, headers.size() > 0);
}
+ public void testHelloEndpoint() throws Exception {
+
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ InputStream is = new URL("http://localhost:8080/hello").openStream();
+ int c;
+ while ((c = is.read()) >= 0) {
+ os.write(c);
+ }
+
+ String data = new String(os.toByteArray());
+ assertEquals("<b>Hello World</b>", data);
+
+ }
+
protected void invokeHttpEndpoint() throws IOException {
template.sendBodyAndHeader("http://localhost:8080/test", expectedBody, "Content-Type", "application/xml");
}
@@ -62,6 +80,13 @@
return new RouteBuilder() {
public void configure() {
from("jetty:http://localhost:8080/test").to("mock:a");
+
+ Processor proc = new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getOut(true).setBody("<b>Hello World</b>");
+ }
+ };
+ from("jetty:http://localhost:8080/hello").process(proc);
}
};
}