This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch kamelet-local-registry in repository https://gitbox.apache.org/repos/asf/camel.git
commit 058219aa71fa348db69bc6f7580f38dfb230b97f Author: Claus Ibsen <[email protected]> AuthorDate: Wed May 5 07:21:23 2021 +0200 CAMEL-16394: Route Template local beans. WIP --- .../camel/builder/DefaultRouteTemplateContext.java | 8 +-- .../camel/builder/RouteTemplateLocalBeanTest.java | 81 ++++++++++++++++++++++ 2 files changed, 85 insertions(+), 4 deletions(-) diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/DefaultRouteTemplateContext.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/DefaultRouteTemplateContext.java index d7a2574..6f845eb 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/builder/DefaultRouteTemplateContext.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/DefaultRouteTemplateContext.java @@ -16,14 +16,14 @@ */ package org.apache.camel.builder; -import java.util.Map; -import java.util.function.Supplier; - import org.apache.camel.CamelContext; import org.apache.camel.RouteTemplateContext; import org.apache.camel.spi.BeanRepository; import org.apache.camel.spi.Registry; +import java.util.Map; +import java.util.function.Supplier; + // TODO: Should this be moved to some other module/package? public final class DefaultRouteTemplateContext implements RouteTemplateContext { @@ -55,7 +55,7 @@ public final class DefaultRouteTemplateContext implements RouteTemplateContext { @Override public Object getProperty(String name) { - return camelContext.resolvePropertyPlaceholders(name); + return parameters.get(name); } @Override diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/RouteTemplateLocalBeanTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/RouteTemplateLocalBeanTest.java index 4269282..f5c5849 100644 --- a/core/camel-core/src/test/java/org/apache/camel/builder/RouteTemplateLocalBeanTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/builder/RouteTemplateLocalBeanTest.java @@ -137,6 +137,87 @@ public class RouteTemplateLocalBeanTest extends ContextTestSupport { context.stop(); } + @Test + public void testLocalBeanInConfigure() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + routeTemplate("myTemplate").templateParameter("foo").templateParameter("bar") + .from("direct:{{foo}}") + .to("bean:{{bar}}"); + } + }); + + context.start(); + + TemplatedRouteBuilder.builder(context, "myTemplate") + .parameter("foo", "one") + .parameter("bar", "myBar") + .configure(rtc -> { + rtc.bind("myBar", (Processor) ex -> ex.getMessage().setBody("Configure " + ex.getMessage().getBody() + + " from " + rtc.getProperty("foo"))); + }) + .routeId("myRoute") + .add(); + + assertEquals(1, context.getRoutes().size()); + + Object out = template.requestBody("direct:one", "World"); + assertEquals("Configure World from one", out); + + // should not be a global bean + assertNull(context.getRegistry().lookupByName("myBar")); + + context.stop(); + } + + @Test + @Disabled("TODO: Fix me") + public void testLocalBeanInConfigureTwo() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + routeTemplate("myTemplate").templateParameter("foo").templateParameter("bar") + .from("direct:{{foo}}") + .to("bean:{{bar}}"); + } + }); + + context.start(); + + TemplatedRouteBuilder.builder(context, "myTemplate") + .parameter("foo", "one") + .parameter("bar", "myBar") + .configure(rtc -> { + rtc.bind("myBar", (Processor) ex -> ex.getMessage().setBody("Configure " + ex.getMessage().getBody() + + " from " + rtc.getProperty("foo"))); + }) + .routeId("myRoute") + .add(); + + TemplatedRouteBuilder.builder(context, "myTemplate") + .parameter("foo", "two") + .parameter("bar", "myBar") + .configure(rtc -> { + rtc.bind("myBar", (Processor) ex -> ex.getMessage().setBody("Configure2 " + ex.getMessage().getBody() + + " from " + rtc.getProperty("foo"))); + }) + .routeId("myRoute2") + .add(); + + assertEquals(2, context.getRoutes().size()); + + Object out = template.requestBody("direct:one", "World"); + assertEquals("Configure World from one", out); + Object out2 = template.requestBody("direct:two", "Camel"); + assertEquals("Configure2 Camel from two", out2); + + // should not be a global bean + assertNull(context.getRegistry().lookupByName("myBar")); + + context.stop(); + } + private class BuilderProcessor implements Processor { @Override
