This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 953200d7a4 Add BeanIO native support
953200d7a4 is described below
commit 953200d7a47fb058a589ad2bd3e4047e2f12c5f5
Author: James Netherton <[email protected]>
AuthorDate: Tue Oct 22 11:32:57 2024 +0100
Add BeanIO native support
Fixes #6632
---
.../beanio/deployment/BeanioProcessor.java | 46 -------
extensions-jvm/pom.xml | 1 -
.../beanio/deployment/pom.xml | 4 +
.../beanio/deployment/BeanioProcessor.java | 137 +++++++++++++++++++++
.../deployment/BeanioPropertiesBuildItem.java | 22 ++--
{extensions-jvm => extensions}/beanio/pom.xml | 2 +-
.../beanio/runtime/pom.xml | 5 +
extensions/beanio/runtime/src/main/doc/usage.adoc | 31 +++++
.../main/resources/META-INF/quarkus-extension.yaml | 3 +-
extensions/pom.xml | 1 +
integration-tests-jvm/pom.xml | 1 -
.../beanio/pom.xml | 27 ++++
.../component/beanio/it/BeanioResource.java | 0
.../quarkus/component/beanio/it/BeanioRoutes.java | 0
.../component/beanio/it/model/A1Record.java | 3 +
.../component/beanio/it/model/AbstractRecord.java | 3 +
.../component/beanio/it/model/B1Record.java | 3 +
.../beanio/it/model/CustomErrorHandler.java | 0
.../component/beanio/it/model/Employee.java | 3 +
.../beanio/it/model/EmployeeAnnotated.java | 0
.../quarkus/component/beanio/it/model/Error.java | 3 +
.../quarkus/component/beanio/it/model/Header.java | 2 +
.../component/beanio/it/model/Separator.java | 3 +
.../quarkus/component/beanio/it/model/Trailer.java | 3 +
.../src/main/resources/application.properties | 17 +++
.../beanio/src/main/resources/complex-mapping.xml | 3 +
.../beanio/src/main/resources/employee-mapping.xml | 10 ++
.../src/main/resources/single-object-mapping.xml | 3 +
.../quarkus/component/beanio/it/BeanioIT.java | 19 +--
.../quarkus/component/beanio/it/BeanioTest.java | 0
.../beanio/src/test/resources/complex-data.txt | 0
.../beanio/src/test/resources/employees-csv.txt | 0
.../src/test/resources/employees-delimited.txt | 0
.../src/test/resources/employees-fixedlength.txt | 0
.../src/test/resources/employees-with-error.txt | 0
.../beanio/src/test/resources/employees-xml.txt | 0
integration-tests/pom.xml | 1 +
tooling/scripts/test-categories.yaml | 1 +
38 files changed, 279 insertions(+), 78 deletions(-)
diff --git
a/extensions-jvm/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java
b/extensions-jvm/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java
deleted file mode 100644
index d90d52b635..0000000000
---
a/extensions-jvm/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.beanio.deployment;
-
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.annotations.ExecutionTime;
-import io.quarkus.deployment.annotations.Record;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.pkg.steps.NativeBuild;
-import org.apache.camel.quarkus.core.JvmOnlyRecorder;
-import org.jboss.logging.Logger;
-
-class BeanioProcessor {
-
- private static final Logger LOG = Logger.getLogger(BeanioProcessor.class);
- private static final String FEATURE = "camel-beanio";
-
- @BuildStep
- FeatureBuildItem feature() {
- return new FeatureBuildItem(FEATURE);
- }
-
- /**
- * Remove this once this extension starts supporting the native mode.
- */
- @BuildStep(onlyIf = NativeBuild.class)
- @Record(value = ExecutionTime.RUNTIME_INIT)
- void warnJvmInNative(JvmOnlyRecorder recorder) {
- JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
- recorder.warnJvmInNative(FEATURE); // warn at runtime
- }
-}
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index de1499bb18..77d25c39fd 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -43,7 +43,6 @@
<module>azure-servicebus</module>
<module>azure-storage-datalake</module>
<module>barcode</module>
- <module>beanio</module>
<module>bonita</module>
<module>chatscript</module>
<module>chunk</module>
diff --git a/extensions-jvm/beanio/deployment/pom.xml
b/extensions/beanio/deployment/pom.xml
similarity index 93%
rename from extensions-jvm/beanio/deployment/pom.xml
rename to extensions/beanio/deployment/pom.xml
index 457596ecd6..b2fea85a44 100644
--- a/extensions-jvm/beanio/deployment/pom.xml
+++ b/extensions/beanio/deployment/pom.xml
@@ -30,6 +30,10 @@
<name>Camel Quarkus :: BeanIO :: Deployment</name>
<dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-xml-jaxp-deployment</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-core-deployment</artifactId>
diff --git
a/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java
b/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java
new file mode 100644
index 0000000000..5ff8aac1b0
--- /dev/null
+++
b/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.beanio.deployment;
+
+import java.io.IOException;
+import java.util.Properties;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import io.quarkus.deployment.annotations.BuildProducer;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.IndexDependencyBuildItem;
+import
io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
+import
io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBundleBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.beanio.BeanReaderErrorHandler;
+import org.beanio.annotation.Record;
+import org.beanio.stream.RecordParserFactory;
+import org.jboss.jandex.AnnotationInstance;
+import org.jboss.jandex.AnnotationTarget;
+import org.jboss.jandex.AnnotationTarget.Kind;
+import org.jboss.jandex.ClassInfo;
+import org.jboss.jandex.DotName;
+import org.jboss.jandex.IndexView;
+
+class BeanioProcessor {
+ private static final String FEATURE = "camel-beanio";
+
+ @BuildStep
+ FeatureBuildItem feature() {
+ return new FeatureBuildItem(FEATURE);
+ }
+
+ @BuildStep
+ IndexDependencyBuildItem indexDependencies() {
+ return new IndexDependencyBuildItem("com.github.beanio", "beanio");
+ }
+
+ @BuildStep
+ BeanioPropertiesBuildItem beanioProperties() {
+ try {
+ Properties properties = new Properties();
+ properties.load(Thread.currentThread().getContextClassLoader()
+
.getResourceAsStream("org/beanio/internal/config/beanio.properties"));
+ return new BeanioPropertiesBuildItem(properties);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @BuildStep
+ void nativeImageResources(BuildProducer<NativeImageResourceBuildItem>
nativeImageResource) {
+ nativeImageResource.produce(new
NativeImageResourceBuildItem("org/beanio/internal/config/beanio.properties"));
+ nativeImageResource.produce(new
NativeImageResourceBuildItem("beanio.properties"));
+ }
+
+ @BuildStep
+ void registerForReflection(
+ BeanioPropertiesBuildItem beanioProperties,
+ CombinedIndexBuildItem combinedIndex,
+ BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
+ Properties properties = beanioProperties.getProperties();
+
+ Set<String> handlersAndFactories = properties.keySet()
+ .stream()
+ .filter(key -> key.toString().contains("Factory") ||
key.toString().contains("Handler"))
+ .map(properties::get)
+ .map(Object::toString)
+ .collect(Collectors.toUnmodifiableSet());
+
reflectiveClass.produce(ReflectiveClassBuildItem.builder(handlersAndFactories.toArray(new
String[0])).build());
+
+ IndexView index = combinedIndex.getIndex();
+ Set<String> recordParsers =
index.getAllKnownImplementors(RecordParserFactory.class)
+ .stream()
+ .map(ClassInfo::name)
+ .map(DotName::toString)
+ .collect(Collectors.toUnmodifiableSet());
+
reflectiveClass.produce(ReflectiveClassBuildItem.builder(recordParsers.toArray(new
String[0])).methods(true).build());
+
+ Set<String> parserConfiguration = index.getKnownClasses()
+ .stream()
+ .map(ClassInfo::name)
+ .map(DotName::toString)
+ .filter(name -> name.startsWith("org.beanio") &&
name.endsWith("ParserConfiguration"))
+ .collect(Collectors.toUnmodifiableSet());
+ reflectiveClass
+
.produce(ReflectiveClassBuildItem.builder(parserConfiguration.toArray(new
String[0])).methods(true).build());
+
+ Set<String> errorHandlers =
index.getAllKnownImplementors(BeanReaderErrorHandler.class)
+ .stream()
+ .map(ClassInfo::name)
+ .map(DotName::toString)
+ .collect(Collectors.toUnmodifiableSet());
+
reflectiveClass.produce(ReflectiveClassBuildItem.builder(errorHandlers.toArray(new
String[0])).build());
+
+ Set<String> recordClasses = index.getAnnotations(Record.class)
+ .stream()
+ .map(AnnotationInstance::target)
+ .filter(target -> target.kind().equals(Kind.CLASS))
+ .map(AnnotationTarget::asClass)
+ .map(ClassInfo::name)
+ .map(DotName::toString)
+ .collect(Collectors.toUnmodifiableSet());
+ reflectiveClass
+
.produce(ReflectiveClassBuildItem.builder(recordClasses.toArray(new
String[0])).fields(true).methods(true)
+ .build());
+ }
+
+ @BuildStep
+ void registerResourceBundles(BeanioPropertiesBuildItem beanioProperties,
+ BuildProducer<NativeImageResourceBundleBuildItem>
nativeImageResourceBundle) {
+ Properties properties = beanioProperties.getProperties();
+ properties.keySet()
+ .stream()
+ .filter(key -> key.toString().endsWith(".messages"))
+ .map(properties::get)
+ .map(Object::toString)
+ .map(NativeImageResourceBundleBuildItem::new)
+ .forEach(nativeImageResourceBundle::produce);
+ }
+}
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
b/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioPropertiesBuildItem.java
similarity index 66%
copy from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
copy to
extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioPropertiesBuildItem.java
index 85afd0bf31..876532e88e 100644
---
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
+++
b/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioPropertiesBuildItem.java
@@ -14,22 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.beanio.it.model;
+package org.apache.camel.quarkus.component.beanio.deployment;
-public class Error {
- private final String record;
- private final String message;
+import java.util.Properties;
- public Error(String record, String message) {
- this.record = record;
- this.message = message;
- }
+import io.quarkus.builder.item.SimpleBuildItem;
+
+public final class BeanioPropertiesBuildItem extends SimpleBuildItem {
+ private final Properties properties;
- public String getRecord() {
- return record;
+ public BeanioPropertiesBuildItem(Properties properties) {
+ this.properties = properties;
}
- public String getMessage() {
- return message;
+ public Properties getProperties() {
+ return properties;
}
}
diff --git a/extensions-jvm/beanio/pom.xml b/extensions/beanio/pom.xml
similarity index 96%
rename from extensions-jvm/beanio/pom.xml
rename to extensions/beanio/pom.xml
index 37f7b21c75..8cdc326d48 100644
--- a/extensions-jvm/beanio/pom.xml
+++ b/extensions/beanio/pom.xml
@@ -21,7 +21,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-extensions-jvm</artifactId>
+ <artifactId>camel-quarkus-extensions</artifactId>
<version>3.16.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/extensions-jvm/beanio/runtime/pom.xml
b/extensions/beanio/runtime/pom.xml
similarity index 92%
rename from extensions-jvm/beanio/runtime/pom.xml
rename to extensions/beanio/runtime/pom.xml
index ba7c205857..79851fed96 100644
--- a/extensions-jvm/beanio/runtime/pom.xml
+++ b/extensions/beanio/runtime/pom.xml
@@ -32,9 +32,14 @@
<properties>
<camel.quarkus.jvmSince>3.8.0</camel.quarkus.jvmSince>
+ <camel.quarkus.nativeSince>3.16.0</camel.quarkus.nativeSince>
</properties>
<dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-xml-jaxp</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-core</artifactId>
diff --git a/extensions/beanio/runtime/src/main/doc/usage.adoc
b/extensions/beanio/runtime/src/main/doc/usage.adoc
new file mode 100644
index 0000000000..ec95d1b8f7
--- /dev/null
+++ b/extensions/beanio/runtime/src/main/doc/usage.adoc
@@ -0,0 +1,31 @@
+=== BeanIO in native mode
+
+==== XML mapping files
+
+When BeanIO configuration is defined in XML files that are read from the
classpath.
+You must ensure each file is added to the native application image.
+To do this, add the `quarkus.native.resources.includes` configuration property
to `application.properties`. For example.
+
+[source,properties]
+----
+quarkus.native.resources.includes=mapping.xml,model/other-mapping.xml
+----
+
+More information about selecting resources for inclusion in the native
executable can be found at
xref:user-guide/native-mode.adoc#embedding-resource-in-native-executable[Embedding
resources in native executable].
+
+==== BeanIO Record classes
+
+All classes that participate in BeanIO marshal / unmarshal operations must be
registered for reflection.
+
+This can be achieved with the `@RegisterForReflection`
+annotation or with configuration property
`quarkus.camel.native.reflection.include-patterns`. For example:
+
+[source,java]
+----
+@RegisterForReflection
+public class Employee {
+ ...
+}
+----
+
+Refer to the xref:user-guide/native-mode.adoc#reflection[Native mode] user
guide for more information.
diff --git
a/extensions-jvm/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
b/extensions/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
similarity index 97%
rename from
extensions-jvm/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
rename to
extensions/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index aff76a2c0a..60a4b519e2 100644
---
a/extensions-jvm/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++
b/extensions/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -26,9 +26,8 @@ description: "Marshal and unmarshal Java beans to and from
flat files (such as C
metadata:
icon-url:
"https://raw.githubusercontent.com/apache/camel-website/main/antora-ui-camel/src/img/logo-d.svg"
sponsor: "Apache Software Foundation"
- unlisted: true
guide:
"https://camel.apache.org/camel-quarkus/latest/reference/extensions/beanio.html"
categories:
- "integration"
status:
- - "preview"
+ - "stable"
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 2cc68249b3..188bd03ace 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -69,6 +69,7 @@
<module>base64</module>
<module>bean</module>
<module>bean-validator</module>
+ <module>beanio</module>
<module>bindy</module>
<module>box</module>
<module>braintree</module>
diff --git a/integration-tests-jvm/pom.xml b/integration-tests-jvm/pom.xml
index abdd819563..49293da311 100644
--- a/integration-tests-jvm/pom.xml
+++ b/integration-tests-jvm/pom.xml
@@ -41,7 +41,6 @@
<module>azure-servicebus</module>
<module>azure-storage-datalake</module>
<module>barcode</module>
- <module>beanio</module>
<module>bonita</module>
<module>chatscript</module>
<module>chunk</module>
diff --git a/integration-tests-jvm/beanio/pom.xml
b/integration-tests/beanio/pom.xml
similarity index 83%
rename from integration-tests-jvm/beanio/pom.xml
rename to integration-tests/beanio/pom.xml
index ed05ee3691..ddd1113524 100644
--- a/integration-tests-jvm/beanio/pom.xml
+++ b/integration-tests/beanio/pom.xml
@@ -117,6 +117,33 @@
</dependency>
</dependencies>
</profile>
+ <profile>
+ <id>native</id>
+ <activation>
+ <property>
+ <name>native</name>
+ </property>
+ </activation>
+ <properties>
+ <quarkus.native.enabled>true</quarkus.native.enabled>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
</project>
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioResource.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioResource.java
similarity index 100%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioResource.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioResource.java
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioRoutes.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioRoutes.java
similarity index 100%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioRoutes.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioRoutes.java
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
similarity index 95%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
index b1d7bb7a91..15846a15cb 100644
---
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
+++
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class A1Record extends AbstractRecord {
Double currentPrice;
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
similarity index 95%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
index 668a7245d5..09c3387415 100644
---
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
+++
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public abstract class AbstractRecord {
String sedol;
String source;
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
similarity index 95%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
index 051ea6306e..46896c28a4 100644
---
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
+++
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class B1Record extends AbstractRecord {
String securityName;
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/CustomErrorHandler.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/CustomErrorHandler.java
similarity index 100%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/CustomErrorHandler.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/CustomErrorHandler.java
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
similarity index 97%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
index f3bc71cc7c..ca31047661 100644
---
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
+++
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
@@ -18,6 +18,9 @@ package org.apache.camel.quarkus.component.beanio.it.model;
import java.util.Date;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class Employee {
private String firstName;
private String lastName;
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/EmployeeAnnotated.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/EmployeeAnnotated.java
similarity index 100%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/EmployeeAnnotated.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/EmployeeAnnotated.java
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
similarity index 93%
copy from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
copy to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
index 85afd0bf31..459430173d 100644
---
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
+++
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class Error {
private final String record;
private final String message;
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
similarity index 97%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
index 7e1d7c64da..77580ffb05 100644
---
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
+++
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
@@ -20,8 +20,10 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
+import io.quarkus.runtime.annotations.RegisterForReflection;
import org.apache.camel.dataformat.beanio.BeanIOHeader;
+@RegisterForReflection
public class Header implements BeanIOHeader {
String identifier;
String recordType;
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
similarity index 95%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
index 78626bbb64..02f095ec29 100644
---
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
+++
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class Separator {
String value;
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
similarity index 95%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
rename to
integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
index 219eb4554e..2ff5990f90 100644
---
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
+++
b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class Trailer {
int numberOfRecords;
diff --git a/integration-tests/beanio/src/main/resources/application.properties
b/integration-tests/beanio/src/main/resources/application.properties
new file mode 100644
index 0000000000..5610e20f5a
--- /dev/null
+++ b/integration-tests/beanio/src/main/resources/application.properties
@@ -0,0 +1,17 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+quarkus.native.resources.includes=*mapping.xml
\ No newline at end of file
diff --git
a/integration-tests-jvm/beanio/src/main/resources/complex-mapping.xml
b/integration-tests/beanio/src/main/resources/complex-mapping.xml
similarity index 98%
rename from integration-tests-jvm/beanio/src/main/resources/complex-mapping.xml
rename to integration-tests/beanio/src/main/resources/complex-mapping.xml
index feab11cff8..be00b35d06 100644
--- a/integration-tests-jvm/beanio/src/main/resources/complex-mapping.xml
+++ b/integration-tests/beanio/src/main/resources/complex-mapping.xml
@@ -35,6 +35,9 @@
</template>
<stream name="securityData" format="fixedlength" strict="true">
+ <parser>
+ <property name="recordTerminator" value="\n"/>
+ </parser>
<group name="headerGroup" minOccurs="1" maxOccurs="1" order="1">
<record name="headerA1"
class="org.apache.camel.quarkus.component.beanio.it.model.Header" order="1"
minLength="32"
maxLength="32"
diff --git
a/integration-tests-jvm/beanio/src/main/resources/employee-mapping.xml
b/integration-tests/beanio/src/main/resources/employee-mapping.xml
similarity index 89%
rename from integration-tests-jvm/beanio/src/main/resources/employee-mapping.xml
rename to integration-tests/beanio/src/main/resources/employee-mapping.xml
index 8773698947..b605d57476 100644
--- a/integration-tests-jvm/beanio/src/main/resources/employee-mapping.xml
+++ b/integration-tests/beanio/src/main/resources/employee-mapping.xml
@@ -19,6 +19,9 @@
-->
<beanio xmlns="http://www.beanio.org/2012/03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.beanio.org/2012/03
http://www.beanio.org/2012/03/mapping.xsd">
<stream name="employeeCSV" format="csv">
+ <parser>
+ <property name="recordTerminator" value="\n"/>
+ </parser>
<record name="employee"
class="org.apache.camel.quarkus.component.beanio.it.model.Employee">
<field name="firstName"/>
<field name="lastName"/>
@@ -39,6 +42,7 @@
<stream name="employeeDelimited" format="delimited">
<parser>
<property name="delimiter" value="|" />
+ <property name="recordTerminator" value="\n"/>
</parser>
<record name="employee"
class="org.apache.camel.quarkus.component.beanio.it.model.Employee">
<field name="firstName"/>
@@ -49,6 +53,9 @@
</record>
</stream>
<stream name="employeeFixedLength" format="fixedlength">
+ <parser>
+ <property name="recordTerminator" value="\n"/>
+ </parser>
<record name="employee"
class="org.apache.camel.quarkus.component.beanio.it.model.Employee">
<field name="firstName" length="10"/>
<field name="lastName" length="15"/>
@@ -58,6 +65,9 @@
</record>
</stream>
<stream name="employeeAnnotated" format="csv">
+ <parser>
+ <property name="recordTerminator" value="\n"/>
+ </parser>
<record name="employeeAnnotated"
class="org.apache.camel.quarkus.component.beanio.it.model.EmployeeAnnotated"/>
</stream>
</beanio>
\ No newline at end of file
diff --git
a/integration-tests-jvm/beanio/src/main/resources/single-object-mapping.xml
b/integration-tests/beanio/src/main/resources/single-object-mapping.xml
similarity index 94%
rename from
integration-tests-jvm/beanio/src/main/resources/single-object-mapping.xml
rename to integration-tests/beanio/src/main/resources/single-object-mapping.xml
index f158226945..c983d76148 100644
--- a/integration-tests-jvm/beanio/src/main/resources/single-object-mapping.xml
+++ b/integration-tests/beanio/src/main/resources/single-object-mapping.xml
@@ -19,6 +19,9 @@
-->
<beanio xmlns="http://www.beanio.org/2012/03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.beanio.org/2012/03
http://www.beanio.org/2012/03/mapping.xsd">
<stream name="keyValueStream" format="fixedlength">
+ <parser>
+ <property name="recordTerminator" value="\n"/>
+ </parser>
<record name="entry" class="map" minOccurs="1">
<field name="key" length="4" required="true" justify="left" />
<field name="separator" length="1" required="true" justify="left" />
diff --git
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
b/integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioIT.java
similarity index 67%
rename from
integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
rename to
integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioIT.java
index 85afd0bf31..9c92101408 100644
---
a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
+++
b/integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioIT.java
@@ -14,22 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.beanio.it.model;
+package org.apache.camel.quarkus.component.beanio.it;
-public class Error {
- private final String record;
- private final String message;
+import io.quarkus.test.junit.QuarkusIntegrationTest;
- public Error(String record, String message) {
- this.record = record;
- this.message = message;
- }
+@QuarkusIntegrationTest
+class BeanioIT extends BeanioTest {
- public String getRecord() {
- return record;
- }
-
- public String getMessage() {
- return message;
- }
}
diff --git
a/integration-tests-jvm/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioTest.java
b/integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioTest.java
similarity index 100%
rename from
integration-tests-jvm/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioTest.java
rename to
integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioTest.java
diff --git a/integration-tests-jvm/beanio/src/test/resources/complex-data.txt
b/integration-tests/beanio/src/test/resources/complex-data.txt
similarity index 100%
rename from integration-tests-jvm/beanio/src/test/resources/complex-data.txt
rename to integration-tests/beanio/src/test/resources/complex-data.txt
diff --git a/integration-tests-jvm/beanio/src/test/resources/employees-csv.txt
b/integration-tests/beanio/src/test/resources/employees-csv.txt
similarity index 100%
rename from integration-tests-jvm/beanio/src/test/resources/employees-csv.txt
rename to integration-tests/beanio/src/test/resources/employees-csv.txt
diff --git
a/integration-tests-jvm/beanio/src/test/resources/employees-delimited.txt
b/integration-tests/beanio/src/test/resources/employees-delimited.txt
similarity index 100%
rename from
integration-tests-jvm/beanio/src/test/resources/employees-delimited.txt
rename to integration-tests/beanio/src/test/resources/employees-delimited.txt
diff --git
a/integration-tests-jvm/beanio/src/test/resources/employees-fixedlength.txt
b/integration-tests/beanio/src/test/resources/employees-fixedlength.txt
similarity index 100%
rename from
integration-tests-jvm/beanio/src/test/resources/employees-fixedlength.txt
rename to integration-tests/beanio/src/test/resources/employees-fixedlength.txt
diff --git
a/integration-tests-jvm/beanio/src/test/resources/employees-with-error.txt
b/integration-tests/beanio/src/test/resources/employees-with-error.txt
similarity index 100%
rename from
integration-tests-jvm/beanio/src/test/resources/employees-with-error.txt
rename to integration-tests/beanio/src/test/resources/employees-with-error.txt
diff --git a/integration-tests-jvm/beanio/src/test/resources/employees-xml.txt
b/integration-tests/beanio/src/test/resources/employees-xml.txt
similarity index 100%
rename from integration-tests-jvm/beanio/src/test/resources/employees-xml.txt
rename to integration-tests/beanio/src/test/resources/employees-xml.txt
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 658afa1279..051a30e09d 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -64,6 +64,7 @@
<module>azure-grouped</module>
<module>base64</module>
<module>bean-validator</module>
+ <module>beanio</module>
<module>bindy</module>
<module>box</module>
<module>braintree</module>
diff --git a/tooling/scripts/test-categories.yaml
b/tooling/scripts/test-categories.yaml
index cee39642f0..4f9b4fd620 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -35,6 +35,7 @@ group-01:
- mllp
group-02:
- aws2
+ - beanio
- google-pubsub
- grpc
- jackson-avro