This is an automated email from the ASF dual-hosted git repository. lburgazzoli 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 f17e883 CAMEL-15573: camel-main: support LambdaRouteBuilder f17e883 is described below commit f17e883b80eaa1f7b39f123eb841b124f4a31fc5 Author: Luca Burgazzoli <lburgazz...@gmail.com> AuthorDate: Thu Sep 24 11:39:04 2020 +0200 CAMEL-15573: camel-main: support LambdaRouteBuilder --- .../camel/main/MainConfigurationProperties.java | 22 +++++++++++++++++ .../camel/main/MainLambdaRouteBuilderTest.java | 28 ++++++++++++++++------ 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/core/camel-main/src/main/java/org/apache/camel/main/MainConfigurationProperties.java b/core/camel-main/src/main/java/org/apache/camel/main/MainConfigurationProperties.java index 360d27a..5aeaa8a 100644 --- a/core/camel-main/src/main/java/org/apache/camel/main/MainConfigurationProperties.java +++ b/core/camel-main/src/main/java/org/apache/camel/main/MainConfigurationProperties.java @@ -20,6 +20,8 @@ import java.util.ArrayList; import java.util.List; import org.apache.camel.RoutesBuilder; +import org.apache.camel.builder.LambdaRouteBuilder; +import org.apache.camel.builder.RouteBuilder; import org.apache.camel.spi.Configurer; /** @@ -363,6 +365,18 @@ public class MainConfigurationProperties extends DefaultConfigurationProperties< setRoutesBuilderClasses(existing); } + /** + * Add an additional {@link LambdaRouteBuilder} object to the known list of builders. + */ + public void addLambdaRouteBuilder(LambdaRouteBuilder routeBuilder) { + this.routesBuilders.add(new RouteBuilder() { + @Override + public void configure() throws Exception { + routeBuilder.accept(this); + } + }); + } + // fluent builders // -------------------------------------------------------------- @@ -559,4 +573,12 @@ public class MainConfigurationProperties extends DefaultConfigurationProperties< addRoutesBuilder(builders); return this; } + + /** + * Add an additional {@link LambdaRouteBuilder} object to the known list of builders. + */ + public MainConfigurationProperties withAdditionalLambdaRouteBuilder(LambdaRouteBuilder builder) { + addLambdaRouteBuilder(builder); + return this; + } } diff --git a/core/camel-main/src/test/java/org/apache/camel/main/MainLambdaRouteBuilderTest.java b/core/camel-main/src/test/java/org/apache/camel/main/MainLambdaRouteBuilderTest.java index e2c492d..40c77be 100644 --- a/core/camel-main/src/test/java/org/apache/camel/main/MainLambdaRouteBuilderTest.java +++ b/core/camel-main/src/test/java/org/apache/camel/main/MainLambdaRouteBuilderTest.java @@ -25,25 +25,39 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; public class MainLambdaRouteBuilderTest { + private static final LambdaRouteBuilder BUILDER = rb -> rb.from("direct:start").to("mock:results"); @Test - public void testMainRoutesCollector() throws Exception { + public void testBindLambdaRouteBuilder() throws Exception { Main main = new Main(); - main.bind("myBarRoute", (LambdaRouteBuilder) rb -> rb.from("direct:start").to("mock:results")); + main.bind("myBarRoute", BUILDER); main.start(); - CamelContext camelContext = main.getCamelContext(); + doTest(main.camelContext); + + main.stop(); + } + + @Test + public void testAddLambdaRouteBuilder() throws Exception { + Main main = new Main(); + main.configure().addLambdaRouteBuilder(BUILDER); + main.start(); + + doTest(main.camelContext); + + main.stop(); + } + + private static void doTest(CamelContext camelContext) throws Exception { assertNotNull(camelContext); assertEquals(1, camelContext.getRoutes().size()); MockEndpoint endpoint = camelContext.getEndpoint("mock:results", MockEndpoint.class); endpoint.expectedBodiesReceived("Hello World"); - main.getCamelTemplate().sendBody("direct:start", "Hello World"); + camelContext.createProducerTemplate().sendBody("direct:start", "Hello World"); endpoint.assertIsSatisfied(); - - main.stop(); } - }