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 2019/12/03 18:31:00 UTC

[camel-quarkus] branch master updated: Improve registration of DozerTypeConverter

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-quarkus.git


The following commit(s) were added to refs/heads/master by this push:
     new 71ae253  Improve registration of DozerTypeConverter
71ae253 is described below

commit 71ae253d9c15cc6e655134b3866436fc943080a4
Author: James Netherton <ja...@gmail.com>
AuthorDate: Tue Dec 3 14:50:43 2019 +0000

    Improve registration of DozerTypeConverter
---
 docs/modules/ROOT/pages/extensions/dozer.adoc              |  7 +++++++
 .../quarkus/component/dozer/deployment/DozerProcessor.java | 14 ++++++++++++--
 .../camel/quarkus/component/dozer/CamelDozerConfig.java    |  6 ++++++
 .../camel/quarkus/component/dozer/CamelDozerRecorder.java  |  7 +++++++
 .../camel/quarkus/component/dozer/it/DozerRoutes.java      |  3 ---
 .../dozer/src/main/resources/application.properties        |  1 +
 6 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/docs/modules/ROOT/pages/extensions/dozer.adoc b/docs/modules/ROOT/pages/extensions/dozer.adoc
index 07f6e05..3f2a67d 100644
--- a/docs/modules/ROOT/pages/extensions/dozer.adoc
+++ b/docs/modules/ROOT/pages/extensions/dozer.adoc
@@ -29,3 +29,10 @@ Use the following configuration property to specify the location(s) of your Doze
 ----
 quarkus.camel.dozer.mapping-files = dozerMappings.xml,file:foo/bar/custom-mappings.xml,http://foo/bar/mapping.xml
 ----
+
+The Dozer extension provides a type converter which is disabled by default. It can be enabled with the following configuration.
+
+[source,properties]
+----
+quarkus.camel.dozer.type-converter-enabled = true
+----
diff --git a/extensions/dozer/deployment/src/main/java/org/apache/camel/quarkus/component/dozer/deployment/DozerProcessor.java b/extensions/dozer/deployment/src/main/java/org/apache/camel/quarkus/component/dozer/deployment/DozerProcessor.java
index 9b9dd89..97551a7 100644
--- a/extensions/dozer/deployment/src/main/java/org/apache/camel/quarkus/component/dozer/deployment/DozerProcessor.java
+++ b/extensions/dozer/deployment/src/main/java/org/apache/camel/quarkus/component/dozer/deployment/DozerProcessor.java
@@ -62,6 +62,7 @@ import org.apache.camel.converter.dozer.DozerThreadContextClassLoader;
 import org.apache.camel.quarkus.component.dozer.CamelDozerConfig;
 import org.apache.camel.quarkus.component.dozer.CamelDozerRecorder;
 import org.apache.camel.quarkus.core.deployment.CamelBeanBuildItem;
