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
The following commit(s) were added to refs/heads/master by this push: new fea5d68 [CAMEL-13295] Add a helper method to easily add a route fea5d68 is described below commit fea5d6831ab86781fe42e625fc7b3942089f2894 Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Thu Mar 7 11:44:33 2019 +0100 [CAMEL-13295] Add a helper method to easily add a route --- .../reactor/engine/ReactorStreamsService.java | 8 ++----- .../rxjava2/engine/RxJavaStreamsService.java | 26 +++++----------------- .../org/apache/camel/builder/RouteBuilder.java | 22 ++++++++++++++++++ 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/components/camel-reactor/src/main/java/org/apache/camel/component/reactor/engine/ReactorStreamsService.java b/components/camel-reactor/src/main/java/org/apache/camel/component/reactor/engine/ReactorStreamsService.java index 232ae89..34a1a3d 100644 --- a/components/camel-reactor/src/main/java/org/apache/camel/component/reactor/engine/ReactorStreamsService.java +++ b/components/camel-reactor/src/main/java/org/apache/camel/component/reactor/engine/ReactorStreamsService.java @@ -147,12 +147,8 @@ final class ReactorStreamsService extends ServiceSupport implements CamelReactiv try { String uuid = context.getUuidGenerator().generateUuid(); - context.addRoutes(new RouteBuilder() { - @Override - public void configure() throws Exception { - from(camelUri).to("reactive-streams:" + uuid); - } - }); + RouteBuilder.addRoutes(context, rb -> + rb.from(camelUri).to("reactive-streams:" + uuid)); return uuid; } catch (Exception e) { diff --git a/components/camel-rxjava2/src/main/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsService.java b/components/camel-rxjava2/src/main/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsService.java index 31634a6..86c6847 100644 --- a/components/camel-rxjava2/src/main/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsService.java +++ b/components/camel-rxjava2/src/main/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsService.java @@ -146,12 +146,8 @@ final class RxJavaStreamsService extends ServiceSupport implements CamelReactive try { String uuid = context.getUuidGenerator().generateUuid(); - context.addRoutes(new RouteBuilder() { - @Override - public void configure() throws Exception { - from(camelUri).to("reactive-streams:" + uuid); - } - }); + RouteBuilder.addRoutes(context, rb -> + rb.from(camelUri).to("reactive-streams:" + uuid)); return uuid; } catch (Exception e) { @@ -177,13 +173,8 @@ final class RxJavaStreamsService extends ServiceSupport implements CamelReactive public Subscriber<Exchange> subscriber(String uri) { try { String uuid = context.getUuidGenerator().generateUuid(); - context.addRoutes(new RouteBuilder() { - @Override - public void configure() throws Exception { - from("reactive-streams:" + uuid) - .to(uri); - } - }); + RouteBuilder.addRoutes(context, rb -> + rb.from("reactive-streams:" + uuid).to(uri)); return streamSubscriber(uuid); } catch (Exception e) { @@ -201,13 +192,8 @@ final class RxJavaStreamsService extends ServiceSupport implements CamelReactive String streamName = requestedUriToStream.computeIfAbsent(uri, camelUri -> { try { String uuid = context.getUuidGenerator().generateUuid(); - context.addRoutes(new RouteBuilder() { - @Override - public void configure() throws Exception { - from("reactive-streams:" + uuid) - .to(camelUri); - } - }); + RouteBuilder.addRoutes(context, rb -> + rb.from("reactive-streams:" + uuid).to(camelUri)); return uuid; } catch (Exception e) { 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 d3c8b34..01cd30e 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 @@ -41,6 +41,7 @@ import org.apache.camel.spi.PropertiesComponent; import org.apache.camel.spi.RestConfiguration; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.StringHelper; +import org.apache.camel.util.function.ThrowingConsumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -57,6 +58,27 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild private List<ValidatorBuilder> validatorBuilders = new ArrayList<>(); private RoutesDefinition routeCollection = new RoutesDefinition(); + /** + * 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 addRoutes(CamelContext context, ThrowingConsumer<RouteBuilder, Exception> rbc) throws Exception { + context.addRoutes(new RouteBuilder(context) { + @Override + public void configure() throws Exception { + rbc.accept(this); + } + }); + } + public RouteBuilder() { this(null); }