From 44da257b31b5f9c289d5ff7b3c6d2973dc311fd7 Mon Sep 17 00:00:00 2001 From: James Netherton Date: Tue, 22 Oct 2024 11:32:57 +0100 Subject: [PATCH] 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 | 17 +++ {extensions-jvm => extensions}/beanio/pom.xml | 2 +- .../beanio/runtime/pom.xml | 5 + .../beanio/runtime/src/main/doc/usage.adoc | 31 ++++ .../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 .../component/beanio/it/BeanioRoutes.java | 0 .../component/beanio/it/model/A1Record.java | 3 + .../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 .../component/beanio/it/model/Error.java | 3 + .../component/beanio/it/model/Header.java | 2 + .../component/beanio/it/model/Separator.java | 3 + .../component/beanio/it/model/Trailer.java | 3 + .../src/main/resources/application.properties | 17 +++ .../src/main/resources/complex-mapping.xml | 0 .../src/main/resources/employee-mapping.xml | 0 .../main/resources/single-object-mapping.xml | 0 .../quarkus/component/beanio/it/BeanioIT.java | 24 +++ .../component/beanio/it/BeanioTest.java | 0 .../src/test/resources/complex-data.txt | 0 .../src/test/resources/employees-csv.txt | 0 .../test/resources/employees-delimited.txt | 0 .../test/resources/employees-fixedlength.txt | 0 .../test/resources/employees-with-error.txt | 0 .../src/test/resources/employees-xml.txt | 0 integration-tests/pom.xml | 1 + tooling/scripts/test-categories.yaml | 1 + 38 files changed, 290 insertions(+), 51 deletions(-) delete mode 100644 extensions-jvm/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java rename {extensions-jvm => extensions}/beanio/deployment/pom.xml (93%) create mode 100644 extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java create mode 100644 extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioPropertiesBuildItem.java rename {extensions-jvm => extensions}/beanio/pom.xml (96%) rename {extensions-jvm => extensions}/beanio/runtime/pom.xml (92%) create mode 100644 extensions/beanio/runtime/src/main/doc/usage.adoc rename {extensions-jvm => extensions}/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml (97%) rename {integration-tests-jvm => integration-tests}/beanio/pom.xml (83%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioResource.java (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioRoutes.java (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java (95%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java (95%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java (95%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/CustomErrorHandler.java (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java (97%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/EmployeeAnnotated.java (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java (93%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java (97%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java (95%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java (95%) create mode 100644 integration-tests/beanio/src/main/resources/application.properties rename {integration-tests-jvm => integration-tests}/beanio/src/main/resources/complex-mapping.xml (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/resources/employee-mapping.xml (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/main/resources/single-object-mapping.xml (100%) create mode 100644 integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioIT.java rename {integration-tests-jvm => integration-tests}/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioTest.java (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/test/resources/complex-data.txt (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/test/resources/employees-csv.txt (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/test/resources/employees-delimited.txt (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/test/resources/employees-fixedlength.txt (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/test/resources/employees-with-error.txt (100%) rename {integration-tests-jvm => integration-tests}/beanio/src/test/resources/employees-xml.txt (100%) 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 d90d52b635c3..000000000000 --- 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 de1499bb1830..77d25c39fdd0 100644 --- a/extensions-jvm/pom.xml +++ b/extensions-jvm/pom.xml @@ -43,7 +43,6 @@ azure-servicebus azure-storage-datalake barcode - beanio bonita chatscript chunk 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 457596ecd6cc..b2fea85a44d2 100644 --- a/extensions-jvm/beanio/deployment/pom.xml +++ b/extensions/beanio/deployment/pom.xml @@ -30,6 +30,10 @@ Camel Quarkus :: BeanIO :: Deployment + + org.apache.camel.quarkus + camel-quarkus-xml-jaxp-deployment + org.apache.camel.quarkus camel-quarkus-core-deployment 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 000000000000..5ff8aac1b0fc --- /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 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 reflectiveClass) { + Properties properties = beanioProperties.getProperties(); + + Set 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 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 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 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 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 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/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioPropertiesBuildItem.java b/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioPropertiesBuildItem.java new file mode 100644 index 000000000000..f3573a222ee4 --- /dev/null +++ b/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioPropertiesBuildItem.java @@ -0,0 +1,17 @@ +package org.apache.camel.quarkus.component.beanio.deployment; + +import java.util.Properties; + +import io.quarkus.builder.item.SimpleBuildItem; + +public final class BeanioPropertiesBuildItem extends SimpleBuildItem { + private final Properties properties; + + public BeanioPropertiesBuildItem(Properties properties) { + this.properties = properties; + } + + 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 37f7b21c75b6..8cdc326d489f 100644 --- a/extensions-jvm/beanio/pom.xml +++ b/extensions/beanio/pom.xml @@ -21,7 +21,7 @@ 4.0.0 org.apache.camel.quarkus - camel-quarkus-extensions-jvm + camel-quarkus-extensions 3.16.0-SNAPSHOT ../pom.xml 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 ba7c2058575e..79851fed9643 100644 --- a/extensions-jvm/beanio/runtime/pom.xml +++ b/extensions/beanio/runtime/pom.xml @@ -32,9 +32,14 @@ 3.8.0 + 3.16.0 + + org.apache.camel.quarkus + camel-quarkus-xml-jaxp + org.apache.camel.quarkus camel-quarkus-core 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 000000000000..ec95d1b8f79f --- /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 aff76a2c0a38..60a4b519e2a8 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 2cc68249b30e..188bd03aceac 100644 --- a/extensions/pom.xml +++ b/extensions/pom.xml @@ -69,6 +69,7 @@ base64 bean bean-validator + beanio bindy box braintree diff --git a/integration-tests-jvm/pom.xml b/integration-tests-jvm/pom.xml index abdd819563c4..49293da311de 100644 --- a/integration-tests-jvm/pom.xml +++ b/integration-tests-jvm/pom.xml @@ -41,7 +41,6 @@ azure-servicebus azure-storage-datalake barcode - beanio bonita chatscript chunk 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 ed05ee369127..ddd11135240e 100644 --- a/integration-tests-jvm/beanio/pom.xml +++ b/integration-tests/beanio/pom.xml @@ -117,6 +117,33 @@ + + native + + + native + + + + true + + + + + org.apache.maven.plugins + maven-failsafe-plugin + + + + integration-test + verify + + + + + + + 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 b1d7bb7a91b7..15846a15cbbb 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 668a7245d529..09c338741579 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 051ea6306e51..46896c28a467 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 f3bc71cc7c64..ca31047661d1 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 @@ 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% 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/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java index 85afd0bf3113..459430173db9 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 7e1d7c64da36..77580ffb056d 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.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 78626bbb646b..02f095ec29fe 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 219eb4554e7d..2ff5990f904d 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 000000000000..5610e20f5aae --- /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 100% rename from integration-tests-jvm/beanio/src/main/resources/complex-mapping.xml rename to integration-tests/beanio/src/main/resources/complex-mapping.xml 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 100% rename from integration-tests-jvm/beanio/src/main/resources/employee-mapping.xml rename to integration-tests/beanio/src/main/resources/employee-mapping.xml 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 100% 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 diff --git a/integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioIT.java b/integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioIT.java new file mode 100644 index 000000000000..9c92101408bc --- /dev/null +++ b/integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioIT.java @@ -0,0 +1,24 @@ +/* + * 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.it; + +import io.quarkus.test.junit.QuarkusIntegrationTest; + +@QuarkusIntegrationTest +class BeanioIT extends BeanioTest { + +} 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 658afa12798a..051a30e09d64 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -64,6 +64,7 @@ azure-grouped base64 bean-validator + beanio bindy box braintree diff --git a/tooling/scripts/test-categories.yaml b/tooling/scripts/test-categories.yaml index cee39642f0f8..957e75582ae2 100644 --- a/tooling/scripts/test-categories.yaml +++ b/tooling/scripts/test-categories.yaml @@ -204,6 +204,7 @@ group-11: - xslt-saxon group-12: - aws2-grouped + - beanio - csimple - quartz-clustered - knative