You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2018/03/23 11:56:46 UTC

[camel] branch master updated: CAMEL-12401: Add REST context path support for CoAP component

This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 3d8d854  CAMEL-12401: Add REST context path support for CoAP component
3d8d854 is described below

commit 3d8d85424723c2783f254802e37ca69e2ee90695
Author: James Netherton <ja...@gmail.com>
AuthorDate: Fri Mar 23 11:54:44 2018 +0000

    CAMEL-12401: Add REST context path support for CoAP component
---
 .../java/org/apache/camel/coap/CoAPComponent.java  | 47 ++++++++++++++-------
 .../java/org/apache/camel/coap/CoAPCORSTest.java   | 16 +++----
 .../org/apache/camel/coap/CoAPComponentTest.java   | 29 ++++++-------
 .../camel/coap/CoAPConsumerDefaultPortTest.java    |  9 +---
 .../apache/camel/coap/CoAPMethodRestrictTest.java  |  6 +--
 .../java/org/apache/camel/coap/CoAPMethodTest.java | 11 +----
 .../java/org/apache/camel/coap/CoAPPingTest.java   | 15 +++----
 .../apache/camel/coap/CoAPRestComponentTest.java   |  1 -
 ...tPortTest.java => CoAPRestContextPathTest.java} | 26 +++++++-----
 .../org/apache/camel/coap/CoAPRestVerbTest.java    | 49 +++++++---------------
 ...erDefaultPortTest.java => CoAPTestSupport.java} | 34 +++++++--------
 11 files changed, 103 insertions(+), 140 deletions(-)

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 6ca54d9..e6d1c85 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
@@ -28,6 +28,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.spi.RestConfiguration;
 import org.apache.camel.spi.RestConsumerFactory;
+import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.HostUtils;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
@@ -77,15 +78,19 @@ public class CoAPComponent extends UriEndpointComponent implements RestConsumerF
     }
 
     @Override
