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