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);
}