-    public Consumer createConsumer(CamelContext camelContext,
-                                   Processor processor,
-                                   String verb,
-                                   String basePath,
-                                   String uriTemplate,
-                                   String consumes,
-                                   String produces,
-                                   RestConfiguration configuration,
-                                   Map<String, Object> parameters) throws Exception {
+    public Consumer createConsumer(CamelContext camelContext, Processor processor, String verb, String basePath,
+            String uriTemplate, String consumes, String produces, RestConfiguration configuration, Map<String, Object> parameters) throws Exception {
+
+        String path = basePath;
+        if (uriTemplate != null) {
+            // make sure to avoid double slashes
+            if (uriTemplate.startsWith("/")) {
+                path = path + uriTemplate;
+            } else {
+                path = path + "/" + uriTemplate;
+            }
+        }
+        path = FileUtil.stripLeadingSeparator(path);
 
         RestConfiguration config = configuration;
         if (config == null) {
@@ -113,16 +118,28 @@ public class CoAPComponent extends UriEndpointComponent implements RestConsumerF
             map.putAll(config.getEndpointProperties());
         }
 
+        String scheme = config.getScheme() == null ? "coap" : config.getScheme();
         String query = URISupport.createQueryString(map);
+        int port = 0;
 
-        String url = (config.getScheme() == null ? "coap" : config.getScheme()) + "://" + host;
-        if (config.getPort() != -1) {
-            url += ":" + config.getPort();
+        int num = config.getPort();
+        if (num > 0) {
+            port = num;
         }
-        if (uriTemplate == null) {
-            uriTemplate = "";
+
+        // prefix path with context-path if configured in rest-dsl configuration
+        String contextPath = config.getContextPath();
+        if (ObjectHelper.isNotEmpty(contextPath)) {
+            contextPath = FileUtil.stripTrailingSeparator(contextPath);
+            contextPath = FileUtil.stripLeadingSeparator(contextPath);
+            if (ObjectHelper.isNotEmpty(contextPath)) {
+                path = contextPath + "/" + path;
+            }
         }
-        url += basePath + uriTemplate + "?coapMethodRestrict=" + verb.toUpperCase(Locale.US);
+
+        String restrict = verb.toUpperCase(Locale.US);
+        String url = String.format("%s://%s:%d/%s?coapMethodRestrict=%s", scheme, host, port, path, restrict);
+
         if (!query.isEmpty()) {
             url += "&" + query;
         }
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPCORSTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPCORSTest.java
index 38812f3..adc9e8c 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPCORSTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPCORSTest.java
@@ -18,11 +18,8 @@ package org.apache.camel.coap;
 
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.eclipse.californium.core.CoapClient;
 import org.eclipse.californium.core.CoapResponse;
-import org.eclipse.californium.core.network.config.NetworkConfig;
 import org.junit.Test;
 
 /**
@@ -30,17 +27,14 @@ import org.junit.Test;
  *
  * CORS configuration is ignored and REST endpoints function as per normal
  */
-public class CoAPCORSTest extends CamelTestSupport {
+public class CoAPCORSTest extends CoAPTestSupport {
     private static final String COAP_RESPONSE = "{ \"foo\": \"bar\" }";
-    private static final int COAP_PORT = AvailablePortFinder.getNextAvailable();
 
     @Test
     public void testEnableCors() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
-
-        CoapClient client = new CoapClient("coap://localhost:" + COAP_PORT + "/rest");
-        CoapResponse coapResponse = client.get();
-        assertEquals(COAP_RESPONSE, coapResponse.getResponseText());
+        CoapClient client = createClient("/rest");
+        CoapResponse response = client.get();
+        assertEquals(COAP_RESPONSE, response.getResponseText());
     }
 
     @Override
@@ -48,7 +42,7 @@ public class CoAPCORSTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                restConfiguration().component("coap").port(COAP_PORT).enableCORS(true);
+                restConfiguration().component("coap").port(PORT).enableCORS(true);
 
                 rest().get("/rest").route().setBody(constant(COAP_RESPONSE));
             }
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java
index a01b52d..15c317b 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTest.java
@@ -21,27 +21,22 @@ import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.eclipse.californium.core.CoapClient;
 import org.eclipse.californium.core.CoapResponse;
 import org.eclipse.californium.core.coap.CoAP;
 import org.eclipse.californium.core.coap.MediaTypeRegistry;
-import org.eclipse.californium.core.network.config.NetworkConfig;
 import org.junit.Test;
 
-public class CoAPComponentTest extends CamelTestSupport {
-    static final int PORT = AvailablePortFinder.getNextAvailable();
-    
+public class CoAPComponentTest extends CoAPTestSupport {
+
     @Produce(uri = "direct:start")
     protected ProducerTemplate sender;
     
     @Test
-    public void testCoAP() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
-        CoapClient client = new CoapClient("coap://localhost:" + PORT + "/TestResource");
-        CoapResponse rsp = client.get();
-        assertEquals("Hello ", rsp.getResponseText());
+    public void testCoAPComponent() throws Exception {
+        CoapClient client = createClient("/TestResource");
+        CoapResponse response = client.get();
+        assertEquals("Hello ", response.getResponseText());
         
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedMinimumMessageCount(1);
@@ -57,13 +52,13 @@ public class CoAPComponentTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("coap://localhost:" + PORT + "/TestResource")
+                fromF("coap://localhost:%d/TestResource", PORT)
                     .convertBodyTo(String.class)
-                    .to("log:exch")
-                    .transform(body().prepend("Hello "))
-                    .to("log:exch");    
-                
-                from("direct:start").to("coap://localhost:" + PORT + "/TestResource").to("mock:result");
+                    .transform(body().prepend("Hello "));
+
+                from("direct:start")
+                    .toF("coap://localhost:%d/TestResource", PORT)
+                    .to("mock:result");
             }
         };
     }
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPConsumerDefaultPortTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPConsumerDefaultPortTest.java
index 5a56e26..0ee86d0 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPConsumerDefaultPortTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPConsumerDefaultPortTest.java
@@ -17,21 +17,16 @@
 package org.apache.camel.coap;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.eclipse.californium.core.CoapClient;
 import org.eclipse.californium.core.CoapResponse;
-import org.eclipse.californium.core.network.config.NetworkConfig;
 import org.junit.Test;
 
-public class CoAPConsumerDefaultPortTest extends CamelTestSupport {
+public class CoAPConsumerDefaultPortTest extends CoAPTestSupport {
 
     @Test
     public void testCoAPConsumerWithDefaultPort() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
-
-        CoapClient client = new CoapClient("coap://localhost:" + CoAPComponent.DEFAULT_PORT + "/greeting");
+        CoapClient client = createClient("/greeting", CoAPComponent.DEFAULT_PORT);
         CoapResponse response = client.get();
-
         assertEquals("Hello World", response.getResponseText());
     }
 
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodRestrictTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodRestrictTest.java
index c65d3bf..f9b44f1 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodRestrictTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodRestrictTest.java
@@ -18,14 +18,10 @@ package org.apache.camel.coap;
 
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.eclipse.californium.core.network.config.NetworkConfig;
 import org.junit.Test;
 
-public class CoAPMethodRestrictTest extends CamelTestSupport {
-
-    private static final int PORT = AvailablePortFinder.getNextAvailable();
+public class CoAPMethodRestrictTest extends CoAPTestSupport {
 
     @Test
     public void testDefaultCoAPMethodRestrict() {
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodTest.java
index 142e8a7..b007b2a 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPMethodTest.java
@@ -18,19 +18,12 @@ package org.apache.camel.coap;
 
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.eclipse.californium.core.network.config.NetworkConfig;
 import org.junit.Test;
 
-public class CoAPMethodTest extends CamelTestSupport {
-
-    private static final int PORT = AvailablePortFinder.getNextAvailable();
+public class CoAPMethodTest extends CoAPTestSupport {
 
     @Test
     public void testCoAPMethodDefaultGet() {
-        NetworkConfig.createStandardWithoutFile();
-
         // No body means GET
         String result = template.requestBody("coap://localhost:" + PORT + "/test/a", null, String.class);
         assertEquals("GET: /test/a", result);
@@ -38,8 +31,6 @@ public class CoAPMethodTest extends CamelTestSupport {
 
     @Test
     public void testCoAPMethodDefaultPost() {
-        NetworkConfig.createStandardWithoutFile();
-
         // Providing a body means POST
         String result = template.requestBody("coap://localhost:" + PORT + "/test/b", "Camel", String.class);
         assertEquals("Hello Camel", result);
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPPingTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPPingTest.java
index c488d50..793b986 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPPingTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPPingTest.java
@@ -20,20 +20,15 @@ import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.eclipse.californium.core.network.config.NetworkConfig;
 import org.junit.Test;
 
-public class CoAPPingTest extends CamelTestSupport {
-    static final int PORT = AvailablePortFinder.getNextAvailable();
-    
+public class CoAPPingTest extends CoAPTestSupport {
+
     @Produce(uri = "direct:start")
     protected ProducerTemplate sender;
     
     @Test
     public void testCoAP() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedMinimumMessageCount(1);
         mock.expectedBodiesReceived(true);
@@ -46,12 +41,14 @@ public class CoAPPingTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception { 
-                from("coap://localhost:" + PORT + "/TestResource")
+                fromF("coap://localhost:%d/TestResource", PORT)
                     .to("log:exch")
                     .transform(body().convertTo(Boolean.class))
                     .to("log:exch");
                 
-                from("direct:start").to("coap://localhost:" + PORT + "/TestResource").to("mock:result");
+                from("direct:start")
+                    .toF("coap://localhost:%d/TestResource", PORT)
+                    .to("mock:result");
             }
         };
     }
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 12cfd83..2aa58e9 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
@@ -38,7 +38,6 @@ public class CoAPRestComponentTest extends CamelTestSupport {
         CoapResponse rsp;
 
         client = new CoapClient("coap://localhost:" + coapport + "/TestResource/Ducky");
-        client.setTimeout(1000000);
         rsp = client.get();
         assertEquals(ResponseCode.CONTENT, rsp.getCode());
         assertEquals("Hello Ducky", rsp.getResponseText());
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPConsumerDefaultPortTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestContextPathTest.java
similarity index 64%
copy from components/camel-coap/src/test/java/org/apache/camel/coap/CoAPConsumerDefaultPortTest.java
copy to components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestContextPathTest.java
index 5a56e26..6267da8 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPConsumerDefaultPortTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestContextPathTest.java
@@ -17,22 +17,19 @@
 package org.apache.camel.coap;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.eclipse.californium.core.CoapClient;
 import org.eclipse.californium.core.CoapResponse;
-import org.eclipse.californium.core.network.config.NetworkConfig;
+import org.eclipse.californium.core.coap.CoAP.ResponseCode;
 import org.junit.Test;
 
-public class CoAPConsumerDefaultPortTest extends CamelTestSupport {
+public class CoAPRestContextPathTest extends CoAPTestSupport {
 
     @Test
-    public void testCoAPConsumerWithDefaultPort() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
-
-        CoapClient client = new CoapClient("coap://localhost:" + CoAPComponent.DEFAULT_PORT + "/greeting");
+    public void testCoAPRestContextPath() throws Exception {
+        CoapClient client = createClient("/rest/services/test/a");
         CoapResponse response = client.get();
-
-        assertEquals("Hello World", response.getResponseText());
+        assertEquals(ResponseCode.CONTENT, response.getCode());
+        assertEquals("GET: /test/a", response.getResponseText());
     }
 
     @Override
@@ -40,8 +37,15 @@ public class CoAPConsumerDefaultPortTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("coap:localhost/greeting")
-                    .setBody(constant("Hello World"));
+                restConfiguration("coap")
+                    .host("localhost")
+                    .port(PORT)
+                    .contextPath("/rest/services");
+
+                rest("/test")
+                    .get("/a")
+                        .route()
+                            .setBody(constant("GET: /test/a"));
             }
         };
     }
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestVerbTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestVerbTest.java
index af9668b..06dfb2d 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestVerbTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPRestVerbTest.java
@@ -18,82 +18,61 @@ package org.apache.camel.coap;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.junit4.CamelTestSupport;
 import org.eclipse.californium.core.CoapClient;
 import org.eclipse.californium.core.CoapResponse;
 import org.eclipse.californium.core.coap.MediaTypeRegistry;
-import org.eclipse.californium.core.network.config.NetworkConfig;
 import org.junit.Test;
 
-public class CoAPRestVerbTest extends CamelTestSupport {
-    static int coapport = AvailablePortFinder.getNextAvailable();
+public class CoAPRestVerbTest extends CoAPTestSupport {
 
     @Test
     public void testGetAll() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
-
-        CoapClient client = new CoapClient("coap://localhost:" + coapport + "/users");
-        client.setTimeout(1000000);
-        CoapResponse rsp = client.get();
-
-        assertEquals("[{ \"id\":\"1\", \"name\":\"Scott\" },{ \"id\":\"2\", \"name\":\"Claus\" }]", rsp.getResponseText());
+        CoapClient client = createClient("/users");
+        CoapResponse response = client.get();
+        assertEquals("[{ \"id\":\"1\", \"name\":\"Scott\" },{ \"id\":\"2\", \"name\":\"Claus\" }]", response.getResponseText());
     }
 
     @Test
     public void testGetOne() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
-
-        CoapClient client = new CoapClient("coap://localhost:" + coapport + "/users/1");
-        client.setTimeout(1000000);
-        CoapResponse rsp = client.get();
-
-        assertEquals("{ \"id\":\"1\", \"name\":\"Scott\" }", rsp.getResponseText());
+        CoapClient client = createClient("/users/1");
+        CoapResponse response = client.get();
+        assertEquals("{ \"id\":\"1\", \"name\":\"Scott\" }", response.getResponseText());
     }
 
     @Test
     public void testPost() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
-
         final String body = "{ \"id\":\"1\", \"name\":\"Scott\" }";
 
         MockEndpoint mock = getMockEndpoint("mock:create");
         mock.expectedBodiesReceived(body);
 
-        CoapClient client = new CoapClient("coap://localhost:" + coapport + "/users");
-        client.setTimeout(1000000);
-        CoapResponse rsp = client.post(body, MediaTypeRegistry.APPLICATION_JSON);
+        CoapClient client = createClient("/users");
+        client.post(body, MediaTypeRegistry.APPLICATION_JSON);
 
         assertMockEndpointsSatisfied();
     }
 
     @Test
     public void testPut() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
-
         final String body = "{ \"id\":\"1\", \"name\":\"Scott\" }";
 
         MockEndpoint mock = getMockEndpoint("mock:update");
         mock.expectedBodiesReceived(body);
         mock.expectedHeaderReceived("id", "1");
 
-        CoapClient client = new CoapClient("coap://localhost:" + coapport + "/users/1");
-        client.setTimeout(1000000);
-        CoapResponse rsp = client.put(body, MediaTypeRegistry.APPLICATION_JSON);
+        CoapClient client = createClient("/users/1");
+        client.put(body, MediaTypeRegistry.APPLICATION_JSON);
 
         assertMockEndpointsSatisfied();
     }
 
     @Test
     public void testDelete() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
-
         MockEndpoint mock = getMockEndpoint("mock:delete");
         mock.expectedHeaderReceived("id", "1");
 
-        CoapClient client = new CoapClient("coap://localhost:" + coapport + "/users/1");
-        client.setTimeout(1000000);
-        CoapResponse rsp = client.delete();
+        CoapClient client = createClient("/users/1");
+        client.delete();
 
         assertMockEndpointsSatisfied();
     }
@@ -103,7 +82,7 @@ public class CoAPRestVerbTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                restConfiguration().component("coap").host("localhost").port(coapport);
+                restConfiguration().component("coap").host("localhost").port(PORT);
 
                 rest()
                     .get("/users").route().transform().constant("[{ \"id\":\"1\", \"name\":\"Scott\" },{ \"id\":\"2\", \"name\":\"Claus\" }]").endRest()
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPConsumerDefaultPortTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPTestSupport.java
similarity index 57%
copy from components/camel-coap/src/test/java/org/apache/camel/coap/CoAPConsumerDefaultPortTest.java
copy to components/camel-coap/src/test/java/org/apache/camel/coap/CoAPTestSupport.java
index 5a56e26..82de155 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPConsumerDefaultPortTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPTestSupport.java
@@ -16,33 +16,29 @@
  */
 package org.apache.camel.coap;
 
-import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.camel.util.FileUtil;
 import org.eclipse.californium.core.CoapClient;
-import org.eclipse.californium.core.CoapResponse;
 import org.eclipse.californium.core.network.config.NetworkConfig;
-import org.junit.Test;
+import org.junit.Before;
 
-public class CoAPConsumerDefaultPortTest extends CamelTestSupport {
+public class CoAPTestSupport extends CamelTestSupport {
 
-    @Test
-    public void testCoAPConsumerWithDefaultPort() throws Exception {
-        NetworkConfig.createStandardWithoutFile();
+    protected static final int PORT = AvailablePortFinder.getNextAvailable();
 
-        CoapClient client = new CoapClient("coap://localhost:" + CoAPComponent.DEFAULT_PORT + "/greeting");
-        CoapResponse response = client.get();
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        NetworkConfig.createStandardWithoutFile();
+    }
 
-        assertEquals("Hello World", response.getResponseText());
+    protected CoapClient createClient(String path) {
+        return createClient(path, PORT);
     }
 
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("coap:localhost/greeting")
-                    .setBody(constant("Hello World"));
-            }
-        };
+    protected CoapClient createClient(String path, int port) {
+        String url = String.format("coap://localhost:%d/%s", port, FileUtil.stripLeadingSeparator(path));
+        return new CoapClient(url);
     }
 }

-- 
To stop receiving notification emails like this one, please contact
jamesnetherton@apache.org.