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

Reply via email to