+import org.apache.camel.quarkus.core.deployment.CamelContextBuildItem;
 
 class DozerProcessor {
 
@@ -152,8 +153,7 @@ class DozerProcessor {
 
     @Record(ExecutionTime.STATIC_INIT)
     @BuildStep
-    CamelBeanBuildItem configureCamelDozerBeanMappings(BuildProducer<CamelBeanBuildItem> camelBeanBuildItemBuildProducer,
-            CamelDozerConfig camelDozerConfig,
+    CamelBeanBuildItem configureCamelDozerBeanMappings(CamelDozerConfig camelDozerConfig,
             CamelDozerRecorder camelDozerRecorder) {
 
         CamelBeanBuildItem camelBeanBuildItem = null;
@@ -169,6 +169,16 @@ class DozerProcessor {
         return camelBeanBuildItem;
     }
 
+    @Record(ExecutionTime.STATIC_INIT)
+    @BuildStep
+    void configureDozerTypeConverterRegistry(CamelContextBuildItem camelContextBuildItem, CamelDozerConfig camelDozerConfig,
+            CamelDozerRecorder camelDozerRecorder) {
+
+        if (camelDozerConfig.typeConverterEnabled) {
+            camelDozerRecorder.initializeDozerTypeConverter(camelContextBuildItem.getCamelContext());
+        }
+    }
+
     private URI mappingPathToURI(String mappingPath) {
         try {
             return new URI(mappingPath);
diff --git a/extensions/dozer/runtime/src/main/java/org/apache/camel/quarkus/component/dozer/CamelDozerConfig.java b/extensions/dozer/runtime/src/main/java/org/apache/camel/quarkus/component/dozer/CamelDozerConfig.java
index 3617649..3441c04 100644
--- a/extensions/dozer/runtime/src/main/java/org/apache/camel/quarkus/component/dozer/CamelDozerConfig.java
+++ b/extensions/dozer/runtime/src/main/java/org/apache/camel/quarkus/component/dozer/CamelDozerConfig.java
@@ -30,4 +30,10 @@ public class CamelDozerConfig {
      */
     @ConfigItem
     public List<String> mappingFiles;
+
+    /**
+     * Sets whether to configure the DozerTypeConverter for the CamelContext
+     */
+    @ConfigItem(defaultValue = "false")
+    public boolean typeConverterEnabled;
 }
diff --git a/extensions/dozer/runtime/src/main/java/org/apache/camel/quarkus/component/dozer/CamelDozerRecorder.java b/extensions/dozer/runtime/src/main/java/org/apache/camel/quarkus/component/dozer/CamelDozerRecorder.java
index 68ff9aa..c0869f0 100644
--- a/extensions/dozer/runtime/src/main/java/org/apache/camel/quarkus/component/dozer/CamelDozerRecorder.java
+++ b/extensions/dozer/runtime/src/main/java/org/apache/camel/quarkus/component/dozer/CamelDozerRecorder.java
@@ -21,7 +21,9 @@ import io.quarkus.runtime.annotations.Recorder;
 
 import java.util.List;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.converter.dozer.DozerBeanMapperConfiguration;
+import org.apache.camel.converter.dozer.DozerTypeConverterLoader;
 
 @Recorder
 public class CamelDozerRecorder {
@@ -31,4 +33,9 @@ public class CamelDozerRecorder {
         dozerBeanMapperConfiguration.setMappingFiles(mappingFiles);
         return new RuntimeValue<>(dozerBeanMapperConfiguration);
     }
+
+    public void initializeDozerTypeConverter(RuntimeValue<CamelContext> camelContextRuntimeValue) {
+        DozerTypeConverterLoader loader = new DozerTypeConverterLoader();
+        loader.setCamelContext(camelContextRuntimeValue.getValue());
+    }
 }
diff --git a/integration-tests/dozer/src/main/java/org/apache/camel/quarkus/component/dozer/it/DozerRoutes.java b/integration-tests/dozer/src/main/java/org/apache/camel/quarkus/component/dozer/it/DozerRoutes.java
index 9508b40..28bd1ac 100644
--- a/integration-tests/dozer/src/main/java/org/apache/camel/quarkus/component/dozer/it/DozerRoutes.java
+++ b/integration-tests/dozer/src/main/java/org/apache/camel/quarkus/component/dozer/it/DozerRoutes.java
@@ -17,15 +17,12 @@
 package org.apache.camel.quarkus.component.dozer.it;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.converter.dozer.DozerTypeConverterLoader;
 import org.apache.camel.quarkus.component.dozer.it.model.CustomerB;
 
 public class DozerRoutes extends RouteBuilder {
 
     @Override
     public void configure() throws Exception {
-        new DozerTypeConverterLoader(getContext());
-
         from("direct:mapWithConverter").convertBodyTo(CustomerB.class);
 
         from("direct:mapWithEndpoint")
diff --git a/integration-tests/dozer/src/main/resources/application.properties b/integration-tests/dozer/src/main/resources/application.properties
index 44bc84c..f0917e9 100644
--- a/integration-tests/dozer/src/main/resources/application.properties
+++ b/integration-tests/dozer/src/main/resources/application.properties
@@ -19,3 +19,4 @@
 # Quarkus - Camel Dozer
 #
 quarkus.camel.dozer.mapping-files=simple-mapping.xml,variable-mapping.xml,expression-mapping.xml
+quarkus.camel.dozer.type-converter-enabled=true