Repository: camel
Updated Branches:
  refs/heads/master 61ccc8215 -> 21ed4aa12


[CAMEL-8969] Support Content-Type in coap component


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/21ed4aa1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/21ed4aa1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/21ed4aa1

Branch: refs/heads/master
Commit: 21ed4aa120abd61c036299ce64c69a0277d20e02
Parents: 61ccc82
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri Jul 24 15:29:07 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Jul 24 15:29:32 2015 -0400

----------------------------------------------------------------------
 .../org/apache/camel/builder/RouteBuilder.java  |  6 ++--
 .../apache/camel/model/rest/RestDefinition.java |  3 ++
 .../apache/camel/coap/CamelCoapResource.java    | 13 +++++++--
 .../org/apache/camel/coap/CoAPComponent.java    |  3 +-
 .../camel/coap/CoAPRestComponentTest.java       | 29 ++++++++++++++++----
 5 files changed, 42 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/21ed4aa1/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java 
b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
index c0ea23f..a5872e9 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -424,8 +424,8 @@ public abstract class RouteBuilder extends BuilderSupport 
implements RoutesBuild
         getRestCollection().setCamelContext(camelContext);
 
         // setup rest configuration before adding the rests
-        if (getRestConfiguration() != null) {
-            for (Map.Entry<String, RestConfigurationDefinition> entry : 
getRestConfiguration().entrySet()) {
+        if (getRestConfigurations() != null) {
+            for (Map.Entry<String, RestConfigurationDefinition> entry : 
getRestConfigurations().entrySet()) {
                 RestConfiguration config = 
entry.getValue().asRestConfiguration(getContext());
                 if ("".equals(entry.getKey())) {
                     camelContext.setRestConfiguration(config);
@@ -449,7 +449,7 @@ public abstract class RouteBuilder extends BuilderSupport 
implements RoutesBuild
         return restCollection;
     }
 
-    public Map<String, RestConfigurationDefinition> getRestConfiguration() {
+    public Map<String, RestConfigurationDefinition> getRestConfigurations() {
         return restConfigurations;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/21ed4aa1/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java 
b/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java
index f1b9d26..ab244cb 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java
@@ -479,6 +479,9 @@ public class RestDefinition extends 
OptionalIdentifiedDefinition<RestDefinition>
      */
     public List<RouteDefinition> asRouteDefinition(CamelContext camelContext) {
         List<RouteDefinition> answer = new ArrayList<RouteDefinition>();
+        if (camelContext.getRestConfigurations().isEmpty()) {
+            camelContext.getRestConfiguration();
+        }
         for (RestConfiguration config : camelContext.getRestConfigurations()) {
             addRouteDefinition(camelContext, answer, config.getComponent());
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/21ed4aa1/components/camel-coap/src/main/java/org/apache/camel/coap/CamelCoapResource.java
----------------------------------------------------------------------
diff --git 
a/components/camel-coap/src/main/java/org/apache/camel/coap/CamelCoapResource.java
 
b/components/camel-coap/src/main/java/org/apache/camel/coap/CamelCoapResource.java
index ecd8e10..7c709b6 100644
--- 
a/components/camel-coap/src/main/java/org/apache/camel/coap/CamelCoapResource.java
+++ 
b/components/camel-coap/src/main/java/org/apache/camel/coap/CamelCoapResource.java
@@ -24,6 +24,8 @@ import java.util.concurrent.ConcurrentHashMap;
 import org.apache.camel.Message;
 import org.eclipse.californium.core.CoapResource;
 import org.eclipse.californium.core.coap.CoAP.ResponseCode;
+import org.eclipse.californium.core.coap.MediaTypeRegistry;
+import org.eclipse.californium.core.coap.OptionSet;
 import org.eclipse.californium.core.network.Exchange;
 import org.eclipse.californium.core.server.resources.CoapExchange;
 import org.eclipse.californium.core.server.resources.Resource;
@@ -86,7 +88,8 @@ final class CamelCoapResource extends CoapResource {
             camelExchange = consumer.getEndpoint().createExchange();
             consumer.createUoW(camelExchange);
             
-            for (String s : exchange.getRequest().getOptions().getUriQuery()) {
+            OptionSet options = exchange.getRequest().getOptions();
+            for (String s : options.getUriQuery()) {
                 int i = s.indexOf('=');
                 if (i == -1) {
                     camelExchange.getIn().setHeader(s, "");
@@ -95,6 +98,11 @@ final class CamelCoapResource extends CoapResource {
                 }
             }
             
+            if (options.hasContentFormat()) {
+                String mt = 
MediaTypeRegistry.toString(options.getContentFormat());
+                
camelExchange.getIn().setHeader(org.apache.camel.Exchange.CONTENT_TYPE, mt);
+            }
+            
             List<String> path = 
exchange.getRequest().getOptions().getUriPath();
             LinkedList<Resource> resources = new LinkedList<>();
             Resource r = this;
@@ -121,7 +129,8 @@ final class CamelCoapResource extends CoapResource {
             consumer.getProcessor().process(camelExchange);            
             Message target = camelExchange.hasOut() ? camelExchange.getOut() : 
camelExchange.getIn();
             
-            cexchange.respond(ResponseCode.CONTENT, 
target.getBody(byte[].class));
+            int format = 
MediaTypeRegistry.parse(target.getHeader(org.apache.camel.Exchange.CONTENT_TYPE,
 String.class));
+            cexchange.respond(ResponseCode.CONTENT, 
target.getBody(byte[].class), format);
 
         } catch (Exception e) {
             cexchange.respond(ResponseCode.INTERNAL_SERVER_ERROR, 
e.getMessage());

http://git-wip-us.apache.org/repos/asf/camel/blob/21ed4aa1/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java 
b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
index a0f265b..9ad4d42 100644
--- 
a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
+++ 
b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
@@ -92,7 +92,8 @@ public class CoAPComponent extends UriEndpointComponent 
implements RestConsumerF
         String query = URISupport.createQueryString(map);
         
         
-        String url = config.getScheme() + "://" + config.getHost();
+        String url = (config.getScheme() == null ? "coap" : config.getScheme())
+            + "://" + config.getHost();
         if (config.getPort() != -1) {
             url += ":" + config.getPort();
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/21ed4aa1/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTest.java
 
b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTest.java
index 2ac3137..d201578 100644
--- 
a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTest.java
+++ 
b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestComponentTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.coap;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URL;
+import java.net.URLConnection;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
@@ -33,8 +34,15 @@ import 
org.eclipse.californium.core.network.config.NetworkConfig;
 import org.junit.Test;
 
 public class CoAPRestComponentTest extends CamelTestSupport {
-    int coapport = AvailablePortFinder.getNextAvailable();
-    int jettyport = AvailablePortFinder.getNextAvailable();
+    static int coapport = AvailablePortFinder.getNextAvailable();
+    static int jettyport = AvailablePortFinder.getNextAvailable();
+    
+    
+    /*
+    public boolean isCreateCamelContextPerClass() {
+        return true;
+    } 
+    */   
     
     @Test
     public void testCoAP() throws Exception {
@@ -42,6 +50,13 @@ public class CoAPRestComponentTest extends CamelTestSupport {
         CoapClient client;
         CoapResponse rsp;
         
+        
+        URL url = new URL("http://localhost:"; + jettyport + 
"/TestResource/Ducky");
+        URLConnection connect = url.openConnection();
+        InputStream ins = connect.getInputStream();
+        assertEquals("Hello Ducky", IOConverter.toString(new 
InputStreamReader(ins)));
+
+        
         client = new CoapClient("coap://localhost:" + coapport + 
"/TestResource/Ducky");
         client.setTimeout(1000000);
         rsp = client.get();
@@ -55,11 +70,8 @@ public class CoAPRestComponentTest extends CamelTestSupport {
         assertEquals("Hello Ducky", rsp.getResponseText());
         rsp = client.post("data", MediaTypeRegistry.TEXT_PLAIN);
         assertEquals("Hello Ducky: data", rsp.getResponseText());
+        assertEquals(MediaTypeRegistry.TEXT_PLAIN, 
rsp.getOptions().getContentFormat());
         
-        
-        URL url = new URL("http://localhost:"; + jettyport + 
"/TestResource/Ducky");
-        InputStream ins = url.openConnection().getInputStream();
-        assertEquals("Hello Ducky", IOConverter.toString(new 
InputStreamReader(ins)));
     }
 
     @Override
@@ -85,7 +97,12 @@ public class CoAPRestComponentTest extends CamelTestSupport {
                 from("direct:post1").process(new Processor() {
                     public void process(Exchange exchange) throws Exception {
                         String id = exchange.getIn().getHeader("id", 
String.class);
+                        String ct = 
exchange.getIn().getHeader(Exchange.CONTENT_TYPE, String.class);
+                        if (!"text/plain".equals(ct)) {
+                            throw new Exception("No content type");
+                        }
                         exchange.getOut().setBody("Hello " + id + ": " + 
exchange.getIn().getBody(String.class));
+                        exchange.getOut().setHeader(Exchange.CONTENT_TYPE, ct);
                     }
                 });
             }

Reply via email to