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

Reply via email to