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 <jamesnether...@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