You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2019/06/12 13:43:11 UTC

[camel] 01/02: Make sure the endpoint builders are used when getting the endpoint uri in the From/SendDefinition

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

gnodet pushed a commit to branch endpoint-dsl
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 6003423e6360d54edaa5b0167748870240015589
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Jun 12 13:40:45 2019 +0200

    Make sure the endpoint builders are used when getting the endpoint uri in the From/SendDefinition
---
 .../org/apache/camel/builder/AdviceWithTasks.java  |  4 +--
 .../org/apache/camel/builder/RouteBuilder.java     |  2 +-
 .../java/org/apache/camel/impl/RouteIdFactory.java |  4 +--
 .../camel/model/AbstractEndpointBuilder.java       | 10 +++++-
 .../camel/model/EndpointConsumerBuilder.java       |  2 ++
 .../camel/model/EndpointProducerBuilder.java       |  2 ++
 .../org/apache/camel/model/FromDefinition.java     | 40 +++++++++-------------
 .../apache/camel/model/RouteDefinitionHelper.java  |  6 ++--
 .../org/apache/camel/model/SendDefinition.java     | 28 ++++++++++-----
 .../org/apache/camel/reifier/RouteReifier.java     |  2 +-
 .../java/org/apache/camel/reifier/SendReifier.java |  2 +-
 11 files changed, 58 insertions(+), 44 deletions(-)

diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java b/core/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java
index 97c5f17..c0c6404 100644
--- a/core/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java
+++ b/core/camel-core/src/main/java/org/apache/camel/builder/AdviceWithTasks.java
@@ -391,7 +391,7 @@ public final class AdviceWithTasks {
         return new AdviceWithTask() {
             public void task() throws Exception {
                 FromDefinition from = route.getInput();
-                LOG.info("AdviceWith replace input from [{}] --> [{}]", from.getUri(), uri);
+                LOG.info("AdviceWith replace input from [{}] --> [{}]", from.getEndpointUri(), uri);
                 from.setEndpoint(null);
                 from.setUri(uri);
             }
@@ -402,7 +402,7 @@ public final class AdviceWithTasks {
         return new AdviceWithTask() {
             public void task() throws Exception {
                 FromDefinition from = route.getInput();
-                LOG.info("AdviceWith replace input from [{}] --> [{}]", from.getUri(), endpoint.getEndpointUri());
+                LOG.info("AdviceWith replace input from [{}] --> [{}]", from.getEndpointUri(), endpoint.getEndpointUri());
                 from.setUri(null);
                 from.setEndpoint(endpoint);
             }
diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java b/core/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
index f47771d..8bc1977 100644
--- a/core/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/core/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -487,7 +487,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
                 boolean hasRestApi = false;
                 for (RouteDefinition route : camelContext.getExtension(Model.class).getRouteDefinitions()) {
                     FromDefinition from = route.getInput();
-                    if (from.getUri() != null && from.getUri().startsWith("rest-api:")) {
+                    if (from.getEndpointUri() != null && from.getEndpointUri().startsWith("rest-api:")) {
                         hasRestApi = true;
                     }
                 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/impl/RouteIdFactory.java b/core/camel-core/src/main/java/org/apache/camel/impl/RouteIdFactory.java
index ecb3667..490279d 100644
--- a/core/camel-core/src/main/java/org/apache/camel/impl/RouteIdFactory.java
+++ b/core/camel-core/src/main/java/org/apache/camel/impl/RouteIdFactory.java
@@ -88,7 +88,7 @@ public class RouteIdFactory implements NodeIdFactory {
         }
 
         FromDefinition from = routeDefinition.getInput();
-        String uri = from.getUri();
+        String uri = from.getEndpointUri();
 
         // we want to use the context-path of the route
         int colon = uri.indexOf(':');
@@ -152,7 +152,7 @@ public class RouteIdFactory implements NodeIdFactory {
         }
 
         FromDefinition from = route.getInput();
-        String uri = from.getUri();
+        String uri = from.getEndpointUri();
 
         String[] uriSplitted = uri.split(":");
 
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/AbstractEndpointBuilder.java b/core/camel-core/src/main/java/org/apache/camel/model/AbstractEndpointBuilder.java
index dadd5a7..05b1601 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/AbstractEndpointBuilder.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/AbstractEndpointBuilder.java
@@ -38,7 +38,15 @@ public class AbstractEndpointBuilder<T extends AbstractEndpointBuilder> {
     }
 
     public Endpoint resolve(RouteContext context) throws NoSuchEndpointException {
-        return context.resolveEndpoint(scheme + ":" + path, properties);
+        return context.resolveEndpoint(getUri(), properties);
+    }
+
+    public String getUri() {
+        return scheme + ":" + path;
+    }
+
+    public String toString() {
+        return getUri();
     }
 
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/EndpointConsumerBuilder.java b/core/camel-core/src/main/java/org/apache/camel/model/EndpointConsumerBuilder.java
index f661f3e..42e7c7f 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/EndpointConsumerBuilder.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/EndpointConsumerBuilder.java
@@ -24,4 +24,6 @@ public interface EndpointConsumerBuilder {
 
     Endpoint resolve(RouteContext context) throws NoSuchEndpointException;
 
+    String getUri();
+
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/EndpointProducerBuilder.java b/core/camel-core/src/main/java/org/apache/camel/model/EndpointProducerBuilder.java
index f8ee1f0..b304ea2 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/EndpointProducerBuilder.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/EndpointProducerBuilder.java
@@ -24,4 +24,6 @@ public interface EndpointProducerBuilder {
 
     Endpoint resolve(RouteContext context) throws NoSuchEndpointException;
 
+    String getUri();
+
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/FromDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/FromDefinition.java
index b212bc0..b1f4bdc 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/FromDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/FromDefinition.java
@@ -51,7 +51,7 @@ public class FromDefinition extends OptionalIdentifiedDefinition<FromDefinition>
     }
 
     public FromDefinition(EndpointConsumerBuilder endpointConsumerBuilder) {
-        this.endpointConsumerBuilder = endpointConsumerBuilder;
+        setEndpointConsumerBuilder(endpointConsumerBuilder);
     }
 
     @Override
@@ -66,27 +66,30 @@ public class FromDefinition extends OptionalIdentifiedDefinition<FromDefinition>
 
     @Override
     public String getLabel() {
-        return description(getUri(), getEndpoint());
+        String uri = getEndpointUri();
+        return uri != null ? uri : "no uri supplied";
     }
 
     @Override
     public String getEndpointUri() {
-        return getUri();
-    }
-
-    // Properties
-    // -----------------------------------------------------------------------
-
-    public String getUri() {
         if (uri != null) {
             return uri;
         } else if (endpoint != null) {
             return endpoint.getEndpointUri();
+        } else if (endpointConsumerBuilder != null) {
+            return endpointConsumerBuilder.getUri();
         } else {
             return null;
         }
     }
 
+    // Properties
+    // -----------------------------------------------------------------------
+
+    public String getUri() {
+        return uri;
+    }
+
     /**
      * Sets the URI of the endpoint to use
      *
@@ -101,7 +104,7 @@ public class FromDefinition extends OptionalIdentifiedDefinition<FromDefinition>
      * Gets tne endpoint if an {@link Endpoint} instance was set.
      * <p/>
      * This implementation may return <tt>null</tt> which means you need to use
-     * {@link #getUri()} to get information about the endpoint.
+     * {@link #getEndpointUri()} to get information about the endpoint.
      *
      * @return the endpoint instance, or <tt>null</tt>
      */
@@ -110,11 +113,8 @@ public class FromDefinition extends OptionalIdentifiedDefinition<FromDefinition>
     }
 
     public void setEndpoint(Endpoint endpoint) {
+        clear();
         this.endpoint = endpoint;
-        this.uri = null;
-        if (endpoint != null) {
-            this.uri = endpoint.getEndpointUri();
-        }
     }
 
     public EndpointConsumerBuilder getEndpointConsumerBuilder() {
@@ -122,22 +122,14 @@ public class FromDefinition extends OptionalIdentifiedDefinition<FromDefinition>
     }
 
     public void setEndpointConsumerBuilder(EndpointConsumerBuilder endpointConsumerBuilder) {
+        clear();
         this.endpointConsumerBuilder = endpointConsumerBuilder;
     }
 
     // Implementation methods
     // -----------------------------------------------------------------------
-    protected static String description(String uri, Endpoint endpoint) {
-        if (endpoint != null) {
-            return endpoint.getEndpointUri();
-        } else if (uri != null) {
-            return uri;
-        } else {
-            return "no uri or ref supplied!";
-        }
-    }
-
     protected void clear() {
+        this.endpointConsumerBuilder = null;
         this.endpoint = null;
         this.uri = null;
     }
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java b/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
index f24d0e6..0a46539 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
@@ -146,7 +146,7 @@ public final class RouteDefinitionHelper {
             } else {
                 RestDefinition rest = route.getRestDefinition();
                 if (rest != null && route.isRest()) {
-                    VerbDefinition verb = findVerbDefinition(rest, route.getInput().getUri());
+                    VerbDefinition verb = findVerbDefinition(rest, route.getInput().getEndpointUri());
                     if (verb != null) {
                         String id = verb.getId();
                         if (verb.hasCustomIdAssigned() && ObjectHelper.isNotEmpty(id) && !customIds.contains(id)) {
@@ -193,7 +193,7 @@ public final class RouteDefinitionHelper {
             }
             RestDefinition rest = route.getRestDefinition();
             if (rest != null && route.isRest()) {
-                VerbDefinition verb = findVerbDefinition(rest, route.getInput().getUri());
+                VerbDefinition verb = findVerbDefinition(rest, route.getInput().getEndpointUri());
                 if (verb != null) {
                     String id = verb.idOrCreate(context.adapt(ExtendedCamelContext.class).getNodeIdFactory());
                     if (!verb.getUsedForGeneratingNodeId()) {
@@ -571,7 +571,7 @@ public final class RouteDefinitionHelper {
                     match = false;
 
                     // a bit more logic to lookup the endpoint as it can be uri/ref based
-                    String uri = route.getInput().getUri();
+                    String uri = route.getInput().getEndpointUri();
                     // if the pattern is not a ref itself, then resolve the ref uris, so we can match the actual uri's with each other
                     if (!isRefPattern) {
                         if (uri != null && uri.startsWith("ref:")) {
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java b/core/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java
index de6e67c..68eaced 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java
@@ -46,10 +46,13 @@ public abstract class SendDefinition<Type extends ProcessorDefinition<Type>> ext
 
     @Override
     public String getEndpointUri() {
-        if (uri != null) {
+        if (endpointProducerBuilder != null) {
+            return endpointProducerBuilder.getUri();
+        } else if (endpoint != null) {
+            return endpoint.getEndpointUri();
+        } else {
             return uri;
         }
-        return null;
     }
 
     public String getUri() {
@@ -62,14 +65,15 @@ public abstract class SendDefinition<Type extends ProcessorDefinition<Type>> ext
      * @param uri the uri of the endpoint
      */
     public void setUri(String uri) {
+        clear();
         this.uri = uri;
     }
 
     /**
-     * Gets tne endpoint if an {@link Endpoint} instance was set.
+     * Gets the endpoint if an {@link Endpoint} instance was set.
      * <p/>
      * This implementation may return <tt>null</tt> which means you need to use
-     * {@link #getUri()} to get information about the endpoint.
+     * {@link #getEndpointUri()} to get information about the endpoint.
      *
      * @return the endpoint instance, or <tt>null</tt>
      */
@@ -78,11 +82,9 @@ public abstract class SendDefinition<Type extends ProcessorDefinition<Type>> ext
     }
 
     public void setEndpoint(Endpoint endpoint) {
+        clear();
         this.endpoint = endpoint;
-        this.uri = null;
-        if (endpoint != null) {
-            this.uri = endpoint.getEndpointUri();
-        }
+        this.uri = endpoint != null ? endpoint.getEndpointUri() : null;
     }
 
     public EndpointProducerBuilder getEndpointProducerBuilder() {
@@ -90,6 +92,7 @@ public abstract class SendDefinition<Type extends ProcessorDefinition<Type>> ext
     }
 
     public void setEndpointProducerBuilder(EndpointProducerBuilder endpointProducerBuilder) {
+        clear();
         this.endpointProducerBuilder = endpointProducerBuilder;
     }
 
@@ -99,6 +102,13 @@ public abstract class SendDefinition<Type extends ProcessorDefinition<Type>> ext
 
     @Override
     public String getLabel() {
-        return FromDefinition.description(getUri(), getEndpoint());
+        String uri = getEndpointUri();
+        return uri != null ? uri : "no uri supplied";
+    }
+
+    protected void clear() {
+        this.endpointProducerBuilder = null;
+        this.endpoint = null;
+        this.uri = null;
     }
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 14d079c..fa9ba4c 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -331,7 +331,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
             if (def != null) {
                 endpoint = def.resolve(routeContext);
             } else {
-                endpoint = routeContext.resolveEndpoint(definition.getInput().getUri());
+                endpoint = routeContext.resolveEndpoint(definition.getInput().getEndpointUri());
             }
         }
         routeContext.setEndpoint(endpoint);
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/SendReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/SendReifier.java
index 75389ee..e541143 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/SendReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/SendReifier.java
@@ -38,7 +38,7 @@ class SendReifier extends ProcessorReifier<SendDefinition<?>> {
     public Endpoint resolveEndpoint(RouteContext context) {
         if (definition.getEndpoint() == null) {
             if (definition.getEndpointProducerBuilder() == null) {
-                return context.resolveEndpoint(definition.getUri(), (String) null);
+                return context.resolveEndpoint(definition.getEndpointUri(), (String) null);
             } else {
                 return definition.getEndpointProducerBuilder().resolve(context);
             }