You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2020/09/24 14:07:39 UTC

[camel] branch master updated: CAMEL-15573: camel-main: support LambdaRouteBuilder

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 <lb...@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();
     }
-
 }