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 <gno...@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); }