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 2016/08/26 16:02:31 UTC

[03/23] camel git commit: CAMEL-10164: swagger component for making rest calls with swagger schema validation and facade to actual HTTP client in use

CAMEL-10164: swagger component for making rest calls with swagger schema validation and facade to actual HTTP client in use


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

Branch: refs/heads/master
Commit: 6012ddc44aae2c8db4de331da2835d6c1fadd6bf
Parents: 6b3f6f61
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Aug 26 13:29:57 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Aug 26 16:53:31 2016 +0200

----------------------------------------------------------------------
 .../src/main/java/org/apache/camel/Exchange.java       |  2 ++
 .../org/apache/camel/component/rest/RestProducer.java  |  6 ++++--
 .../java/org/apache/camel/http/common/HttpHelper.java  | 12 +++++++++---
 .../camel/component/jetty/JettyHttpComponent.java      |  4 ++++
 .../camel/component/netty4/http/NettyHttpHelper.java   | 13 +++++++++++--
 .../netty4/http/rest/RestNettyProducerGetTest.java     |  2 +-
 .../camel/component/restlet/RestletProducer.java       | 13 +++++++++++--
 .../camel/component/undertow/UndertowHelper.java       | 13 +++++++------
 8 files changed, 49 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/6012ddc4/camel-core/src/main/java/org/apache/camel/Exchange.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/Exchange.java b/camel-core/src/main/java/org/apache/camel/Exchange.java
