This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 4f081d08b3da979dd8898a8fa47f2cde96f25284 Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Fri Jun 14 10:38:33 2019 +0200 Use the CamelContext instead of the RouteContext --- .../java/org/apache/camel/spi/RouteContext.java | 9 ------- .../camel/impl/engine/DefaultRouteContext.java | 15 ----------- .../camel/builder/EndpointConsumerBuilder.java | 4 +-- .../camel/builder/EndpointProducerBuilder.java | 4 +-- .../org/apache/camel/reifier/RouteReifier.java | 2 +- .../java/org/apache/camel/reifier/SendReifier.java | 2 +- .../builder/endpoint/AbstractEndpointBuilder.java | 9 +++++-- .../builder/endpoint/EndpointRouteBuilder.java | 30 ++++++++++++++++++++++ 8 files changed, 43 insertions(+), 32 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java b/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java index a7c194a..48c8967 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java @@ -72,15 +72,6 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware { Endpoint resolveEndpoint(String uri, String ref); /** - * Resolves an endpoint from the scheme, path and properties - * - * @param uri the URI scheme - * @param properties the endpoint properties - * @return the resolved endpoint - */ - Endpoint resolveEndpoint(String uri, Map<String, Object> properties); - - /** * lookup an object by name and type * * @param name the name to lookup diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java index 1f52ff3..ebbc5a4 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java @@ -24,13 +24,11 @@ import java.util.Map; import java.util.Set; import org.apache.camel.CamelContext; -import org.apache.camel.Component; import org.apache.camel.Endpoint; import org.apache.camel.ErrorHandlerFactory; import org.apache.camel.NamedNode; import org.apache.camel.NoSuchEndpointException; import org.apache.camel.Processor; -import org.apache.camel.ResolveEndpointFailedException; import org.apache.camel.Route; import org.apache.camel.RuntimeCamelException; import org.apache.camel.ShutdownRoute; @@ -46,8 +44,6 @@ import org.apache.camel.spi.RouteError; import org.apache.camel.spi.RoutePolicy; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.util.ObjectHelper; -import org.apache.camel.util.StringHelper; -import org.apache.camel.util.URISupport; /** * The context used to activate new routing rules @@ -149,17 +145,6 @@ public class DefaultRouteContext implements RouteContext { } } - public Endpoint resolveEndpoint(String uri, Map<String, Object> properties) { - Endpoint endpoint = camelContext.hasEndpoint(uri); - if (endpoint == null) { - endpoint = camelContext.getEndpoint(uri, properties); - } - if (endpoint != null) { - return endpoint; - } - throw new NoSuchEndpointException(uri); - } - public <T> T lookup(String name, Class<T> type) { return getCamelContext().getRegistry().lookupByNameAndType(name, type); } diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java b/core/camel-core/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java index 77257bd..7d5b9ce 100644 --- a/core/camel-core/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java +++ b/core/camel-core/src/main/java/org/apache/camel/builder/EndpointConsumerBuilder.java @@ -16,13 +16,13 @@ */ package org.apache.camel.builder; +import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.NoSuchEndpointException; -import org.apache.camel.spi.RouteContext; public interface EndpointConsumerBuilder { - Endpoint resolve(RouteContext context) throws NoSuchEndpointException; + Endpoint resolve(CamelContext context) throws NoSuchEndpointException; String getUri(); diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/EndpointProducerBuilder.java b/core/camel-core/src/main/java/org/apache/camel/builder/EndpointProducerBuilder.java index 2ced548..d003692 100644 --- a/core/camel-core/src/main/java/org/apache/camel/builder/EndpointProducerBuilder.java +++ b/core/camel-core/src/main/java/org/apache/camel/builder/EndpointProducerBuilder.java @@ -16,13 +16,13 @@ */ package org.apache.camel.builder; +import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.NoSuchEndpointException; -import org.apache.camel.spi.RouteContext; public interface EndpointProducerBuilder { - Endpoint resolve(RouteContext context) throws NoSuchEndpointException; + Endpoint resolve(CamelContext context) throws NoSuchEndpointException; String getUri(); 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 ce36e23..1675c38 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 @@ -329,7 +329,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> { if (endpoint == null) { EndpointConsumerBuilder def = definition.getInput().getEndpointConsumerBuilder(); if (def != null) { - endpoint = def.resolve(routeContext); + endpoint = def.resolve(routeContext.getCamelContext()); } else { endpoint = routeContext.resolveEndpoint(definition.getInput().getEndpointUri()); } 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 e541143..9f2397a 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 @@ -40,7 +40,7 @@ class SendReifier extends ProcessorReifier<SendDefinition<?>> { if (definition.getEndpointProducerBuilder() == null) { return context.resolveEndpoint(definition.getEndpointUri(), (String) null); } else { - return definition.getEndpointProducerBuilder().resolve(context); + return definition.getEndpointProducerBuilder().resolve(context.getCamelContext()); } } else { return definition.getEndpoint(); diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/AbstractEndpointBuilder.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/AbstractEndpointBuilder.java index fde528e..518c756 100644 --- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/AbstractEndpointBuilder.java +++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/AbstractEndpointBuilder.java @@ -23,6 +23,7 @@ import java.util.TreeMap; import javax.xml.bind.annotation.XmlTransient; +import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.NoSuchEndpointException; import org.apache.camel.RuntimeCamelException; @@ -41,10 +42,14 @@ public class AbstractEndpointBuilder { this.path = path; } - public Endpoint resolve(RouteContext context) throws NoSuchEndpointException { + public Endpoint resolve(CamelContext context) throws NoSuchEndpointException { Map<String, Object> remaining = new HashMap<>(); String uri = computeUri(remaining); - return context.resolveEndpoint(uri, remaining); + Endpoint endpoint = context.getEndpoint(uri, properties); + if (endpoint == null) { + throw new NoSuchEndpointException(uri); + } + return null; } public String getUri() { diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointRouteBuilder.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointRouteBuilder.java index 172c4d0..d6f30e1 100644 --- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointRouteBuilder.java +++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointRouteBuilder.java @@ -16,11 +16,41 @@ */ package org.apache.camel.builder.endpoint; +import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.util.function.ThrowingConsumer; /** * A route builder which gives access to the endpoint DSL */ public abstract class EndpointRouteBuilder extends RouteBuilder implements EndpointBuilderFactory { + public EndpointRouteBuilder() { + } + + public EndpointRouteBuilder(CamelContext context) { + super(context); + } + + /** + * Add routes to a context using a lambda expression. + * It can be used as following: + * <pre> + * RouteBuilder.addRoutes(context, rb -> + * rb.from("direct:inbound").bean(ProduceTemplateBean.class))); + * </pre> + * + * @param context the camel context to add routes + * @param rbc a lambda expression receiving the {@code RouteBuilder} to use to create routes + * @throws Exception if an error occurs + */ + public static void addEndpointRoutes(CamelContext context, ThrowingConsumer<EndpointRouteBuilder, Exception> rbc) throws Exception { + context.addRoutes(new EndpointRouteBuilder(context) { + @Override + public void configure() throws Exception { + rbc.accept(this); + } + }); + } + }