Merge pull request #580 from jamesnetherton/dozer-jaxb

Dozer extension should use JaxbFileRootBuildItem
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 eeb48c1..a106b61 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
@@ -23,6 +23,7 @@
 import io.quarkus.deployment.builditem.FeatureBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import io.quarkus.jaxb.deployment.JaxbFileRootBuildItem;
 
 import java.io.File;
 import java.math.BigDecimal;
@@ -38,22 +39,6 @@
 
 import com.github.dozermapper.core.DozerBeanMapperBuilder;
 import com.github.dozermapper.core.Mapper;
-import com.github.dozermapper.core.builder.model.jaxb.AllowedExceptionsDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.ClassDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.ConfigurationDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.ConverterTypeDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.CopyByReferencesDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.CustomConvertersDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.FieldDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.FieldDefinitionDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.FieldExcludeDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.FieldType;
-import com.github.dozermapper.core.builder.model.jaxb.MappingDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.MappingsDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.Relationship;
-import com.github.dozermapper.core.builder.model.jaxb.Type;
-import com.github.dozermapper.core.builder.model.jaxb.VariableDefinition;
-import com.github.dozermapper.core.builder.model.jaxb.VariablesDefinition;
 import com.sun.el.ExpressionFactoryImpl;
 
 import org.apache.camel.component.dozer.DozerConfiguration;
@@ -74,6 +59,11 @@
     }
 
     @BuildStep
+    JaxbFileRootBuildItem dozerJaxbFileRoot() {
+        return new JaxbFileRootBuildItem("com/github/dozermapper/core/builder/model/jaxb");
+    }
+
+    @BuildStep(applicationArchiveMarkers = { "com/github/dozermapper/core" })
     void configureCamelDozer(BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
             BuildProducer<NativeImageResourceBuildItem> nativeImage,
             CamelDozerConfig camelDozerConfig) {
@@ -87,15 +77,14 @@
                 .map(uri -> new NativeImageResourceBuildItem(uri.getPath()))
                 .forEach(nativeImage::produce);
 
-        // Add Dozer JAXB resources to the image
+        // Add Dozer DTD & XSD resources to the image
         nativeImage.produce(new NativeImageResourceBuildItem(
                 "dtd/bean-mapping.dtd",
                 "dtd/bean-mapping-6.0.0.dtd",
                 "dtd/bean-mapping-6.2.0.dtd",
                 "schema/bean-mapping.xsd",
                 "schema/bean-mapping-6.0.0.xsd",
-                "schema/bean-mapping-6.2.0.xsd",
-                "com/github/dozermapper/core/builder/model/jaxb/jaxb.index"));
+                "schema/bean-mapping-6.2.0.xsd"));
 
         reflectiveClass.produce(new ReflectiveClassBuildItem(false, false,
                 BigDecimal[].class,
@@ -123,29 +112,10 @@
 
         reflectiveClass.produce(
                 new ReflectiveClassBuildItem(false, false,
-                        "com.github.dozermapper.core.builder.model.jaxb.package-info",
                         "com.sun.org.apache.xerces.internal.impl.dv.xs.SchemaDVFactoryImpl"));
 
         reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, DozerConfiguration.class));
 
-        reflectiveClass.produce(new ReflectiveClassBuildItem(true, true,
-                AllowedExceptionsDefinition.class,
-                ClassDefinition.class,
-                ConfigurationDefinition.class,
-                ConverterTypeDefinition.class,
-                CopyByReferencesDefinition.class,
-                CustomConvertersDefinition.class,
-                FieldDefinition.class,
-                FieldDefinitionDefinition.class,
-                FieldExcludeDefinition.class,
-                FieldType.class,
-                MappingDefinition.class,
-                MappingsDefinition.class,
-                Relationship.class,
-                Type.class,
-                VariableDefinition.class,
-                VariablesDefinition.class));
-
         if (camelDozerConfig.mappingFiles.isPresent()) {
             // Register for reflection any classes participating in Dozer mapping
             Mapper mapper = DozerBeanMapperBuilder.create()