This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/master by this push: new 4011b1c Support dependency injection of FluentProducerTemplate/FluentConsumerTemplate #474 (#475) 4011b1c is described below commit 4011b1c372e7ae198eba4da9589794893aa4b56b Author: Luca Burgazzoli <lburgazz...@users.noreply.github.com> AuthorDate: Wed Nov 27 05:16:45 2019 +0100 Support dependency injection of FluentProducerTemplate/FluentConsumerTemplate #474 (#475) --- .../quarkus/core/runtime/CamelProducersTest.java | 26 +++++++++++++++++++++ .../apache/camel/quarkus/core/CamelProducers.java | 27 ++++++++++++++++++++-- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/extensions/core/deployment/src/test/java/org/apache/camel/quarkus/core/runtime/CamelProducersTest.java b/extensions/core/deployment/src/test/java/org/apache/camel/quarkus/core/runtime/CamelProducersTest.java index d4cf47b..755fa42 100644 --- a/extensions/core/deployment/src/test/java/org/apache/camel/quarkus/core/runtime/CamelProducersTest.java +++ b/extensions/core/deployment/src/test/java/org/apache/camel/quarkus/core/runtime/CamelProducersTest.java @@ -22,6 +22,8 @@ import javax.inject.Inject; import io.quarkus.test.QuarkusUnitTest; import org.apache.camel.CamelContext; import org.apache.camel.ConsumerTemplate; +import org.apache.camel.FluentProducerTemplate; +import org.apache.camel.Produce; import org.apache.camel.ProducerTemplate; import org.apache.camel.spi.Registry; import org.jboss.shrinkwrap.api.ShrinkWrap; @@ -36,6 +38,7 @@ public class CamelProducersTest { static final QuarkusUnitTest CONFIG = new QuarkusUnitTest() .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) .addClasses(BeanUsingProducerTemplate.class) + .addClasses(BeanUsingFluentProducerTemplate.class) .addClasses(BeanUsingConsumerTemplate.class) .addClasses(BeanUsingCamelContext.class) .addClasses(BeanUsingRegistry.class)); @@ -43,6 +46,8 @@ public class CamelProducersTest { @Inject BeanUsingProducerTemplate usingProducerTemplate; @Inject + BeanUsingProducerTemplate usingFluentProducerTemplate; + @Inject BeanUsingConsumerTemplate usingConsumerTemplate; @Inject BeanUsingCamelContext usingCamelContext; @@ -52,6 +57,7 @@ public class CamelProducersTest { @Test public void testInjection() throws Exception { usingProducerTemplate.verify(); + usingFluentProducerTemplate.verify(); usingConsumerTemplate.verify(); usingCamelContext.verify(); usingRegistry.verify(); @@ -61,9 +67,29 @@ public class CamelProducersTest { static class BeanUsingProducerTemplate { @Inject ProducerTemplate target; + @Inject + @Produce("direct:start") + ProducerTemplate targetWithUri; + + public void verify() throws Exception { + assertThat(target).isNotNull(); + assertThat(target.getDefaultEndpoint()).isNull(); + assertThat(targetWithUri.getDefaultEndpoint().getEndpointUri()).isEqualTo("direct://start"); + } + } + + @ApplicationScoped + static class BeanUsingFluentProducerTemplate { + @Inject + FluentProducerTemplate target; + @Inject + @Produce("direct:start") + FluentProducerTemplate targetWithUri; public void verify() throws Exception { assertThat(target).isNotNull(); + assertThat(target.getDefaultEndpoint()).isNull(); + assertThat(targetWithUri.getDefaultEndpoint().getEndpointUri()).isEqualTo("direct://start"); } } diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelProducers.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelProducers.java index 3801213..63b3a36 100644 --- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelProducers.java +++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelProducers.java @@ -17,12 +17,16 @@ package org.apache.camel.quarkus.core; import javax.enterprise.inject.Produces; +import javax.enterprise.inject.spi.InjectionPoint; import javax.inject.Singleton; import org.apache.camel.CamelContext; import org.apache.camel.ConsumerTemplate; +import org.apache.camel.FluentProducerTemplate; +import org.apache.camel.Produce; import org.apache.camel.ProducerTemplate; import org.apache.camel.spi.Registry; +import org.apache.camel.util.ObjectHelper; /** * Producers of beans that are injectable via CDI. @@ -48,8 +52,27 @@ public class CamelProducers { } @Produces - ProducerTemplate camelProducerTemplate() { - return this.context.createProducerTemplate(); + ProducerTemplate camelProducerTemplate(InjectionPoint injectionPoint) { + final ProducerTemplate template = this.context.createProducerTemplate(); + final Produce produce = injectionPoint.getAnnotated().getAnnotation(Produce.class); + + if (ObjectHelper.isNotEmpty(produce) && ObjectHelper.isNotEmpty(produce.value())) { + template.setDefaultEndpointUri(produce.value()); + } + + return template; + } + + @Produces + FluentProducerTemplate camelFluentProducerTemplate(InjectionPoint injectionPoint) { + final FluentProducerTemplate template = this.context.createFluentProducerTemplate(); + final Produce produce = injectionPoint.getAnnotated().getAnnotation(Produce.class); + + if (ObjectHelper.isNotEmpty(produce) && ObjectHelper.isNotEmpty(produce.value())) { + template.setDefaultEndpointUri(produce.value()); + } + + return template; } @Produces