index 80b3b92..0a00d18 100644
--- a/camel-core/src/main/java/org/apache/camel/Exchange.java
+++ b/camel-core/src/main/java/org/apache/camel/Exchange.java
@@ -184,6 +184,8 @@ public interface Exchange {
     String REDELIVERY_MAX_COUNTER  = "CamelRedeliveryMaxCounter";
     String REDELIVERY_EXHAUSTED    = "CamelRedeliveryExhausted";
     String REDELIVERY_DELAY        = "CamelRedeliveryDelay";
+    String REST_HTTP_URI           = "CamelRestHttpUri";
+    String REST_HTTP_QUERY         = "CamelRestHttpQuery";
     String ROLLBACK_ONLY           = "CamelRollbackOnly";
     String ROLLBACK_ONLY_LAST      = "CamelRollbackOnlyLast";
     String ROUTE_STOP              = "CamelRouteStop";

http://git-wip-us.apache.org/repos/asf/camel/blob/6012ddc4/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java
index 13fed37..87475d6 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestProducer.java
@@ -136,7 +136,8 @@ public class RestProducer extends DefaultAsyncProducer {
         }
 
         if (query != null) {
-            exchange.getIn().setHeader(Exchange.HTTP_QUERY, query);
+            // the query parameters for the rest call to be used
+            exchange.getIn().setHeader(Exchange.REST_HTTP_QUERY, query);
         }
 
         if (hasPath) {
@@ -151,7 +152,8 @@ public class RestProducer extends DefaultAsyncProducer {
             } else {
                 overrideUri = String.format("%s/%s", host, resolvedUriTemplate);
             }
-            exchange.getIn().setHeader(Exchange.HTTP_URI, overrideUri);
+            // the http uri for the rest call to be used
+            exchange.getIn().setHeader(Exchange.REST_HTTP_URI, overrideUri);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/6012ddc4/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
index 9749b97..8d64351 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpHelper.java
@@ -254,8 +254,10 @@ public final class HttpHelper {
      * @return the URL to invoke
      */
     public static String createURL(Exchange exchange, HttpCommonEndpoint endpoint) {
-        String uri = null;
-        if (!(endpoint.isBridgeEndpoint())) {
+        // rest producer may provide an override url to be used which we should discard if using (hence the remove)
+        String uri = (String) exchange.getIn().removeHeader(Exchange.REST_HTTP_URI);
+
+        if (uri == null && !(endpoint.isBridgeEndpoint())) {
             uri = exchange.getIn().getHeader(Exchange.HTTP_URI, String.class);
         }
         if (uri == null) {
@@ -311,9 +313,13 @@ public final class HttpHelper {
      */
     public static URI createURI(Exchange exchange, String url, HttpCommonEndpoint endpoint) throws URISyntaxException {
         URI uri = new URI(url);
+        // rest producer may provide an override query string to be used which we should discard if using (hence the remove)
+        String queryString = (String) exchange.getIn().removeHeader(Exchange.REST_HTTP_QUERY);
         // is a query string provided in the endpoint URI or in a header
         // (header overrules endpoint, raw query header overrules query header)
-        String queryString = exchange.getIn().getHeader(Exchange.HTTP_RAW_QUERY, String.class);
+        if (queryString == null) {
+            queryString = exchange.getIn().getHeader(Exchange.HTTP_RAW_QUERY, String.class);
+        }
         if (queryString == null) {
             queryString = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/6012ddc4/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
index adc28f1..3f1ea94 100644
--- a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
+++ b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
@@ -62,6 +62,7 @@ import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.HostUtils;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.ServiceHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.URISupport;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
@@ -1147,6 +1148,9 @@ public abstract class JettyHttpComponent extends HttpCommonComponent implements
             setProperties(camelContext, consumer, config.getConsumerProperties());
         }
 
+        // the endpoint must be started before creating the producer
+        ServiceHelper.startService(endpoint);
+
         return consumer;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/6012ddc4/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpHelper.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpHelper.java
index cfdc4b4..3dc8d7e 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpHelper.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpHelper.java
@@ -184,7 +184,11 @@ public final class NettyHttpHelper {
      * @return the URL to invoke
      */
     public static String createURL(Exchange exchange, NettyHttpEndpoint endpoint) throws URISyntaxException {
-        String uri = endpoint.getEndpointUri();
+        // rest producer may provide an override url to be used which we should discard if using (hence the remove)
+        String uri = (String) exchange.getIn().removeHeader(Exchange.REST_HTTP_URI);
+        if (uri == null) {
+            uri = endpoint.getEndpointUri();
+        }
 
         // resolve placeholders in uri
         try {
@@ -236,9 +240,14 @@ public final class NettyHttpHelper {
      */
     public static URI createURI(Exchange exchange, String url, NettyHttpEndpoint endpoint) throws URISyntaxException {
         URI uri = new URI(url);
+
+        // rest producer may provide an override query string to be used which we should discard if using (hence the remove)
+        String queryString = (String) exchange.getIn().removeHeader(Exchange.REST_HTTP_QUERY);
         // is a query string provided in the endpoint URI or in a header
         // (header overrules endpoint, raw query header overrules query header)
-        String queryString = exchange.getIn().getHeader(Exchange.HTTP_RAW_QUERY, String.class);
+        if (queryString == null) {
+            queryString = exchange.getIn().getHeader(Exchange.HTTP_RAW_QUERY, String.class);
+        }
         if (queryString == null) {
             queryString = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/6012ddc4/components/camel-netty4-http/src/test/java/org/apache/camel/component/netty4/http/rest/RestNettyProducerGetTest.java
----------------------------------------------------------------------
diff --git a/components/camel-netty4-http/src/test/java/org/apache/camel/component/netty4/http/rest/RestNettyProducerGetTest.java b/components/camel-netty4-http/src/test/java/org/apache/camel/component/netty4/http/rest/RestNettyProducerGetTest.java
index afbc912..bcef723 100644
--- a/components/camel-netty4-http/src/test/java/org/apache/camel/component/netty4/http/rest/RestNettyProducerGetTest.java
+++ b/components/camel-netty4-http/src/test/java/org/apache/camel/component/netty4/http/rest/RestNettyProducerGetTest.java
@@ -28,7 +28,7 @@ public class RestNettyProducerGetTest extends BaseNettyTest {
     public void testNettyProducerGet() throws Exception {
         String out = fluentTemplate.withHeader("id", "123").to("direct:start").request(String.class);
         assertNotNull(out);
-        // TODO: [123, {id}];Donald Duck
+        // TODO: [123, 123];Donald Duck
         // assertEquals("123;Donald Duck", out);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/6012ddc4/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java
index a33b9e6..97116fb 100644
--- a/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java
+++ b/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java
@@ -154,7 +154,12 @@ public class RestletProducer extends DefaultAsyncProducer {
     }
 
     private static String buildUri(RestletEndpoint endpoint, Exchange exchange) throws CamelExchangeException {
-        String uri = endpoint.getProtocol() + "://" + endpoint.getHost() + ":" + endpoint.getPort() + endpoint.getUriPattern();
+        // rest producer may provide an override url to be used which we should discard if using (hence the remove)
+        String uri = (String) exchange.getIn().removeHeader(Exchange.REST_HTTP_URI);
+
+        if (uri == null) {
+            uri = endpoint.getProtocol() + "://" + endpoint.getHost() + ":" + endpoint.getPort() + endpoint.getUriPattern();
+        }
 
         // substitute { } placeholders in uri and use mandatory headers
         LOG.trace("Substituting '(value)' placeholders in uri: {}", uri);
@@ -176,7 +181,11 @@ public class RestletProducer extends DefaultAsyncProducer {
             matcher.reset(uri);
         }
 
-        String query = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class);
+        // rest producer may provide an override query string to be used which we should discard if using (hence the remove)
+        String query = (String) exchange.getIn().removeHeader(Exchange.REST_HTTP_QUERY);
+        if (query == null) {
+            query = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class);
+        }
         if (query != null) {
             LOG.trace("Adding query: {} to uri: {}", query, uri);
             uri = addQueryToUri(uri, query);

http://git-wip-us.apache.org/repos/asf/camel/blob/6012ddc4/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHelper.java b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHelper.java
index f9eda6f..3500cae 100644
--- a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHelper.java
+++ b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowHelper.java
@@ -45,7 +45,8 @@ public final class UndertowHelper {
      * @return the URL to invoke
      */
     public static String createURL(Exchange exchange, UndertowEndpoint endpoint) {
-        String uri = exchange.getIn().getHeader(Exchange.HTTP_URI, String.class);
+        // rest producer may provide an override url to be used which we should discard if using (hence the remove)
+        String uri = (String) exchange.getIn().removeHeader(Exchange.REST_HTTP_URI);
         if (uri == null) {
             uri = endpoint.getHttpURI().toASCIIString();
         }
@@ -90,8 +91,12 @@ public final class UndertowHelper {
      */
     public static URI createURI(Exchange exchange, String url, UndertowEndpoint endpoint) throws URISyntaxException {
         URI uri = new URI(url);
+        // rest producer may provide an override query string to be used which we should discard if using (hence the remove)
+        String queryString = (String) exchange.getIn().removeHeader(Exchange.REST_HTTP_QUERY);
         // is a query string provided in the endpoint URI or in a header (header overrules endpoint)
-        String queryString = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class);
+        if (queryString == null) {
+            queryString = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class);
+        }
         if (queryString == null) {
             queryString = endpoint.getHttpURI().getRawQuery();
         }
@@ -126,10 +131,6 @@ public final class UndertowHelper {
 
     /**
      * Creates the HttpMethod to use to call the remote server, often either its GET or POST.
-     *
-     * @param exchange the exchange
-     * @return the created method
-     * @throws URISyntaxException
      */
     public static HttpString createMethod(Exchange exchange, UndertowEndpoint endpoint, boolean hasPayload) throws URISyntaxException {
         // is a query string provided in the endpoint URI or in a header (header