You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2009/02/18 13:29:46 UTC
svn commit: r745494 - in /camel/trunk/components/camel-web/src/main:
java/org/apache/camel/rest/resources/
webapp/org/apache/camel/rest/resources/EndpointResource/
Author: jstrachan
Date: Wed Feb 18 12:29:46 2009
New Revision: 745494
URL: http://svn.apache.org/viewvc?rev=745494&view=rev
Log:
added a simple send message ability
Added:
camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/send.jsp (contents, props changed)
- copied, changed from r745452, camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/index.jsp
Modified:
camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelContextResource.java
camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointResource.java
camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/index.jsp
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelContextResource.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelContextResource.java?rev=745494&r1=745493&r2=745494&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelContextResource.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/CamelContextResource.java Wed Feb 18 12:29:46 2009
@@ -23,6 +23,7 @@
import com.sun.jersey.spi.resource.Singleton;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
+import org.apache.camel.ProducerTemplate;
import org.apache.camel.model.RouteType;
import org.apache.camel.model.RoutesType;
import org.apache.camel.rest.model.Camel;
@@ -36,6 +37,7 @@
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
+import javax.annotation.PreDestroy;
import java.util.List;
@@ -50,9 +52,12 @@
public class CamelContextResource {
private CamelContext camelContext;
+ private ProducerTemplate template;
- public CamelContextResource(@Inject CamelContext camelContext) {
+ public CamelContextResource(@Inject CamelContext camelContext) throws Exception {
this.camelContext = camelContext;
+ this.template = camelContext.createProducerTemplate();
+ template.start();
}
public CamelContext getCamelContext() {
@@ -63,6 +68,13 @@
return camelContext.getName();
}
+ @PreDestroy
+ public void close() throws Exception {
+ if (template != null) {
+ template.stop();
+ }
+ }
+
// XML / JSON representations
//-------------------------------------------------------------------------
@@ -99,7 +111,7 @@
// TODO lets assume the ID is the endpoint
Endpoint endpoint = getCamelContext().getEndpoint(id);
if (endpoint != null) {
- return new EndpointResource(endpoint);
+ return new EndpointResource(camelContext, template, endpoint);
} else {
return null;
}
Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointResource.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointResource.java?rev=745494&r1=745493&r2=745494&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointResource.java (original)
+++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/rest/resources/EndpointResource.java Wed Feb 18 12:29:46 2009
@@ -16,20 +16,45 @@
*/
package org.apache.camel.rest.resources;
+import com.sun.jersey.api.representation.Form;
+import com.sun.jersey.api.view.ImplicitProduces;
+import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.ProducerTemplate;
import org.apache.camel.rest.model.EndpointLink;
-import com.sun.jersey.api.view.ImplicitProduces;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* @version $Revision$
*/
-@ImplicitProduces({MediaType.TEXT_HTML})
+@ImplicitProduces(Constants.HTML_MIME_TYPES)
public class EndpointResource {
+ private final CamelContext camelContext;
private final Endpoint endpoint;
+ private final ProducerTemplate template;
+
+ @Context
+ HttpHeaders headers;
+
- public EndpointResource(Endpoint endpoint) {
+ public EndpointResource(CamelContext camelContext, ProducerTemplate template, Endpoint endpoint) {
+ this.camelContext = camelContext;
+ this.template = template;
this.endpoint = endpoint;
}
@@ -40,4 +65,53 @@
public String getUri() {
return endpoint.getEndpointUri();
}
+
+ public ProducerTemplate getTemplate() {
+ return template;
+ }
+
+ @POST
+ @Consumes({MediaType.TEXT_PLAIN, MediaType.TEXT_HTML, MediaType.TEXT_XML, MediaType.APPLICATION_XML})
+ public Response postMessage(final String body) throws URISyntaxException {
+ sendMessage(body);
+ return Response.ok().build();
+ }
+
+ @POST
+ @Consumes("application/x-www-form-urlencoded")
+ public Response processForm(Form formData) throws URISyntaxException {
+ System.out.println("Received form! " + formData);
+ String body = formData.getFirst("text", String.class);
+ sendMessage(body);
+ return Response.seeOther(new URI(getHref())).build();
+ }
+
+ protected void sendMessage(final String body) {
+ System.out.println("Sending to " + endpoint + " body: " + body);
+
+ template.send(endpoint, new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ Message in = exchange.getIn();
+ in.setBody(body);
+
+ // lets pass in all the HTTP headers
+ if (headers != null) {
+ MultivaluedMap<String, String> requestHeaders = headers.getRequestHeaders();
+ Set<Map.Entry<String, List<String>>> entries = requestHeaders.entrySet();
+ for (Map.Entry<String, List<String>> entry : entries) {
+ String key = entry.getKey();
+ List<String> values = entry.getValue();
+ int size = values.size();
+ if (size == 1) {
+ in.setHeader(key, values.get(0));
+ } else if (size > 0) {
+ in.setHeader(key, values);
+ }
+ }
+ }
+ }
+ });
+ }
+
+
}
Modified: camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/index.jsp
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/index.jsp?rev=745494&r1=745493&r2=745494&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/index.jsp (original)
+++ camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/index.jsp Wed Feb 18 12:29:46 2009
@@ -7,5 +7,9 @@
<h1>Endpoint: ${it.uri}</h1>
+
+ <ul>
+ <li><a href="${it.href}/send">Send to this endpoint</a></li>
+ </ul>
</body>
</html>
Copied: camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/send.jsp (from r745452, camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/index.jsp)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/send.jsp?p2=camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/send.jsp&p1=camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/index.jsp&r1=745452&r2=745494&rev=745494&view=diff
==============================================================================
--- camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/index.jsp (original)
+++ camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/send.jsp Wed Feb 18 12:29:46 2009
@@ -1,11 +1,16 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Endpoint ${it.uri}</title>
- </head>
- <body>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>Endpoint ${it.uri}</title>
+</head>
+<body>
- <h1>Endpoint: ${it.uri}</h1>
+<h1>Endpoint: ${it.uri}</h1>
- </body>
+<form action="${it.href}" method="post">
+ <input type="submit" value="Send"> <input type="reset"> <br>
+ <textarea name="text" rows="30" cols="80"></textarea>
+</form>
+
+</body>
</html>
Propchange: camel/trunk/components/camel-web/src/main/webapp/org/apache/camel/rest/resources/EndpointResource/send.jsp
------------------------------------------------------------------------------
svn:eol-style = native