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 <[email protected]>
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);
}