You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2020/02/17 11:23:55 UTC

[camel-quarkus] branch camel-master updated (e884ccb -> 460cc4e)

This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a change to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git.


    from e884ccb  GitHUb Actions: include quarkus-master for branches to watch
     new 287480e  Add olingo4 extension
     new 882bb40  chore: Remove redundant note related to fileWatcher param in stream extension docs
     new 4b1d7da  Add olingo4 itest to project list
     new 0e5feb3  Remove enableJni from integration tests as JNI si always enabled on GraalVM 19.3.1
     new be3ff25  Use camel-quarkus-support-httpclient in slack extension
     new 878a6d2  Cleanup: Declare quarkus-development-mode-spi as a nonExtensionArtifact
     new e8e5dc4  Fix #696 Test HTTPS with the HTTP clients
     new d5e5ba5  Re-use the cached local Maven repo even in build-alternative-jvm job
     new 23e36a1  #670 fix PDF itests in native mode
     new 983a629  Ensure that catalog files are added to the native image #686
     new f17423b  Ensure that catalog files are added to the native image #686 (fix findings)
     new 35ad157  Set -Dmaven.wagon.http.retryHandler.requestSentEnabled=true
     new 6b3457c  Update <mvnd.builder.rule> via -Pformat
     new 875b0c9  Update mvnd.builder.rules by running mvn process-resources -Pformat
     new 797ac12  Fix #688 Create extension mojo not working after Quarkus 1.3.0.Alpha1 upgrade
     new d2f6b59  Fix #694 quarkus-maven-plugin generate application.properties file for IT tests
     new 5b22aa6  create camel-jira extension #710
     new 24b5ac4  camel-jira extension:more polish up
     new 0bbb279  Fix incompatibilities between Quarkus and Camel MongoDB dependencies
     new c43d9bd  Upgrade to Camel 3.1.0 - WIP
     new 6dac73a  Upgarde to Camel 3.1.0 - WIP (xml loader/dumper)
     new 8de15a2  Upgarde to Camel 3.1.0 - WIP (xml loader/dumper)
     new 030be62  Update docs
     new 220e0ba  Upgarde to Camel 3.1.0 - WIP (catalog)
     new fec7df2  Renamed camel-jaxp to camel-xml-jaxp
     new 5fd8ced  cleanup core extension pom
     new 704a28a  Stop unbanning some classes after the upgrade to Camel 3.1
     new d00d1de  Upgarde to Camel 3.1.0 - WIP (ConfigurerResolver, reifiers)
     new 15da541  Upgarde to Camel 3.1.0 - WIP (simplified RuntimeCamelCatalog)
     new 961f6f9  Upgarde to Camel 3.1.0 - WIP (bindy)
     new 8386dc9  Upgarde to Camel 3.1.0 - WIP (bindy)
     new 264b2d3  Fix #74 Telegram extension
     new c1451c7  Upgarde to Camel 3.1.0 - WIP (FastTypeConverter)
     new 460cc4e  Upgarde to Camel 3.1.0 - WIP (PDF)

The 34 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/pr-build.yaml                    |  12 +-
 .mvn/maven.config                                  |   1 +
 catalog/camel-quarkus-catalog/pom.xml              |  27 +-
 .../catalog/quarkus/QuarkusRuntimeProvider.java    |   5 +-
 .../quarkus/QuarkusRuntimeProviderTest.java        |  14 +-
 docs/modules/ROOT/pages/extensions/stream.adoc     |   4 -
 .../pages/list-of-camel-quarkus-extensions.adoc    |  17 +-
 examples/file-split-log-xml/pom.xml                |  10 +
 examples/observability/pom.xml                     |  10 +
 examples/rest-json/pom.xml                         |  10 +
 examples/timer-log-cdi/pom.xml                     |  10 +
 examples/timer-log-kotlin/pom.xml                  |   7 +
 examples/timer-log-spring/pom.xml                  |  10 +
 examples/timer-log-xml/pom.xml                     |  10 +
 examples/timer-log/pom.xml                         |  10 +
 .../component/bindy/deployment/BindyProcessor.java |  12 +
 .../consul/deployment/ConsulProcessor.java         |  12 -
 .../component/xml/deployment/XmlProcessor.java     |   9 +-
 extensions/core-xml/runtime/pom.xml                |   4 +
 .../component/xml/DefaultXmlRoutesLoader.java      |  39 --
 .../camel/quarkus/component/xml/XmlRecorder.java   |  27 +-
 .../quarkus/core/deployment/BuildProcessor.java    |  19 +-
 ...em.java => CamelModelToXMLDumperBuildItem.java} |  13 +-
 .../deployment/CamelRoutesLoaderBuildItems.java    |  10 +-
 .../core/deployment/NativeImageProcessor.java      |  86 +++-
 extensions/core/runtime/pom.xml                    |  10 +-
 .../org/apache/camel/quarkus/core/CamelConfig.java |  48 ++
 .../quarkus/core/CamelMainEventDispatcher.java     |   5 +
 .../apache/camel/quarkus/core/CamelMainEvents.java |   6 +
 .../camel/quarkus/core/CamelMainRecorder.java      |   7 +-
 .../apache/camel/quarkus/core/CamelRecorder.java   |  29 +-
 .../camel/quarkus/core/CamelRoutesCollector.java   |  17 +-
 .../camel/quarkus/core/CamelRuntimeCatalog.java    |  63 +++
 ...esLoader.java => DisabledModelToXMLDumper.java} |  15 +-
 .../core/DisabledPredicateValidatorReifier.java    |   6 +-
 .../quarkus/core/DisabledValidateReifier.java      |   6 +-
 ...java => DisabledXMLRoutesDefinitionLoader.java} |  15 +-
 .../camel/quarkus/core/FastCamelContext.java       | 172 +++++--
 .../org/apache/camel/quarkus/core/FastModel.java   |   8 +-
 .../camel/quarkus/core/FastTypeConverter.java      |  11 +-
 .../java/org/apache/camel/quarkus/core/Flags.java  |  10 +
 .../apache/camel/quarkus/core/XmlRoutesLoader.java |  31 --
 extensions/{bindy => jira}/deployment/pom.xml      |  12 +-
 .../component/jira/deployment/JiraProcessor.java}  |  19 +-
 extensions/{bindy => jira}/pom.xml                 |   4 +-
 extensions/{aws-iam => jira}/runtime/pom.xml       |  44 +-
 .../main/resources/META-INF/quarkus-extension.yaml |   5 +-
 .../mongodb/deployment/MongoDbProcessor.java       |  11 +-
 extensions/mongodb/runtime/pom.xml                 |   4 +-
 .../component/mongodb/CamelMongoClient.java        | 124 -----
 .../graal/SubstituteMongoClientOptions.java        |  43 --
 .../{aws-kinesis => olingo4}/deployment/pom.xml    |  22 +-
 .../olingo4/deployment/Olingo4Processor.java       |  72 +++
 extensions/{bindy => olingo4}/pom.xml              |   4 +-
 extensions/{sql => olingo4}/runtime/pom.xml        |  32 +-
 .../olingo4/graal/ODataImplSubstitutions.java}     |  16 +-
 .../main/resources/META-INF/quarkus-extension.yaml |   9 +-
 extensions/pdf/deployment/pom.xml                  |   4 +
 .../component/pdf/deployment/PdfProcessor.java     |  17 +-
 extensions/pdf/runtime/pom.xml                     |  10 +
 extensions/pom.xml                                 |   5 +-
 extensions/readme.adoc                             |  17 +-
 extensions/slack/deployment/pom.xml                |   4 +
 .../component/slack/deployment/SlackProcessor.java |   8 -
 extensions/slack/runtime/pom.xml                   |   4 +
 .../httpclient/deployment/HttpClientProcessor.java |   7 +
 .../support/policy/deployment/PolicyProcessor.java |   8 +-
 extensions/support/xml/runtime/pom.xml             |   2 +-
 extensions/{consul => telegram}/deployment/pom.xml |  22 +-
 .../telegram/deployment/TelegramProcessor.java     |  82 +++
 extensions/{bindy => telegram}/pom.xml             |   4 +-
 extensions/{slack => telegram}/runtime/pom.xml     |  30 +-
 .../component/telegram/TelegramRecorder.java}      |  12 +-
 .../main/resources/META-INF/quarkus-extension.yaml |   9 +-
 integration-tests/aws/pom.xml                      |  11 +-
 integration-tests/base64/pom.xml                   |  11 +-
 integration-tests/bean-validator/pom.xml           |  11 +-
 integration-tests/bean/pom.xml                     |  11 +-
 integration-tests/bindy/pom.xml                    |  11 +-
 .../quarkus/component/bindy/it/BindyTestRoute.java |   4 +-
 integration-tests/consul/pom.xml                   |  11 +-
 integration-tests/controlbus/pom.xml               |  11 +-
 integration-tests/core-impl/pom.xml                |  11 +-
 integration-tests/core-main-collector/pom.xml      |  10 +
 integration-tests/core-main-xml/pom.xml            |  11 +-
 .../apache/camel/quarkus/core/CamelServlet.java    |   5 +
 .../org/apache/camel/quarkus/core/CamelTest.java   |   5 +
 integration-tests/core-main/pom.xml                |  11 +-
 .../apache/camel/quarkus/core/CamelServlet.java    |   4 +-
 .../org/apache/camel/quarkus/core/CamelTest.java   |   5 +-
 integration-tests/core/pom.xml                     |  11 +-
 .../apache/camel/quarkus/core/CamelServlet.java    |  23 +
 .../core/src/main/resources/application.properties |   5 +-
 .../org/apache/camel/quarkus/core/CamelTest.java   |   8 +
 integration-tests/csv/pom.xml                      |  11 +-
 integration-tests/dataformat/pom.xml               |  11 +-
 integration-tests/dozer/pom.xml                    |  11 +-
 integration-tests/exec/pom.xml                     |  11 +-
 integration-tests/fhir/pom.xml                     |  11 +-
 integration-tests/file/pom.xml                     |  11 +-
 integration-tests/ftp/pom.xml                      |  11 +-
 integration-tests/http/pom.xml                     |  11 +-
 .../quarkus/component/http/it/HttpResource.java    |  30 ++
 .../camel/quarkus/component/http/it/HttpTest.java  |  29 ++
 integration-tests/hystrix/pom.xml                  |  11 +-
 integration-tests/infinispan/pom.xml               |  11 +-
 integration-tests/jackson/pom.xml                  |  11 +-
 integration-tests/jdbc/pom.xml                     |  11 +-
 integration-tests/{bindy => jira}/pom.xml          |  35 +-
 .../quarkus/component/jira/it/JiraResource.java    |  37 +-
 .../component/jira/it/JiraRouteBuilder.java}       |  21 +-
 .../camel/quarkus/component/jira/it/JiraIT.java}   |   4 +-
 .../camel/quarkus/component/jira/it/JiraTest.java  |  14 +-
 integration-tests/jsonpath/pom.xml                 |  11 +-
 integration-tests/kafka/pom.xml                    |   2 +-
 integration-tests/mail/pom.xml                     |  11 +-
 integration-tests/microprofile/pom.xml             |  11 +-
 integration-tests/mongodb/pom.xml                  |  11 +-
 .../component/mongodb/it/MongoDbResource.java      |  10 -
 .../component/mongodb/it/MongoDbTestResource.java  |   4 +-
 integration-tests/netty/pom.xml                    |  11 +-
 integration-tests/{bindy => olingo4}/pom.xml       |  25 +-
 .../component/olingo4/it/Olingo4Resource.java      | 120 +++++
 .../quarkus/component/olingo4/it/Person.java}      |  46 +-
 .../quarkus/component/olingo4/it/Olingo4IT.java}   |   4 +-
 .../quarkus/component/olingo4/it/Olingo4Test.java  | 120 +++++
 integration-tests/opentracing/pom.xml              |  11 +-
 integration-tests/paho/pom.xml                     |  11 +-
 integration-tests/pdf/pom.xml                      |  11 +-
 integration-tests/platform-http-engine/pom.xml     |  11 +-
 integration-tests/platform-http/pom.xml            |  11 +-
 integration-tests/pom.xml                          |   3 +
 integration-tests/reactive-streams/pom.xml         |  10 +
 integration-tests/salesforce/pom.xml               |  11 +-
 integration-tests/scheduler/pom.xml                |  11 +-
 integration-tests/seda/pom.xml                     |  11 +-
 integration-tests/servlet/pom.xml                  |  11 +-
 integration-tests/sjms/pom.xml                     |  11 +-
 integration-tests/slack/pom.xml                    |  11 +-
 integration-tests/snakeyaml/pom.xml                |  11 +-
 integration-tests/sql/pom.xml                      |  11 +-
 integration-tests/stream/pom.xml                   |  11 +-
 .../core/runtime/support/SupportListener.java      |   4 +
 .../camel/quarkus/test/TrustStoreResource.java     |  58 +++
 integration-tests/tagsoup/pom.xml                  |  11 +-
 integration-tests/tarfile/pom.xml                  |  11 +-
 integration-tests/telegram/README.adoc             |  13 +
 integration-tests/{http => telegram}/pom.xml       |  64 ++-
 .../component/telegram/it/TelegramResource.java    | 157 ++++++
 .../component/telegram/it/TelegramRoutes.java      |  77 +++
 .../src/main/resources/application.properties      |  19 +-
 .../mock-messages/editMessageLiveLocation.json     |  24 +
 .../main/resources/mock-messages/getUpdates.json   |  41 ++
 .../main/resources/mock-messages/sendAudio.json    |  25 +
 .../main/resources/mock-messages/sendDocument.json |  24 +
 .../main/resources/mock-messages/sendLocation.json |  23 +
 .../main/resources/mock-messages/sendMessage.json  |  20 +
 .../main/resources/mock-messages/sendPhoto.json    |  27 +
 .../main/resources/mock-messages/sendVenue.json    |  31 ++
 .../main/resources/mock-messages/sendVideo.json    |  33 ++
 .../mock-messages/stopMessageLiveLocation.json     |  24 +
 .../quarkus/component/telegram/it/TelegramIT.java} |   4 +-
 .../component/telegram/it/TelegramTest.java        | 187 +++++++
 .../src/test/resources/camel-quarkus-rocks.mp3     | Bin 0 -> 9657 bytes
 .../src/test/resources/camel-quarkus-rocks.mp4     | Bin 0 -> 27845 bytes
 .../src/test/resources/camel-quarkus-rocks.pdf     | Bin 0 -> 7638 bytes
 .../src/test/resources/camel-quarkus-rocks.png     | Bin 0 -> 264 bytes
 integration-tests/twitter/pom.xml                  |  11 +-
 integration-tests/validator/pom.xml                |  11 +-
 integration-tests/xslt/pom.xml                     |  11 +-
 integration-tests/zipfile/pom.xml                  |  11 +-
 pom.xml                                            |  26 +-
 poms/bom-deployment/pom.xml                        |  10 +
 poms/bom/pom.xml                                   | 106 +++-
 .../integration-test-application.properties}       |   0
 .../integration-test-pom.xml                       |   1 -
 tooling/package-maven-plugin/pom.xml               |  32 ++
 .../apache/camel/quarkus/maven/ExtMvelHelper.java  |  12 +-
 .../camel/quarkus/maven/JSonSchemaHelper.java      | 567 +++++++++++++++++++++
 .../quarkus/maven/PrepareCatalogQuarkusMojo.java   |   2 +-
 .../quarkus/maven/UpdateDocExtensionsListMojo.java | 132 ++---
 tooling/scripts/sort-poms.groovy                   | 122 +++++
 tooling/scripts/validate-dependencies.groovy       |   4 +-
 183 files changed, 3720 insertions(+), 773 deletions(-)
 create mode 100644 .mvn/maven.config
 delete mode 100644 extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlRoutesLoader.java
 copy extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/{CamelContextBuildItem.java => CamelModelToXMLDumperBuildItem.java} (74%)
 create mode 100644 extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java
 copy extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/{DisabledXmlRoutesLoader.java => DisabledModelToXMLDumper.java} (73%)
 rename extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/{DisabledXmlRoutesLoader.java => DisabledXMLRoutesDefinitionLoader.java} (64%)
 delete mode 100644 extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlRoutesLoader.java
 copy extensions/{bindy => jira}/deployment/pom.xml (86%)
 copy extensions/{core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/Feature.java => jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java} (74%)
 copy extensions/{bindy => jira}/pom.xml (94%)
 copy extensions/{aws-iam => jira}/runtime/pom.xml (75%)
 copy extensions/{core => jira}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (92%)
 delete mode 100644 extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/CamelMongoClient.java
 delete mode 100644 extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/graal/SubstituteMongoClientOptions.java
 copy extensions/{aws-kinesis => olingo4}/deployment/pom.xml (80%)
 create mode 100644 extensions/olingo4/deployment/src/main/java/org/apache/camel/quarkus/component/olingo4/deployment/Olingo4Processor.java
 copy extensions/{bindy => olingo4}/pom.xml (93%)
 copy extensions/{sql => olingo4}/runtime/pom.xml (74%)
 copy extensions/{bean-validator/runtime/src/main/java/org/apache/camel/quarkus/component/bean/validator/graal/SubstituteBeanValidatorEndpoint.java => olingo4/runtime/src/main/java/org/apache/camel/quarkus/component/olingo4/graal/ODataImplSubstitutions.java} (63%)
 copy extensions/{consul => olingo4}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (87%)
 copy extensions/{consul => telegram}/deployment/pom.xml (83%)
 create mode 100644 extensions/telegram/deployment/src/main/java/org/apache/camel/quarkus/component/telegram/deployment/TelegramProcessor.java
 copy extensions/{bindy => telegram}/pom.xml (93%)
 copy extensions/{slack => telegram}/runtime/pom.xml (73%)
 rename extensions/{mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/CamelMongoClientRecorder.java => telegram/runtime/src/main/java/org/apache/camel/quarkus/component/telegram/TelegramRecorder.java} (72%)
 copy extensions/{bindy => telegram}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (88%)
 copy integration-tests/{bindy => jira}/pom.xml (75%)
 copy tooling/create-extension-templates/TestResource.java => integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraResource.java (62%)
 copy integration-tests/{tarfile/src/main/java/org/apache/camel/quarkus/component/tarfile/it/TarfileRouteBuilder.java => jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraRouteBuilder.java} (51%)
 copy integration-tests/{file/src/test/java/org/apache/camel/quarkus/component/file/it/FileIT.java => jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraIT.java} (91%)
 copy tooling/create-extension-templates/Test.java => integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java (77%)
 copy integration-tests/{bindy => olingo4}/pom.xml (82%)
 create mode 100644 integration-tests/olingo4/src/main/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Resource.java
 copy integration-tests/{dozer/src/main/java/org/apache/camel/quarkus/component/dozer/it/model/CustomerA.java => olingo4/src/main/java/org/apache/camel/quarkus/component/olingo4/it/Person.java} (63%)
 copy integration-tests/{csv/src/test/java/org/apache/camel/quarkus/component/csv/it/CsvIT.java => olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4IT.java} (90%)
 create mode 100644 integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java
 create mode 100644 integration-tests/support/test-support/src/main/java/org/apache/camel/quarkus/test/TrustStoreResource.java
 create mode 100644 integration-tests/telegram/README.adoc
 copy integration-tests/{http => telegram}/pom.xml (72%)
 create mode 100644 integration-tests/telegram/src/main/java/org/apache/camel/quarkus/component/telegram/it/TelegramResource.java
 create mode 100644 integration-tests/telegram/src/main/java/org/apache/camel/quarkus/component/telegram/it/TelegramRoutes.java
 copy integration-tests/{platform-http => telegram}/src/main/resources/application.properties (60%)
 create mode 100644 integration-tests/telegram/src/main/resources/mock-messages/editMessageLiveLocation.json
 create mode 100644 integration-tests/telegram/src/main/resources/mock-messages/getUpdates.json
 create mode 100644 integration-tests/telegram/src/main/resources/mock-messages/sendAudio.json
 create mode 100644 integration-tests/telegram/src/main/resources/mock-messages/sendDocument.json
 create mode 100644 integration-tests/telegram/src/main/resources/mock-messages/sendLocation.json
 create mode 100644 integration-tests/telegram/src/main/resources/mock-messages/sendMessage.json
 create mode 100644 integration-tests/telegram/src/main/resources/mock-messages/sendPhoto.json
 create mode 100644 integration-tests/telegram/src/main/resources/mock-messages/sendVenue.json
 create mode 100644 integration-tests/telegram/src/main/resources/mock-messages/sendVideo.json
 create mode 100644 integration-tests/telegram/src/main/resources/mock-messages/stopMessageLiveLocation.json
 copy integration-tests/{bindy/src/test/java/org/apache/camel/quarkus/component/bindy/it/CsvRecordIT.java => telegram/src/test/java/org/apache/camel/quarkus/component/telegram/it/TelegramIT.java} (90%)
 create mode 100644 integration-tests/telegram/src/test/java/org/apache/camel/quarkus/component/telegram/it/TelegramTest.java
 create mode 100644 integration-tests/telegram/src/test/resources/camel-quarkus-rocks.mp3
 create mode 100644 integration-tests/telegram/src/test/resources/camel-quarkus-rocks.mp4
 create mode 100644 integration-tests/telegram/src/test/resources/camel-quarkus-rocks.pdf
 create mode 100644 integration-tests/telegram/src/test/resources/camel-quarkus-rocks.png
 copy tooling/{package-maven-plugin/src/main/resources/camel-quarkus-package-maven-plugin.properties => create-extension-templates/integration-test-application.properties} (100%)
 create mode 100644 tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/JSonSchemaHelper.java


[camel-quarkus] 32/34: Fix #74 Telegram extension

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 264b2d3db62a2fdcd7824d2ede12c1e2c46652d2
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Mon Dec 23 16:46:52 2019 +0100

    Fix #74 Telegram extension
---
 .../pages/list-of-camel-quarkus-extensions.adoc    |   5 +-
 extensions/pom.xml                                 |   1 +
 extensions/readme.adoc                             |   5 +-
 extensions/telegram/deployment/pom.xml             |  83 +++++++++
 .../telegram/deployment/TelegramProcessor.java     |  82 +++++++++
 extensions/telegram/pom.xml                        |  39 +++++
 extensions/telegram/runtime/pom.xml                | 106 ++++++++++++
 .../component/telegram/TelegramRecorder.java       |  31 ++++
 .../main/resources/META-INF/quarkus-extension.yaml |  28 +++
 integration-tests/pom.xml                          |   1 +
 integration-tests/telegram/README.adoc             |  13 ++
 integration-tests/telegram/pom.xml                 | 165 ++++++++++++++++++
 .../component/telegram/it/TelegramResource.java    | 157 +++++++++++++++++
 .../component/telegram/it/TelegramRoutes.java      |  77 +++++++++
 .../src/main/resources/application.properties      |  34 ++++
 .../mock-messages/editMessageLiveLocation.json     |  24 +++
 .../main/resources/mock-messages/getUpdates.json   |  41 +++++
 .../main/resources/mock-messages/sendAudio.json    |  25 +++
 .../main/resources/mock-messages/sendDocument.json |  24 +++
 .../main/resources/mock-messages/sendLocation.json |  23 +++
 .../main/resources/mock-messages/sendMessage.json  |  20 +++
 .../main/resources/mock-messages/sendPhoto.json    |  27 +++
 .../main/resources/mock-messages/sendVenue.json    |  31 ++++
 .../main/resources/mock-messages/sendVideo.json    |  33 ++++
 .../mock-messages/stopMessageLiveLocation.json     |  24 +++
 .../quarkus/component/telegram/it/TelegramIT.java  |  24 +++
 .../component/telegram/it/TelegramTest.java        | 187 +++++++++++++++++++++
 .../src/test/resources/camel-quarkus-rocks.mp3     | Bin 0 -> 9657 bytes
 .../src/test/resources/camel-quarkus-rocks.mp4     | Bin 0 -> 27845 bytes
 .../src/test/resources/camel-quarkus-rocks.pdf     | Bin 0 -> 7638 bytes
 .../src/test/resources/camel-quarkus-rocks.png     | Bin 0 -> 264 bytes
 poms/bom/pom.xml                                   |  15 ++
 32 files changed, 1323 insertions(+), 2 deletions(-)

diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index 3c4999e..a0128cd 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -18,7 +18,7 @@ In case you are missing some Camel feature in the list:
 == Camel Components
 
 // components: START
-Number of Camel components: 64 in 55 JAR artifacts (0 deprecated)
+Number of Camel components: 65 in 56 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -195,6 +195,9 @@ Number of Camel components: 64 in 55 JAR artifacts (0 deprecated)
 | xref:extensions/stream.adoc[Stream] (camel-quarkus-stream) +
 `stream:kind` | 1.2.0 | The stream: component provides access to the system-in, system-out and system-err streams as well as allowing streaming of file.
 
+| link:https://camel.apache.org/components/latest/telegram-component.html[Telegram] (camel-quarkus-telegram) +
+`telegram:type` | 1.0.0 | The telegram component provides access to the Telegram Bot API.
+
 | link:https://camel.apache.org/components/latest/timer-component.html[Timer] (camel-quarkus-timer) +
 `timer:timerName` | 0.2.0 | The timer component is used for generating message exchanges when a timer fires.
 
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 2ece525..1106c36 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -107,6 +107,7 @@
         <module>stream</module>
         <module>tagsoup</module>
         <module>tarfile</module>
+        <module>telegram</module>
         <module>timer</module>
         <module>twitter</module>
         <module>validator</module>
diff --git a/extensions/readme.adoc b/extensions/readme.adoc
index 49f41c3..22569de 100644
--- a/extensions/readme.adoc
+++ b/extensions/readme.adoc
@@ -5,7 +5,7 @@ Apache Camel Quarkus supports the following Camel artifacts as Quarkus Extension
 == Camel Components
 
 // components: START
-Number of Camel components: 64 in 55 JAR artifacts (0 deprecated)
+Number of Camel components: 65 in 56 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -182,6 +182,9 @@ Number of Camel components: 64 in 55 JAR artifacts (0 deprecated)
 | xref:extensions/stream.adoc[Stream] (camel-quarkus-stream) +
 `stream:kind` | 1.2.0 | The stream: component provides access to the system-in, system-out and system-err streams as well as allowing streaming of file.
 
+| link:https://camel.apache.org/components/latest/telegram-component.html[Telegram] (camel-quarkus-telegram) +
+`telegram:type` | 1.0.0 | The telegram component provides access to the Telegram Bot API.
+
 | link:https://camel.apache.org/components/latest/timer-component.html[Timer] (camel-quarkus-timer) +
 `timer:timerName` | 0.2.0 | The timer component is used for generating message exchanges when a timer fires.
 
diff --git a/extensions/telegram/deployment/pom.xml b/extensions/telegram/deployment/pom.xml
new file mode 100644
index 0000000..231703c
--- /dev/null
+++ b/extensions/telegram/deployment/pom.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-telegram-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-telegram-deployment</artifactId>
+    <name>Camel Quarkus :: Telegram :: Deployment</name>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-deployment</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-ahc-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-jackson-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-telegram</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>io.quarkus</groupId>
+                            <artifactId>quarkus-extension-processor</artifactId>
+                            <version>${quarkus.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/extensions/telegram/deployment/src/main/java/org/apache/camel/quarkus/component/telegram/deployment/TelegramProcessor.java b/extensions/telegram/deployment/src/main/java/org/apache/camel/quarkus/component/telegram/deployment/TelegramProcessor.java
new file mode 100644
index 0000000..2535a74
--- /dev/null
+++ b/extensions/telegram/deployment/src/main/java/org/apache/camel/quarkus/component/telegram/deployment/TelegramProcessor.java
@@ -0,0 +1,82 @@
+/*
+ * 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.telegram.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
+import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.apache.camel.quarkus.component.telegram.TelegramRecorder;
+import org.apache.camel.quarkus.core.deployment.CamelBeanBuildItem;
+
+class TelegramProcessor {
+
+    private static final String FEATURE = "camel-telegram";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+    @Record(ExecutionTime.STATIC_INIT)
+    @BuildStep
+    CamelBeanBuildItem telegramComponent(TelegramRecorder recorder) {
+        return new CamelBeanBuildItem(
+                "telegram",
+                "org.apache.camel.component.telegram.TelegramComponent",
+                recorder.createTelegramComponent());
+    }
+
+    @BuildStep
+    ExtensionSslNativeSupportBuildItem activateSslNativeSupport() {
+        return new ExtensionSslNativeSupportBuildItem(FEATURE);
+    }
+
+    @BuildStep
+    ReflectiveClassBuildItem reflectiveMethodsAndFields() {
+        return new ReflectiveClassBuildItem(true, true,
+                "org.apache.camel.component.telegram.model.Chat",
+                "org.apache.camel.component.telegram.model.EditMessageLiveLocationMessage",
+                "org.apache.camel.component.telegram.model.IncomingAudio",
+                "org.apache.camel.component.telegram.model.IncomingDocument",
+                "org.apache.camel.component.telegram.model.IncomingMessage",
+                "org.apache.camel.component.telegram.model.IncomingPhotoSize",
+                "org.apache.camel.component.telegram.model.IncomingVideo",
+                "org.apache.camel.component.telegram.model.InlineKeyboardButton",
+                "org.apache.camel.component.telegram.model.Location",
+                "org.apache.camel.component.telegram.model.MessageResult",
+                "org.apache.camel.component.telegram.model.OutgoingAudioMessage",
+                "org.apache.camel.component.telegram.model.OutgoingDocumentMessage",
+                "org.apache.camel.component.telegram.model.OutgoingMessage",
+                "org.apache.camel.component.telegram.model.OutgoingPhotoMessage",
+                "org.apache.camel.component.telegram.model.OutgoingTextMessage",
+                "org.apache.camel.component.telegram.model.OutgoingVideoMessage",
+                "org.apache.camel.component.telegram.model.ReplyKeyboardMarkup",
+                "org.apache.camel.component.telegram.model.SendLocationMessage",
+                "org.apache.camel.component.telegram.model.SendVenueMessage",
+                "org.apache.camel.component.telegram.model.StopMessageLiveLocationMessage",
+                "org.apache.camel.component.telegram.model.UnixTimestampDeserializer",
+                "org.apache.camel.component.telegram.model.Update",
+                "org.apache.camel.component.telegram.model.UpdateResult",
+                "org.apache.camel.component.telegram.model.User",
+                "org.apache.camel.component.telegram.model.WebhookInfo",
+                "org.apache.camel.component.telegram.model.WebhookResult");
+    }
+
+}
diff --git a/extensions/telegram/pom.xml b/extensions/telegram/pom.xml
new file mode 100644
index 0000000..70603ba
--- /dev/null
+++ b/extensions/telegram/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-telegram-parent</artifactId>
+    <name>Camel Quarkus :: Telegram</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+    </modules>
+</project>
diff --git a/extensions/telegram/runtime/pom.xml b/extensions/telegram/runtime/pom.xml
new file mode 100644
index 0000000..0679852
--- /dev/null
+++ b/extensions/telegram/runtime/pom.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-telegram-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-telegram</artifactId>
+    <name>Camel Quarkus :: Telegram :: Runtime</name>
+    <description>Telegram Chat Support</description>
+
+    <properties>
+        <firstVersion>1.0.0</firstVersion>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-ahc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-jackson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-telegram</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpasyncclient</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-logging</groupId>
+                    <artifactId>commons-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.logging</groupId>
+            <artifactId>commons-logging-jboss-logging</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-bootstrap-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>io.quarkus</groupId>
+                            <artifactId>quarkus-extension-processor</artifactId>
+                            <version>${quarkus.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions/telegram/runtime/src/main/java/org/apache/camel/quarkus/component/telegram/TelegramRecorder.java b/extensions/telegram/runtime/src/main/java/org/apache/camel/quarkus/component/telegram/TelegramRecorder.java
new file mode 100644
index 0000000..5a5e55a
--- /dev/null
+++ b/extensions/telegram/runtime/src/main/java/org/apache/camel/quarkus/component/telegram/TelegramRecorder.java
@@ -0,0 +1,31 @@
+/*
+ * 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.telegram;
+
+import io.quarkus.runtime.RuntimeValue;
+import io.quarkus.runtime.annotations.Recorder;
+import org.apache.camel.component.telegram.TelegramComponent;
+
+@Recorder
+public class TelegramRecorder {
+
+    public RuntimeValue<TelegramComponent> createTelegramComponent() {
+        final TelegramComponent telegramComponent = new TelegramComponent();
+        return new RuntimeValue<>(telegramComponent);
+    }
+
+}
diff --git a/extensions/telegram/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/telegram/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..a799cd2
--- /dev/null
+++ b/extensions/telegram/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,28 @@
+#
+# 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.
+#
+
+---
+name: "Camel Quarkus Telegram"
+description: "Camel Telegram support"
+metadata:
+  keywords:
+  - "camel"
+  - "chat"
+  - "telegram"
+  guide: "https://quarkus.io/guides/camel"
+  categories:
+  - "integration"
\ No newline at end of file
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 0fba9c4..3d050ea 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -213,6 +213,7 @@
         <module>stream</module>
         <module>tagsoup</module>
         <module>tarfile</module>
+        <module>telegram</module>
         <module>twitter</module>
         <module>validator</module>
         <module>xslt</module>
diff --git a/integration-tests/telegram/README.adoc b/integration-tests/telegram/README.adoc
new file mode 100644
index 0000000..259e493
--- /dev/null
+++ b/integration-tests/telegram/README.adoc
@@ -0,0 +1,13 @@
+== Camel Quarkus Telegram Integration Tests
+
+A work in progress, see https://github.com/apache/camel-quarkus/issues/74
+
+To run `camel-quarkus-telegram` integration tests, you must first create a Telegram bot following this guide: https://www.nicolaferraro.me/2016/05/27/creating-a-telegram-bot-in-5-minutes-with-apache-camel/ .
+
+Then set the following environment variables:
+
+[source,shell]
+----
+$ export TELEGRAM_AUTHORIZATION_TOKEN=my-autorization-token
+$ export TELEGRAM_CHAT_ID=my-chatId
+----
diff --git a/integration-tests/telegram/pom.xml b/integration-tests/telegram/pom.xml
new file mode 100644
index 0000000..393524b
--- /dev/null
+++ b/integration-tests/telegram/pom.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-integration-tests</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-quarkus-integration-test-telegram</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: Telegram</name>
+    <description>Integration tests for Camel Quarkus Telegram extension</description>
+
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-attachments-deployment,camel-quarkus-platform-http-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-telegram-deployment</mvnd.builder.rule>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-telegram</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy-jackson</artifactId>
+        </dependency>
+
+        <!-- To serve the mock Telegram API -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-platform-http</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-attachments</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-integration-test-support</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.awaitility</groupId>
+            <artifactId>awaitility</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.hamcrest</groupId>
+                    <artifactId>hamcrest-core</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>native</id>
+            <activation>
+                <property>
+                    <name>native</name>
+                </property>
+            </activation>
+            <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>
+                                <configuration>
+                                    <systemProperties>
+                                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
+                                    </systemProperties>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>io.quarkus</groupId>
+                        <artifactId>quarkus-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>native-image</id>
+                                <goals>
+                                    <goal>native-image</goal>
+                                </goals>
+                                <configuration>
+                                    <reportErrorsAtRuntime>false</reportErrorsAtRuntime>
+                                    <cleanupServer>true</cleanupServer>
+                                    <enableServer>false</enableServer>
+                                    <dumpProxies>false</dumpProxies>
+                                    <graalvmHome>${graalvmHome}</graalvmHome>
+                                    <disableReports>true</disableReports>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/integration-tests/telegram/src/main/java/org/apache/camel/quarkus/component/telegram/it/TelegramResource.java b/integration-tests/telegram/src/main/java/org/apache/camel/quarkus/component/telegram/it/TelegramResource.java
new file mode 100644
index 0000000..52b929c
--- /dev/null
+++ b/integration-tests/telegram/src/main/java/org/apache/camel/quarkus/component/telegram/it/TelegramResource.java
@@ -0,0 +1,157 @@
+/*
+ * 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.telegram.it;
+
+import java.net.URI;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.telegram.TelegramConstants;
+import org.apache.camel.component.telegram.TelegramMediaType;
+import org.apache.camel.component.telegram.model.EditMessageLiveLocationMessage;
+import org.apache.camel.component.telegram.model.SendLocationMessage;
+import org.apache.camel.component.telegram.model.SendVenueMessage;
+import org.apache.camel.component.telegram.model.StopMessageLiveLocationMessage;
+import org.eclipse.microprofile.config.inject.ConfigProperty;
+import org.jboss.logging.Logger;
+
+@Path("/telegram")
+@ApplicationScoped
+public class TelegramResource {
+
+    private static final Logger log = Logger.getLogger(TelegramResource.class);
+
+    @Inject
+    ProducerTemplate producerTemplate;
+
+    @Inject
+    ConsumerTemplate consumerTemplate;
+
+    @ConfigProperty(name = "telegram.chatId")
+    String chatId;
+
+    @Path("/messages")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public String getMessages() {
+        final String messages = consumerTemplate.receiveBodyNoWait("telegram://bots", String.class);
+        log.infof("Received telegram messages: %s", messages);
+        return messages;
+    }
+
+    @Path("/messages")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response postMessage(String message) throws Exception {
+        producerTemplate.requestBody(String.format("telegram://bots?chatId=%s", chatId), message);
+        log.infof("Sent a message to telegram %s", message);
+        return Response
+                .created(new URI(String.format("https://telegram.org/")))
+                .build();
+    }
+
+    @Path("/media")
+    @POST
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response postMedia(@HeaderParam("Content-type") String type, byte[] message) throws Exception {
+        final TelegramMediaType telegramMediaType;
+        if (type != null && type.startsWith("image/")) {
+            telegramMediaType = TelegramMediaType.PHOTO_PNG;
+        } else if (type != null && type.startsWith("audio/")) {
+            telegramMediaType = TelegramMediaType.AUDIO;
+        } else if (type != null && type.startsWith("video/")) {
+            telegramMediaType = TelegramMediaType.VIDEO;
+        } else if (type != null && type.startsWith("application/pdf")) {
+            telegramMediaType = TelegramMediaType.DOCUMENT;
+        } else {
+            return Response.status(415, "Unsupported content type " + type).build();
+        }
+
+        producerTemplate.requestBodyAndHeader(
+                String.format("telegram://bots?chatId=%s", chatId),
+                message,
+                TelegramConstants.TELEGRAM_MEDIA_TYPE,
+                telegramMediaType);
+        log.infof("Sent a message to telegram %s", message);
+        return Response
+                .created(new URI(String.format("https://telegram.org/")))
+                .build();
+    }
+
+    @Path("/send-location")
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response sendLocation(SendLocationMessage message) throws Exception {
+        final Object result = producerTemplate.requestBody(String.format("telegram://bots?chatId=%s", chatId), message);
+        log.infof("Sent a message to telegram %s", message);
+        return Response
+                .created(new URI(String.format("https://telegram.org/")))
+                .entity(result)
+                .build();
+    }
+
+    @Path("/edit-location")
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response editLocation(EditMessageLiveLocationMessage message) throws Exception {
+        producerTemplate.requestBody(String.format("telegram://bots?chatId=%s", chatId), message);
+        log.infof("Sent a message to telegram %s", message);
+        return Response
+                .created(new URI(String.format("https://telegram.org/")))
+                .build();
+    }
+
+    @Path("/stop-location")
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response stopLocation(StopMessageLiveLocationMessage message) throws Exception {
+        producerTemplate.requestBody(String.format("telegram://bots?chatId=%s", chatId), message);
+        log.infof("Sent a message to telegram %s", message);
+        return Response
+                .created(new URI(String.format("https://telegram.org/")))
+                .build();
+    }
+
+    @Path("/venue")
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response venue(SendVenueMessage message) throws Exception {
+        final Object result = producerTemplate.requestBody(String.format("telegram://bots?chatId=%s", chatId), message);
+        log.infof("Sent a message to telegram %s", message);
+        return Response
+                .created(new URI(String.format("https://telegram.org/")))
+                .entity(result)
+                .build();
+    }
+
+}
diff --git a/integration-tests/telegram/src/main/java/org/apache/camel/quarkus/component/telegram/it/TelegramRoutes.java b/integration-tests/telegram/src/main/java/org/apache/camel/quarkus/component/telegram/it/TelegramRoutes.java
new file mode 100644
index 0000000..f11b2cf
--- /dev/null
+++ b/integration-tests/telegram/src/main/java/org/apache/camel/quarkus/component/telegram/it/TelegramRoutes.java
@@ -0,0 +1,77 @@
+/*
+ * 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.telegram.it;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.util.IOHelper;
+
+public class TelegramRoutes extends RouteBuilder {
+
+    @Override
+    public void configure() throws Exception {
+
+        /* Mock Telegram API */
+        from("platform-http:/bot{authToken}/getUpdates?httpMethodRestrict=GET")
+                .process(new ResourceSupplier("mock-messages/getUpdates.json"));
+        Arrays.asList(
+                "sendMessage",
+                "sendAudio",
+                "sendVideo",
+                "sendDocument",
+                "sendPhoto",
+                "sendVenue",
+                "sendLocation",
+                "stopMessageLiveLocation").stream()
+                .forEach(endpoint -> {
+                    from("platform-http:/{authToken}/" + endpoint + "?httpMethodRestrict=POST")
+                            .process(new ResourceSupplier("mock-messages/" + endpoint + ".json"));
+                });
+
+    }
+
+    static class ResourceSupplier implements Processor {
+        private final byte[] bytes;
+
+        public ResourceSupplier(String path) {
+            try (ByteArrayOutputStream out = new ByteArrayOutputStream(IOHelper.DEFAULT_BUFFER_SIZE);
+                    InputStream in = getClass().getClassLoader().getResourceAsStream(path)) {
+                IOHelper.copy(in, out, IOHelper.DEFAULT_BUFFER_SIZE);
+                this.bytes = out.toByteArray();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+        @Override
+        public void process(Exchange exchange) throws Exception {
+            final Message m = exchange.getMessage();
+            m.setBody(bytes);
+            m.setHeader("Content-Length", bytes.length);
+            m.setHeader("Content-Type", "application/json; charset=UTF-8");
+        }
+
+    }
+
+}
diff --git a/integration-tests/telegram/src/main/resources/application.properties b/integration-tests/telegram/src/main/resources/application.properties
new file mode 100644
index 0000000..08f9610
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/application.properties
@@ -0,0 +1,34 @@
+## ---------------------------------------------------------------------------
+## 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
+#
+quarkus.log.file.enable = false
+
+quarkus.log.category."org.apache.camel.support.DefaultComponent".level = TRACE
+#quarkus.log.category."org.asynchttpclient".level = TRACE
+#quarkus.log.category."org.apache.camel.component.telegram.TelegramComponent".level = TRACE
+# You can check in this directory what requests the client is sending when you run against the mock Telegram API
+quarkus.http.body.uploads-directory=target/uploads
+
+quarkus.native.additional-build-args = -H:IncludeResources=.*mock-messages/.*
+#
+# Camel :: Telegram
+#
+camel.component.telegram.authorizationToken={{env:TELEGRAM_AUTHORIZATION_TOKEN:default-dummy-token}}
+camel.component.telegram.baseUri={{env:TELEGRAM_BASE_URI:https://api.telegram.org}}
+telegram.chatId={{env:TELEGRAM_CHAT_ID:-1}}
diff --git a/integration-tests/telegram/src/main/resources/mock-messages/editMessageLiveLocation.json b/integration-tests/telegram/src/main/resources/mock-messages/editMessageLiveLocation.json
new file mode 100644
index 0000000..a6a060d
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/mock-messages/editMessageLiveLocation.json
@@ -0,0 +1,24 @@
+{
+    "ok": true,
+    "result": {
+        "message_id": 938,
+        "from": {
+            "id": 770882310,
+            "is_bot": true,
+            "first_name": "camelDemoBot",
+            "username": "camelDemoBot"
+        },
+        "chat": {
+            "id": 434822960,
+            "first_name": "Peter",
+            "last_name": "Palaga",
+            "type": "private"
+        },
+        "date": 1576249600,
+        "edit_date": 1576249601,
+        "location": {
+            "latitude": 29.974934,
+            "longitude": 31.131109
+        }
+    }
+}
\ No newline at end of file
diff --git a/integration-tests/telegram/src/main/resources/mock-messages/getUpdates.json b/integration-tests/telegram/src/main/resources/mock-messages/getUpdates.json
new file mode 100644
index 0000000..85fbd55
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/mock-messages/getUpdates.json
@@ -0,0 +1,41 @@
+{
+  "ok": true,
+  "result": [
+    {
+      "update_id": 525704898,
+      "message": {
+        "message_id": 179,
+        "from": {
+          "id": 1585844777,
+          "first_name": "John",
+          "last_name": "Doe"
+        },
+        "chat": {
+          "id": -45658,
+          "title": "A chat group",
+          "type": "group"
+        },
+        "date": 1463436626,
+        "text": "a message"
+      }
+    },
+    {
+      "update_id": 525704899,
+      "message": {
+        "message_id": 180,
+        "from": {
+          "id": 1585844777,
+          "first_name": "John",
+          "last_name": "Doe"
+        },
+        "chat": {
+          "id": -45658,
+          "title": "A chat group",
+          "type": "group"
+        },
+        "date": 1463466626,
+        "text": "another message"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/integration-tests/telegram/src/main/resources/mock-messages/sendAudio.json b/integration-tests/telegram/src/main/resources/mock-messages/sendAudio.json
new file mode 100644
index 0000000..ed4ac2d
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/mock-messages/sendAudio.json
@@ -0,0 +1,25 @@
+{
+    "ok": true,
+    "result": {
+        "message_id": 932,
+        "from": {
+            "id": 770882310,
+            "is_bot": true,
+            "first_name": "camelDemoBot",
+            "username": "camelDemoBot"
+        },
+        "chat": {
+            "id": 434822960,
+            "first_name": "Peter",
+            "last_name": "Palaga",
+            "type": "private"
+        },
+        "date": 1576249599,
+        "audio": {
+            "duration": 1,
+            "mime_type": "audio/mpeg",
+            "file_id": "CQADBAAD5QUAAmcaoVMYrfWhEfLFTBYE",
+            "file_size": 9657
+        }
+    }
+}
\ No newline at end of file
diff --git a/integration-tests/telegram/src/main/resources/mock-messages/sendDocument.json b/integration-tests/telegram/src/main/resources/mock-messages/sendDocument.json
new file mode 100644
index 0000000..f352d13
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/mock-messages/sendDocument.json
@@ -0,0 +1,24 @@
+{
+    "ok": true,
+    "result": {
+        "message_id": 934,
+        "from": {
+            "id": 770882310,
+            "is_bot": true,
+            "first_name": "camelDemoBot",
+            "username": "camelDemoBot"
+        },
+        "chat": {
+            "id": 434822960,
+            "first_name": "Peter",
+            "last_name": "Palaga",
+            "type": "private"
+        },
+        "date": 1576249600,
+        "document": {
+            "file_name": "file",
+            "file_id": "BQADBAAD5wUAAmcaoVNbRjnV8IcCmhYE",
+            "file_size": 7638
+        }
+    }
+}
\ No newline at end of file
diff --git a/integration-tests/telegram/src/main/resources/mock-messages/sendLocation.json b/integration-tests/telegram/src/main/resources/mock-messages/sendLocation.json
new file mode 100644
index 0000000..5b645a1
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/mock-messages/sendLocation.json
@@ -0,0 +1,23 @@
+{
+    "ok": true,
+    "result": {
+        "message_id": 938,
+        "from": {
+            "id": 770882310,
+            "is_bot": true,
+            "first_name": "camelDemoBot",
+            "username": "camelDemoBot"
+        },
+        "chat": {
+            "id": 434822960,
+            "first_name": "Peter",
+            "last_name": "Palaga",
+            "type": "private"
+        },
+        "date": 1576249600,
+        "location": {
+            "latitude": 29.974830,
+            "longitude": 31.138579
+        }
+    }
+}
\ No newline at end of file
diff --git a/integration-tests/telegram/src/main/resources/mock-messages/sendMessage.json b/integration-tests/telegram/src/main/resources/mock-messages/sendMessage.json
new file mode 100644
index 0000000..8f37da2
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/mock-messages/sendMessage.json
@@ -0,0 +1,20 @@
+{
+    "ok": true,
+    "result": {
+        "message_id": 937,
+        "from": {
+            "id": 770882310,
+            "is_bot": true,
+            "first_name": "camelDemoBot",
+            "username": "camelDemoBot"
+        },
+        "chat": {
+            "id": 434822960,
+            "first_name": "Peter",
+            "last_name": "Palaga",
+            "type": "private"
+        },
+        "date": 1576249600,
+        "text": "A message from camel-quarkus-telegram ffdcc8ef72a34053a3e75daec74676a9"
+    }
+}
\ No newline at end of file
diff --git a/integration-tests/telegram/src/main/resources/mock-messages/sendPhoto.json b/integration-tests/telegram/src/main/resources/mock-messages/sendPhoto.json
new file mode 100644
index 0000000..8523d11
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/mock-messages/sendPhoto.json
@@ -0,0 +1,27 @@
+{
+    "ok": true,
+    "result": {
+        "message_id": 935,
+        "from": {
+            "id": 770882310,
+            "is_bot": true,
+            "first_name": "camelDemoBot",
+            "username": "camelDemoBot"
+        },
+        "chat": {
+            "id": 434822960,
+            "first_name": "Peter",
+            "last_name": "Palaga",
+            "type": "private"
+        },
+        "date": 1576249600,
+        "photo": [
+            {
+                "file_id": "AgADBAADYbExG2caoVPPY5I2XKLPM3lKqBsABAEAAwIAA20AA80nBQABFgQ",
+                "file_size": 1005,
+                "width": 108,
+                "height": 10
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/integration-tests/telegram/src/main/resources/mock-messages/sendVenue.json b/integration-tests/telegram/src/main/resources/mock-messages/sendVenue.json
new file mode 100644
index 0000000..f098ac2
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/mock-messages/sendVenue.json
@@ -0,0 +1,31 @@
+{
+    "ok": true,
+    "result": {
+        "message_id": 936,
+        "from": {
+            "id": 770882310,
+            "is_bot": true,
+            "first_name": "camelDemoBot",
+            "username": "camelDemoBot"
+        },
+        "chat": {
+            "id": 434822960,
+            "first_name": "Peter",
+            "last_name": "Palaga",
+            "type": "private"
+        },
+        "date": 1576249600,
+        "location": {
+            "latitude": 29.977826,
+            "longitude": 31.136330
+        },
+        "venue": {
+            "location": {
+                "latitude": 29.977826,
+                "longitude": 31.136330
+            },
+            "title": "Pyramid of Queen Henutsen",
+            "address": "El-Hussein Ibn Ali Ln, Nazlet El-Semman, Al Haram, Giza Governorate, Egypt"
+        }
+    }
+}
\ No newline at end of file
diff --git a/integration-tests/telegram/src/main/resources/mock-messages/sendVideo.json b/integration-tests/telegram/src/main/resources/mock-messages/sendVideo.json
new file mode 100644
index 0000000..4f8d0ef
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/mock-messages/sendVideo.json
@@ -0,0 +1,33 @@
+{
+    "ok": true,
+    "result": {
+        "message_id": 933,
+        "from": {
+            "id": 770882310,
+            "is_bot": true,
+            "first_name": "camelDemoBot",
+            "username": "camelDemoBot"
+        },
+        "chat": {
+            "id": 434822960,
+            "first_name": "Peter",
+            "last_name": "Palaga",
+            "type": "private"
+        },
+        "date": 1576249600,
+        "video": {
+            "duration": 4,
+            "width": 108,
+            "height": 10,
+            "mime_type": "video/mp4",
+            "thumb": {
+                "file_id": "AAQEAAPmBQACZxqhU8LAVawXPI5dMWO3GwAEAQAHbQADcxQAAhYE",
+                "file_size": 991,
+                "width": 108,
+                "height": 10
+            },
+            "file_id": "BAADBAAD5gUAAmcaoVPCwFWsFzyOXRYE",
+            "file_size": 27845
+        }
+    }
+}
\ No newline at end of file
diff --git a/integration-tests/telegram/src/main/resources/mock-messages/stopMessageLiveLocation.json b/integration-tests/telegram/src/main/resources/mock-messages/stopMessageLiveLocation.json
new file mode 100644
index 0000000..a6a060d
--- /dev/null
+++ b/integration-tests/telegram/src/main/resources/mock-messages/stopMessageLiveLocation.json
@@ -0,0 +1,24 @@
+{
+    "ok": true,
+    "result": {
+        "message_id": 938,
+        "from": {
+            "id": 770882310,
+            "is_bot": true,
+            "first_name": "camelDemoBot",
+            "username": "camelDemoBot"
+        },
+        "chat": {
+            "id": 434822960,
+            "first_name": "Peter",
+            "last_name": "Palaga",
+            "type": "private"
+        },
+        "date": 1576249600,
+        "edit_date": 1576249601,
+        "location": {
+            "latitude": 29.974934,
+            "longitude": 31.131109
+        }
+    }
+}
\ No newline at end of file
diff --git a/integration-tests/telegram/src/test/java/org/apache/camel/quarkus/component/telegram/it/TelegramIT.java b/integration-tests/telegram/src/test/java/org/apache/camel/quarkus/component/telegram/it/TelegramIT.java
new file mode 100644
index 0000000..23a735e
--- /dev/null
+++ b/integration-tests/telegram/src/test/java/org/apache/camel/quarkus/component/telegram/it/TelegramIT.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.telegram.it;
+
+import io.quarkus.test.junit.NativeImageTest;
+
+@NativeImageTest
+class TelegramIT extends TelegramTest {
+
+}
diff --git a/integration-tests/telegram/src/test/java/org/apache/camel/quarkus/component/telegram/it/TelegramTest.java b/integration-tests/telegram/src/test/java/org/apache/camel/quarkus/component/telegram/it/TelegramTest.java
new file mode 100644
index 0000000..bf3e88e
--- /dev/null
+++ b/integration-tests/telegram/src/test/java/org/apache/camel/quarkus/component/telegram/it/TelegramTest.java
@@ -0,0 +1,187 @@
+/*
+ * 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.telegram.it;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.common.QuarkusTestResource;
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import io.restassured.http.ContentType;
+import org.apache.camel.component.telegram.model.EditMessageLiveLocationMessage;
+import org.apache.camel.component.telegram.model.MessageResult;
+import org.apache.camel.component.telegram.model.SendLocationMessage;
+import org.apache.camel.component.telegram.model.SendVenueMessage;
+import org.apache.camel.component.telegram.model.StopMessageLiveLocationMessage;
+import org.apache.camel.quarkus.test.TrustStoreResource;
+import org.awaitility.Awaitility;
+import org.jboss.logging.Logger;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
+
+import static org.hamcrest.Matchers.both;
+import static org.hamcrest.Matchers.greaterThanOrEqualTo;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.lessThan;
+
+@QuarkusTest
+@QuarkusTestResource(TrustStoreResource.class)
+@EnabledIfEnvironmentVariable(named = "TELEGRAM_AUTHORIZATION_TOKEN", matches = "[^ ]+")
+public class TelegramTest {
+
+    private static final Logger LOG = Logger.getLogger(TelegramTest.class);
+
+    @Test
+    public void postText() {
+        final String uuid = UUID.randomUUID().toString().replace("-", "");
+        final String msg = String.format("A message from camel-quarkus-telegram %s", uuid);
+
+        /* Send a message */
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body(msg)
+                .post("/telegram/messages")
+                .then()
+                .statusCode(201);
+
+    }
+
+    @Test
+    public void getText() {
+        /* Telegram bots by design see neither their own messages nor other bots' messages.
+         * So receiving messages is currently possible only if you ping the bot manually.
+         * If you do so, you should see your messages in the test log. */
+        for (int i = 0; i < 5; i++) { // For some reason several iterations are needed to pick the messages
+            final String body = RestAssured.get("/telegram/messages")
+                    .then()
+                    .statusCode(is(both(greaterThanOrEqualTo(200)).and(lessThan(300))))
+                    .extract().body().asString();
+            LOG.info("Telegram Bot received messages: " + body);
+        }
+    }
+
+    @Test
+    public void png() throws IOException {
+        try (InputStream in = getClass().getClassLoader().getResourceAsStream("camel-quarkus-rocks.png")) {
+            /* Send a message */
+            RestAssured.given()
+                    .contentType("image/png")
+                    .body(in)
+                    .post("/telegram/media")
+                    .then()
+                    .statusCode(201);
+        }
+    }
+
+    @Test
+    public void mp3() throws IOException {
+        try (InputStream in = getClass().getClassLoader().getResourceAsStream("camel-quarkus-rocks.mp3")) {
+            /* Send a message */
+            RestAssured.given()
+                    .contentType("audio/mpeg")
+                    .body(in)
+                    .post("/telegram/media")
+                    .then()
+                    .statusCode(201);
+        }
+    }
+
+    @Test
+    public void mp4() throws IOException {
+        try (InputStream in = getClass().getClassLoader().getResourceAsStream("camel-quarkus-rocks.mp4")) {
+            /* Send a message */
+            RestAssured.given()
+                    .contentType("video/mp4")
+                    .body(in)
+                    .post("/telegram/media")
+                    .then()
+                    .statusCode(201);
+        }
+    }
+
+    @Test
+    public void pdf() throws IOException {
+        try (InputStream in = getClass().getClassLoader().getResourceAsStream("camel-quarkus-rocks.pdf")) {
+            /* Send a message */
+            RestAssured.given()
+                    .contentType("application/pdf")
+                    .body(in)
+                    .post("/telegram/media")
+                    .then()
+                    .statusCode(201);
+        }
+    }
+
+    @Test
+    public void location() throws IOException {
+
+        final SendLocationMessage sendLoc = new SendLocationMessage(29.974834, 31.138577);
+        sendLoc.setLivePeriod(120);
+        final MessageResult result = RestAssured.given()
+                .contentType(ContentType.JSON)
+                .body(sendLoc)
+                .post("/telegram/send-location")
+                .then()
+                .statusCode(201)
+                .extract().body().as(MessageResult.class);
+
+        /* Update the location */
+        final EditMessageLiveLocationMessage edit = new EditMessageLiveLocationMessage(29.974928, 31.131115);
+        edit.setChatId(result.getMessage().getChat().getId());
+        edit.setMessageId(result.getMessage().getMessageId());
+        /* The edit fails with various 400 errors unless we wait a bit */
+        Awaitility.await()
+                .pollDelay(500, TimeUnit.MILLISECONDS)
+                .pollInterval(100, TimeUnit.MILLISECONDS)
+                .atMost(10, TimeUnit.SECONDS).until(() -> {
+                    final int code = RestAssured.given()
+                            .contentType(ContentType.JSON)
+                            .body(edit)
+                            .post("/telegram/edit-location")
+                            .then()
+                            .extract().statusCode();
+                    return code != 201;
+                });
+
+        /* Stop updating */
+        final StopMessageLiveLocationMessage stop = new StopMessageLiveLocationMessage();
+        stop.setChatId(result.getMessage().getChat().getId());
+        stop.setMessageId(result.getMessage().getMessageId());
+        RestAssured.given()
+                .contentType(ContentType.JSON)
+                .body(stop)
+                .post("/telegram/stop-location")
+                .then()
+                .statusCode(201);
+    }
+
+    @Test
+    public void venue() throws IOException {
+        final SendVenueMessage venue = new SendVenueMessage(29.977818, 31.136329, "Pyramid of Queen Henutsen",
+                "El-Hussein Ibn Ali Ln, Nazlet El-Semman, Al Haram, Giza Governorate, Egypt");
+        RestAssured.given()
+                .contentType(ContentType.JSON)
+                .body(venue)
+                .post("/telegram/venue")
+                .then()
+                .statusCode(201);
+    }
+
+}
diff --git a/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.mp3 b/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.mp3
new file mode 100644
index 0000000..d615407
Binary files /dev/null and b/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.mp3 differ
diff --git a/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.mp4 b/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.mp4
new file mode 100644
index 0000000..608d4b7
Binary files /dev/null and b/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.mp4 differ
diff --git a/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.pdf b/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.pdf
new file mode 100644
index 0000000..edb723c
Binary files /dev/null and b/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.pdf differ
diff --git a/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.png b/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.png
new file mode 100644
index 0000000..55b18a7
Binary files /dev/null and b/integration-tests/telegram/src/test/resources/camel-quarkus-rocks.png differ
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index c3964fb..4d51c91 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -511,6 +511,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-telegram</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-timer</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -531,6 +536,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-webhook</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-xml-jaxb</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -973,6 +983,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-telegram</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-timer</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>


[camel-quarkus] 01/34: Add olingo4 extension

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 287480e280d196ffb7354bcb6cf7aebbe6a195cb
Author: James Netherton <ja...@gmail.com>
AuthorDate: Tue Feb 11 09:19:43 2020 +0000

    Add olingo4 extension
    
    fixes #692
---
 .../pages/list-of-camel-quarkus-extensions.adoc    |   5 +-
 extensions/olingo4/deployment/pom.xml              |  91 ++++++++++++++
 .../olingo4/deployment/Olingo4Processor.java       |  72 +++++++++++
 extensions/olingo4/pom.xml                         |  39 ++++++
 extensions/olingo4/runtime/pom.xml                 | 102 ++++++++++++++++
 .../olingo4/graal/ODataImplSubstitutions.java      |  33 ++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  28 +++++
 extensions/pom.xml                                 |   1 +
 extensions/readme.adoc                             |   5 +-
 .../httpclient/deployment/HttpClientProcessor.java |   7 ++
 integration-tests/olingo4/pom.xml                  | 132 +++++++++++++++++++++
 .../component/olingo4/it/Olingo4Resource.java      | 120 +++++++++++++++++++
 .../camel/quarkus/component/olingo4/it/Person.java |  68 +++++++++++
 .../quarkus/component/olingo4/it/Olingo4IT.java    |  24 ++++
 .../quarkus/component/olingo4/it/Olingo4Test.java  | 120 +++++++++++++++++++
 integration-tests/pom.xml                          |   1 +
 pom.xml                                            |   1 +
 poms/bom-deployment/pom.xml                        |   5 +
 poms/bom/pom.xml                                   |  21 ++++
 19 files changed, 873 insertions(+), 2 deletions(-)

diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index cced184..b97e9be 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -18,7 +18,7 @@ In case you are missing some Camel feature in the list:
 == Camel Components
 
 // components: START
-Number of Camel components: 62 in 53 JAR artifacts (0 deprecated)
+Number of Camel components: 63 in 54 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -135,6 +135,9 @@ Number of Camel components: 62 in 53 JAR artifacts (0 deprecated)
 | xref:extensions/netty-http.adoc[Netty HTTP] (camel-quarkus-netty-http) +
 `netty-http:protocol:host:port/path` | 0.2.0 | Netty HTTP server and client using the Netty 4.x library.
 
+| link:https://camel.apache.org/components/latest/olingo4-component.html[Olingo4] (camel-quarkus-olingo4) +
+`olingo4:apiName/methodName` | 1.2.0 | Communicates with OData 4.0 services using Apache Olingo OData API.
+
 | link:https://camel.apache.org/components/latest/paho-component.html[Paho] (camel-quarkus-paho) +
 `paho:topic` | 0.2.0 | Component for communicating with MQTT message brokers using Eclipse Paho MQTT Client.
 
diff --git a/extensions/olingo4/deployment/pom.xml b/extensions/olingo4/deployment/pom.xml
new file mode 100644
index 0000000..4271d30
--- /dev/null
+++ b/extensions/olingo4/deployment/pom.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-olingo4-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-olingo4-deployment</artifactId>
+    <name>Camel Quarkus :: Olingo4 :: Deployment</name>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-deployment</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-commons-logging-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-httpclient-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-xml-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-jackson-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-olingo4</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>io.quarkus</groupId>
+                            <artifactId>quarkus-extension-processor</artifactId>
+                            <version>${quarkus.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/extensions/olingo4/deployment/src/main/java/org/apache/camel/quarkus/component/olingo4/deployment/Olingo4Processor.java b/extensions/olingo4/deployment/src/main/java/org/apache/camel/quarkus/component/olingo4/deployment/Olingo4Processor.java
new file mode 100644
index 0000000..967394f
--- /dev/null
+++ b/extensions/olingo4/deployment/src/main/java/org/apache/camel/quarkus/component/olingo4/deployment/Olingo4Processor.java
@@ -0,0 +1,72 @@
+/*
+ * 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.olingo4.deployment;
+
+import io.quarkus.deployment.annotations.BuildProducer;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.AdditionalApplicationArchiveMarkerBuildItem;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.apache.camel.component.olingo4.Olingo4AppEndpointConfiguration;
+import org.apache.camel.quarkus.core.deployment.UnbannedReflectiveBuildItem;
+import org.apache.olingo.server.core.ODataImpl;
+import org.jboss.jandex.DotName;
+import org.jboss.jandex.IndexView;
+
+class Olingo4Processor {
+
+    private static final String FEATURE = "camel-olingo4";
+    private static final DotName JSON_DESERIALIZE_DOT_NAME = DotName
+            .createSimple("com.fasterxml.jackson.databind.annotation.JsonDeserialize");
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+    @BuildStep
+    UnbannedReflectiveBuildItem whitelistOlingo4AppEndpointConfiguration() {
+        // TODO: Remove this and the associated ReflectiveClassBuildItem for this class in Camel 3.1
+        return new UnbannedReflectiveBuildItem(Olingo4AppEndpointConfiguration.class.getName());
+    }
+
+    @BuildStep
+    AdditionalApplicationArchiveMarkerBuildItem olingoArchiveMarker() {
+        return new AdditionalApplicationArchiveMarkerBuildItem("org/apache/olingo");
+    }
+
+    @BuildStep
+    void registerForReflection(BuildProducer<ReflectiveClassBuildItem> reflectiveClass, CombinedIndexBuildItem combinedIndex) {
+        reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, ODataImpl.class));
+        reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, Olingo4AppEndpointConfiguration.class));
+
+        /*
+         * Register Olingo Deserializer classes for reflection. We do this because the Quarkus Jackson extension only
+         * configures reflection where the 'using' annotation value is applied to fields & methods.
+         *
+         * TODO: Remove this when the Quarkus Jackson extension has this enhancement - https://github.com/quarkusio/quarkus/issues/7139
+         */
+        IndexView index = combinedIndex.getIndex();
+        index.getAnnotations(JSON_DESERIALIZE_DOT_NAME)
+                .stream()
+                .map(annotation -> annotation.value("using").asClass().name().toString())
+                .filter(className -> className.startsWith("org.apache.olingo"))
+                .map(className -> new ReflectiveClassBuildItem(true, false, false, className))
+                .forEach(reflectiveClass::produce);
+    }
+}
diff --git a/extensions/olingo4/pom.xml b/extensions/olingo4/pom.xml
new file mode 100644
index 0000000..f459038
--- /dev/null
+++ b/extensions/olingo4/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-olingo4-parent</artifactId>
+    <name>Camel Quarkus :: Olingo4</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+    </modules>
+</project>
diff --git a/extensions/olingo4/runtime/pom.xml b/extensions/olingo4/runtime/pom.xml
new file mode 100644
index 0000000..f4d233b
--- /dev/null
+++ b/extensions/olingo4/runtime/pom.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-olingo4-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-olingo4</artifactId>
+    <name>Camel Quarkus :: Olingo4 :: Runtime</name>
+
+    <properties>
+        <firstVersion>1.2.0</firstVersion>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-commons-logging</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-httpclient</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-xml</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-jackson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-olingo4</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.graalvm.nativeimage</groupId>
+            <artifactId>svm</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-bootstrap-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>io.quarkus</groupId>
+                            <artifactId>quarkus-extension-processor</artifactId>
+                            <version>${quarkus.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions/olingo4/runtime/src/main/java/org/apache/camel/quarkus/component/olingo4/graal/ODataImplSubstitutions.java b/extensions/olingo4/runtime/src/main/java/org/apache/camel/quarkus/component/olingo4/graal/ODataImplSubstitutions.java
new file mode 100644
index 0000000..6e967ec
--- /dev/null
+++ b/extensions/olingo4/runtime/src/main/java/org/apache/camel/quarkus/component/olingo4/graal/ODataImplSubstitutions.java
@@ -0,0 +1,33 @@
+/*
+ * 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.olingo4.graal;
+
+import com.oracle.svm.core.annotate.Substitute;
+import com.oracle.svm.core.annotate.TargetClass;
+import org.apache.olingo.server.api.ODataHttpHandler;
+import org.apache.olingo.server.api.ServiceMetadata;
+import org.apache.olingo.server.core.ODataImpl;
+
+@TargetClass(ODataImpl.class)
+final class ODataImplSubstitutions {
+
+    @Substitute
+    public ODataHttpHandler createHandler(final ServiceMetadata serviceMetadata) {
+        // Avoid the optional and redundant servlet-api dependency
+        throw new UnsupportedOperationException("OData HTTP handlers are not supported in native mode");
+    }
+}
diff --git a/extensions/olingo4/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/olingo4/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..21e2e6e
--- /dev/null
+++ b/extensions/olingo4/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,28 @@
+#
+# 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.
+#
+
+---
+name: "Camel Quarkus Olingo4"
+description: "Camel Quarkus Olingo4 Support"
+metadata:
+  keywords:
+    - "camel"
+    - "olingo"
+    - "odata"
+  guide: "https://quarkus.io/guides/camel"
+  categories:
+    - "integration"
\ No newline at end of file
diff --git a/extensions/pom.xml b/extensions/pom.xml
index ddbddf9..373a23d 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -87,6 +87,7 @@
         <module>mongodb</module>
         <module>netty</module>
         <module>netty-http</module>
+        <module>olingo4</module>
         <module>opentracing</module>
         <module>paho</module>
         <module>pdf</module>
diff --git a/extensions/readme.adoc b/extensions/readme.adoc
index 1f46ba6..fffd02d 100644
--- a/extensions/readme.adoc
+++ b/extensions/readme.adoc
@@ -5,7 +5,7 @@ Apache Camel Quarkus supports the following Camel artifacts as Quarkus Extension
 == Camel Components
 
 // components: START
-Number of Camel components: 62 in 53 JAR artifacts (0 deprecated)
+Number of Camel components: 63 in 54 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -122,6 +122,9 @@ Number of Camel components: 62 in 53 JAR artifacts (0 deprecated)
 | xref:extensions/netty-http.adoc[Netty HTTP] (camel-quarkus-netty-http) +
 `netty-http:protocol:host:port/path` | 0.2.0 | Netty HTTP server and client using the Netty 4.x library.
 
+| link:https://camel.apache.org/components/latest/olingo4-component.html[Olingo4] (camel-quarkus-olingo4) +
+`olingo4:apiName/methodName` | 1.2.0 | Communicates with OData 4.0 services using Apache Olingo OData API.
+
 | link:https://camel.apache.org/components/latest/paho-component.html[Paho] (camel-quarkus-paho) +
 `paho:topic` | 0.2.0 | Component for communicating with MQTT message brokers using Eclipse Paho MQTT Client.
 
diff --git a/extensions/support/httpclient/deployment/src/main/java/org/apache/camel/quarkus/support/httpclient/deployment/HttpClientProcessor.java b/extensions/support/httpclient/deployment/src/main/java/org/apache/camel/quarkus/support/httpclient/deployment/HttpClientProcessor.java
index 6e043af..f9cdda9 100644
--- a/extensions/support/httpclient/deployment/src/main/java/org/apache/camel/quarkus/support/httpclient/deployment/HttpClientProcessor.java
+++ b/extensions/support/httpclient/deployment/src/main/java/org/apache/camel/quarkus/support/httpclient/deployment/HttpClientProcessor.java
@@ -20,6 +20,7 @@ import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.AdditionalApplicationArchiveMarkerBuildItem;
 import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import org.jboss.jandex.ClassInfo;
 import org.jboss.jandex.DotName;
@@ -45,4 +46,10 @@ class HttpClientProcessor {
             reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, info.name().toString()));
         }
     }
+
+    @BuildStep
+    NativeImageResourceBuildItem suffixListResource() {
+        // Required by org.apache.http.conn.util.PublicSuffixMatcher
+        return new NativeImageResourceBuildItem("mozilla/public-suffix-list.txt");
+    }
 }
diff --git a/integration-tests/olingo4/pom.xml b/integration-tests/olingo4/pom.xml
new file mode 100644
index 0000000..294b65e
--- /dev/null
+++ b/integration-tests/olingo4/pom.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-integration-tests</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-quarkus-integration-test-olingo4</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: Olingo4</name>
+    <description>Integration tests for Camel Quarkus Olingo4 extension</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-olingo4</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy-jsonb</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>native</id>
+            <activation>
+                <property>
+                    <name>native</name>
+                </property>
+            </activation>
+            <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>
+                                <configuration>
+                                    <systemProperties>
+                                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
+                                    </systemProperties>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>io.quarkus</groupId>
+                        <artifactId>quarkus-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>native-image</id>
+                                <goals>
+                                    <goal>native-image</goal>
+                                </goals>
+                                <configuration>
+                                    <reportErrorsAtRuntime>false</reportErrorsAtRuntime>
+                                    <cleanupServer>true</cleanupServer>
+                                    <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
+                                    <enableServer>false</enableServer>
+                                    <dumpProxies>false</dumpProxies>
+                                    <graalvmHome>${graalvmHome}</graalvmHome>
+                                    <enableJni>true</enableJni>
+                                    <enableAllSecurityServices>true</enableAllSecurityServices>
+                                    <disableReports>true</disableReports>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/integration-tests/olingo4/src/main/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Resource.java b/integration-tests/olingo4/src/main/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Resource.java
new file mode 100644
index 0000000..de069a2
--- /dev/null
+++ b/integration-tests/olingo4/src/main/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Resource.java
@@ -0,0 +1,120 @@
+/*
+ * 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.olingo4.it;
+
+import java.net.URI;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.json.Json;
+import javax.json.JsonObjectBuilder;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.PATCH;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.camel.CamelExecutionException;
+import org.apache.camel.ProducerTemplate;
+import org.apache.olingo.client.api.communication.ODataClientErrorException;
+import org.apache.olingo.client.api.domain.ClientEntity;
+import org.apache.olingo.client.api.domain.ClientProperty;
+import org.apache.olingo.commons.api.http.HttpStatusCode;
+
+@Path("/olingo4")
+@ApplicationScoped
+public class Olingo4Resource {
+
+    public static final String TEST_SERVICE_BASE_URL = "https://services.odata.org/TripPinRESTierService";
+
+    @Inject
+    ProducerTemplate producerTemplate;
+
+    @Path("/create")
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response create(@QueryParam("sessionId") String sessionId, String json) throws Exception {
+        ClientEntity entity = producerTemplate.requestBody(
+                "olingo4://create/People?contentType=application/json;charset=utf-8&serviceUri=" + getServiceURL(sessionId),
+                json, ClientEntity.class);
+        return Response
+                .created(new URI("https://camel.apache.org/"))
+                .entity(entity)
+                .build();
+    }
+
+    @Path("/read")
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response read(@QueryParam("sessionId") String sessionId) {
+        Response.ResponseBuilder responseBuilder = Response.status(200);
+        try {
+            ClientEntity entity = producerTemplate.requestBody(
+                    "olingo4://read/People('lewisblack')?serviceUri=" + getServiceURL(sessionId), null, ClientEntity.class);
+
+            JsonObjectBuilder objectBuilder = Json.createObjectBuilder();
+            String[] fields = new String[] { "FirstName", "LastName", "UserName", "MiddleName" };
+            for (String field : fields) {
+                ClientProperty property = entity.getProperty(field);
+                if (property != null) {
+                    objectBuilder.add(field, property.getPrimitiveValue().toString());
+                }
+            }
+            responseBuilder.entity(objectBuilder.build());
+        } catch (CamelExecutionException cee) {
+            Exception exception = cee.getExchange().getException();
+            if (exception instanceof ODataClientErrorException) {
+                ODataClientErrorException ex = (ODataClientErrorException) exception;
+                responseBuilder.status(ex.getStatusLine().getStatusCode());
+            } else {
+                throw cee;
+            }
+        }
+        return responseBuilder.build();
+    }
+
+    @Path("/update")
+    @PATCH
+    @Consumes(MediaType.APPLICATION_JSON)
+    public Response update(@QueryParam("sessionId") String sessionId, String json) {
+        HttpStatusCode status = producerTemplate.requestBody(
+                "olingo4://update/People('lewisblack')?serviceUri=" + getServiceURL(sessionId), json, HttpStatusCode.class);
+        return Response
+                .status(status.getStatusCode())
+                .build();
+    }
+
+    @Path("/delete")
+    @DELETE
+    public Response delete(@QueryParam("sessionId") String sessionId) {
+        HttpStatusCode status = producerTemplate.requestBody(
+                "olingo4://delete/People('lewisblack')?serviceUri=" + getServiceURL(sessionId), null, HttpStatusCode.class);
+        return Response
+                .status(status.getStatusCode())
+                .build();
+    }
+
+    private String getServiceURL(String sessionId) {
+        return String.format("%s/%s/", TEST_SERVICE_BASE_URL, sessionId);
+    }
+}
diff --git a/integration-tests/olingo4/src/main/java/org/apache/camel/quarkus/component/olingo4/it/Person.java b/integration-tests/olingo4/src/main/java/org/apache/camel/quarkus/component/olingo4/it/Person.java
new file mode 100644
index 0000000..d02e0a2
--- /dev/null
+++ b/integration-tests/olingo4/src/main/java/org/apache/camel/quarkus/component/olingo4/it/Person.java
@@ -0,0 +1,68 @@
+/*
+ * 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.olingo4.it;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class Person {
+
+    @JsonProperty("UserName")
+    private String userName;
+
+    @JsonProperty("FirstName")
+    private String firstName;
+
+    @JsonProperty("LastName")
+    private String lastName;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @JsonProperty("MiddleName")
+    private String middleName;
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getMiddleName() {
+        return middleName;
+    }
+
+    public void setMiddleName(String middleName) {
+        this.middleName = middleName;
+    }
+}
diff --git a/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4IT.java b/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4IT.java
new file mode 100644
index 0000000..482f054
--- /dev/null
+++ b/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4IT.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.olingo4.it;
+
+import io.quarkus.test.junit.NativeImageTest;
+
+@NativeImageTest
+class Olingo4IT extends Olingo4Test {
+
+}
diff --git a/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java b/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java
new file mode 100644
index 0000000..845db3c
--- /dev/null
+++ b/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java
@@ -0,0 +1,120 @@
+/*
+ * 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.olingo4.it;
+
+import java.io.IOException;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import io.restassured.http.ContentType;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.protocol.BasicHttpContext;
+import org.apache.http.protocol.HttpContext;
+import org.apache.http.protocol.HttpCoreContext;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import static org.apache.camel.quarkus.component.olingo4.it.Olingo4Resource.TEST_SERVICE_BASE_URL;
+import static org.hamcrest.core.Is.is;
+
+@QuarkusTest
+class Olingo4Test {
+
+    private static String sessionId;
+
+    @BeforeAll
+    public static void beforeAll() throws IOException {
+        // Use the same session id for each request to the demo Olingo4 Service
+        sessionId = getSession();
+    }
+
+    @Test
+    public void testOlingo4CrudOperations() {
+
+        // Create
+        Person person = new Person();
+        person.setUserName("lewisblack");
+        person.setFirstName("Lewis");
+        person.setLastName("Black");
+
+        RestAssured.given()
+                .queryParam("sessionId", sessionId)
+                .contentType(ContentType.JSON)
+                .body(person)
+                .post("/olingo4/create")
+                .then()
+                .statusCode(201);
+
+        // Read
+        RestAssured.given()
+                .queryParam("sessionId", sessionId)
+                .body("msg")
+                .get("/olingo4/read")
+                .then()
+                .contentType(ContentType.JSON)
+                .statusCode(200)
+                .body("FirstName", is(person.getFirstName()), "LastName", is(person.getLastName()), "UserName",
+                        is(person.getUserName()), "MiddleName", is(""));
+
+        // Update
+        person.setMiddleName("James");
+
+        RestAssured.given()
+                .queryParam("sessionId", sessionId)
+                .contentType(ContentType.JSON)
+                .body(person)
+                .patch("/olingo4/update")
+                .then()
+                .statusCode(204);
+
+        RestAssured.given()
+                .queryParam("sessionId", sessionId)
+                .body("msg")
+                .get("/olingo4/read")
+                .then()
+                .contentType(ContentType.JSON)
+                .statusCode(200)
+                .body("FirstName", is(person.getFirstName()), "LastName", is(person.getLastName()), "UserName",
+                        is(person.getUserName()), "MiddleName", is(person.getMiddleName()));
+
+        // Delete
+        RestAssured.given()
+                .queryParam("sessionId", sessionId)
+                .delete("/olingo4/delete")
+                .then()
+                .statusCode(204);
+
+        RestAssured.given()
+                .queryParam("sessionId", sessionId)
+                .body("msg")
+                .get("/olingo4/read")
+                .then()
+                .statusCode(404);
+    }
+
+    private static String getSession() throws IOException {
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        HttpGet httpGet = new HttpGet(TEST_SERVICE_BASE_URL);
+        HttpContext httpContext = new BasicHttpContext();
+        httpClient.execute(httpGet, httpContext);
+        HttpUriRequest currentReq = (HttpUriRequest) httpContext.getAttribute(HttpCoreContext.HTTP_REQUEST);
+        return currentReq.getURI().getPath().split("/")[2];
+    }
+}
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 8809741..57b4e8c 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -194,6 +194,7 @@
         <module>microprofile</module>
         <module>mongodb</module>
         <module>netty</module>
+        <module>olingo4</module>
         <module>opentracing</module>
         <module>paho</module>
         <module>pdf</module>
diff --git a/pom.xml b/pom.xml
index a865bb0..191a8b4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,6 +54,7 @@
         <spring.version>5.2.1.RELEASE</spring.version>
         <retrofit.version>2.5.0</retrofit.version>
         <consul-client.version>1.3.3</consul-client.version>
+        <stax2.version>4.2</stax2.version>
 
         <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
         <maven.compiler.target>1.8</maven.compiler.target>
diff --git a/poms/bom-deployment/pom.xml b/poms/bom-deployment/pom.xml
index 264ab58..364be6a 100644
--- a/poms/bom-deployment/pom.xml
+++ b/poms/bom-deployment/pom.xml
@@ -301,6 +301,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-olingo4-deployment</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-opentracing-deployment</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 61ad17d..4c50f6b 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -378,6 +378,17 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-olingo4</artifactId>
+                <version>${camel.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>commons-logging</groupId>
+                        <artifactId>commons-logging</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-opentracing</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -766,6 +777,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-olingo4</artifactId>
+                <version>${camel-quarkus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-opentracing</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
@@ -987,6 +1003,11 @@
                 <version>${ahc.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.codehaus.woodstox</groupId>
+                <artifactId>stax2-api</artifactId>
+                <version>${stax2.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.eclipse.jetty</groupId>
                 <artifactId>jetty-client</artifactId>
                 <version>${jetty.version}</version>


[camel-quarkus] 28/34: Upgarde to Camel 3.1.0 - WIP (ConfigurerResolver, reifiers)

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit d00d1de54632be1f5915b39bc8e17496f2c85cf1
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Feb 12 17:35:10 2020 +0100

    Upgarde to Camel 3.1.0 - WIP (ConfigurerResolver, reifiers)
---
 .../camel/quarkus/core/DisabledPredicateValidatorReifier.java      | 6 +++---
 .../org/apache/camel/quarkus/core/DisabledValidateReifier.java     | 6 +++---
 .../main/java/org/apache/camel/quarkus/core/FastCamelContext.java  | 7 +++++++
 .../src/main/java/org/apache/camel/quarkus/core/FastModel.java     | 2 +-
 4 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledPredicateValidatorReifier.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledPredicateValidatorReifier.java
index 29a9eae..ef4c206 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledPredicateValidatorReifier.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledPredicateValidatorReifier.java
@@ -24,12 +24,12 @@ import org.apache.camel.spi.Validator;
 
 public class DisabledPredicateValidatorReifier extends ValidatorReifier<PredicateValidatorDefinition> {
 
-    public DisabledPredicateValidatorReifier(ValidatorDefinition definition) {
-        super((PredicateValidatorDefinition) definition);
+    public DisabledPredicateValidatorReifier(CamelContext camelContext, ValidatorDefinition definition) {
+        super(camelContext, (PredicateValidatorDefinition) definition);
     }
 
     @Override
-    protected Validator doCreateValidator(CamelContext context) {
+    protected Validator doCreateValidator() {
         throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
     }
 
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java
index 6eb8f75..4d796f8 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java
@@ -24,12 +24,12 @@ import org.apache.camel.spi.RouteContext;
 
 public class DisabledValidateReifier extends ProcessorReifier<ValidateDefinition> {
 
-    public DisabledValidateReifier(ProcessorDefinition<?> definition) {
-        super((ValidateDefinition) definition);
+    public DisabledValidateReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
+        super(routeContext, (ValidateDefinition) definition);
     }
 
     @Override
-    public Processor createProcessor(RouteContext routeContext) throws Exception {
+    public Processor createProcessor() throws Exception {
         throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
     }
 }
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index 576499e..35ebb10 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -42,6 +42,7 @@ import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
 import org.apache.camel.impl.engine.DefaultCamelContextNameStrategy;
 import org.apache.camel.impl.engine.DefaultClassResolver;
 import org.apache.camel.impl.engine.DefaultComponentResolver;
+import org.apache.camel.impl.engine.DefaultConfigurerResolver;
 import org.apache.camel.impl.engine.DefaultDataFormatResolver;
 import org.apache.camel.impl.engine.DefaultEndpointRegistry;
 import org.apache.camel.impl.engine.DefaultInflightRepository;
@@ -76,6 +77,7 @@ import org.apache.camel.spi.CamelContextNameStrategy;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.ConfigurerResolver;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.EndpointRegistry;
 import org.apache.camel.spi.ExecutorServiceManager;
@@ -386,6 +388,11 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
+    protected ConfigurerResolver createConfigurerResolver() {
+        return new DefaultConfigurerResolver();
+    }
+
+    @Override
     public void setTypeConverterRegistry(TypeConverterRegistry typeConverterRegistry) {
         super.setTypeConverterRegistry(typeConverterRegistry);
 
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
index c619f11..9be64bd 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
@@ -54,7 +54,7 @@ public class FastModel extends BaseModel {
         try {
             String id = routeDefinition.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory());
             FastRouteContext routeContext = new FastRouteContext(camelContext, routeDefinition, id);
-            Route route = new RouteReifier(routeDefinition).createRoute(camelContext, routeContext);
+            Route route = new RouteReifier(routeContext, routeDefinition).createRoute();
             FastRouteService routeService = createRouteService(route);
             mcc.startRouteService(routeService, true);
         } finally {


[camel-quarkus] 34/34: Upgarde to Camel 3.1.0 - WIP (PDF)

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 460cc4ed58b0ea8ca4a8bb17883461a30daabe55
Author: James Netherton <ja...@gmail.com>
AuthorDate: Mon Feb 17 09:32:13 2020 +0000

    Upgarde to Camel 3.1.0 - WIP (PDF)
---
 .../component/pdf/deployment/PdfProcessor.java        | 19 +++++++++++--------
 .../camel/quarkus/component/pdf/it/PdfResource.java   |  2 +-
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/extensions/pdf/deployment/src/main/java/org/apache/camel/quarkus/component/pdf/deployment/PdfProcessor.java b/extensions/pdf/deployment/src/main/java/org/apache/camel/quarkus/component/pdf/deployment/PdfProcessor.java
index e7bbf14..612e673 100644
--- a/extensions/pdf/deployment/src/main/java/org/apache/camel/quarkus/component/pdf/deployment/PdfProcessor.java
+++ b/extensions/pdf/deployment/src/main/java/org/apache/camel/quarkus/component/pdf/deployment/PdfProcessor.java
@@ -19,9 +19,8 @@ package org.apache.camel.quarkus.component.pdf.deployment;
 import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.builditem.nativeimage.NativeImageConfigBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
-import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem;
 
 class PdfProcessor {
 
@@ -32,6 +31,12 @@ class PdfProcessor {
             "org/apache/pdfbox/resources/glyphlist/additional.txt",
             "org/apache/pdfbox/resources/ttf/LiberationSans-Regular.ttf" };
 
+    private static final String[] RUNTIME_INITIALIZED_CLASSES = new String[] {
+            "org.apache.pdfbox.pdmodel.font.PDType1Font",
+            "org.apache.camel.component.pdf.PdfConfiguration",
+            "org.apache.camel.component.pdf.Standard14Fonts",
+    };
+
     @BuildStep
     FeatureBuildItem feature() {
         return new FeatureBuildItem(FEATURE);
@@ -43,11 +48,9 @@ class PdfProcessor {
     }
 
     @BuildStep
-    NativeImageConfigBuildItem build(BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
-        return NativeImageConfigBuildItem.builder()
-                .addRuntimeInitializedClass("org.apache.pdfbox.pdmodel.font.PDType1Font")
-                .addRuntimeInitializedClass("org.apache.camel.component.pdf.PdfConfiguration")
-                .build();
+    void configureRuntimeInitializedClasses(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitializedClass) {
+        for (String className : RUNTIME_INITIALIZED_CLASSES) {
+            runtimeInitializedClass.produce(new RuntimeInitializedClassBuildItem(className));
+        }
     }
-
 }
diff --git a/integration-tests/pdf/src/main/java/org/apache/camel/quarkus/component/pdf/it/PdfResource.java b/integration-tests/pdf/src/main/java/org/apache/camel/quarkus/component/pdf/it/PdfResource.java
index c8d7bda..ffd6fa8 100644
--- a/integration-tests/pdf/src/main/java/org/apache/camel/quarkus/component/pdf/it/PdfResource.java
+++ b/integration-tests/pdf/src/main/java/org/apache/camel/quarkus/component/pdf/it/PdfResource.java
@@ -51,7 +51,7 @@ public class PdfResource {
     @Produces(MediaType.APPLICATION_OCTET_STREAM)
     public Response createFromText(String message) throws Exception {
         document = producerTemplate.requestBody(
-                "pdf:create?fontSize=6&pageSize=PAGE_SIZE_A5", message, byte[].class);
+                "pdf:create?fontSize=6&pageSize=PAGE_SIZE_A5&font=Courier", message, byte[].class);
 
         LOG.infof("The PDDocument has been created and contains %d bytes", document.length);
 


[camel-quarkus] 26/34: cleanup core extension pom

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 5fd8cedfef3726299df372b8cc1d63f8aa2c1689
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Fri Feb 7 12:51:33 2020 +0100

    cleanup core extension pom
---
 extensions/core/runtime/pom.xml | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/extensions/core/runtime/pom.xml b/extensions/core/runtime/pom.xml
index f7706ec..c91b25f 100644
--- a/extensions/core/runtime/pom.xml
+++ b/extensions/core/runtime/pom.xml
@@ -77,12 +77,6 @@
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-core-engine</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.camel</groupId>
-                    <artifactId>camel-xml-jaxp</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>


[camel-quarkus] 24/34: Upgarde to Camel 3.1.0 - WIP (catalog)

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 220e0ba72932d9871f64dbbb673b503d5020e1ed
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Thu Feb 6 17:02:47 2020 +0100

    Upgarde to Camel 3.1.0 - WIP (catalog)
---
 catalog/camel-quarkus-catalog/pom.xml              | 27 +++++++++-------------
 .../catalog/quarkus/QuarkusRuntimeProvider.java    |  5 ++--
 .../quarkus/QuarkusRuntimeProviderTest.java        | 14 +++++------
 extensions/core/runtime/pom.xml                    |  4 ++++
 .../camel/quarkus/core/FastCamelContext.java       |  7 ++++++
 poms/bom/pom.xml                                   | 10 ++++++++
 6 files changed, 42 insertions(+), 25 deletions(-)

diff --git a/catalog/camel-quarkus-catalog/pom.xml b/catalog/camel-quarkus-catalog/pom.xml
index a234169..eb6e3d0 100644
--- a/catalog/camel-quarkus-catalog/pom.xml
+++ b/catalog/camel-quarkus-catalog/pom.xml
@@ -22,8 +22,9 @@
 
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>catalog</artifactId>
+        <artifactId>camel-quarkus-build-parent</artifactId>
         <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
     </parent>
 
     <artifactId>camel-catalog-quarkus</artifactId>
@@ -35,33 +36,27 @@
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-catalog</artifactId>
-            <version>${camel.version}</version>
         </dependency>
 
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
+            <groupId>org.jboss.logging</groupId>
+            <artifactId>jboss-logging</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <!-- logging -->
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-            <version>2.12.1</version>
+            <groupId>org.jboss.slf4j</groupId>
+            <artifactId>slf4j-jboss-logging</artifactId>
             <scope>test</scope>
         </dependency>
+
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>2.12.1</version>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>2.12.1</version>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
             <scope>test</scope>
         </dependency>
 
diff --git a/catalog/camel-quarkus-catalog/src/main/java/org/apache/camel/catalog/quarkus/QuarkusRuntimeProvider.java b/catalog/camel-quarkus-catalog/src/main/java/org/apache/camel/catalog/quarkus/QuarkusRuntimeProvider.java
index b1c37c6..d8a72bf 100644
--- a/catalog/camel-quarkus-catalog/src/main/java/org/apache/camel/catalog/quarkus/QuarkusRuntimeProvider.java
+++ b/catalog/camel-quarkus-catalog/src/main/java/org/apache/camel/catalog/quarkus/QuarkusRuntimeProvider.java
@@ -22,11 +22,12 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.camel.catalog.CamelCatalog;
-import org.apache.camel.catalog.CatalogHelper;
 import org.apache.camel.catalog.RuntimeProvider;
+import org.apache.camel.catalog.impl.CatalogHelper;
 
 /**
- * A Quarkus based {@link RuntimeProvider} which only includes the supported Camel components, data formats, and languages
+ * A Quarkus based {@link RuntimeProvider} which only includes the supported Camel components, data formats, and
+ * languages
  * which can be installed in Quarkus using the Camel extensions.
  */
 public class QuarkusRuntimeProvider implements RuntimeProvider {
diff --git a/catalog/camel-quarkus-catalog/src/test/java/org/apache/camel/catalog/quarkus/QuarkusRuntimeProviderTest.java b/catalog/camel-quarkus-catalog/src/test/java/org/apache/camel/catalog/quarkus/QuarkusRuntimeProviderTest.java
index 2c6b1d1..eb0f52d 100644
--- a/catalog/camel-quarkus-catalog/src/test/java/org/apache/camel/catalog/quarkus/QuarkusRuntimeProviderTest.java
+++ b/catalog/camel-quarkus-catalog/src/test/java/org/apache/camel/catalog/quarkus/QuarkusRuntimeProviderTest.java
@@ -20,19 +20,19 @@ import java.util.List;
 
 import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class QuarkusRuntimeProviderTest {
 
     static CamelCatalog catalog;
 
-    @BeforeClass
+    @BeforeAll
     public static void createCamelCatalog() {
         catalog = new DefaultCamelCatalog();
         catalog.setRuntimeProvider(new QuarkusRuntimeProvider());
diff --git a/extensions/core/runtime/pom.xml b/extensions/core/runtime/pom.xml
index 906fd04..f0ab723 100644
--- a/extensions/core/runtime/pom.xml
+++ b/extensions/core/runtime/pom.xml
@@ -90,6 +90,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-catalog</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-caffeine-lrucache</artifactId>
         </dependency>
         <dependency>
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index f0233b6..576499e 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -28,6 +28,8 @@ import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.catalog.RuntimeCamelCatalog;
+import org.apache.camel.catalog.impl.DefaultRuntimeCamelCatalog;
 import org.apache.camel.component.microprofile.config.CamelMicroProfilePropertiesSource;
 import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.impl.DefaultExecutorServiceManager;
@@ -320,6 +322,11 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
+    protected RuntimeCamelCatalog createRuntimeCamelCatalog() {
+        return new DefaultRuntimeCamelCatalog();
+    }
+
+    @Override
     protected Tracer createTracer() {
         Tracer tracer = null;
         if (getRegistry() != null) {
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index b699120..8e74d06 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -173,6 +173,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-catalog</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-cloud</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -193,6 +198,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-core-catalog</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-core-engine</artifactId>
                 <version>${camel.version}</version>
             </dependency>


[camel-quarkus] 30/34: Upgarde to Camel 3.1.0 - WIP (bindy)

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 961f6f98b0709e98c83e844c245d9448d72b3eeb
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Thu Feb 13 17:19:44 2020 +0100

    Upgarde to Camel 3.1.0 - WIP (bindy)
---
 .../quarkus/component/bindy/deployment/BindyProcessor.java   | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/extensions/bindy/deployment/src/main/java/org/apache/camel/quarkus/component/bindy/deployment/BindyProcessor.java b/extensions/bindy/deployment/src/main/java/org/apache/camel/quarkus/component/bindy/deployment/BindyProcessor.java
index 74bd071..65f9d97 100644
--- a/extensions/bindy/deployment/src/main/java/org/apache/camel/quarkus/component/bindy/deployment/BindyProcessor.java
+++ b/extensions/bindy/deployment/src/main/java/org/apache/camel/quarkus/component/bindy/deployment/BindyProcessor.java
@@ -18,6 +18,8 @@ package org.apache.camel.quarkus.component.bindy.deployment;
 
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceDirectoryBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 
 class BindyProcessor {
 
@@ -28,4 +30,14 @@ class BindyProcessor {
         return new FeatureBuildItem(FEATURE);
     }
 
+    @BuildStep
+    ReflectiveClassBuildItem reflectiveClasses() {
+        return new ReflectiveClassBuildItem(false, false, "com.ibm.icu.text.BreakIteratorFactory");
+    }
+
+    @BuildStep
+    NativeImageResourceDirectoryBuildItem resourceBundles() {
+        return new NativeImageResourceDirectoryBuildItem("com/ibm/icu/impl/data");
+    }
+
 }


[camel-quarkus] 27/34: Stop unbanning some classes after the upgrade to Camel 3.1

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 704a28af8579fd47309d6dc82a4937d73663ac58
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Mon Feb 10 16:31:42 2020 +0100

    Stop unbanning some classes after the upgrade to Camel 3.1
---
 .../quarkus/component/consul/deployment/ConsulProcessor.java | 12 ------------
 .../component/support/policy/deployment/PolicyProcessor.java |  8 +-------
 2 files changed, 1 insertion(+), 19 deletions(-)

diff --git a/extensions/consul/deployment/src/main/java/org/apache/camel/quarkus/component/consul/deployment/ConsulProcessor.java b/extensions/consul/deployment/src/main/java/org/apache/camel/quarkus/component/consul/deployment/ConsulProcessor.java
index 131adba..ac2cf5b 100644
--- a/extensions/consul/deployment/src/main/java/org/apache/camel/quarkus/component/consul/deployment/ConsulProcessor.java
+++ b/extensions/consul/deployment/src/main/java/org/apache/camel/quarkus/component/consul/deployment/ConsulProcessor.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.quarkus.component.consul.deployment;
 
-import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 
 class ConsulProcessor {
     private static final String FEATURE = "camel-consul";
@@ -35,14 +33,4 @@ class ConsulProcessor {
         return new ExtensionSslNativeSupportBuildItem(FEATURE);
     }
 
-    @BuildStep
-    void reflectiveClasses(BuildProducer<ReflectiveClassBuildItem> reflectiveClasses) {
-        reflectiveClasses.produce(new ReflectiveClassBuildItem(
-                true,
-                false,
-                "org.apache.camel.component.consul.ConsulConfiguration",
-                "org.apache.camel.component.consul.ConsulClientConfiguration",
-                "org.apache.camel.component.consul.health.ConsulHealthCheckRepositoryConfiguration",
-                "org.apache.camel.component.consul.cloud.ConsulServiceRegistryConfiguration"));
-    }
 }
diff --git a/extensions/support/policy/deployment/src/main/java/org/apache/camel/quarkus/component/support/policy/deployment/PolicyProcessor.java b/extensions/support/policy/deployment/src/main/java/org/apache/camel/quarkus/component/support/policy/deployment/PolicyProcessor.java
index 8993afa..9a2ce53 100644
--- a/extensions/support/policy/deployment/src/main/java/org/apache/camel/quarkus/component/support/policy/deployment/PolicyProcessor.java
+++ b/extensions/support/policy/deployment/src/main/java/org/apache/camel/quarkus/component/support/policy/deployment/PolicyProcessor.java
@@ -65,13 +65,7 @@ class PolicyProcessor {
                 "org.apache.camel.component.fhir.FhirHistoryEndpointConfiguration",
                 "org.apache.camel.component.fhir.FhirMetaEndpointConfiguration",
                 "org.apache.camel.component.fhir.FhirPatchEndpointConfiguration",
-                "org.apache.camel.component.fhir.FhirDeleteEndpointConfiguration",
-
-                /* org.apache.camel.component.consul.* can be removed after the upgrade to Camel 3.1 */
-                "org.apache.camel.component.consul.ConsulConfiguration",
-                "org.apache.camel.component.consul.ConsulClientConfiguration",
-                "org.apache.camel.component.consul.health.ConsulHealthCheckRepositoryConfiguration",
-                "org.apache.camel.component.consul.cloud.ConsulServiceRegistryConfiguration");
+                "org.apache.camel.component.fhir.FhirDeleteEndpointConfiguration");
     }
 
     /* Make the build fail as long as there are banned classes registered for reflection */


[camel-quarkus] 20/34: Upgrade to Camel 3.1.0 - WIP

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit c43d9bd543760598b9c27b16945256151ca28bcc
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed Jan 29 08:03:34 2020 +0000

    Upgrade to Camel 3.1.0 - WIP
---
 .../pages/list-of-camel-quarkus-extensions.adoc    |   4 +-
 .../quarkus/core/CamelMainEventDispatcher.java     |   5 +
 .../apache/camel/quarkus/core/CamelMainEvents.java |   6 +
 .../camel/quarkus/core/CamelMainRecorder.java      |   3 +-
 .../core/DisabledPredicateValidatorReifier.java    |   2 +-
 .../camel/quarkus/core/FastCamelContext.java       |  17 +-
 .../camel/quarkus/core/FastTypeConverter.java      |   6 +-
 extensions/readme.adoc                             |   4 +-
 .../apache/camel/quarkus/core/CamelServlet.java    |   2 +-
 .../core/runtime/support/SupportListener.java      |   4 +
 pom.xml                                            |   2 +-
 tooling/package-maven-plugin/pom.xml               |  22 +
 .../apache/camel/quarkus/maven/ExtMvelHelper.java  |  12 +-
 .../camel/quarkus/maven/JSonSchemaHelper.java      | 567 +++++++++++++++++++++
 .../quarkus/maven/PrepareCatalogQuarkusMojo.java   |   2 +-
 .../quarkus/maven/UpdateDocExtensionsListMojo.java | 132 ++---
 16 files changed, 697 insertions(+), 93 deletions(-)

diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index b884fda..b8e0b1d 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -64,7 +64,7 @@ Number of Camel components: 64 in 55 JAR artifacts (0 deprecated)
 `aws-sqs:queueNameOrArn` | 0.2.0 | The aws-sqs component is used for sending and receiving messages to Amazon's SQS service.
 
 | link:https://camel.apache.org/components/latest/aws-translate-component.html[AWS Translate] (camel-quarkus-aws-translate) +
-`aws-translate:label` | 1.0.0-M3 | The aws-kms is used for managing Amazon Translate
+`aws-translate:label` | 1.0.0-M3 | The aws-translate component is used for managing Amazon Translate
 
 | link:https://camel.apache.org/components/latest/bean-component.html[Bean] (camel-quarkus-bean) +
 `bean:beanName` | 0.2.0 | The bean component is for invoking Java beans from Camel.
@@ -73,7 +73,7 @@ Number of Camel components: 64 in 55 JAR artifacts (0 deprecated)
 `bean-validator:label` | 1.0.0-M1 | The Validator component performs bean validation of the message body using the Java Bean Validation API.
 
 | link:https://camel.apache.org/components/latest/class-component.html[Class] (camel-quarkus-bean) +
-`class:beanName` | 0.2.0 | The class component is for invoking Java classes (Java beans) from Camel.
+`class:beanName` | 0.2.0 | The Class component is for invoking Java classes (Java beans) from Camel.
 
 | link:https://camel.apache.org/components/latest/consul-component.html[Consul] (camel-quarkus-consul) +
 `consul:apiEndpoint` | 1.0.0-M3 | The camel consul component allows you to work with Consul, a distributed, highly available, datacenter-aware, service discovery and configuration system.
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainEventDispatcher.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainEventDispatcher.java
index 1df54ab..2b6f368 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainEventDispatcher.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainEventDispatcher.java
@@ -26,6 +26,11 @@ import org.apache.camel.main.MainSupport;
  */
 public class CamelMainEventDispatcher implements org.apache.camel.main.MainListener {
     @Override
+    public void beforeConfigure(BaseMainSupport main) {
+        fireEvent(CamelMainEvents.BeforeConfigure.class, new CamelMainEvents.BeforeConfigure());
+    }
+
+    @Override
     public void configure(CamelContext context) {
         fireEvent(CamelMainEvents.Configure.class, new CamelMainEvents.Configure());
     }
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainEvents.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainEvents.java
index 122803a..75b1d0e 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainEvents.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainEvents.java
@@ -21,6 +21,12 @@ public final class CamelMainEvents {
     }
 
     /**
+     * Event fired by {@link CamelMain} before the CamelContext is configured.
+     */
+    public static class BeforeConfigure {
+    }
+
+    /**
      * Event fired by {@link CamelMain} before the CamelContext is being created and started.
      */
     public static class BeforeStart {
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
index f023163..68de3ea 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
@@ -21,6 +21,7 @@ import io.quarkus.runtime.RuntimeValue;
 import io.quarkus.runtime.ShutdownContext;
 import io.quarkus.runtime.annotations.Recorder;
 import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.impl.engine.DefaultReactiveExecutor;
 import org.apache.camel.main.MainListener;
@@ -75,7 +76,7 @@ public class CamelMainRecorder {
     }
 
     public void setReactiveExecutor(RuntimeValue<CamelMain> main, RuntimeValue<ReactiveExecutor> executor) {
-        main.getValue().getCamelContext().setReactiveExecutor(executor.getValue());
+        main.getValue().getCamelContext().adapt(ExtendedCamelContext.class).setReactiveExecutor(executor.getValue());
     }
 
     public void start(ShutdownContext shutdown, RuntimeValue<CamelMain> main) {
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledPredicateValidatorReifier.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledPredicateValidatorReifier.java
index ee6347f..29a9eae 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledPredicateValidatorReifier.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledPredicateValidatorReifier.java
@@ -29,7 +29,7 @@ public class DisabledPredicateValidatorReifier extends ValidatorReifier<Predicat
     }
 
     @Override
-    protected Validator doCreateValidator(CamelContext context) throws Exception {
+    protected Validator doCreateValidator(CamelContext context) {
         throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
     }
 
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index 1a2640b..225d760 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -26,9 +26,7 @@ import org.apache.camel.AsyncProcessor;
 import org.apache.camel.CatalogCamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
-import org.apache.camel.PollingConsumer;
 import org.apache.camel.Processor;
-import org.apache.camel.Producer;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.component.microprofile.config.CamelMicroProfilePropertiesSource;
 import org.apache.camel.health.HealthCheckRegistry;
@@ -63,7 +61,6 @@ import org.apache.camel.impl.engine.DefaultValidatorRegistry;
 import org.apache.camel.impl.engine.EndpointKey;
 import org.apache.camel.impl.engine.HeadersMapFactoryResolver;
 import org.apache.camel.impl.engine.RestRegistryFactoryResolver;
-import org.apache.camel.impl.engine.ServicePool;
 import org.apache.camel.impl.health.DefaultHealthCheckRegistry;
 import org.apache.camel.impl.transformer.TransformerKey;
 import org.apache.camel.impl.validator.ValidatorKey;
@@ -274,16 +271,6 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
-    protected ServicePool<Producer> createProducerServicePool() {
-        return new ServicePool<>(Endpoint::createProducer, Producer::getEndpoint, 100);
-    }
-
-    @Override
-    protected ServicePool<PollingConsumer> createPollingConsumerServicePool() {
-        return new ServicePool<>(Endpoint::createPollingConsumer, PollingConsumer::getEndpoint, 100);
-    }
-
-    @Override
     protected UnitOfWorkFactory createUnitOfWorkFactory() {
         return new DefaultUnitOfWorkFactory();
     }
@@ -365,12 +352,12 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
-    protected TransformerRegistry<TransformerKey> createTransformerRegistry() throws Exception {
+    protected TransformerRegistry<TransformerKey> createTransformerRegistry() {
         return new DefaultTransformerRegistry(this);
     }
 
     @Override
-    protected ValidatorRegistry<ValidatorKey> createValidatorRegistry() throws Exception {
+    protected ValidatorRegistry<ValidatorKey> createValidatorRegistry() {
         return new DefaultValidatorRegistry(this);
     }
 
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
index 3a829ff..7ed602b 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
@@ -18,8 +18,12 @@ package org.apache.camel.quarkus.core;
 
 import org.apache.camel.impl.converter.DefaultTypeConverter;
 import org.apache.camel.spi.TypeConverterLoader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class FastTypeConverter extends DefaultTypeConverter {
+    private static final Logger LOG = LoggerFactory.getLogger(FastTypeConverter.class);
+
     public FastTypeConverter() {
         super(null, null, null, null, false);
     }
@@ -27,7 +31,7 @@ public class FastTypeConverter extends DefaultTypeConverter {
     @Override
     protected void doStart() throws Exception {
         for (TypeConverterLoader loader : getCamelContext().getRegistry().findByType(TypeConverterLoader.class)) {
-            log.debug("TypeConverterLoader: {} loading converters", loader);
+            LOG.debug("TypeConverterLoader: {} loading converters", loader);
             loader.load(this);
         }
     }
diff --git a/extensions/readme.adoc b/extensions/readme.adoc
index ef64f14..5ec1faa 100644
--- a/extensions/readme.adoc
+++ b/extensions/readme.adoc
@@ -51,7 +51,7 @@ Number of Camel components: 64 in 55 JAR artifacts (0 deprecated)
 `aws-sqs:queueNameOrArn` | 0.2.0 | The aws-sqs component is used for sending and receiving messages to Amazon's SQS service.
 
 | link:https://camel.apache.org/components/latest/aws-translate-component.html[AWS Translate] (camel-quarkus-aws-translate) +
-`aws-translate:label` | 1.0.0-M3 | The aws-kms is used for managing Amazon Translate
+`aws-translate:label` | 1.0.0-M3 | The aws-translate component is used for managing Amazon Translate
 
 | link:https://camel.apache.org/components/latest/bean-component.html[Bean] (camel-quarkus-bean) +
 `bean:beanName` | 0.2.0 | The bean component is for invoking Java beans from Camel.
@@ -60,7 +60,7 @@ Number of Camel components: 64 in 55 JAR artifacts (0 deprecated)
 `bean-validator:label` | 1.0.0-M1 | The Validator component performs bean validation of the message body using the Java Bean Validation API.
 
 | link:https://camel.apache.org/components/latest/class-component.html[Class] (camel-quarkus-bean) +
-`class:beanName` | 0.2.0 | The class component is for invoking Java classes (Java beans) from Camel.
+`class:beanName` | 0.2.0 | The Class component is for invoking Java classes (Java beans) from Camel.
 
 | link:https://camel.apache.org/components/latest/consul-component.html[Consul] (camel-quarkus-consul) +
 `consul:apiEndpoint` | 1.0.0-M3 | The camel consul component allows you to work with Consul, a distributed, highly available, datacenter-aware, service discovery and configuration system.
diff --git a/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java b/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
index 1d13b31..b243845 100644
--- a/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
+++ b/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
@@ -165,7 +165,7 @@ public class CamelServlet {
     @GET
     @Produces(MediaType.TEXT_PLAIN)
     public JsonObject reactiveExecutor() {
-        ReactiveExecutor executor = context.getReactiveExecutor();
+        ReactiveExecutor executor = context.adapt(ExtendedCamelContext.class).getReactiveExecutor();
 
         JsonObjectBuilder builder = Json.createObjectBuilder();
         builder.add("class", executor.getClass().getName());
diff --git a/integration-tests/support/core-main/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/support/SupportListener.java b/integration-tests/support/core-main/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/support/SupportListener.java
index 962d471..decef0a 100644
--- a/integration-tests/support/core-main/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/support/SupportListener.java
+++ b/integration-tests/support/core-main/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/support/SupportListener.java
@@ -39,6 +39,10 @@ public class SupportListener implements MainListener {
     }
 
     @Override
+    public void beforeConfigure(BaseMainSupport main) {
+    }
+
+    @Override
     public void beforeStart(BaseMainSupport main) {
         main.addRoutesBuilder(new MyBuilder());
     }
diff --git a/pom.xml b/pom.xml
index 3e9856f..c72ea63 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,7 @@
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
         <ahc.version>2.10.4</ahc.version>
-        <camel.version>3.0.1</camel.version>
+        <camel.version>3.1.0-SNAPSHOT</camel.version>
         <guava.version>26.0-jre</guava.version>
         <hapi.version>4.1.0</hapi.version>
         <quarkus.version>1.3.0.Alpha1</quarkus.version>
diff --git a/tooling/package-maven-plugin/pom.xml b/tooling/package-maven-plugin/pom.xml
index ad49f19..fc0eb30 100644
--- a/tooling/package-maven-plugin/pom.xml
+++ b/tooling/package-maven-plugin/pom.xml
@@ -53,6 +53,28 @@
             </exclusions>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-support</artifactId>
+            <version>${camel.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-util</artifactId>
+            <version>${camel.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-core</artifactId>
             <exclusions>
diff --git a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/ExtMvelHelper.java b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/ExtMvelHelper.java
index 5066e5d..0b0f86e 100644
--- a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/ExtMvelHelper.java
+++ b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/ExtMvelHelper.java
@@ -19,10 +19,10 @@ package org.apache.camel.quarkus.maven;
 import java.nio.file.Path;
 
 import org.apache.camel.maven.packaging.MvelHelper;
-import org.apache.camel.maven.packaging.StringHelper;
-import org.apache.camel.maven.packaging.model.ComponentModel;
-import org.apache.camel.maven.packaging.model.DataFormatModel;
-import org.apache.camel.maven.packaging.model.LanguageModel;
+import org.apache.camel.tooling.util.Strings;
+import org.apache.camel.tooling.model.ComponentModel;
+import org.apache.camel.tooling.model.DataFormatModel;
+import org.apache.camel.tooling.model.LanguageModel;
 
 public class ExtMvelHelper {
 
@@ -37,7 +37,7 @@ public class ExtMvelHelper {
     }
 
     public String getFirstVersionShort(Object model) {
-        return StringHelper.cutLastZeroDigit((String) invokeGetter(model, "getFirstVersion"));
+        return org.apache.camel.tooling.model.Strings.cutLastZeroDigit((String) invokeGetter(model, "getFirstVersion"));
     }
 
     public String getDocLink(Object model) {
@@ -76,6 +76,6 @@ public class ExtMvelHelper {
     }
 
     private String getExtensionDocName(Object model) {
-        return StringHelper.after((String) invokeGetter(model, "getArtifactId"), "camel-quarkus-") + ".adoc";
+        return Strings.after((String) invokeGetter(model, "getArtifactId"), "camel-quarkus-") + ".adoc";
     }
 }
diff --git a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/JSonSchemaHelper.java b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/JSonSchemaHelper.java
new file mode 100644
index 0000000..1b560d0
--- /dev/null
+++ b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/JSonSchemaHelper.java
@@ -0,0 +1,567 @@
+/*
+ * 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.maven;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.apache.camel.util.json.JsonArray;
+import org.apache.camel.util.json.JsonObject;
+import org.apache.camel.util.json.Jsoner;
+
+/**
+ * Used for parsing Camel components json meta-data descriptors.
+ */
+public final class JSonSchemaHelper {
+
+    private static final String[] LOGGING_LEVELS = new String[]{"ERROR", "WARN", "INFO", "DEBUG", "TRACE", "OFF"};
+
+    private JSonSchemaHelper() {
+    }
+
+    /**
+     * Parses the camel-main json schema to split it into a list or rows, where each row contains key value pairs with the metadata
+     *
+     * @param json the main configuration json
+     * @return a list of all the rows, where each row is a set of key value pairs with metadata
+     * @throws RuntimeException is thrown if error parsing the json data
+     */
+    @SuppressWarnings("unchecked")
+    public static List<Map<String, String>> parseMainJsonSchema(String json) {
+        List<Map<String, String>> answer = new ArrayList<>();
+        if (json == null) {
+            return answer;
+        }
+
+        // convert into a List<Map<String, String>> structure which is expected as output from this parser
+        try {
+            JsonObject output = (JsonObject) Jsoner.deserialize(json);
+            for (String key : output.keySet()) {
+                JsonArray array = (JsonArray) output.get(key);
+                if (key.equals("properties")) {
+                    // flattern each entry in the row with name as they key, and its value as the content (its a map also)
+                    for (Object obj : array) {
+                        Map entry = (Map) obj;
+                        Map<String, String> newRow = new LinkedHashMap();
+                        newRow.putAll(entry);
+                        answer.add(newRow);
+                        String name = ((Map) obj).get("name").toString();
+                        // use naming style with camel case
+                        String lookupKey = dashToCamelCase(name);
+                        newRow.put("name", lookupKey);
+                        // its the java type
+                        String type = newRow.get("type");
+                        newRow.put("javaType", type);
+                        newRow.put("type", fromMainToType(type));
+                        // add known enums
+                        if ("org.apache.camel.LoggingLevel".equals(type)) {
+                            newRow.put("enum", "ERROR,WARN,INFO,DEBUG,TRACE,OFF");
+                        } else if ("org.apache.camel.ManagementStatisticsLevel".equals(type)) {
+                            newRow.put("enum", "Extended,Default,RoutesOnly,Off");
+                        } else if ("org.apache.camel.spi.RestBindingMode".equals(type)) {
+                            newRow.put("enum", "auto,off,json,xml,json_xml");
+                        } else if ("org.apache.camel.spi.RestHostNameResolver".equals(type)) {
+                            newRow.put("enum", "allLocalIp,localIp,localHostName");
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            // wrap parsing exceptions as runtime
+            throw new RuntimeException("Cannot parse json", e);
+        }
+
+        return answer;
+    }
+
+    private static String fromMainToType(String type) {
+        if ("boolean".equals(type) || "java.lang.Boolean".equals(type)) {
+            return "boolean";
+        } else if ("int".equals(type) || "java.lang.Integer".equals(type)) {
+            return "integer";
+        } else if ("long".equals(type) || "java.lang.Long".equals(type)) {
+            return "integer";
+        } else if ("float".equals(type) || "java.lang.Float".equals(type)) {
+            return "number";
+        } else if ("double".equals(type) || "java.lang.Double".equals(type)) {
+            return "number";
+        } else if ("string".equals(type) || "java.lang.String".equals(type)) {
+            return "string";
+        } else {
+            return "object";
+        }
+    }
+
+    /**
+     * Parses the json schema to split it into a list or rows, where each row contains key value pairs with the metadata
+     *
+     * @param group the group to parse from such as <tt>component</tt>, <tt>componentProperties</tt>, or <tt>properties</tt>.
+     * @param json the json
+     * @return a list of all the rows, where each row is a set of key value pairs with metadata
+     * @throws RuntimeException is thrown if error parsing the json data
+     */
+    @SuppressWarnings("unchecked")
+    public static List<Map<String, String>> parseJsonSchema(String group, String json, boolean parseProperties) {
+        List<Map<String, String>> answer = new ArrayList<>();
+        if (json == null) {
+            return answer;
+        }
+
+        // convert into a List<Map<String, String>> structure which is expected as output from this parser
+        try {
+            JsonObject output = (JsonObject) Jsoner.deserialize(json);
+            for (String key : output.keySet()) {
+                Map row = output.getMap(key);
+                if (key.equals(group)) {
+                    if (parseProperties) {
+                        // flattern each entry in the row with name as they key, and its value as the content (its a map also)
+                        for (Object obj : row.entrySet()) {
+                            Map.Entry entry = (Map.Entry) obj;
+                            Map<String, String> newRow = new LinkedHashMap();
+                            newRow.put("name", entry.getKey().toString());
+
+                            Map newData = transformMap((Map) entry.getValue());
+                            newRow.putAll(newData);
+                            answer.add(newRow);
+                        }
+                    } else {
+                        // flattern each entry in the row as a list of single Map<key, value> elements
+                        Map newData = transformMap(row);
+                        for (Object obj : newData.entrySet()) {
+                            Map.Entry entry = (Map.Entry) obj;
+                            Map<String, String> newRow = new LinkedHashMap<>();
+                            newRow.put(entry.getKey().toString(), entry.getValue().toString());
+                            answer.add(newRow);
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            // wrap parsing exceptions as runtime
+            throw new RuntimeException("Cannot parse json", e);
+        }
+
+        return answer;
+    }
+
+    private static Map<String, String> transformMap(Map jsonMap) {
+        Map<String, String> answer = new LinkedHashMap<>();
+
+        for (Object rowObj : jsonMap.entrySet()) {
+            Map.Entry rowEntry = (Map.Entry) rowObj;
+            // if its a list type then its an enum, and we need to parse it as a single line separated with comma
+            // to be backwards compatible
+            Object newValue = rowEntry.getValue();
+            if (newValue instanceof List) {
+                List<?> list = (List) newValue;
+                newValue = list.stream().map(Object::toString)
+                        .collect(Collectors.joining(","));
+            }
+            // ensure value is escaped
+            String value = escapeJson(newValue.toString());
+            answer.put(rowEntry.getKey().toString(), value);
+        }
+
+        return answer;
+    }
+
+    private static String escapeJson(String value) {
+        // need to safe encode \r as \\r so its escaped
+        // need to safe encode \n as \\n so its escaped
+        // need to safe encode \t as \\t so its escaped
+        return value
+                .replace("\\r", "\\\\r")
+                .replace("\\n", "\\\\n")
+                .replace("\\t", "\\\\t");
+    }
+
+    public static boolean isComponentLenientProperties(List<Map<String, String>> rows) {
+        for (Map<String, String> row : rows) {
+            if (row.containsKey("lenientProperties")) {
+                return "true".equals(row.get("lenientProperties"));
+            }
+        }
+        return false;
+    }
+
+    public static boolean isComponentConsumerOnly(List<Map<String, String>> rows) {
+        for (Map<String, String> row : rows) {
+            if (row.containsKey("consumerOnly")) {
+                return "true".equals(row.get("consumerOnly"));
+            }
+        }
+        return false;
+    }
+
+    public static boolean isComponentProducerOnly(List<Map<String, String>> rows) {
+        for (Map<String, String> row : rows) {
+            if (row.containsKey("producerOnly")) {
+                return "true".equals(row.get("producerOnly"));
+            }
+        }
+        return false;
+    }
+
+    public static boolean isPropertyConsumerOnly(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String labels = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("label")) {
+                labels = row.get("label");
+            }
+            if (found) {
+                return labels != null && labels.contains("consumer");
+            }
+        }
+        return false;
+    }
+
+    public static boolean isPropertyProducerOnly(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String labels = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("label")) {
+                labels = row.get("label");
+            }
+            if (found) {
+                return labels != null && labels.contains("producer");
+            }
+        }
+        return false;
+    }
+
+    public static boolean isPropertyRequired(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            boolean required = false;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("required")) {
+                required = "true".equals(row.get("required"));
+            }
+            if (found) {
+                return required;
+            }
+        }
+        return false;
+    }
+
+    public static boolean isPropertyDeprecated(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            boolean deprecated = false;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("deprecated")) {
+                deprecated = "true".equals(row.get("deprecated"));
+            }
+            if (found) {
+                return deprecated;
+            }
+        }
+        return false;
+    }
+
+    public static String getPropertyKind(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String kind = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("kind")) {
+                kind = row.get("kind");
+            }
+            if (found) {
+                return kind;
+            }
+        }
+        return null;
+    }
+
+    public static String getPropertyJavaType(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String javaType = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("javaType")) {
+                javaType = row.get("javaType");
+            }
+            if (found) {
+                return javaType;
+            }
+        }
+        return null;
+    }
+
+    public static boolean isPropertyBoolean(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String type = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("type")) {
+                type = row.get("type");
+            }
+            if (found) {
+                return "boolean".equals(type);
+            }
+        }
+        return false;
+    }
+
+    public static boolean isPropertyInteger(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String type = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("type")) {
+                type = row.get("type");
+            }
+            if (found) {
+                return "integer".equals(type);
+            }
+        }
+        return false;
+    }
+
+    public static boolean isPropertyArray(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String type = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("type")) {
+                type = row.get("type");
+            }
+            if (found) {
+                return "array".equals(type);
+            }
+        }
+        return false;
+    }
+
+    public static boolean isPropertyNumber(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String type = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("type")) {
+                type = row.get("type");
+            }
+            if (found) {
+                return "number".equals(type);
+            }
+        }
+        return false;
+    }
+
+    public static boolean isPropertyObject(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String type = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("type")) {
+                type = row.get("type");
+            }
+            if (found) {
+                return "object".equals(type);
+            }
+        }
+        return false;
+    }
+
+    public static String getPropertyDefaultValue(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String defaultValue = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("defaultValue")) {
+                defaultValue = row.get("defaultValue");
+            }
+            if (found) {
+                return defaultValue;
+            }
+        }
+        return null;
+    }
+
+    public static String stripOptionalPrefixFromName(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            boolean found = false;
+            if (row.containsKey("name")) {
+                String optionalPrefix = row.get("optionalPrefix");
+                if (optionalPrefix != null && !optionalPrefix.isEmpty() && name.startsWith(optionalPrefix)) {
+                    name = name.substring(optionalPrefix.length());
+                    // try again
+                    return stripOptionalPrefixFromName(rows, name);
+                } else {
+                    found = name.equalsIgnoreCase(row.get("name"));
+                }
+            }
+            if (found) {
+                return name;
+            }
+        }
+        return name;
+    }
+
+    public static String getPropertyEnum(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String enums = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("enum")) {
+                enums = row.get("enum");
+            }
+            if (found) {
+                return enums;
+            }
+        }
+        return null;
+    }
+
+    public static String getPropertyPrefix(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String prefix = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("prefix")) {
+                prefix = row.get("prefix");
+            }
+            if (found) {
+                return prefix;
+            }
+        }
+        return null;
+    }
+
+    public static boolean isPropertyMultiValue(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            boolean multiValue = false;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                found = name.equalsIgnoreCase(row.get("name"));
+            }
+            if (row.containsKey("multiValue")) {
+                multiValue = "true".equals(row.get("multiValue"));
+            }
+            if (found) {
+                return multiValue;
+            }
+        }
+        return false;
+    }
+
+    public static String getPropertyNameFromNameWithPrefix(List<Map<String, String>> rows, String name) {
+        for (Map<String, String> row : rows) {
+            String propertyName = null;
+            boolean found = false;
+            if (row.containsKey("name")) {
+                propertyName = row.get("name");
+            }
+            if (row.containsKey("prefix")) {
+                String preifx = row.get("prefix");
+                found = name.startsWith(preifx);
+            }
+            if (found) {
+                return propertyName;
+            }
+        }
+        return null;
+    }
+
+    public static Map<String, String> getRow(List<Map<String, String>> rows, String key) {
+        for (Map<String, String> row : rows) {
+            if (key.equals(row.get("name"))) {
+                return row;
+            }
+        }
+        return null;
+    }
+
+    public static Set<String> getNames(List<Map<String, String>> rows) {
+        Set<String> answer = new LinkedHashSet<>();
+        for (Map<String, String> row : rows) {
+            if (row.containsKey("name")) {
+                answer.add(row.get("name"));
+            }
+        }
+        return answer;
+    }
+
+    /**
+     * Converts the string from dash format into camel case (hello-great-world -> helloGreatWorld)
+     *
+     * @param text  the string
+     * @return the string camel cased
+     */
+    private static String dashToCamelCase(String text) {
+        if (text == null) {
+            return null;
+        }
+        int length = text.length();
+        if (length == 0) {
+            return text;
+        }
+        if (text.indexOf('-') == -1) {
+            return text;
+        }
+
+        StringBuilder sb = new StringBuilder();
+
+        for (int i = 0; i < text.length(); i++) {
+            char c = text.charAt(i);
+            if (c == '-') {
+                i++;
+                sb.append(Character.toUpperCase(text.charAt(i)));
+            } else {
+                sb.append(c);
+            }
+        }
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java
index 0ca8459..0a07936 100644
--- a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java
+++ b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java
@@ -64,7 +64,7 @@ import com.google.gson.GsonBuilder;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 
-import static org.apache.camel.maven.packaging.PackageHelper.loadText;
+import static org.apache.camel.tooling.util.PackageHelper.loadText;
 
 /**
  * Prepares the Quarkus provider camel catalog to include component it supports
diff --git a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateDocExtensionsListMojo.java b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateDocExtensionsListMojo.java
index bb392f4..b5fac67 100644
--- a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateDocExtensionsListMojo.java
+++ b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateDocExtensionsListMojo.java
@@ -33,12 +33,11 @@ import java.util.TreeSet;
 
 import static java.util.stream.Collectors.toSet;
 
-import org.apache.camel.maven.packaging.JSonSchemaHelper;
-import org.apache.camel.maven.packaging.StringHelper;
-import org.apache.camel.maven.packaging.model.ComponentModel;
-import org.apache.camel.maven.packaging.model.DataFormatModel;
-import org.apache.camel.maven.packaging.model.LanguageModel;
-import org.apache.camel.maven.packaging.model.OtherModel;
+import org.apache.camel.util.StringHelper;
+import org.apache.camel.tooling.model.ComponentModel;
+import org.apache.camel.tooling.model.DataFormatModel;
+import org.apache.camel.tooling.model.LanguageModel;
+import org.apache.camel.tooling.model.OtherModel;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -49,8 +48,8 @@ import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
 import org.mvel2.templates.TemplateRuntime;
 
-import static org.apache.camel.maven.packaging.PackageHelper.loadText;
-import static org.apache.camel.maven.packaging.PackageHelper.writeText;
+import static org.apache.camel.tooling.util.PackageHelper.loadText;
+import static org.apache.camel.tooling.util.PackageHelper.writeText;
 
 /**
  * Updates the documentation in:
@@ -183,7 +182,7 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo {
 
             // how many deprecated
             long deprecated = components.stream()
-                    .filter(c -> "true".equals(c.getDeprecated()))
+                    .filter(ComponentModel::isDeprecated)
                     .count();
 
             // update the big readme file in the extensions dir
@@ -251,7 +250,7 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo {
 
             // how many deprecated
             long deprecated = models.stream()
-                    .filter(m -> "true".equals(m.getDeprecated()))
+                    .filter(DataFormatModel::isDeprecated)
                     .count();
 
             // filter out camel-core
@@ -325,7 +324,7 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo {
 
             // how many deprecated
             long deprecated = languages.stream()
-                    .filter(l -> "true".equals(l.getDeprecated()))
+                    .filter(LanguageModel::isDeprecated)
                     .count();
 
             // update the big readme file in the extensions dir
@@ -387,7 +386,7 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo {
 
             // how many deprecated
             long deprecated = others.stream()
-                    .filter(o -> "true".equals(o.getDeprecated()))
+                    .filter(OtherModel::isDeprecated)
                     .count();
 
             // update the big readme file in the extensions dir
@@ -665,22 +664,22 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo {
         List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
 
         ComponentModel component = new ComponentModel();
-        component.setScheme(JSonSchemaHelper.getSafeValue("scheme", rows));
-        component.setSyntax(JSonSchemaHelper.getSafeValue("syntax", rows));
-        component.setAlternativeSyntax(JSonSchemaHelper.getSafeValue("alternativeSyntax", rows));
-        component.setAlternativeSchemes(JSonSchemaHelper.getSafeValue("alternativeSchemes", rows));
-        component.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
-        component.setDescription(JSonSchemaHelper.getSafeValue("description", rows));
-        component.setFirstVersion(JSonSchemaHelper.getSafeValue("firstVersion", rows));
-        component.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
-        component.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", rows));
-        component.setDeprecationNote(JSonSchemaHelper.getSafeValue("deprecationNote", rows));
-        component.setConsumerOnly(JSonSchemaHelper.getSafeValue("consumerOnly", rows));
-        component.setProducerOnly(JSonSchemaHelper.getSafeValue("producerOnly", rows));
-        component.setJavaType(JSonSchemaHelper.getSafeValue("javaType", rows));
-        component.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows));
-        component.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows));
-        component.setVersion(JSonSchemaHelper.getSafeValue("version", rows));
+        component.setScheme(getJSonValue("scheme", rows));
+        component.setSyntax(getJSonValue("syntax", rows));
+        component.setAlternativeSyntax(getJSonValue("alternativeSyntax", rows));
+        component.setAlternativeSchemes(getJSonValue("alternativeSchemes", rows));
+        component.setTitle(getJSonValue("title", rows));
+        component.setDescription(getJSonValue("description", rows));
+        component.setFirstVersion(getJSonValue("firstVersion", rows));
+        component.setLabel(getJSonValue("label", rows));
+        component.setDeprecated(Boolean.valueOf(getJSonValue("deprecated", rows)));
+        component.setDeprecationNote(getJSonValue("deprecationNote", rows));
+        component.setConsumerOnly(Boolean.valueOf(getJSonValue("consumerOnly", rows)));
+        component.setProducerOnly(Boolean.valueOf(getJSonValue("producerOnly", rows)));
+        component.setJavaType(getJSonValue("javaType", rows));
+        component.setGroupId(getJSonValue("groupId", rows));
+        component.setArtifactId(getJSonValue("artifactId", rows));
+        component.setVersion(getJSonValue("version", rows));
 
         return component;
     }
@@ -689,18 +688,18 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo {
         List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("dataformat", json, false);
 
         DataFormatModel dataFormat = new DataFormatModel();
-        dataFormat.setName(JSonSchemaHelper.getSafeValue("name", rows));
-        dataFormat.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
-        dataFormat.setModelName(JSonSchemaHelper.getSafeValue("modelName", rows));
-        dataFormat.setDescription(JSonSchemaHelper.getSafeValue("description", rows));
-        dataFormat.setFirstVersion(JSonSchemaHelper.getSafeValue("firstVersion", rows));
-        dataFormat.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
-        dataFormat.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", rows));
-        dataFormat.setDeprecationNote(JSonSchemaHelper.getSafeValue("deprecationNote", rows));
-        dataFormat.setJavaType(JSonSchemaHelper.getSafeValue("javaType", rows));
-        dataFormat.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows));
-        dataFormat.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows));
-        dataFormat.setVersion(JSonSchemaHelper.getSafeValue("version", rows));
+        dataFormat.setName(getJSonValue("name", rows));
+        dataFormat.setTitle(getJSonValue("title", rows));
+        dataFormat.setModelName(getJSonValue("modelName", rows));
+        dataFormat.setDescription(getJSonValue("description", rows));
+        dataFormat.setFirstVersion(getJSonValue("firstVersion", rows));
+        dataFormat.setLabel(getJSonValue("label", rows));
+        dataFormat.setDeprecated(Boolean.valueOf(getJSonValue("deprecated", rows)));
+        dataFormat.setDeprecationNote(getJSonValue("deprecationNote", rows));
+        dataFormat.setJavaType(getJSonValue("javaType", rows));
+        dataFormat.setGroupId(getJSonValue("groupId", rows));
+        dataFormat.setArtifactId(getJSonValue("artifactId", rows));
+        dataFormat.setVersion(getJSonValue("version", rows));
 
         return dataFormat;
     }
@@ -709,18 +708,18 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo {
         List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("language", json, false);
 
         LanguageModel language = new LanguageModel();
-        language.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
-        language.setName(JSonSchemaHelper.getSafeValue("name", rows));
-        language.setModelName(JSonSchemaHelper.getSafeValue("modelName", rows));
-        language.setDescription(JSonSchemaHelper.getSafeValue("description", rows));
-        language.setFirstVersion(JSonSchemaHelper.getSafeValue("firstVersion", rows));
-        language.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
-        language.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", rows));
-        language.setDeprecationNote(JSonSchemaHelper.getSafeValue("deprecationNote", rows));
-        language.setJavaType(JSonSchemaHelper.getSafeValue("javaType", rows));
-        language.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows));
-        language.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows));
-        language.setVersion(JSonSchemaHelper.getSafeValue("version", rows));
+        language.setTitle(getJSonValue("title", rows));
+        language.setName(getJSonValue("name", rows));
+        language.setModelName(getJSonValue("modelName", rows));
+        language.setDescription(getJSonValue("description", rows));
+        language.setFirstVersion(getJSonValue("firstVersion", rows));
+        language.setLabel(getJSonValue("label", rows));
+        language.setDeprecated(Boolean.valueOf(getJSonValue("deprecated", rows)));
+        language.setDeprecationNote(getJSonValue("deprecationNote", rows));
+        language.setJavaType(getJSonValue("javaType", rows));
+        language.setGroupId(getJSonValue("groupId", rows));
+        language.setArtifactId(getJSonValue("artifactId", rows));
+        language.setVersion(getJSonValue("version", rows));
 
         return language;
     }
@@ -729,20 +728,29 @@ public class UpdateDocExtensionsListMojo extends AbstractMojo {
         List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("other", json, false);
 
         OtherModel other = new OtherModel();
-        other.setName(JSonSchemaHelper.getSafeValue("name", rows));
-        other.setTitle(JSonSchemaHelper.getSafeValue("title", rows));
-        other.setDescription(JSonSchemaHelper.getSafeValue("description", rows));
-        other.setFirstVersion(JSonSchemaHelper.getSafeValue("firstVersion", rows));
-        other.setLabel(JSonSchemaHelper.getSafeValue("label", rows));
-        other.setDeprecated(JSonSchemaHelper.getSafeValue("deprecated", rows));
-        other.setDeprecationNote(JSonSchemaHelper.getSafeValue("deprecationNote", rows));
-        other.setGroupId(JSonSchemaHelper.getSafeValue("groupId", rows));
-        other.setArtifactId(JSonSchemaHelper.getSafeValue("artifactId", rows));
-        other.setVersion(JSonSchemaHelper.getSafeValue("version", rows));
+        other.setName(getJSonValue("name", rows));
+        other.setTitle(getJSonValue("title", rows));
+        other.setDescription(getJSonValue("description", rows));
+        other.setFirstVersion(getJSonValue("firstVersion", rows));
+        other.setLabel(getJSonValue("label", rows));
+        other.setDeprecated(Boolean.valueOf(getJSonValue("deprecated", rows)));
+        other.setDeprecationNote(getJSonValue("deprecationNote", rows));
+        other.setGroupId(getJSonValue("groupId", rows));
+        other.setArtifactId(getJSonValue("artifactId", rows));
+        other.setVersion(getJSonValue("version", rows));
 
         return other;
     }
 
+    private String getJSonValue(String key, List<Map<String, String>> rows) {
+        for (Map<String, String> row : rows) {
+            if (row.containsKey(key)) {
+                return row.get(key);
+            }
+        }
+        return "";
+    }
+
     private Path getExtensionsDocPath() {
         return Paths.get(websiteDocBaseDir.toString(), "extensions");
     }


[camel-quarkus] 17/34: create camel-jira extension #710

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 5b22aa6218fb3d61d14ad92c3efde71b3271aac6
Author: Freeman Fang <fr...@gmail.com>
AuthorDate: Thu Feb 13 14:03:25 2020 -0500

    create camel-jira extension #710
---
 .../pages/list-of-camel-quarkus-extensions.adoc    |   5 +-
 extensions/jira/deployment/pom.xml                 |  79 ++++++++
 .../component/jira/deployment/JiraProcessor.java   |  31 ++++
 extensions/jira/pom.xml                            |  39 ++++
 extensions/jira/runtime/pom.xml                    | 125 +++++++++++++
 .../main/resources/META-INF/quarkus-extension.yaml |  27 +++
 extensions/pom.xml                                 |   1 +
 extensions/readme.adoc                             |   5 +-
 integration-tests/jira/pom.xml                     | 202 +++++++++++++++++++++
 .../quarkus/component/jira/it/JiraResource.java    |  86 +++++++++
 .../component/jira/it/JiraRouteBuilder.java        |  41 +++++
 .../camel/quarkus/component/jira/it/JiraIT.java    |  24 +++
 .../camel/quarkus/component/jira/it/JiraTest.java  |  41 +++++
 integration-tests/pom.xml                          |   1 +
 pom.xml                                            |   2 +
 poms/bom-deployment/pom.xml                        |   5 +
 poms/bom/pom.xml                                   |  22 ++-
 17 files changed, 733 insertions(+), 3 deletions(-)

diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index b97e9be..b884fda 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -18,7 +18,7 @@ In case you are missing some Camel feature in the list:
 == Camel Components
 
 // components: START
-Number of Camel components: 63 in 54 JAR artifacts (0 deprecated)
+Number of Camel components: 64 in 55 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -114,6 +114,9 @@ Number of Camel components: 63 in 54 JAR artifacts (0 deprecated)
 | link:https://camel.apache.org/components/latest/jdbc-component.html[JDBC] (camel-quarkus-jdbc) +
 `jdbc:dataSourceName` | 0.2.0 | The jdbc component enables you to access databases through JDBC, where SQL queries are sent in the message body.
 
+| link:https://camel.apache.org/components/latest/jira-component.html[Jira] (camel-quarkus-jira) +
+`jira:type` | 1.1.0 | The jira component interacts with the JIRA issue tracker.
+
 | link:https://camel.apache.org/components/latest/kafka-component.html[Kafka] (camel-quarkus-kafka) +
 `kafka:topic` | 1.0.0-M1 | The kafka component allows messages to be sent to (or consumed from) Apache Kafka brokers.
 
diff --git a/extensions/jira/deployment/pom.xml b/extensions/jira/deployment/pom.xml
new file mode 100644
index 0000000..2e1dd6c
--- /dev/null
+++ b/extensions/jira/deployment/pom.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-jira-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-jira-deployment</artifactId>
+    <name>Camel Quarkus :: Jira :: Deployment</name>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-deployment</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-jira</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-commons-logging-deployment</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>io.quarkus</groupId>
+                            <artifactId>quarkus-extension-processor</artifactId>
+                            <version>${quarkus.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java b/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java
new file mode 100644
index 0000000..befac44
--- /dev/null
+++ b/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java
@@ -0,0 +1,31 @@
+/*
+ * 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.jira.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+
+class JiraProcessor {
+
+    private static final String FEATURE = "camel-jira";
+
+    @BuildStep
+    FeatureBuildItem feature() {
+        return new FeatureBuildItem(FEATURE);
+    }
+
+}
diff --git a/extensions/jira/pom.xml b/extensions/jira/pom.xml
new file mode 100644
index 0000000..31bd5ca
--- /dev/null
+++ b/extensions/jira/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../../poms/build-parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-jira-parent</artifactId>
+    <name>Camel Quarkus :: Jira</name>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>deployment</module>
+        <module>runtime</module>
+    </modules>
+</project>
diff --git a/extensions/jira/runtime/pom.xml b/extensions/jira/runtime/pom.xml
new file mode 100644
index 0000000..6faa1d9
--- /dev/null
+++ b/extensions/jira/runtime/pom.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-jira-parent</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-jira</artifactId>
+    <name>Camel Quarkus :: Jira :: Runtime</name>
+
+    <properties>
+        <firstVersion>1.1.0</firstVersion>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    <repositories>
+        <repository>
+            <id>atlassian</id>
+            <url>https://packages.atlassian.com/maven-external/</url>
+            <name>atlassian exteranl repo</name>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-jira</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.ws.rs</groupId>
+                    <artifactId>jsr311-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.google.code.findbugs</groupId>
+                    <artifactId>jsr305</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.httpcomponents</groupId>
+                    <artifactId>httpclient-cache</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>commons-logging</groupId>
+                    <artifactId>commons-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-commons-logging</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient-cache</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-bootstrap-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>io.quarkus</groupId>
+                            <artifactId>quarkus-extension-processor</artifactId>
+                            <version>${quarkus.version}</version>
+                        </path>
+                    </annotationProcessorPaths>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/extensions/jira/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/jira/runtime/src/main/resources/META-INF/quarkus-extension.yaml
new file mode 100644
index 0000000..7646dad
--- /dev/null
+++ b/extensions/jira/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -0,0 +1,27 @@
+#
+# 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.
+#
+
+---
+name: "Camel Quarkus Jira"
+description: "Camel Jira support"
+metadata:
+  keywords:
+  - "camel"
+  - "jira"
+  guide: "https://quarkus.io/guides/camel"
+  categories:
+  - "integration"
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 289a289..d562bf7 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -89,6 +89,7 @@
         <module>netty-http</module>
         <module>olingo4</module>
         <module>opentracing</module>
+        <module>jira</module>
         <module>paho</module>
         <module>pdf</module>
         <module>platform-http</module>
diff --git a/extensions/readme.adoc b/extensions/readme.adoc
index fffd02d..ef64f14 100644
--- a/extensions/readme.adoc
+++ b/extensions/readme.adoc
@@ -5,7 +5,7 @@ Apache Camel Quarkus supports the following Camel artifacts as Quarkus Extension
 == Camel Components
 
 // components: START
-Number of Camel components: 63 in 54 JAR artifacts (0 deprecated)
+Number of Camel components: 64 in 55 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -101,6 +101,9 @@ Number of Camel components: 63 in 54 JAR artifacts (0 deprecated)
 | link:https://camel.apache.org/components/latest/jdbc-component.html[JDBC] (camel-quarkus-jdbc) +
 `jdbc:dataSourceName` | 0.2.0 | The jdbc component enables you to access databases through JDBC, where SQL queries are sent in the message body.
 
+| link:https://camel.apache.org/components/latest/jira-component.html[Jira] (camel-quarkus-jira) +
+`jira:type` | 1.1.0 | The jira component interacts with the JIRA issue tracker.
+
 | link:https://camel.apache.org/components/latest/kafka-component.html[Kafka] (camel-quarkus-kafka) +
 `kafka:topic` | 1.0.0-M1 | The kafka component allows messages to be sent to (or consumed from) Apache Kafka brokers.
 
diff --git a/integration-tests/jira/pom.xml b/integration-tests/jira/pom.xml
new file mode 100644
index 0000000..195d96f
--- /dev/null
+++ b/integration-tests/jira/pom.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-integration-tests</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-quarkus-integration-test-jira</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: Jira</name>
+    <description>Integration tests for Camel Quarkus Jira extension</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-jira</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-direct</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-log</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy</artifactId>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit5</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.google.guava</groupId>
+                    <artifactId>guava</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>io.quarkus</groupId>
+                <artifactId>quarkus-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!--profiles>
+        <profile>
+            <id>native</id>
+            <activation>
+                <property>
+                    <name>native</name>
+                </property>
+            </activation>
+            <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>
+                                <configuration>
+                                    <systemProperties>
+                                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
+                                    </systemProperties>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>io.quarkus</groupId>
+                        <artifactId>quarkus-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>native-image</id>
+                                <goals>
+                                    <goal>native-image</goal>
+                                </goals>
+                                <configuration>
+                                    <reportErrorsAtRuntime>false</reportErrorsAtRuntime>
+                                    <cleanupServer>true</cleanupServer>
+                                    <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
+                                    <enableServer>false</enableServer>
+                                    <dumpProxies>false</dumpProxies>
+                                    <graalvmHome>${graalvmHome}</graalvmHome>
+                                    <enableJni>true</enableJni>
+                                    <enableAllSecurityServices>true</enableAllSecurityServices>
+                                    <disableReports>true</disableReports>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles-->
+    <profiles>
+        <profile>
+            <id>native</id>
+            <activation>
+                <property>
+                    <name>native</name>
+                </property>
+            </activation>
+            <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>
+                                <configuration>
+                                    <systemProperties>
+                                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
+                                    </systemProperties>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>io.quarkus</groupId>
+                        <artifactId>quarkus-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>native-image</id>
+                                <goals>
+                                    <goal>native-image</goal>
+                                </goals>
+                                <configuration>
+                                    <reportErrorsAtRuntime>false</reportErrorsAtRuntime>
+                                    <cleanupServer>true</cleanupServer>
+                                    <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
+                                    <enableServer>false</enableServer>
+                                    <dumpProxies>false</dumpProxies>
+                                    <graalvmHome>${graalvmHome}</graalvmHome>
+                                    <enableJni>true</enableJni>
+                                    <enableAllSecurityServices>true</enableAllSecurityServices>
+                                    <disableReports>true</disableReports>
+                                    <additionalBuildArgs>
+                                        --initialize-at-run-time=com.google.api.client.auth.oauth.OAuthParameters,--allow-incomplete-classpath
+                                    </additionalBuildArgs>
+                                    <!--additionalBuildArg>
+                                        -H:ReflectionConfigurationFiles=${project.basedir}/reflection-config.json
+                                    </additionalBuildArg-->
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraResource.java b/integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraResource.java
new file mode 100644
index 0000000..9433680
--- /dev/null
+++ b/integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraResource.java
@@ -0,0 +1,86 @@
+/*
+ * 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.jira.it;
+
+import java.net.URI;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import com.atlassian.jira.rest.client.api.RestClientException;
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.ProducerTemplate;
+import org.jboss.logging.Logger;
+
+@Path("/jira")
+@ApplicationScoped
+public class JiraResource {
+
+    private static final Logger log = Logger.getLogger(JiraResource.class);
+
+    String TEST_JIRA_URL = "https://somerepo.atlassian.net";
+    String PROJECT = "TST";
+    String USERNAME = "someguy";
+    String PASSWORD = "my_password";
+    String JIRA_CREDENTIALS = TEST_JIRA_URL + "&username=" + USERNAME + "&password=" + PASSWORD;
+
+    @Inject
+    ProducerTemplate producerTemplate;
+
+    @Inject
+    ConsumerTemplate consumerTemplate;
+
+    @Path("/get")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public String get() throws Exception {
+        final String message = consumerTemplate.receiveBodyNoWait("jira:newIssues?jiraUrl=" + JIRA_CREDENTIALS, String.class);
+        log.infof("Received from jira: %s", message);
+        return message;
+    }
+
+    @Path("/post")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response post(String message) throws Exception {
+
+        log.infof("Sending to jira: %s", message);
+        String response = null;
+        int statusCode = 0;
+        try {
+            response = (String) producerTemplate.requestBody("direct:start", message, String.class);
+        } catch (Exception ex) {
+
+            statusCode = ((RestClientException) ex.getCause()).getStatusCode().get();
+        }
+
+        log.infof("Got response from jira: %s", response);
+        return Response
+                .created(new URI("https://camel.apache.org/"))
+                .entity(response)
+                .status(statusCode)
+                .build();
+    }
+}
diff --git a/integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraRouteBuilder.java b/integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraRouteBuilder.java
new file mode 100644
index 0000000..e73f71f
--- /dev/null
+++ b/integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraRouteBuilder.java
@@ -0,0 +1,41 @@
+/*
+ * 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.jira.it;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jira.JiraConstants;
+
+public class JiraRouteBuilder extends RouteBuilder {
+    String TEST_JIRA_URL = "https://somerepo.atlassian.net";
+    String PROJECT = "TST";
+    String USERNAME = "someguy";
+    String PASSWORD = "my_password";
+    String JIRA_CREDENTIALS = TEST_JIRA_URL + "&username=" + USERNAME + "&password=" + PASSWORD;
+
+    @Override
+    public void configure() {
+
+        from("direct:start")
+                .setHeader(JiraConstants.ISSUE_PROJECT_KEY, constant("camel-jira"))
+                .setHeader(JiraConstants.ISSUE_TYPE_NAME, constant("Task"))
+                .setHeader(JiraConstants.ISSUE_SUMMARY, constant("Demo Bug jira"))
+                .setHeader(JiraConstants.ISSUE_PRIORITY_NAME, constant("Low"))
+                .setHeader(JiraConstants.ISSUE_ASSIGNEE, constant("Freeman"))
+                .to("jira://addIssue?jiraUrl=" + JIRA_CREDENTIALS);
+
+    }
+}
diff --git a/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraIT.java b/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraIT.java
new file mode 100644
index 0000000..93e4fbc
--- /dev/null
+++ b/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraIT.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.jira.it;
+
+import io.quarkus.test.junit.NativeImageTest;
+
+@NativeImageTest
+class JiraIT extends JiraTest {
+
+}
diff --git a/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java b/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java
new file mode 100644
index 0000000..5db5c06
--- /dev/null
+++ b/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java
@@ -0,0 +1,41 @@
+/*
+ * 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.jira.it;
+
+import java.util.UUID;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import io.restassured.http.ContentType;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+@QuarkusTest
+class JiraTest {
+
+    @Test
+    public void test() {
+        final String msg = UUID.randomUUID().toString().replace("-", "");
+        RestAssured.given() //
+                .contentType(ContentType.TEXT).body(msg).post("/jira/post")
+                .then().statusCode(404);//external jira not exist, expect to return 404
+
+        String body = RestAssured.get("/jira/get").asString();
+        Assertions.assertEquals(body, "");
+    }
+
+}
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 57b4e8c..d7ac29e 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -197,6 +197,7 @@
         <module>olingo4</module>
         <module>opentracing</module>
         <module>paho</module>
+        <module>jira</module>
         <module>pdf</module>
         <module>platform-http</module>
         <module>platform-http-engine</module>
diff --git a/pom.xml b/pom.xml
index aa66c18..5951b84 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,11 +42,13 @@
 
         <ahc.version>2.10.4</ahc.version>
         <camel.version>3.0.1</camel.version>
+        <jira.guava.version>20.0</jira.guava.version>
         <hapi.version>4.1.0</hapi.version>
         <quarkus.version>1.3.0.Alpha1</quarkus.version>
         <httpmime.version>4.1.3</httpmime.version>
         <jetty.version>9.4.18.v20190429</jetty.version>
         <xstream.version>1.4.11</xstream.version>
+        <httpclient.cache.version>4.5.5</httpclient.cache.version>
         <snakeyaml.version>1.25</snakeyaml.version>
         <xalan.version>2.7.2</xalan.version>
         <xerces.version>2.12.0</xerces.version>
diff --git a/poms/bom-deployment/pom.xml b/poms/bom-deployment/pom.xml
index 364be6a..f9b32c5 100644
--- a/poms/bom-deployment/pom.xml
+++ b/poms/bom-deployment/pom.xml
@@ -55,6 +55,11 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-jira-deployment</artifactId>
+                <version>${project.version}</version>
+            </dependency>
 
             <!-- Dependencies a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
 
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 4c50f6b..f994141 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -143,6 +143,16 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-jira</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.guava</groupId>
+                <artifactId>guava</artifactId>
+                <version>${jira.guava.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-base</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -970,7 +980,12 @@
                 <artifactId>camel-quarkus-zipfile</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
-
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-jira</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            
             <!--$ Other third party dependencies $-->
             <dependency>
                 <groupId>ca.uhn.hapi.fhir</groupId>
@@ -1058,6 +1073,11 @@
                 <artifactId>xercesImpl</artifactId>
                 <version>${xerces.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.httpcomponents</groupId>
+                <artifactId>httpclient-cache</artifactId>
+                <version>${httpclient.cache.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 


[camel-quarkus] 11/34: Ensure that catalog files are added to the native image #686 (fix findings)

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit f17423b079f0a887b8286c4794b7d59b8e730d0a
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Wed Feb 12 10:53:15 2020 +0100

    Ensure that catalog files are added to the native image #686 (fix findings)
---
 .../org/apache/camel/quarkus/core/CamelConfig.java   | 20 +++++++++-----------
 .../camel/quarkus/core/CamelRuntimeCatalog.java      |  8 ++++----
 .../java/org/apache/camel/quarkus/core/Flags.java    |  5 ++++-
 3 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java
index 4873c5e..1b2c75c 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java
@@ -39,7 +39,7 @@ public class CamelConfig {
     public ServiceConfig service;
 
     /**
-     * Build time configuration options for CamelRuntimeCatalog.
+     * Build time configuration options for {@link org.apache.camel.runtimecatalog.RuntimeCamelCatalog}.
      */
     @ConfigItem
     public RuntimeCatalogConfig runtimeCatalog;
@@ -183,16 +183,11 @@ public class CamelConfig {
     @ConfigGroup
     public static class RuntimeCatalogConfig {
         /**
-         * Enable {@link CamelRuntimeCatalog} functionaries.
-         */
-        @ConfigItem(defaultValue = "true")
-        public boolean enabled;
-
-        /**
          * Used to control the resolution of components catalog info.
          * <p>
          * Note that when building native images, this flag determine if the json metadata files related to components
-         * discovered at build time have to be included in the final binary.
+         * discovered at build time have to be included in the final binary. In JVM mode there is no real benefit of
+         * setting this flag to {@code false} if not to make the behavior consistent with native mode.
          */
         @ConfigItem(defaultValue = "true")
         public boolean components;
@@ -201,7 +196,8 @@ public class CamelConfig {
          * Used to control the resolution of languages catalog info.
          * <p>
          * Note that when building native images, this flag determine if the json metadata files related to languages
-         * discovered at build time have to be included in the final binary.
+         * discovered at build time have to be included in the final binary. In JVM mode there is no real benefit of
+         * setting this flag to {@code false} if not to make the behavior consistent with native mode.
          */
         @ConfigItem(defaultValue = "true")
         public boolean languages;
@@ -210,7 +206,8 @@ public class CamelConfig {
          * Used to control the resolution of dataformats catalog info.
          * <p>
          * Note that when building native images, this flag determine if the json metadata files related to dataformats
-         * discovered at build time have to be included in the final binary.
+         * discovered at build time have to be included in the final binary. In JVM mode there is no real benefit of
+         * setting this flag to {@code false} if not to make the behavior consistent with native mode.
          */
         @ConfigItem(defaultValue = "true")
         public boolean dataformats;
@@ -219,7 +216,8 @@ public class CamelConfig {
          * Used to control the resolution of model catalog info.
          * <p>
          * Note that when building native images, this flag determine if the json metadata files related to models
-         * has to be included in the final binary.
+         * has to be included in the final binary. In JVM mode there is no real benefit of setting this flag to
+         * {@code false} if not to make the behavior consistent with native mode.
          */
         @ConfigItem(defaultValue = "true")
         public boolean models;
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java
index 2f82322..5b56b9c 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java
@@ -30,7 +30,7 @@ public class CamelRuntimeCatalog extends DefaultRuntimeCamelCatalog {
 
     @Override
     public String modelJSonSchema(String name) {
-        if (!config.enabled || !config.models) {
+        if (!config.models) {
             return null;
         }
 
@@ -39,7 +39,7 @@ public class CamelRuntimeCatalog extends DefaultRuntimeCamelCatalog {
 
     @Override
     public String componentJSonSchema(String name) {
-        if (!config.enabled || !config.components) {
+        if (!config.components) {
             return null;
         }
 
@@ -48,7 +48,7 @@ public class CamelRuntimeCatalog extends DefaultRuntimeCamelCatalog {
 
     @Override
     public String dataFormatJSonSchema(String name) {
-        if (!config.enabled || !config.dataformats) {
+        if (!config.dataformats) {
             return null;
         }
 
@@ -57,7 +57,7 @@ public class CamelRuntimeCatalog extends DefaultRuntimeCamelCatalog {
 
     @Override
     public String languageJSonSchema(String name) {
-        if (!config.enabled || !config.languages) {
+        if (!config.languages) {
             return null;
         }
 
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/Flags.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/Flags.java
index fe94b6d..a62c51d 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/Flags.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/Flags.java
@@ -45,7 +45,10 @@ public final class Flags {
     public static final class RuntimeCatalogEnabled implements BooleanSupplier {
         @Override
         public boolean getAsBoolean() {
-            return asBoolean("quarkus.camel.runtime-catalog.enabled", true);
+            return asBoolean("quarkus.camel.runtime-catalog.components", true)
+                    || asBoolean("quarkus.camel.runtime-catalog.languages", true)
+                    || asBoolean("quarkus.camel.runtime-catalog.dataformats", true)
+                    || asBoolean("quarkus.camel.runtime-catalog.models", true);
         }
     }
 }


[camel-quarkus] 15/34: Fix #688 Create extension mojo not working after Quarkus 1.3.0.Alpha1 upgrade

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 797ac122ce29f6e5f2293c2ba94a4a81c3d7172f
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Thu Feb 13 15:01:15 2020 +0100

    Fix #688 Create extension mojo not working after Quarkus 1.3.0.Alpha1 upgrade
---
 extensions/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/extensions/pom.xml b/extensions/pom.xml
index 373a23d..289a289 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -157,7 +157,7 @@
                     <namePrefix xml:space="preserve">Camel Quarkus :: </namePrefix>
                     <nameSegmentDelimiter xml:space="preserve"> :: </nameSegmentDelimiter>
                     <javaPackageInfix>component</javaPackageInfix>
-                    <templatesUriBase>file:///${project.basedir}/../tooling/create-extension-templates</templatesUriBase>
+                    <templatesUriBase>file://../tooling/create-extension-templates</templatesUriBase>
                     <runtimeBomPath>../poms/bom/pom.xml</runtimeBomPath>
                     <deploymentBomPath>../poms/bom-deployment/pom.xml</deploymentBomPath>
                     <bomEntryVersion>@{camel-quarkus.version}</bomEntryVersion>


[camel-quarkus] 05/34: Use camel-quarkus-support-httpclient in slack extension

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit be3ff25bfb497224e8e12d42e994d783643fa59f
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed Feb 12 08:00:03 2020 +0000

    Use camel-quarkus-support-httpclient in slack extension
---
 extensions/slack/deployment/pom.xml                               | 4 ++++
 .../camel/quarkus/component/slack/deployment/SlackProcessor.java  | 8 --------
 extensions/slack/runtime/pom.xml                                  | 4 ++++
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/extensions/slack/deployment/pom.xml b/extensions/slack/deployment/pom.xml
index 2e8fe49..30851b6 100644
--- a/extensions/slack/deployment/pom.xml
+++ b/extensions/slack/deployment/pom.xml
@@ -52,6 +52,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-httpclient-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-slack</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions/slack/deployment/src/main/java/org/apache/camel/quarkus/component/slack/deployment/SlackProcessor.java b/extensions/slack/deployment/src/main/java/org/apache/camel/quarkus/component/slack/deployment/SlackProcessor.java
index 199bcdb..fbc8054 100644
--- a/extensions/slack/deployment/src/main/java/org/apache/camel/quarkus/component/slack/deployment/SlackProcessor.java
+++ b/extensions/slack/deployment/src/main/java/org/apache/camel/quarkus/component/slack/deployment/SlackProcessor.java
@@ -19,7 +19,6 @@ package org.apache.camel.quarkus.component.slack.deployment;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 
 class SlackProcessor {
 
@@ -34,11 +33,4 @@ class SlackProcessor {
     ExtensionSslNativeSupportBuildItem activateSslNativeSupport() {
         return new ExtensionSslNativeSupportBuildItem(FEATURE);
     }
-
-    @BuildStep
-    NativeImageResourceBuildItem suffixListResource() {
-        // Required by org.apache.http.conn.util.PublicSuffixMatcher
-        return new NativeImageResourceBuildItem("mozilla/public-suffix-list.txt");
-    }
-
 }
diff --git a/extensions/slack/runtime/pom.xml b/extensions/slack/runtime/pom.xml
index 79a0ae0..d794bb2 100644
--- a/extensions/slack/runtime/pom.xml
+++ b/extensions/slack/runtime/pom.xml
@@ -55,6 +55,10 @@
             <artifactId>camel-quarkus-support-commons-logging</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-httpclient</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-slack</artifactId>
             <exclusions>


[camel-quarkus] 16/34: Fix #694 quarkus-maven-plugin generate application.properties file for IT tests

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit d2f6b59c800b376f19f2de2862b1938c65f4ff2e
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Thu Feb 13 15:14:16 2020 +0100

    Fix #694 quarkus-maven-plugin generate application.properties file for IT tests
---
 .../integration-test-application.properties              | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/tooling/create-extension-templates/integration-test-application.properties b/tooling/create-extension-templates/integration-test-application.properties
new file mode 100644
index 0000000..fa7a54b
--- /dev/null
+++ b/tooling/create-extension-templates/integration-test-application.properties
@@ -0,0 +1,16 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------


[camel-quarkus] 10/34: Ensure that catalog files are added to the native image #686

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 983a62921d8eae1178225b96b78401629adc469a
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Fri Feb 7 16:14:34 2020 +0100

    Ensure that catalog files are added to the native image #686
---
 .../quarkus/core/deployment/BuildProcessor.java    |   6 +-
 .../core/deployment/NativeImageProcessor.java      |  86 ++++++++++++++++-
 .../org/apache/camel/quarkus/core/CamelConfig.java |  50 ++++++++++
 .../camel/quarkus/core/CamelMainRecorder.java      |   1 -
 .../apache/camel/quarkus/core/CamelRecorder.java   |   6 +-
 .../camel/quarkus/core/CamelRuntimeCatalog.java    |  66 +++++++++++++
 .../camel/quarkus/core/FastCamelContext.java       | 107 ++++++++++++++++++++-
 .../java/org/apache/camel/quarkus/core/Flags.java  |   7 ++
 .../apache/camel/quarkus/core/CamelServlet.java    |  23 +++++
 .../core/src/main/resources/application.properties |   5 +-
 .../org/apache/camel/quarkus/core/CamelTest.java   |   8 ++
 11 files changed, 354 insertions(+), 11 deletions(-)

diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
index 1f27ff7..2672806 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
@@ -356,7 +356,8 @@ class BuildProcessor {
                 CamelModelJAXBContextFactoryBuildItem contextFactory,
                 CamelRoutesLoaderBuildItems.Xml xmlLoader,
                 CamelFactoryFinderResolverBuildItem factoryFinderResolverBuildItem,
-                BeanContainerBuildItem beanContainer) {
+                BeanContainerBuildItem beanContainer,
+                CamelConfig config) {
 
             RuntimeValue<CamelContext> context = recorder.createContext(
                     registry.getRegistry(),
@@ -365,7 +366,8 @@ class BuildProcessor {
                     xmlLoader.getLoader(),
                     factoryFinderResolverBuildItem.getFactoryFinderResolver(),
                     beanContainer.getValue(),
-                    CamelSupport.getCamelVersion());
+                    CamelSupport.getCamelVersion(),
+                    config);
 
             return new CamelContextBuildItem(context);
         }
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java
index ee075d8..f8f1d04 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java
@@ -16,14 +16,20 @@
  */
 package org.apache.camel.quarkus.core.deployment;
 
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import io.quarkus.deployment.ApplicationArchive;
 import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.ApplicationArchivesBuildItem;
 import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveMethodBuildItem;
 import org.apache.camel.CamelContext;
@@ -33,12 +39,18 @@ import org.apache.camel.Converter;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Producer;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.impl.engine.DefaultComponentResolver;
+import org.apache.camel.impl.engine.DefaultDataFormatResolver;
+import org.apache.camel.impl.engine.DefaultLanguageResolver;
+import org.apache.camel.quarkus.core.CamelConfig;
 import org.apache.camel.quarkus.core.Flags;
+import org.apache.camel.quarkus.core.deployment.util.PathFilter;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.PropertiesComponent;
 import org.apache.camel.spi.ScheduledPollConsumerScheduler;
 import org.apache.camel.spi.StreamCachingStrategy;
+import org.apache.camel.support.CamelContextHelper;
 import org.jboss.jandex.AnnotationTarget.Kind;
 import org.jboss.jandex.AnnotationValue;
 import org.jboss.jandex.ClassInfo;
@@ -47,7 +59,11 @@ import org.jboss.jandex.IndexView;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.apache.commons.lang3.ClassUtils.getPackageName;
+
 class NativeImageProcessor {
+    private static final Logger LOGGER = LoggerFactory.getLogger(NativeImageProcessor.class);
+
     /*
      * NativeImage configuration steps related to camel core.
      */
@@ -82,7 +98,6 @@ class NativeImageProcessor {
                     .filter(CamelSupport::isPublic)
                     .forEach(v -> reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, v.name().toString())));
 
-            Logger log = LoggerFactory.getLogger(NativeImageProcessor.class);
             DotName converter = DotName.createSimple(Converter.class.getName());
             List<ClassInfo> converterClasses = view.getAnnotations(converter)
                     .stream()
@@ -94,20 +109,20 @@ class NativeImageProcessor {
                         // CoreStaticTypeConverterLoader
                         // need to revisit with Camel 3.0.0-M3 which should improve this area
                         if (ai.target().asClass().name().toString().startsWith("org.apache.camel.converter.")) {
-                            log.debug("Ignoring core " + ai + " " + ai.target().asClass().name());
+                            LOGGER.debug("Ignoring core " + ai + " " + ai.target().asClass().name());
                             return false;
                         } else if (isLoader) {
-                            log.debug("Ignoring " + ai + " " + ai.target().asClass().name());
+                            LOGGER.debug("Ignoring " + ai + " " + ai.target().asClass().name());
                             return false;
                         } else {
-                            log.debug("Accepting " + ai + " " + ai.target().asClass().name());
+                            LOGGER.debug("Accepting " + ai + " " + ai.target().asClass().name());
                             return true;
                         }
                     })
                     .map(ai -> ai.target().asClass())
                     .collect(Collectors.toList());
 
-            log.debug("Converter classes: " + converterClasses);
+            LOGGER.debug("Converter classes: " + converterClasses);
             converterClasses
                     .forEach(ci -> reflectiveClass.produce(new ReflectiveClassBuildItem(false, false, ci.name().toString())));
 
@@ -132,6 +147,67 @@ class NativeImageProcessor {
 
         }
 
+        /*
+         * Add camel catalog files to the native image.
+         */
+        @BuildStep(onlyIf = Flags.RuntimeCatalogEnabled.class)
+        List<NativeImageResourceBuildItem> camelRuntimeCatalog(
+                CamelConfig config,
+                ApplicationArchivesBuildItem archives,
+                List<CamelServicePatternBuildItem> servicePatterns) {
+
+            List<NativeImageResourceBuildItem> resources = new ArrayList<>();
+
+            final PathFilter pathFilter = servicePatterns.stream()
+                    .collect(
+                            PathFilter.Builder::new,
+                            (builder, patterns) -> builder.patterns(patterns.isInclude(), patterns.getPatterns()),
+                            PathFilter.Builder::combine)
+                    .build();
+
+            CamelSupport.services(archives, pathFilter)
+                    .filter(service -> service.name != null && service.type != null && service.path != null)
+                    .forEach(service -> {
+
+                        String packageName = getPackageName(service.type);
+                        String jsonPath = String.format("%s/%s.json", packageName.replace('.', '/'), service.name);
+
+                        if (config.runtimeCatalog.components
+                                && service.path.startsWith(DefaultComponentResolver.RESOURCE_PATH)) {
+                            resources.add(new NativeImageResourceBuildItem(jsonPath));
+                        }
+                        if (config.runtimeCatalog.dataformats
+                                && service.path.startsWith(DefaultDataFormatResolver.DATAFORMAT_RESOURCE_PATH)) {
+                            resources.add(new NativeImageResourceBuildItem(jsonPath));
+                        }
+                        if (config.runtimeCatalog.languages
+                                && service.path.startsWith(DefaultLanguageResolver.LANGUAGE_RESOURCE_PATH)) {
+                            resources.add(new NativeImageResourceBuildItem(jsonPath));
+                        }
+                    });
+
+            if (config.runtimeCatalog.models) {
+                for (ApplicationArchive archive : archives.getAllApplicationArchives()) {
+                    final Path root = archive.getArchiveRoot();
+                    final Path resourcePath = root.resolve(CamelContextHelper.MODEL_DOCUMENTATION_PREFIX);
+
+                    if (!Files.isDirectory(resourcePath)) {
+                        continue;
+                    }
+
+                    List<String> items = CamelSupport.safeWalk(resourcePath)
+                            .filter(Files::isRegularFile)
+                            .map(root::relativize)
+                            .map(Path::toString)
+                            .collect(Collectors.toList());
+
+                    LOGGER.debug("Register catalog json: {}", items);
+                    resources.add(new NativeImageResourceBuildItem(items));
+                }
+            }
+
+            return resources;
+        }
     }
 
     /*
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java
index b564d8f..4873c5e 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java
@@ -38,6 +38,12 @@ public class CamelConfig {
     @ConfigItem
     public ServiceConfig service;
 
+    /**
+     * Build time configuration options for CamelRuntimeCatalog.
+     */
+    @ConfigItem
+    public RuntimeCatalogConfig runtimeCatalog;
+
     @ConfigGroup
     public static class MainConfig {
         /**
@@ -174,4 +180,48 @@ public class CamelConfig {
         public Optional<List<String>> includePatterns;
     }
 
+    @ConfigGroup
+    public static class RuntimeCatalogConfig {
+        /**
+         * Enable {@link CamelRuntimeCatalog} functionaries.
+         */
+        @ConfigItem(defaultValue = "true")
+        public boolean enabled;
+
+        /**
+         * Used to control the resolution of components catalog info.
+         * <p>
+         * Note that when building native images, this flag determine if the json metadata files related to components
+         * discovered at build time have to be included in the final binary.
+         */
+        @ConfigItem(defaultValue = "true")
+        public boolean components;
+
+        /**
+         * Used to control the resolution of languages catalog info.
+         * <p>
+         * Note that when building native images, this flag determine if the json metadata files related to languages
+         * discovered at build time have to be included in the final binary.
+         */
+        @ConfigItem(defaultValue = "true")
+        public boolean languages;
+
+        /**
+         * Used to control the resolution of dataformats catalog info.
+         * <p>
+         * Note that when building native images, this flag determine if the json metadata files related to dataformats
+         * discovered at build time have to be included in the final binary.
+         */
+        @ConfigItem(defaultValue = "true")
+        public boolean dataformats;
+
+        /**
+         * Used to control the resolution of model catalog info.
+         * <p>
+         * Note that when building native images, this flag determine if the json metadata files related to models
+         * has to be included in the final binary.
+         */
+        @ConfigItem(defaultValue = "true")
+        public boolean models;
+    }
 }
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
index 118d7a0..f023163 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
@@ -37,7 +37,6 @@ public class CamelMainRecorder {
             RuntimeValue<CamelContext> runtime,
             RuntimeValue<RoutesCollector> routesCollector,
             BeanContainer container) {
-
         CamelMain main = new CamelMain();
         main.setRoutesCollector(routesCollector.getValue());
         main.setCamelContext(runtime.getValue());
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
index 2dbf2ef..db05027 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
@@ -25,6 +25,7 @@ import org.apache.camel.model.validator.PredicateValidatorDefinition;
 import org.apache.camel.quarkus.core.FastFactoryFinderResolver.Builder;
 import org.apache.camel.reifier.ProcessorReifier;
 import org.apache.camel.reifier.validator.ValidatorReifier;
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.FactoryFinderResolver;
 import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.Registry;
@@ -62,8 +63,11 @@ public class CamelRecorder {
             RuntimeValue<XmlRoutesLoader> xmlLoader,
             RuntimeValue<FactoryFinderResolver> factoryFinderResolver,
             BeanContainer beanContainer,
-            String version) {
+            String version,
+            CamelConfig config) {
+
         FastCamelContext context = new FastCamelContext(factoryFinderResolver.getValue(), version);
+        context.setDefaultExtension(RuntimeCamelCatalog.class, () -> new CamelRuntimeCatalog(context, config.runtimeCatalog));
         context.setRegistry(registry.getValue());
         context.setTypeConverterRegistry(typeConverterRegistry.getValue());
         context.setLoadTypeConverters(false);
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java
new file mode 100644
index 0000000..2f82322
--- /dev/null
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java
@@ -0,0 +1,66 @@
+/*
+ * 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.core;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.runtimecatalog.impl.DefaultRuntimeCamelCatalog;
+
+public class CamelRuntimeCatalog extends DefaultRuntimeCamelCatalog {
+    private final CamelConfig.RuntimeCatalogConfig config;
+
+    public CamelRuntimeCatalog(CamelContext camelContext, CamelConfig.RuntimeCatalogConfig config) {
+        super(camelContext, true);
+
+        this.config = config;
+    }
+
+    @Override
+    public String modelJSonSchema(String name) {
+        if (!config.enabled || !config.models) {
+            return null;
+        }
+
+        return super.modelJSonSchema(name);
+    }
+
+    @Override
+    public String componentJSonSchema(String name) {
+        if (!config.enabled || !config.components) {
+            return null;
+        }
+
+        return super.componentJSonSchema(name);
+    }
+
+    @Override
+    public String dataFormatJSonSchema(String name) {
+        if (!config.enabled || !config.dataformats) {
+            return null;
+        }
+
+        return super.dataFormatJSonSchema(name);
+    }
+
+    @Override
+    public String languageJSonSchema(String name) {
+        if (!config.enabled || !config.languages) {
+            return null;
+        }
+
+        return super.languageJSonSchema(name);
+    }
+}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index 24d6a94..1a2640b 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -16,11 +16,14 @@
  */
 package org.apache.camel.quarkus.core;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.Collection;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
 
 import org.apache.camel.AsyncProcessor;
+import org.apache.camel.CatalogCamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
 import org.apache.camel.PollingConsumer;
@@ -39,6 +42,7 @@ import org.apache.camel.impl.engine.DefaultBeanIntrospection;
 import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
 import org.apache.camel.impl.engine.DefaultCamelContextNameStrategy;
 import org.apache.camel.impl.engine.DefaultClassResolver;
+import org.apache.camel.impl.engine.DefaultComponentResolver;
 import org.apache.camel.impl.engine.DefaultDataFormatResolver;
 import org.apache.camel.impl.engine.DefaultEndpointRegistry;
 import org.apache.camel.impl.engine.DefaultInflightRepository;
@@ -74,6 +78,7 @@ import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.CamelContextNameStrategy;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.ComponentResolver;
+import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.EndpointRegistry;
 import org.apache.camel.spi.ExecutorServiceManager;
@@ -81,6 +86,7 @@ import org.apache.camel.spi.FactoryFinderResolver;
 import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.Injector;
+import org.apache.camel.spi.Language;
 import org.apache.camel.spi.LanguageResolver;
 import org.apache.camel.spi.ManagementNameStrategy;
 import org.apache.camel.spi.MessageHistoryFactory;
@@ -102,14 +108,18 @@ import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.spi.UnitOfWorkFactory;
 import org.apache.camel.spi.UuidGenerator;
 import org.apache.camel.spi.ValidatorRegistry;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.util.IOHelper;
 
-public class FastCamelContext extends AbstractCamelContext {
+public class FastCamelContext extends AbstractCamelContext implements CatalogCamelContext {
     private Model model;
     private final String version;
 
     public FastCamelContext(FactoryFinderResolver factoryFinderResolver, String version) {
         super(false);
+
         this.version = version;
+
         setFactoryFinderResolver(factoryFinderResolver);
         setTracing(Boolean.FALSE);
         setDebugging(Boolean.FALSE);
@@ -390,4 +400,99 @@ public class FastCamelContext extends AbstractCamelContext {
         forceLazyInitialization();
     }
 
+    @Override
+    public String getComponentParameterJsonSchema(String componentName) throws IOException {
+        Class<?> clazz;
+
+        Object instance = getRegistry().lookupByNameAndType(componentName, Component.class);
+        if (instance != null) {
+            clazz = instance.getClass();
+        } else {
+            clazz = getFactoryFinder(DefaultComponentResolver.RESOURCE_PATH).findClass(componentName).orElse(null);
+            if (clazz == null) {
+                instance = hasComponent(componentName);
+                if (instance != null) {
+                    clazz = instance.getClass();
+                } else {
+                    return null;
+                }
+            }
+        }
+
+        // special for ActiveMQ as it is really just JMS
+        if ("ActiveMQComponent".equals(clazz.getSimpleName())) {
+            return getComponentParameterJsonSchema("jms");
+        } else {
+            return getJsonSchema(clazz.getPackage().getName(), componentName);
+        }
+    }
+
+    @Override
+    public String getDataFormatParameterJsonSchema(String dataFormatName) throws IOException {
+        Class<?> clazz;
+
+        Object instance = getRegistry().lookupByNameAndType(dataFormatName, DataFormat.class);
+        if (instance != null) {
+            clazz = instance.getClass();
+        } else {
+            clazz = getFactoryFinder(DefaultDataFormatResolver.DATAFORMAT_RESOURCE_PATH).findClass(dataFormatName).orElse(null);
+            if (clazz == null) {
+                return null;
+            }
+        }
+
+        return getJsonSchema(clazz.getPackage().getName(), dataFormatName);
+    }
+
+    @Override
+    public String getLanguageParameterJsonSchema(String languageName) throws IOException {
+        Class<?> clazz;
+
+        Object instance = getRegistry().lookupByNameAndType(languageName, Language.class);
+        if (instance != null) {
+            clazz = instance.getClass();
+        } else {
+            clazz = getFactoryFinder(DefaultLanguageResolver.LANGUAGE_RESOURCE_PATH).findClass(languageName).orElse(null);
+            if (clazz == null) {
+                return null;
+            }
+        }
+
+        return getJsonSchema(clazz.getPackage().getName(), languageName);
+    }
+
+    @Override
+    public String getEipParameterJsonSchema(String eipName) throws IOException {
+        // the eip json schema may be in some of the sub-packages so look until
+        // we find it
+        String[] subPackages = new String[] { "", "/config", "/dataformat", "/language", "/loadbalancer", "/rest" };
+        for (String sub : subPackages) {
+            String path = CamelContextHelper.MODEL_DOCUMENTATION_PREFIX + sub + "/" + eipName + ".json";
+            InputStream inputStream = getClassResolver().loadResourceAsStream(path);
+            if (inputStream != null) {
+                try {
+                    return IOHelper.loadText(inputStream);
+                } finally {
+                    IOHelper.close(inputStream);
+                }
+            }
+        }
+        return null;
+    }
+
+    private String getJsonSchema(String packageName, String name) throws IOException {
+        String path = packageName.replace('.', '/') + "/" + name + ".json";
+        InputStream inputStream = getClassResolver().loadResourceAsStream(path);
+
+        if (inputStream != null) {
+            try {
+                log.debug("loading scheme {} ", path);
+                return IOHelper.loadText(inputStream);
+            } finally {
+                IOHelper.close(inputStream);
+            }
+        }
+
+        return null;
+    }
 }
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/Flags.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/Flags.java
index cdbcbe4..fe94b6d 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/Flags.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/Flags.java
@@ -41,4 +41,11 @@ public final class Flags {
             return asBoolean("quarkus.camel.main.routes-discovery.enabled", true);
         }
     }
+
+    public static final class RuntimeCatalogEnabled implements BooleanSupplier {
+        @Override
+        public boolean getAsBoolean() {
+            return asBoolean("quarkus.camel.runtime-catalog.enabled", true);
+        }
+    }
 }
diff --git a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
index 9aa932d..d83da39 100644
--- a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
+++ b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.quarkus.core;
 
+import java.io.IOException;
+
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
 import javax.json.Json;
@@ -29,6 +31,7 @@ import javax.ws.rs.core.MediaType;
 import org.apache.camel.CamelContext;
 import org.apache.camel.NoSuchLanguageException;
 import org.apache.camel.component.log.LogComponent;
+import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.support.processor.DefaultExchangeFormatter;
 
@@ -95,4 +98,24 @@ public class CamelServlet {
 
         return true;
     }
+
+    @Path("/catalog/{type}/{name}")
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public String catalog(@PathParam("type") String type, @PathParam("name") String name) throws IOException {
+        final RuntimeCamelCatalog catalog = context.getExtension(RuntimeCamelCatalog.class);
+
+        switch (type) {
+        case "component":
+            return catalog.componentJSonSchema(name);
+        case "language":
+            return catalog.languageJSonSchema(name);
+        case "dataformat":
+            return catalog.dataFormatJSonSchema(name);
+        case "model":
+            return catalog.modelJSonSchema(name);
+        default:
+            throw new IllegalArgumentException("Unknown type " + type);
+        }
+    }
 }
diff --git a/integration-tests/core/src/main/resources/application.properties b/integration-tests/core/src/main/resources/application.properties
index 4ea45a6..ebdc415 100644
--- a/integration-tests/core/src/main/resources/application.properties
+++ b/integration-tests/core/src/main/resources/application.properties
@@ -18,11 +18,14 @@
 # Quarkus
 #
 quarkus.log.file.enable = false
+quarkus.log.category."org.apache.camel.quarkus.core".level = DEBUG
 
 #
 # Quarkus :: Camel
 #
-quarkus.camel.main.enabled=false
+quarkus.camel.main.enabled = false
+quarkus.camel.runtime-catalog.enabled = true
+quarkus.camel.runtime-catalog.languages = false
 
 #
 # Camel
diff --git a/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java b/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
index a46c52c..d665f65 100644
--- a/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
+++ b/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.quarkus.core;
 
+import java.io.IOException;
 import java.net.HttpURLConnection;
 
 import io.quarkus.test.junit.QuarkusTest;
@@ -23,6 +24,7 @@ import io.restassured.RestAssured;
 import io.restassured.response.Response;
 import org.junit.jupiter.api.Test;
 
+import static org.hamcrest.Matchers.emptyOrNullString;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.core.IsNot.not;
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -56,4 +58,10 @@ public class CamelTest {
         RestAssured.when().get("/test/language/simple").then().body(is("true"));
         RestAssured.when().get("/test/language/undefined").then().body(is("false"));
     }
+
+    @Test
+    public void testCatalogComponent() throws IOException {
+        RestAssured.when().get("/test/catalog/component/timer").then().body(not(emptyOrNullString()));
+        RestAssured.when().get("/test/catalog/language/simple").then().body(emptyOrNullString());
+    }
 }


[camel-quarkus] 07/34: Fix #696 Test HTTPS with the HTTP clients

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit e8e5dc4732d1a7057df5b4585942550bb72f8454
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Feb 11 07:52:52 2020 +0100

    Fix #696 Test HTTPS with the HTTP clients
---
 .../quarkus/component/http/it/HttpResource.java    | 30 +++++++++++
 .../camel/quarkus/component/http/it/HttpTest.java  | 29 +++++++++++
 .../camel/quarkus/test/TrustStoreResource.java     | 58 ++++++++++++++++++++++
 3 files changed, 117 insertions(+)

diff --git a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java
index 871fc1a..732a8e1 100644
--- a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java
+++ b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpResource.java
@@ -55,6 +55,16 @@ public class HttpResource {
                 .request(String.class);
     }
 
+    @Path("/ahc/get-https")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public String getHttps() {
+        return producerTemplate
+                .to("ahc:https://restcountries.eu/rest/v2/alpha/cz?bridgeEndpoint=true")
+                .withHeader(Exchange.HTTP_METHOD, "GET")
+                .request(String.class);
+    }
+
     @Path("/ahc/post")
     @POST
     @Consumes(MediaType.TEXT_PLAIN)
@@ -102,6 +112,16 @@ public class HttpResource {
                 .request(String.class);
     }
 
+    @Path("/http/get-https")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public String httpGetHttps() {
+        return producerTemplate
+                .to("https://restcountries.eu/rest/v2/alpha/cz?bridgeEndpoint=true")
+                .withHeader(Exchange.HTTP_METHOD, "GET")
+                .request(String.class);
+    }
+
     @Path("/http/post")
     @POST
     @Consumes(MediaType.TEXT_PLAIN)
@@ -131,6 +151,16 @@ public class HttpResource {
                 .request(String.class);
     }
 
+    @Path("/netty-http/get-https")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public String nettyHttpGetHttps() {
+        return producerTemplate
+                .to("netty-http:https://restcountries.eu/rest/v2/alpha/cz")
+                .withHeader(Exchange.HTTP_METHOD, "GET")
+                .request(String.class);
+    }
+
     @Path("/netty-http/post")
     @POST
     @Consumes(MediaType.TEXT_PLAIN)
diff --git a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
index 8423014..ab048c3 100644
--- a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
+++ b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
@@ -19,14 +19,17 @@ package org.apache.camel.quarkus.component.http.it;
 import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
+import org.apache.camel.quarkus.test.TrustStoreResource;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 
+import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.is;
 
 @QuarkusTest
 @QuarkusTestResource(HttpTestResource.class)
+@QuarkusTestResource(TrustStoreResource.class)
 class HttpTest {
     @ParameterizedTest
     @ValueSource(strings = { "ahc", "http", "netty-http" })
@@ -49,6 +52,32 @@ class HttpTest {
                 .body(is("MESSAGE"));
     }
 
+    @ParameterizedTest
+    @ValueSource(strings = { "ahc",
+            "http" /*, "netty-http" disabled because of https://github.com/apache/camel-quarkus/issues/695 */ })
+    public void httpsProducer(String component) {
+        RestAssured
+                .given()
+                .when()
+                .get("/test/client/{component}/get-https", component)
+                .then()
+                .body(containsString("Czech Republic"));
+    }
+
+    @Test
+    public void restcountries() throws Exception {
+        RestAssured
+                .given()
+                .baseUri("https://restcountries.eu")
+                .port(443)
+                .when()
+                .accept("application/json")
+                .get("/rest/v2/alpha/cz")
+                .then()
+                .statusCode(200)
+                .body(containsString("Czech Republic"));
+    }
+
     @Test
     public void basicNettyHttpServer() throws Exception {
         final int port = Integer.getInteger("camel.netty-http.test-port");
diff --git a/integration-tests/support/test-support/src/main/java/org/apache/camel/quarkus/test/TrustStoreResource.java b/integration-tests/support/test-support/src/main/java/org/apache/camel/quarkus/test/TrustStoreResource.java
new file mode 100644
index 0000000..32c48c2
--- /dev/null
+++ b/integration-tests/support/test-support/src/main/java/org/apache/camel/quarkus/test/TrustStoreResource.java
@@ -0,0 +1,58 @@
+/*
+ * 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.test;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Collections;
+import java.util.Map;
+
+import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
+
+/**
+ * Native images built using a docker container end up with {@code javax.net.ssl.trustStore} system property
+ * pointing to a non-existing file; see https://quarkus.io/guides/native-and-ssl For that case, we have to set
+ * {@code javax.net.ssl.trustStore} to an existing path explicitly.
+ */
+public class TrustStoreResource implements QuarkusTestResourceLifecycleManager {
+
+    @Override
+    public Map<String, String> start() {
+        final String graalVmHome = System.getenv("GRAALVM_HOME");
+        final String javaHome = System.getenv("JAVA_HOME");
+        Path trustStorePath = null;
+        final String CACERTS_REL_PATH = "jre/lib/security/cacerts";
+        if (graalVmHome != null && !graalVmHome.isEmpty()
+                && Files.exists(trustStorePath = Paths.get(graalVmHome).resolve(CACERTS_REL_PATH))) {
+        } else if (javaHome != null && !javaHome.isEmpty()
+                && Files.exists(trustStorePath = Paths.get(javaHome).resolve(CACERTS_REL_PATH))) {
+        } else {
+            throw new IllegalStateException(
+                    "Could not find any existing file to set javax.net.ssl.trustStore; tried $GRAALVM_HOME/" + CACERTS_REL_PATH
+                            + " and $JAVA_HOME/" + CACERTS_REL_PATH
+                            + ". You may need to set GRAALVM_HOME or JAVA_HOME properly. Found $GRAALVM_HOME = " + graalVmHome
+                            + " and $JAVA_HOME = " + graalVmHome);
+        }
+        return Collections.singletonMap("javax.net.ssl.trustStore", trustStorePath.toString());
+    }
+
+    @Override
+    public void stop() {
+    }
+
+}


[camel-quarkus] 29/34: Upgarde to Camel 3.1.0 - WIP (simplified RuntimeCamelCatalog)

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 15da541a23c307e38b8bfa061d84da863986e8ab
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Thu Feb 13 16:10:05 2020 +0100

    Upgarde to Camel 3.1.0 - WIP (simplified RuntimeCamelCatalog)
---
 .../src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java | 4 ++--
 .../java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java    | 7 ++-----
 .../main/java/org/apache/camel/quarkus/core/FastCamelContext.java  | 2 +-
 .../src/main/java/org/apache/camel/quarkus/core/CamelServlet.java  | 4 ++--
 4 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
index e37ca47..35e5688 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
@@ -20,12 +20,12 @@ import io.quarkus.arc.runtime.BeanContainer;
 import io.quarkus.runtime.RuntimeValue;
 import io.quarkus.runtime.annotations.Recorder;
 import org.apache.camel.CamelContext;
+import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.model.ValidateDefinition;
 import org.apache.camel.model.validator.PredicateValidatorDefinition;
 import org.apache.camel.quarkus.core.FastFactoryFinderResolver.Builder;
 import org.apache.camel.reifier.ProcessorReifier;
 import org.apache.camel.reifier.validator.ValidatorReifier;
-import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.FactoryFinderResolver;
 import org.apache.camel.spi.ModelJAXBContextFactory;
 import org.apache.camel.spi.ModelToXMLDumper;
@@ -75,7 +75,7 @@ public class CamelRecorder {
                 xmlLoader.getValue(),
                 xmlModelDumper.getValue());
 
-        context.setDefaultExtension(RuntimeCamelCatalog.class, () -> new CamelRuntimeCatalog(context, config.runtimeCatalog));
+        context.setDefaultExtension(RuntimeCamelCatalog.class, () -> new CamelRuntimeCatalog(config.runtimeCatalog));
         context.setRegistry(registry.getValue());
         context.setTypeConverterRegistry(typeConverterRegistry.getValue());
         context.setLoadTypeConverters(false);
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java
index 5b56b9c..98474b3 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRuntimeCatalog.java
@@ -16,15 +16,12 @@
  */
 package org.apache.camel.quarkus.core;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.runtimecatalog.impl.DefaultRuntimeCamelCatalog;
+import org.apache.camel.catalog.impl.DefaultRuntimeCamelCatalog;
 
 public class CamelRuntimeCatalog extends DefaultRuntimeCamelCatalog {
     private final CamelConfig.RuntimeCatalogConfig config;
 
-    public CamelRuntimeCatalog(CamelContext camelContext, CamelConfig.RuntimeCatalogConfig config) {
-        super(camelContext, true);
-
+    public CamelRuntimeCatalog(CamelConfig.RuntimeCatalogConfig config) {
         this.config = config;
     }
 
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index 35ebb10..da27c25 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -76,8 +76,8 @@ import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.CamelContextNameStrategy;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.ComponentResolver;
-import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.ConfigurerResolver;
+import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.EndpointRegistry;
 import org.apache.camel.spi.ExecutorServiceManager;
diff --git a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
index d83da39..773d87e 100644
--- a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
+++ b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
@@ -30,8 +30,8 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.NoSuchLanguageException;
+import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.component.log.LogComponent;
-import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.support.processor.DefaultExchangeFormatter;
 
@@ -103,7 +103,7 @@ public class CamelServlet {
     @GET
     @Produces(MediaType.APPLICATION_JSON)
     public String catalog(@PathParam("type") String type, @PathParam("name") String name) throws IOException {
-        final RuntimeCamelCatalog catalog = context.getExtension(RuntimeCamelCatalog.class);
+        final CamelRuntimeCatalog catalog = (CamelRuntimeCatalog) context.getExtension(RuntimeCamelCatalog.class);
 
         switch (type) {
         case "component":


[camel-quarkus] 08/34: Re-use the cached local Maven repo even in build-alternative-jvm job

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit d5e5ba5a3a490313aa5486871663f067fd945c3e
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Feb 12 13:45:29 2020 +0100

    Re-use the cached local Maven repo even in build-alternative-jvm job
---
 .github/workflows/pr-build.yaml | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml
index 3e4843a..4a29823 100644
--- a/.github/workflows/pr-build.yaml
+++ b/.github/workflows/pr-build.yaml
@@ -55,6 +55,7 @@ jobs:
             maven-${{ github.sha }}
   build-alternative-jvm:
     runs-on: ubuntu-latest
+    needs: build
     strategy:
       matrix:
         java: [ '11' , '12' ]
@@ -68,6 +69,13 @@ jobs:
         uses: actions/setup-java@v1
         with:
           java-version: ${{ matrix.java }}
+      - name: Restore Cache
+        uses: actions/cache@v1
+        with:
+          path: ~/.m2/repository
+          key: maven-${{ github.sha }}
+          restore-keys: |
+            maven-${{ github.sha }}
       - name: Build on ${{ matrix.java }}
         run: |
           ./mvnw -V -B ${BRANCH_OPTIONS} \


[camel-quarkus] 12/34: Set -Dmaven.wagon.http.retryHandler.requestSentEnabled=true

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 35ad157e15362a24a69466f6e516138c7a9381f0
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Feb 12 17:46:24 2020 +0100

    Set -Dmaven.wagon.http.retryHandler.requestSentEnabled=true
    
    This is to enable retries even on dependency downloads where the request
    was sent successfully
---
 .mvn/maven.config | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.mvn/maven.config b/.mvn/maven.config
new file mode 100644
index 0000000..3b3d7bc
--- /dev/null
+++ b/.mvn/maven.config
@@ -0,0 +1 @@
+-Dmaven.wagon.http.retryHandler.requestSentEnabled=true


[camel-quarkus] 19/34: Fix incompatibilities between Quarkus and Camel MongoDB dependencies

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 0bbb279a050ea13c80b549984ef9145ecb1ae4bc
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Jan 23 15:11:07 2020 +0000

    Fix incompatibilities between Quarkus and Camel MongoDB dependencies
    
    fixes #544, #649
---
 .../mongodb/deployment/MongoDbProcessor.java       |  11 +-
 extensions/mongodb/runtime/pom.xml                 |   4 +-
 .../component/mongodb/CamelMongoClient.java        | 124 ---------------------
 .../mongodb/CamelMongoClientRecorder.java          |  29 -----
 .../graal/SubstituteMongoClientOptions.java        |  43 -------
 .../component/mongodb/it/MongoDbResource.java      |  10 --
 .../component/mongodb/it/MongoDbTestResource.java  |   4 +-
 pom.xml                                            |   8 ++
 poms/bom/pom.xml                                   |  25 +++++
 9 files changed, 39 insertions(+), 219 deletions(-)

diff --git a/extensions/mongodb/deployment/src/main/java/org/apache/camel/quarkus/component/mongodb/deployment/MongoDbProcessor.java b/extensions/mongodb/deployment/src/main/java/org/apache/camel/quarkus/component/mongodb/deployment/MongoDbProcessor.java
index f14c0c9..8f5a378 100644
--- a/extensions/mongodb/deployment/src/main/java/org/apache/camel/quarkus/component/mongodb/deployment/MongoDbProcessor.java
+++ b/extensions/mongodb/deployment/src/main/java/org/apache/camel/quarkus/component/mongodb/deployment/MongoDbProcessor.java
@@ -18,11 +18,8 @@ package org.apache.camel.quarkus.component.mongodb.deployment;
 
 import com.mongodb.MongoClient;
 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.mongodb.deployment.MongoClientBuildItem;
-import org.apache.camel.quarkus.component.mongodb.CamelMongoClientRecorder;
 import org.apache.camel.quarkus.core.deployment.CamelRuntimeBeanBuildItem;
 
 class MongoDbProcessor {
@@ -35,11 +32,7 @@ class MongoDbProcessor {
     }
 
     @BuildStep
-    @Record(ExecutionTime.RUNTIME_INIT)
-    CamelRuntimeBeanBuildItem registerCamelMongoClientProducer(MongoClientBuildItem mongoClientBuildItem,
-            CamelMongoClientRecorder recorder) {
-
-        return new CamelRuntimeBeanBuildItem("camelMongoClient", MongoClient.class.getName(),
-                recorder.createCamelMongoClient(mongoClientBuildItem.getClient()));
+    CamelRuntimeBeanBuildItem registerCamelMongoClientProducer(MongoClientBuildItem mongoClientBuildItem) {
+        return new CamelRuntimeBeanBuildItem("camelMongoClient", MongoClient.class.getName(), mongoClientBuildItem.getClient());
     }
 }
diff --git a/extensions/mongodb/runtime/pom.xml b/extensions/mongodb/runtime/pom.xml
index 8cf892f..2517e80 100644
--- a/extensions/mongodb/runtime/pom.xml
+++ b/extensions/mongodb/runtime/pom.xml
@@ -63,8 +63,8 @@
             <artifactId>mongodb-driver-legacy</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.graalvm.nativeimage</groupId>
-            <artifactId>svm</artifactId>
+            <groupId>org.mongodb</groupId>
+            <artifactId>mongodb-crypt</artifactId>
         </dependency>
     </dependencies>
 
diff --git a/extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/CamelMongoClient.java b/extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/CamelMongoClient.java
deleted file mode 100644
index a2f515f..0000000
--- a/extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/CamelMongoClient.java
+++ /dev/null
@@ -1,124 +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.mongodb;
-
-import java.util.List;
-
-import com.mongodb.ClientSessionOptions;
-import com.mongodb.client.ChangeStreamIterable;
-import com.mongodb.client.ClientSession;
-import com.mongodb.client.ListDatabasesIterable;
-import com.mongodb.client.MongoClient;
-import com.mongodb.client.MongoDatabase;
-import com.mongodb.client.MongoIterable;
-import org.bson.Document;
-import org.bson.conversions.Bson;
-
-/**
- * Bridges Mongo client types {@link com.mongodb.MongoClient} and {@link com.mongodb.client.MongoClient} used by the
- * Quarkus Mongo extension and the Camel MongoDB component, so that it can be looked up and used via the
- * connectionBean URI endpoint path parameter
- */
-public final class CamelMongoClient extends com.mongodb.MongoClient {
-
-    private final MongoClient delegate;
-
-    public CamelMongoClient(MongoClient delegate) {
-        this.delegate = delegate;
-    }
-
-    @Override
-    public MongoDatabase getDatabase(String databaseName) {
-        return delegate.getDatabase(databaseName);
-    }
-
-    @Override
-    public ClientSession startSession() {
-        return delegate.startSession();
-    }
-
-    @Override
-    public ClientSession startSession(ClientSessionOptions options) {
-        return delegate.startSession(options);
-    }
-
-    @Override
-    public void close() {
-        delegate.close();
-    }
-
-    @Override
-    public MongoIterable<String> listDatabaseNames() {
-        return delegate.listDatabaseNames();
-    }
-
-    @Override
-    public ListDatabasesIterable<Document> listDatabases(ClientSession clientSession) {
-        return delegate.listDatabases(clientSession);
-    }
-
-    @Override
-    public <T> ListDatabasesIterable<T> listDatabases(ClientSession clientSession, Class<T> clazz) {
-        return delegate.listDatabases(clientSession, clazz);
-    }
-
-    @Override
-    public <T> ListDatabasesIterable<T> listDatabases(Class<T> clazz) {
-        return delegate.listDatabases(clazz);
-    }
-
-    @Override
-    public ChangeStreamIterable<Document> watch() {
-        return delegate.watch();
-    }
-
-    @Override
-    public ChangeStreamIterable<Document> watch(List<? extends Bson> pipeline) {
-        return delegate.watch(pipeline);
-    }
-
-    @Override
-    public ChangeStreamIterable<Document> watch(ClientSession clientSession) {
-        return delegate.watch(clientSession);
-    }
-
-    @Override
-    public ChangeStreamIterable<Document> watch(ClientSession clientSession, List<? extends Bson> pipeline) {
-        return delegate.watch(clientSession, pipeline);
-    }
-
-    @Override
-    public <TResult> ChangeStreamIterable<TResult> watch(Class<TResult> resultClass) {
-        return delegate.watch(resultClass);
-    }
-
-    @Override
-    public <TResult> ChangeStreamIterable<TResult> watch(List<? extends Bson> pipeline, Class<TResult> resultClass) {
-        return delegate.watch(pipeline, resultClass);
-    }
-
-    @Override
-    public <TResult> ChangeStreamIterable<TResult> watch(ClientSession clientSession, Class<TResult> resultClass) {
-        return delegate.watch(clientSession, resultClass);
-    }
-
-    @Override
-    public <TResult> ChangeStreamIterable<TResult> watch(ClientSession clientSession, List<? extends Bson> pipeline,
-            Class<TResult> resultClass) {
-        return delegate.watch(clientSession, pipeline, resultClass);
-    }
-}
diff --git a/extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/CamelMongoClientRecorder.java b/extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/CamelMongoClientRecorder.java
deleted file mode 100644
index 371f72a..0000000
--- a/extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/CamelMongoClientRecorder.java
+++ /dev/null
@@ -1,29 +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.mongodb;
-
-import com.mongodb.client.MongoClient;
-import io.quarkus.runtime.RuntimeValue;
-import io.quarkus.runtime.annotations.Recorder;
-
-@Recorder
-public class CamelMongoClientRecorder {
-
-    public RuntimeValue<CamelMongoClient> createCamelMongoClient(RuntimeValue<MongoClient> client) {
-        return new RuntimeValue<>(new CamelMongoClient(client.getValue()));
-    }
-}
diff --git a/extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/graal/SubstituteMongoClientOptions.java b/extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/graal/SubstituteMongoClientOptions.java
deleted file mode 100644
index fbbc855..0000000
--- a/extensions/mongodb/runtime/src/main/java/org/apache/camel/quarkus/component/mongodb/graal/SubstituteMongoClientOptions.java
+++ /dev/null
@@ -1,43 +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.mongodb.graal;
-
-import javax.net.SocketFactory;
-
-import com.mongodb.MongoClientOptions;
-import com.oracle.svm.core.annotate.Alias;
-import com.oracle.svm.core.annotate.Substitute;
-import com.oracle.svm.core.annotate.TargetClass;
-
-@TargetClass(MongoClientOptions.class)
-final class SubstituteMongoClientOptions {
-
-    @Alias
-    private SocketFactory socketFactory;
-
-    @Alias
-    private static SocketFactory DEFAULT_SOCKET_FACTORY;
-
-    @Substitute
-    public SocketFactory getSocketFactory() {
-        if (this.socketFactory != null) {
-            return this.socketFactory;
-        } else {
-            return DEFAULT_SOCKET_FACTORY;
-        }
-    }
-}
diff --git a/integration-tests/mongodb/src/main/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbResource.java b/integration-tests/mongodb/src/main/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbResource.java
index dbde877..c859969 100644
--- a/integration-tests/mongodb/src/main/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbResource.java
+++ b/integration-tests/mongodb/src/main/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbResource.java
@@ -21,7 +21,6 @@ import java.net.URISyntaxException;
 
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
-import javax.inject.Named;
 import javax.json.Json;
 import javax.json.JsonArray;
 import javax.json.JsonArrayBuilder;
@@ -35,7 +34,6 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import com.mongodb.MongoClient;
 import com.mongodb.client.MongoCursor;
 import com.mongodb.client.MongoIterable;
 import org.apache.camel.ProducerTemplate;
@@ -84,12 +82,4 @@ public class MongoDbResource {
 
         return arrayBuilder.build();
     }
-
-    @javax.enterprise.inject.Produces
-    @Named("camelMongoClient")
-    public MongoClient camelMongoClient() {
-        return new MongoClient(
-                System.getProperty("camel.mongodb.test-host"),
-                Integer.getInteger("camel.mongodb.test-port"));
-    }
 }
diff --git a/integration-tests/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTestResource.java b/integration-tests/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTestResource.java
index b7a915f..cbbf45d 100644
--- a/integration-tests/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTestResource.java
+++ b/integration-tests/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTestResource.java
@@ -46,8 +46,8 @@ public class MongoDbTestResource implements ContainerResourceLifecycleManager {
             container.start();
 
             return CollectionHelper.mapOf(
-                    "camel.mongodb.test-port", container.getMappedPort(MONGODB_PORT).toString(),
-                    "camel.mongodb.test-host", container.getContainerIpAddress());
+                    "quarkus.mongodb.hosts",
+                    container.getContainerIpAddress() + ":" + container.getMappedPort(MONGODB_PORT).toString());
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
diff --git a/pom.xml b/pom.xml
index 7659111..3e9856f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,6 +58,14 @@
         <consul-client.version>1.3.3</consul-client.version>
         <stax2.version>4.2</stax2.version>
 
+        <!-- These mongodb version properties should align with the Mongo client version used in Camel
+            TODO: Remove when Quarkus has upgraded its MongoDB client dependencies
+                - https://github.com/quarkusio/quarkus/issues/6418
+                - https://github.com/quarkusio/quarkus/pull/6347
+        -->
+        <mongodb.version>3.12.1</mongodb.version>
+        <mongodb-crypt.version>1.0.1</mongodb-crypt.version>
+
         <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
         <maven.compiler.target>1.8</maven.compiler.target>
         <maven.compiler.source>1.8</maven.compiler.source>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 01ae072..f849a11 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1053,6 +1053,31 @@
                 <version>${kotlin.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.mongodb</groupId>
+                <artifactId>mongodb-crypt</artifactId>
+                <version>${mongodb-crypt.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.mongodb</groupId>
+                <artifactId>mongodb-driver-async</artifactId>
+                <version>${mongodb.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.mongodb</groupId>
+                <artifactId>mongodb-driver-core</artifactId>
+                <version>${mongodb.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.mongodb</groupId>
+                <artifactId>mongodb-driver-legacy</artifactId>
+                <version>${mongodb.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.mongodb</groupId>
+                <artifactId>mongodb-driver-sync</artifactId>
+                <version>${mongodb.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-core</artifactId>
                 <version>${spring.version}</version>


[camel-quarkus] 23/34: Update docs

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 030be623d76627457a752ae21a67c60253428a58
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Wed Feb 5 18:06:38 2020 +0100

    Update docs
---
 docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc | 2 +-
 extensions/readme.adoc                                        | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index b8e0b1d..3c4999e 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -267,7 +267,7 @@ Number of Camel languages: 9 in 3 JAR artifacts (0 deprecated)
 
 | link:https://camel.apache.org/components/latest/bean-language.html[Bean method] (camel-quarkus-bean) | 0.2.0 | To use a Java bean (aka method call) in Camel expressions or predicates.
 
-| link:https://camel.apache.org/components/latest/constant-language.html[Constant] (camel-quarkus-core) | 0.2.0 | To use a constant value in Camel expressions or predicates.
+| link:https://camel.apache.org/components/latest/constant-language.html[Constant] (camel-quarkus-core) | 0.2.0 | To use a constant value in Camel expressions or predicates. Important: this is a fixed constant value that is only set once during starting up the route, do not use this if you want dynamic values during routing.
 
 | link:https://camel.apache.org/components/latest/exchangeProperty-language.html[ExchangeProperty] (camel-quarkus-core) | 0.2.0 | To use a Camel Exchange property in expressions or predicates.
 
diff --git a/extensions/readme.adoc b/extensions/readme.adoc
index 5ec1faa..49f41c3 100644
--- a/extensions/readme.adoc
+++ b/extensions/readme.adoc
@@ -256,7 +256,7 @@ Number of Camel languages: 9 in 3 JAR artifacts (0 deprecated)
 
 | link:https://camel.apache.org/components/latest/bean-language.html[Bean method] (camel-quarkus-bean) | 0.2.0 | To use a Java bean (aka method call) in Camel expressions or predicates.
 
-| link:https://camel.apache.org/components/latest/constant-language.html[Constant] (camel-quarkus-core) | 0.2.0 | To use a constant value in Camel expressions or predicates.
+| link:https://camel.apache.org/components/latest/constant-language.html[Constant] (camel-quarkus-core) | 0.2.0 | To use a constant value in Camel expressions or predicates. Important: this is a fixed constant value that is only set once during starting up the route, do not use this if you want dynamic values during routing.
 
 | link:https://camel.apache.org/components/latest/exchangeProperty-language.html[ExchangeProperty] (camel-quarkus-core) | 0.2.0 | To use a Camel Exchange property in expressions or predicates.
 


[camel-quarkus] 14/34: Update mvnd.builder.rules by running mvn process-resources -Pformat

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 875b0c9bfdcaed9becc998fb4355136a295fa1df
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Thu Feb 13 09:23:31 2020 +0100

    Update mvnd.builder.rules by running mvn process-resources -Pformat
---
 examples/file-split-log-xml/pom.xml            | 10 ++++++++++
 examples/observability/pom.xml                 | 10 ++++++++++
 examples/rest-json/pom.xml                     | 10 ++++++++++
 examples/timer-log-cdi/pom.xml                 | 10 ++++++++++
 examples/timer-log-kotlin/pom.xml              |  7 +++++++
 examples/timer-log-spring/pom.xml              | 10 ++++++++++
 examples/timer-log-xml/pom.xml                 | 10 ++++++++++
 examples/timer-log/pom.xml                     | 10 ++++++++++
 integration-tests/aws/pom.xml                  | 10 ++++++++++
 integration-tests/base64/pom.xml               | 10 ++++++++++
 integration-tests/bean-validator/pom.xml       | 10 ++++++++++
 integration-tests/bean/pom.xml                 | 10 ++++++++++
 integration-tests/bindy/pom.xml                | 10 ++++++++++
 integration-tests/consul/pom.xml               | 10 ++++++++++
 integration-tests/controlbus/pom.xml           | 10 ++++++++++
 integration-tests/core-impl/pom.xml            | 10 ++++++++++
 integration-tests/core-main-collector/pom.xml  | 10 ++++++++++
 integration-tests/core-main-xml/pom.xml        | 10 ++++++++++
 integration-tests/core-main/pom.xml            | 10 ++++++++++
 integration-tests/core/pom.xml                 | 10 ++++++++++
 integration-tests/csv/pom.xml                  | 10 ++++++++++
 integration-tests/dataformat/pom.xml           | 10 ++++++++++
 integration-tests/dozer/pom.xml                | 10 ++++++++++
 integration-tests/exec/pom.xml                 | 10 ++++++++++
 integration-tests/fhir/pom.xml                 | 10 ++++++++++
 integration-tests/file/pom.xml                 | 10 ++++++++++
 integration-tests/ftp/pom.xml                  | 10 ++++++++++
 integration-tests/http/pom.xml                 | 10 ++++++++++
 integration-tests/hystrix/pom.xml              | 10 ++++++++++
 integration-tests/infinispan/pom.xml           | 10 ++++++++++
 integration-tests/jackson/pom.xml              | 10 ++++++++++
 integration-tests/jdbc/pom.xml                 | 10 ++++++++++
 integration-tests/jsonpath/pom.xml             | 10 ++++++++++
 integration-tests/kafka/pom.xml                |  1 +
 integration-tests/mail/pom.xml                 | 10 ++++++++++
 integration-tests/microprofile/pom.xml         | 10 ++++++++++
 integration-tests/mongodb/pom.xml              | 10 ++++++++++
 integration-tests/netty/pom.xml                | 10 ++++++++++
 integration-tests/olingo4/pom.xml              | 10 ++++++++++
 integration-tests/opentracing/pom.xml          | 10 ++++++++++
 integration-tests/paho/pom.xml                 | 10 ++++++++++
 integration-tests/pdf/pom.xml                  | 10 ++++++++++
 integration-tests/platform-http-engine/pom.xml | 10 ++++++++++
 integration-tests/platform-http/pom.xml        | 10 ++++++++++
 integration-tests/reactive-streams/pom.xml     | 10 ++++++++++
 integration-tests/salesforce/pom.xml           | 10 ++++++++++
 integration-tests/scheduler/pom.xml            | 10 ++++++++++
 integration-tests/seda/pom.xml                 | 10 ++++++++++
 integration-tests/servlet/pom.xml              | 10 ++++++++++
 integration-tests/sjms/pom.xml                 | 10 ++++++++++
 integration-tests/slack/pom.xml                | 10 ++++++++++
 integration-tests/snakeyaml/pom.xml            | 10 ++++++++++
 integration-tests/sql/pom.xml                  | 10 ++++++++++
 integration-tests/stream/pom.xml               | 10 ++++++++++
 integration-tests/tagsoup/pom.xml              | 10 ++++++++++
 integration-tests/tarfile/pom.xml              | 10 ++++++++++
 integration-tests/twitter/pom.xml              | 10 ++++++++++
 integration-tests/validator/pom.xml            | 10 ++++++++++
 integration-tests/xslt/pom.xml                 | 10 ++++++++++
 integration-tests/zipfile/pom.xml              | 10 ++++++++++
 60 files changed, 588 insertions(+)

diff --git a/examples/file-split-log-xml/pom.xml b/examples/file-split-log-xml/pom.xml
index e8fb1c0..7230aa3 100644
--- a/examples/file-split-log-xml/pom.xml
+++ b/examples/file-split-log-xml/pom.xml
@@ -35,6 +35,16 @@
 
     
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-core-xml-deployment,camel-quarkus-file-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/examples/observability/pom.xml b/examples/observability/pom.xml
index bcdebb3..4184857 100644
--- a/examples/observability/pom.xml
+++ b/examples/observability/pom.xml
@@ -31,6 +31,16 @@
     <name>Camel Quarkus :: Examples :: Observability</name>
     <description>Camel Quarkus Example :: Observability</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-microprofile-health-deployment,camel-quarkus-microprofile-metrics-deployment,camel-quarkus-netty-http-deployment,camel-quarkus-opentracing-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/examples/rest-json/pom.xml b/examples/rest-json/pom.xml
index 255e1ca..78f21f4 100644
--- a/examples/rest-json/pom.xml
+++ b/examples/rest-json/pom.xml
@@ -31,6 +31,16 @@
     <name>Camel Quarkus :: Examples :: Rest Json</name>
     <description>Camel Quarkus Example :: Rest Json</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-jackson-deployment,camel-quarkus-platform-http-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/examples/timer-log-cdi/pom.xml b/examples/timer-log-cdi/pom.xml
index a25d2fe..174a547 100644
--- a/examples/timer-log-cdi/pom.xml
+++ b/examples/timer-log-cdi/pom.xml
@@ -31,6 +31,16 @@
     <name>Camel Quarkus :: Examples :: Timer Log CDI</name>
     <description>Camel Quarkus Example :: Timer to Log CDI</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/examples/timer-log-kotlin/pom.xml b/examples/timer-log-kotlin/pom.xml
index cd8d1ec..eb8dacd 100644
--- a/examples/timer-log-kotlin/pom.xml
+++ b/examples/timer-log-kotlin/pom.xml
@@ -33,6 +33,13 @@
 
     <properties>
         <kotlin.version>1.3.21</kotlin.version>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-kotlin-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
     </properties>
 
     <dependencies>
diff --git a/examples/timer-log-spring/pom.xml b/examples/timer-log-spring/pom.xml
index 008c54f..930a358 100644
--- a/examples/timer-log-spring/pom.xml
+++ b/examples/timer-log-spring/pom.xml
@@ -31,6 +31,16 @@
     <name>Camel Quarkus :: Examples :: Timer Log Spring</name>
     <description>Camel Quarkus Example :: Timer to Log Spring</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/examples/timer-log-xml/pom.xml b/examples/timer-log-xml/pom.xml
index 2f76b36..b9c5e49 100644
--- a/examples/timer-log-xml/pom.xml
+++ b/examples/timer-log-xml/pom.xml
@@ -31,6 +31,16 @@
     <name>Camel Quarkus :: Examples :: Timer Log XML</name>
     <description>Camel Quarkus Example :: Timer to Log XML</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-core-xml-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/examples/timer-log/pom.xml b/examples/timer-log/pom.xml
index 74fe585..bc47ba8 100644
--- a/examples/timer-log/pom.xml
+++ b/examples/timer-log/pom.xml
@@ -31,6 +31,16 @@
     <name>Camel Quarkus :: Examples :: Timer Log</name>
     <description>Camel Quarkus Example :: Timer to Log</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/aws/pom.xml b/integration-tests/aws/pom.xml
index 19482fe..349fe48 100644
--- a/integration-tests/aws/pom.xml
+++ b/integration-tests/aws/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: AWS</name>
     <description>The camel integration tests</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-aws-ec2-deployment,camel-quarkus-aws-ecs-deployment,camel-quarkus-aws-eks-deployment,camel-quarkus-aws-iam-deployment,camel-quarkus-aws-kinesis-deployment,camel-quarkus-aws-kms-deployment,camel-quarkus-aws-lambda-deployment,camel-quarkus-aws-s3-deployment,camel-quarkus-aws-sns-deployment,camel-quarkus-aws-sqs-deployment,camel-quarkus-aws-translate-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-d [...]
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/base64/pom.xml b/integration-tests/base64/pom.xml
index f987b02..6b185e0 100644
--- a/integration-tests/base64/pom.xml
+++ b/integration-tests/base64/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Base64</name>
     <description>Integration tests for Camel Quarkus Base64 extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-base64-deployment,camel-quarkus-direct-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/bean-validator/pom.xml b/integration-tests/bean-validator/pom.xml
index c525317..7469315 100644
--- a/integration-tests/bean-validator/pom.xml
+++ b/integration-tests/bean-validator/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Bean Validator</name>
     <description>Integration tests for Camel Quarkus Bean Validator extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-bean-validator-deployment,camel-quarkus-direct-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/bean/pom.xml b/integration-tests/bean/pom.xml
index bfe1aa1..f5ecc7b 100644
--- a/integration-tests/bean/pom.xml
+++ b/integration-tests/bean/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Bean</name>
     <description>Integration tests for Camel Bean extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-bean-deployment,camel-quarkus-direct-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/bindy/pom.xml b/integration-tests/bindy/pom.xml
index d9958db..56b8843 100644
--- a/integration-tests/bindy/pom.xml
+++ b/integration-tests/bindy/pom.xml
@@ -31,6 +31,16 @@
     <name>Camel Quarkus :: Integration Tests :: Bindy</name>
     <description>Integration tests for Camel Quarkus Bindy extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-bindy-deployment,camel-quarkus-direct-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/consul/pom.xml b/integration-tests/consul/pom.xml
index e2e6a05..4532c79 100644
--- a/integration-tests/consul/pom.xml
+++ b/integration-tests/consul/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Consul</name>
     <description>Integration tests for Camel Quarkus Consul extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-consul-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/controlbus/pom.xml b/integration-tests/controlbus/pom.xml
index 26a8df8..0542c0a 100644
--- a/integration-tests/controlbus/pom.xml
+++ b/integration-tests/controlbus/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: ControlBus</name>
     <description>Integration tests for Camel Quarkus ControlBus extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-controlbus-deployment,camel-quarkus-direct-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/core-impl/pom.xml b/integration-tests/core-impl/pom.xml
index 7409d0f..7b7b945 100644
--- a/integration-tests/core-impl/pom.xml
+++ b/integration-tests/core-impl/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Core Impl</name>
     <description>The camel integration tests</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-core-cloud-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/core-main-collector/pom.xml b/integration-tests/core-main-collector/pom.xml
index 72746c0..839df54 100644
--- a/integration-tests/core-main-collector/pom.xml
+++ b/integration-tests/core-main-collector/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Core Main Collector :: Tests</name>
     <description>The camel integration tests</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-integration-test-support-core-main-collector-ext-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/core-main-xml/pom.xml b/integration-tests/core-main-xml/pom.xml
index 477622a..aad2d06 100644
--- a/integration-tests/core-main-xml/pom.xml
+++ b/integration-tests/core-main-xml/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Core Main XML :: Tests</name>
     <description>The camel integration tests</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-core-xml-deployment,camel-quarkus-direct-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/core-main/pom.xml b/integration-tests/core-main/pom.xml
index 0a0419d..1d36962 100644
--- a/integration-tests/core-main/pom.xml
+++ b/integration-tests/core-main/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Core Main :: Tests</name>
     <description>The camel integration tests</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-endpointdsl-deployment,camel-quarkus-integration-test-support-core-main-ext-deployment,camel-quarkus-log-deployment,camel-quarkus-reactive-executor-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/core/pom.xml b/integration-tests/core/pom.xml
index 5644c99..985a12a 100644
--- a/integration-tests/core/pom.xml
+++ b/integration-tests/core/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Core :: Tests</name>
     <description>The camel integration tests</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-integration-test-support-core-ext-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-timer-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/csv/pom.xml b/integration-tests/csv/pom.xml
index ebe3f6e..e1b5055 100644
--- a/integration-tests/csv/pom.xml
+++ b/integration-tests/csv/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: CSV</name>
     <description>Integration tests for Camel Quarkus CSV extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-csv-deployment,camel-quarkus-direct-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/dataformat/pom.xml b/integration-tests/dataformat/pom.xml
index 54160f5..72c9ba0 100644
--- a/integration-tests/dataformat/pom.xml
+++ b/integration-tests/dataformat/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Data Format</name>
     <description>Integration tests for Camel Quarkus Data Format extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-dataformat-deployment,camel-quarkus-direct-deployment,camel-quarkus-snakeyaml-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/dozer/pom.xml b/integration-tests/dozer/pom.xml
index 53752ab..bfcb07e 100644
--- a/integration-tests/dozer/pom.xml
+++ b/integration-tests/dozer/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Dozer</name>
     <description>Integration tests for Camel Quarkus Dozer extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-dozer-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/exec/pom.xml b/integration-tests/exec/pom.xml
index 5332ea6..cf9736e 100644
--- a/integration-tests/exec/pom.xml
+++ b/integration-tests/exec/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Exec</name>
     <description>Integration tests for Camel Quarkus Exec extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-exec-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/fhir/pom.xml b/integration-tests/fhir/pom.xml
index f149b8c..76181aa 100644
--- a/integration-tests/fhir/pom.xml
+++ b/integration-tests/fhir/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: FHIR</name>
     <description>Integration tests for Camel Quarkus FHIR extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-fhir-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencyManagement>
         <dependencies>
             <dependency>
diff --git a/integration-tests/file/pom.xml b/integration-tests/file/pom.xml
index d020885..a746a5d 100644
--- a/integration-tests/file/pom.xml
+++ b/integration-tests/file/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: File</name>
     <description>Integration tests for Camel Quarkus File extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-file-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/ftp/pom.xml b/integration-tests/ftp/pom.xml
index 3bc09f1..2f92ea0 100644
--- a/integration-tests/ftp/pom.xml
+++ b/integration-tests/ftp/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: FTP</name>
     <description>Integration tests for Camel Quarkus FTP extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-ftp-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/http/pom.xml b/integration-tests/http/pom.xml
index 2b6118d..d4b60fc 100644
--- a/integration-tests/http/pom.xml
+++ b/integration-tests/http/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: HTTP</name>
     <description>Integration tests for Camel Quarkus HTTP extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-ahc-deployment,camel-quarkus-ahc-ws-deployment,camel-quarkus-direct-deployment,camel-quarkus-http-deployment,camel-quarkus-netty-http-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/hystrix/pom.xml b/integration-tests/hystrix/pom.xml
index 57b69c9..4999cf6 100644
--- a/integration-tests/hystrix/pom.xml
+++ b/integration-tests/hystrix/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Hystrix</name>
     <description>Integration tests for Camel Quarkus Hystrix extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-hystrix-deployment,camel-quarkus-netty-http-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/infinispan/pom.xml b/integration-tests/infinispan/pom.xml
index 5c4139f..cf191c7 100644
--- a/integration-tests/infinispan/pom.xml
+++ b/integration-tests/infinispan/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Infinispan</name>
     <description>Integration tests for Camel Infinispan component</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-infinispan-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/jackson/pom.xml b/integration-tests/jackson/pom.xml
index cec72a2..9098527 100644
--- a/integration-tests/jackson/pom.xml
+++ b/integration-tests/jackson/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Jackson</name>
     <description>Integration tests for Camel Jackson extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-core-xml-deployment,camel-quarkus-direct-deployment,camel-quarkus-jackson-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-vm-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/jdbc/pom.xml b/integration-tests/jdbc/pom.xml
index 9e5ba03..3040bd6 100644
--- a/integration-tests/jdbc/pom.xml
+++ b/integration-tests/jdbc/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: JDBC</name>
     <description>Integration tests for Camel JDBC extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-jdbc-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/jsonpath/pom.xml b/integration-tests/jsonpath/pom.xml
index 9f13bdc..d0edc4d 100644
--- a/integration-tests/jsonpath/pom.xml
+++ b/integration-tests/jsonpath/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: JSON Path</name>
     <description>Integration tests for Camel Quarkus JSON Path extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-bean-deployment,camel-quarkus-direct-deployment,camel-quarkus-jsonpath-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/kafka/pom.xml b/integration-tests/kafka/pom.xml
index 9347056..ab9f82f 100644
--- a/integration-tests/kafka/pom.xml
+++ b/integration-tests/kafka/pom.xml
@@ -31,6 +31,7 @@
 
     <properties>
         <rerun.failing.test.count>2</rerun.failing.test.count>
+        <mvnd.builder.rule>camel-quarkus-kafka-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
     </properties>
 
     <dependencies>
diff --git a/integration-tests/mail/pom.xml b/integration-tests/mail/pom.xml
index a53f7c1..326357c 100644
--- a/integration-tests/mail/pom.xml
+++ b/integration-tests/mail/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Mail</name>
     <description>Integration tests for Camel Mail extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-mail-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/microprofile/pom.xml b/integration-tests/microprofile/pom.xml
index 3409c44..086ddf5 100644
--- a/integration-tests/microprofile/pom.xml
+++ b/integration-tests/microprofile/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: MicroProfile</name>
     <description>Integration tests for Camel Quarkus MicroProfile extensions</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-log-deployment,camel-quarkus-microprofile-health-deployment,camel-quarkus-microprofile-metrics-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/mongodb/pom.xml b/integration-tests/mongodb/pom.xml
index 5804bc3..5d0f722 100644
--- a/integration-tests/mongodb/pom.xml
+++ b/integration-tests/mongodb/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: MongoDB</name>
     <description>Integration tests for Camel Quarkus MongoDB extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-mongodb-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/netty/pom.xml b/integration-tests/netty/pom.xml
index bbb55f3..29d4200 100644
--- a/integration-tests/netty/pom.xml
+++ b/integration-tests/netty/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Netty</name>
     <description>Integration tests for Camel Quarkus Netty extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-netty-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/olingo4/pom.xml b/integration-tests/olingo4/pom.xml
index f96f3fc..c60e9d5 100644
--- a/integration-tests/olingo4/pom.xml
+++ b/integration-tests/olingo4/pom.xml
@@ -31,6 +31,16 @@
     <name>Camel Quarkus :: Integration Tests :: Olingo4</name>
     <description>Integration tests for Camel Quarkus Olingo4 extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-olingo4-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/opentracing/pom.xml b/integration-tests/opentracing/pom.xml
index 1297c5a..dd6fd12 100644
--- a/integration-tests/opentracing/pom.xml
+++ b/integration-tests/opentracing/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: OpenTracing</name>
     <description>Integration tests for Camel Quarkus OpenTracing extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-opentracing-deployment,camel-quarkus-platform-http-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/paho/pom.xml b/integration-tests/paho/pom.xml
index 08586d7..0ce9931 100644
--- a/integration-tests/paho/pom.xml
+++ b/integration-tests/paho/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Paho</name>
     <description>Integration tests for Camel Quarkus Paho extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-paho-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/pdf/pom.xml b/integration-tests/pdf/pom.xml
index bd626a1..486ed62 100644
--- a/integration-tests/pdf/pom.xml
+++ b/integration-tests/pdf/pom.xml
@@ -27,6 +27,16 @@
   <artifactId>camel-quarkus-integration-test-pdf</artifactId>
   <name>Camel Quarkus :: Integration Tests :: PDF</name>
   <description>Integration tests for Camel Quarkus PDF extension</description>
+  <properties>
+    <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+    <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+    <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+    <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+    <!-- Please update rule whenever you change the dependencies of this module by running -->
+    <!--     mvn process-resources -Pformat    from the root directory -->
+    <mvnd.builder.rule>camel-quarkus-pdf-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/platform-http-engine/pom.xml b/integration-tests/platform-http-engine/pom.xml
index 2c8cd8a..dc4d349 100644
--- a/integration-tests/platform-http-engine/pom.xml
+++ b/integration-tests/platform-http-engine/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Platform HTTP Engine</name>
     <description>Integration tests for Camel Quarkus platform-http engine extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-platform-http-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/platform-http/pom.xml b/integration-tests/platform-http/pom.xml
index 4a5d267..e2b304a 100644
--- a/integration-tests/platform-http/pom.xml
+++ b/integration-tests/platform-http/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Platform HTTP</name>
     <description>Integration tests for Camel Quarkus platform-http extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-attachments-deployment,camel-quarkus-log-deployment,camel-quarkus-platform-http-deployment,camel-quarkus-rest-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/reactive-streams/pom.xml b/integration-tests/reactive-streams/pom.xml
index 3b92548..8130dfc 100644
--- a/integration-tests/reactive-streams/pom.xml
+++ b/integration-tests/reactive-streams/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Reactive Streams</name>
     <description>Integration tests for Camel Quarkus Reactive Streams extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-reactive-streams-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/salesforce/pom.xml b/integration-tests/salesforce/pom.xml
index da2011c..a45e94e 100644
--- a/integration-tests/salesforce/pom.xml
+++ b/integration-tests/salesforce/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Salesforce</name>
     <description>The camel integration tests</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-log-deployment,camel-quarkus-salesforce-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/scheduler/pom.xml b/integration-tests/scheduler/pom.xml
index 9bc6162..5e12a8c 100644
--- a/integration-tests/scheduler/pom.xml
+++ b/integration-tests/scheduler/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Scheduler</name>
     <description>Integration tests for Camel Quarkus Scheduler extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-scheduler-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/seda/pom.xml b/integration-tests/seda/pom.xml
index 2da505a..cdafba9 100644
--- a/integration-tests/seda/pom.xml
+++ b/integration-tests/seda/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: SEDA</name>
     <description>Integration tests for Camel Quarkus SEDA extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-seda-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/servlet/pom.xml b/integration-tests/servlet/pom.xml
index 47d168d..2aa51b9 100644
--- a/integration-tests/servlet/pom.xml
+++ b/integration-tests/servlet/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Servlet</name>
     <description>Integration tests for Camel Servlet component</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-core-cloud-deployment,camel-quarkus-rest-deployment,camel-quarkus-servlet-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/sjms/pom.xml b/integration-tests/sjms/pom.xml
index 3502ae8..9657b08 100644
--- a/integration-tests/sjms/pom.xml
+++ b/integration-tests/sjms/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: SJMS</name>
     <description>Integration tests for Camel Quarkus SJMS extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-log-deployment,camel-quarkus-sjms-deployment,camel-quarkus-sjms2-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/slack/pom.xml b/integration-tests/slack/pom.xml
index 586df17..aa7d84a 100644
--- a/integration-tests/slack/pom.xml
+++ b/integration-tests/slack/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Slack</name>
     <description>Integration tests for Camel Quarkus Slack extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-netty-http-deployment,camel-quarkus-rest-deployment,camel-quarkus-slack-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/snakeyaml/pom.xml b/integration-tests/snakeyaml/pom.xml
index 9c21d6c..76ced9b 100644
--- a/integration-tests/snakeyaml/pom.xml
+++ b/integration-tests/snakeyaml/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: SnakeYAML</name>
     <description>Integration tests for Camel Quarkus SnakeYAML extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-snakeyaml-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/sql/pom.xml b/integration-tests/sql/pom.xml
index 8a072f1..a54012e 100644
--- a/integration-tests/sql/pom.xml
+++ b/integration-tests/sql/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: SQL</name>
     <description>Integration tests for Camel Quarkus SQL extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-sql-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/stream/pom.xml b/integration-tests/stream/pom.xml
index 366c439..2cc5b0e 100644
--- a/integration-tests/stream/pom.xml
+++ b/integration-tests/stream/pom.xml
@@ -31,6 +31,16 @@
     <name>Camel Quarkus :: Integration Tests :: Stream</name>
     <description>Integration tests for Camel Quarkus Stream extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-stream-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/tagsoup/pom.xml b/integration-tests/tagsoup/pom.xml
index 3113d43..b04a995 100644
--- a/integration-tests/tagsoup/pom.xml
+++ b/integration-tests/tagsoup/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: TagSoup</name>
     <description>Integration tests for Camel Quarkus TagSoup extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-tagsoup-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/tarfile/pom.xml b/integration-tests/tarfile/pom.xml
index de34f7a..edc727f 100644
--- a/integration-tests/tarfile/pom.xml
+++ b/integration-tests/tarfile/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Tarfile</name>
     <description>Integration tests for Camel Quarkus tarfile extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-tarfile-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/twitter/pom.xml b/integration-tests/twitter/pom.xml
index 5ad072f..a572663 100644
--- a/integration-tests/twitter/pom.xml
+++ b/integration-tests/twitter/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Twitter</name>
     <description>The camel twitter integration tests</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-support-policy-deployment,camel-quarkus-twitter-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/validator/pom.xml b/integration-tests/validator/pom.xml
index 385bb2e..801e6ce 100644
--- a/integration-tests/validator/pom.xml
+++ b/integration-tests/validator/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Validator</name>
     <description>Integration tests for Camel Quarkus Validator extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-validator-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/xslt/pom.xml b/integration-tests/xslt/pom.xml
index d19b0b1..9305cdc 100644
--- a/integration-tests/xslt/pom.xml
+++ b/integration-tests/xslt/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: XSLT</name>
     <description>Integration tests for Camel Quarkus XSLT extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-jackson-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-xslt-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/zipfile/pom.xml b/integration-tests/zipfile/pom.xml
index b623e69..4aa31b3 100644
--- a/integration-tests/zipfile/pom.xml
+++ b/integration-tests/zipfile/pom.xml
@@ -29,6 +29,16 @@
     <name>Camel Quarkus :: Integration Tests :: Zipfile</name>
     <description>Integration tests for Camel Quarkus zipfile extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-support-policy-deployment,camel-quarkus-zipfile-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>


[camel-quarkus] 18/34: camel-jira extension:more polish up

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 24b5ac42a625ffe92f9c1c8cb6377842ce242716
Author: Freeman Fang <fr...@gmail.com>
AuthorDate: Thu Feb 13 18:09:07 2020 -0500

    camel-jira extension:more polish up
---
 .github/workflows/pr-build.yaml                    |  3 +-
 .../component/jira/deployment/JiraProcessor.java   |  6 ++
 extensions/jira/runtime/pom.xml                    | 13 ----
 extensions/pom.xml                                 |  2 +-
 integration-tests/jira/pom.xml                     | 69 ++++------------------
 .../quarkus/component/jira/it/JiraResource.java    |  2 -
 integration-tests/pom.xml                          |  2 +-
 pom.xml                                            | 14 ++++-
 poms/bom/pom.xml                                   | 42 ++++++-------
 9 files changed, 54 insertions(+), 99 deletions(-)

diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml
index 4a29823..c9fd9ed 100644
--- a/.github/workflows/pr-build.yaml
+++ b/.github/workflows/pr-build.yaml
@@ -379,7 +379,8 @@ jobs:
             -pl :camel-quarkus-integration-test-stream \
             -pl :camel-quarkus-integration-test-tarfile \
             -pl :camel-quarkus-integration-test-validator \
-            -pl :camel-quarkus-integration-test-zipfile
+            -pl :camel-quarkus-integration-test-zipfile \
+            -pl :camel-quarkus-integration-test-jira
   saas:
     runs-on: ubuntu-latest
     needs: build
diff --git a/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java b/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java
index befac44..89be59f 100644
--- a/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java
+++ b/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java
@@ -17,6 +17,7 @@
 package org.apache.camel.quarkus.component.jira.deployment;
 
 import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
 
 class JiraProcessor {
@@ -24,6 +25,11 @@ class JiraProcessor {
     private static final String FEATURE = "camel-jira";
 
     @BuildStep
+    ExtensionSslNativeSupportBuildItem activateSslNativeSupport() {
+        return new ExtensionSslNativeSupportBuildItem(FEATURE);
+    }
+
+    @BuildStep
     FeatureBuildItem feature() {
         return new FeatureBuildItem(FEATURE);
     }
diff --git a/extensions/jira/runtime/pom.xml b/extensions/jira/runtime/pom.xml
index 6faa1d9..2be8ea1 100644
--- a/extensions/jira/runtime/pom.xml
+++ b/extensions/jira/runtime/pom.xml
@@ -46,19 +46,6 @@
             </dependency>
         </dependencies>
     </dependencyManagement>
-    <repositories>
-        <repository>
-            <id>atlassian</id>
-            <url>https://packages.atlassian.com/maven-external/</url>
-            <name>atlassian exteranl repo</name>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-        </repository>
-    </repositories>
 
     <dependencies>
         <dependency>
diff --git a/extensions/pom.xml b/extensions/pom.xml
index d562bf7..2ece525 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -77,6 +77,7 @@
         <module>infinispan</module>
         <module>jackson</module>
         <module>jdbc</module>
+        <module>jira</module>
         <module>jsonpath</module>
         <module>kafka</module>
         <module>kotlin</module>
@@ -89,7 +90,6 @@
         <module>netty-http</module>
         <module>olingo4</module>
         <module>opentracing</module>
-        <module>jira</module>
         <module>paho</module>
         <module>pdf</module>
         <module>platform-http</module>
diff --git a/integration-tests/jira/pom.xml b/integration-tests/jira/pom.xml
index 195d96f..c0bcaf5 100644
--- a/integration-tests/jira/pom.xml
+++ b/integration-tests/jira/pom.xml
@@ -31,6 +31,16 @@
     <name>Camel Quarkus :: Integration Tests :: Jira</name>
     <description>Integration tests for Camel Quarkus Jira extension</description>
 
+    <properties>
+        <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
+        <!-- The following rule tells mvnd to build the listed deployment modules before this module. -->
+        <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->
+        <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->
+        <!-- Please update rule whenever you change the dependencies of this module by running -->
+        <!--     mvn process-resources -Pformat    from the root directory -->
+        <mvnd.builder.rule>camel-quarkus-direct-deployment,camel-quarkus-jira-deployment,camel-quarkus-log-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
@@ -84,60 +94,6 @@
         </plugins>
     </build>
 
-    <!--profiles>
-        <profile>
-            <id>native</id>
-            <activation>
-                <property>
-                    <name>native</name>
-                </property>
-            </activation>
-            <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>
-                                <configuration>
-                                    <systemProperties>
-                                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
-                                    </systemProperties>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <plugin>
-                        <groupId>io.quarkus</groupId>
-                        <artifactId>quarkus-maven-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <id>native-image</id>
-                                <goals>
-                                    <goal>native-image</goal>
-                                </goals>
-                                <configuration>
-                                    <reportErrorsAtRuntime>false</reportErrorsAtRuntime>
-                                    <cleanupServer>true</cleanupServer>
-                                    <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
-                                    <enableServer>false</enableServer>
-                                    <dumpProxies>false</dumpProxies>
-                                    <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
-                                    <enableAllSecurityServices>true</enableAllSecurityServices>
-                                    <disableReports>true</disableReports>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles-->
     <profiles>
         <profile>
             <id>native</id>
@@ -181,15 +137,10 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
-                                    <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                     <additionalBuildArgs>
                                         --initialize-at-run-time=com.google.api.client.auth.oauth.OAuthParameters,--allow-incomplete-classpath
                                     </additionalBuildArgs>
-                                    <!--additionalBuildArg>
-                                        -H:ReflectionConfigurationFiles=${project.basedir}/reflection-config.json
-                                    </additionalBuildArg-->
                                 </configuration>
                             </execution>
                         </executions>
diff --git a/integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraResource.java b/integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraResource.java
index 9433680..d0a8fd7 100644
--- a/integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraResource.java
+++ b/integration-tests/jira/src/main/java/org/apache/camel/quarkus/component/jira/it/JiraResource.java
@@ -18,7 +18,6 @@ package org.apache.camel.quarkus.component.jira.it;
 
 import java.net.URI;
 
-import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
@@ -34,7 +33,6 @@ import org.apache.camel.ProducerTemplate;
 import org.jboss.logging.Logger;
 
 @Path("/jira")
-@ApplicationScoped
 public class JiraResource {
 
     private static final Logger log = Logger.getLogger(JiraResource.class);
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index d7ac29e..0fba9c4 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -188,6 +188,7 @@
         <module>infinispan</module>
         <module>jackson</module>
         <module>jdbc</module>
+        <module>jira</module>
         <module>jsonpath</module>
         <module>kafka</module>
         <module>mail</module>
@@ -197,7 +198,6 @@
         <module>olingo4</module>
         <module>opentracing</module>
         <module>paho</module>
-        <module>jira</module>
         <module>pdf</module>
         <module>platform-http</module>
         <module>platform-http-engine</module>
diff --git a/pom.xml b/pom.xml
index 5951b84..7659111 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,7 +42,7 @@
 
         <ahc.version>2.10.4</ahc.version>
         <camel.version>3.0.1</camel.version>
-        <jira.guava.version>20.0</jira.guava.version>
+        <guava.version>26.0-jre</guava.version>
         <hapi.version>4.1.0</hapi.version>
         <quarkus.version>1.3.0.Alpha1</quarkus.version>
         <httpmime.version>4.1.3</httpmime.version>
@@ -175,6 +175,18 @@
                 <enabled>false</enabled>
             </releases>
         </repository>
+        <repository>
+            <!--for com.atlassian.jira-->
+            <id>atlassian</id>
+            <url>https://packages.atlassian.com/maven-external/</url>
+            <name>atlassian exteranl repo</name>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
     </repositories>
     <pluginRepositories>
         <pluginRepository>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index f994141..01ae072 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -143,16 +143,6 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
-                <artifactId>camel-jira</artifactId>
-                <version>${camel.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.google.guava</groupId>
-                <artifactId>guava</artifactId>
-                <version>${jira.guava.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-base</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -315,6 +305,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-jira</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-jsonpath</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -737,6 +732,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-jira</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
                 <artifactId>camel-quarkus-jsonpath</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
@@ -980,12 +980,7 @@
                 <artifactId>camel-quarkus-zipfile</artifactId>
                 <version>${camel-quarkus.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.apache.camel.quarkus</groupId>
-                <artifactId>camel-quarkus-jira</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            
+
             <!--$ Other third party dependencies $-->
             <dependency>
                 <groupId>ca.uhn.hapi.fhir</groupId>
@@ -993,6 +988,11 @@
                 <version>${hapi.version}</version>
             </dependency>
             <dependency>
+                <groupId>com.google.guava</groupId>
+                <artifactId>guava</artifactId>
+                <version>${guava.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>com.orbitz.consul</groupId>
                 <artifactId>consul-client</artifactId>
                 <version>${consul-client.version}</version>
@@ -1013,6 +1013,11 @@
                 <version>${xstream.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.apache.httpcomponents</groupId>
+                <artifactId>httpclient-cache</artifactId>
+                <version>${httpclient.cache.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.asynchttpclient</groupId>
                 <artifactId>async-http-client</artifactId>
                 <version>${ahc.version}</version>
@@ -1073,11 +1078,6 @@
                 <artifactId>xercesImpl</artifactId>
                 <version>${xerces.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.apache.httpcomponents</groupId>
-                <artifactId>httpclient-cache</artifactId>
-                <version>${httpclient.cache.version}</version>
-            </dependency>
         </dependencies>
     </dependencyManagement>
 


[camel-quarkus] 13/34: Update via -Pformat

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 6b3457c492772f8753c064418e5a50e535cb4ffe
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Feb 12 09:14:03 2020 +0100

    Update <mvnd.builder.rule> via -Pformat
---
 pom.xml                          |   1 +
 tooling/scripts/sort-poms.groovy | 122 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 123 insertions(+)

diff --git a/pom.xml b/pom.xml
index 191a8b4..aa66c18 100644
--- a/pom.xml
+++ b/pom.xml
@@ -426,6 +426,7 @@
                                     <properties>
                                         <sortModulesPaths>extensions/pom.xml,integration-tests/pom.xml</sortModulesPaths>
                                         <sortDependencyManagementPaths>poms/bom/pom.xml,poms/bom-deployment/pom.xml</sortDependencyManagementPaths>
+                                        <updateMvndRuleDirs>examples,integration-tests</updateMvndRuleDirs>
                                     </properties>
                                     <source>file:///${project.basedir}/tooling/scripts/sort-poms.groovy</source>
                                 </configuration>
diff --git a/tooling/scripts/sort-poms.groovy b/tooling/scripts/sort-poms.groovy
index 0b63cd1..a4a3919 100644
--- a/tooling/scripts/sort-poms.groovy
+++ b/tooling/scripts/sort-poms.groovy
@@ -26,6 +26,8 @@ import java.nio.file.Files
 import java.util.regex.Matcher
 import java.util.regex.Pattern
 
+import groovy.util.NodeList
+
 @groovy.transform.Field
 final Path baseDir = basedir.toPath()
 
@@ -35,6 +37,9 @@ sortDependencyManagement(sortDepManagementPaths)
 final String[] sortModulesPaths = properties['sortModulesPaths'].split(',')
 sortModules(sortModulesPaths)
 
+final String[] updateMvndRuleDirs = properties['updateMvndRuleDirs'].split(',')
+updateMvndRules(updateMvndRuleDirs)
+
 void sortDependencyManagement(String[] pomPaths) {
     for (pomPath in pomPaths) {
         final Path pomXmlPath = baseDir.resolve(pomPath.trim())
@@ -179,3 +184,120 @@ void sortModules(String[] sortModulesPaths) {
         }
     }
 }
+
+void updateMvndRules(String[] updateMvndRuleDirs) {
+    final Set<String> extensionArtifactIds = [] as TreeSet
+    Files.list(baseDir.resolve('extensions'))
+            .filter { p -> Files.isDirectory(p) && Files.exists(p.resolve('pom.xml')) && Files.exists(p.resolve('runtime')) }
+            .map { p -> p.getFileName().toString() }
+            .filter { dirName -> !dirName.equals('support') }
+            .map { dirName -> 'camel-quarkus-' + dirName }
+            .forEach { aid -> extensionArtifactIds << aid }
+
+    Files.list(baseDir.resolve('extensions/support'))
+            .filter { p -> Files.isDirectory(p) && Files.exists(p.resolve('pom.xml')) && Files.exists(p.resolve('runtime')) }
+            .map { p -> p.getFileName().toString() }
+            .map { dirName -> 'camel-quarkus-support-' + dirName }
+            .forEach { aid -> extensionArtifactIds << aid }
+
+    Files.list(baseDir.resolve('integration-tests/support'))
+            .filter { p -> Files.isDirectory(p) && Files.exists(p.resolve('pom.xml')) && Files.exists(p.resolve('runtime')) }
+            .map { p -> p.getFileName().toString() }
+            .map { dirName -> 'camel-quarkus-integration-test-support-' + dirName + '-ext' }
+            .forEach { aid -> extensionArtifactIds << aid }
+
+    /* Policy may disappear at some point */
+    final boolean policyExtensionExists = extensionArtifactIds.contains('camel-quarkus-support-policy')
+
+    final Pattern dependenciesPattern = Pattern.compile('([^\n<]*)<dependenc')
+    final Pattern propsPattern = Pattern.compile('([^\n<]*)</properties>')
+    final Pattern rulePattern = Pattern.compile('<mvnd.builder.rule>[^<]*</mvnd.builder.rule>')
+
+    for (updateMvndRuleDir in updateMvndRuleDirs) {
+        Files.list(baseDir.resolve(updateMvndRuleDir))
+                .filter { p -> Files.isDirectory(p) && !'support'.equals(p.getFileName().toString()) }
+                .map { p -> p.resolve('pom.xml') }
+                .filter { p -> Files.exists(p) }
+                .forEach { pomXmlPath ->
+
+                        final Path relativePomPath = baseDir.relativize(pomXmlPath)
+
+                        String pomXmlText = pomXmlPath.toFile().getText('UTF-8')
+
+                        Node pomXmlProject = null
+                        try {
+                            pomXmlProject = new XmlParser().parseText(pomXmlText)
+                        } catch (Exception e) {
+                            throw new RuntimeException('Could not parse ' + relativePomPath, e)
+                        }
+                        final List<String> extensionDependencies = pomXmlProject.dependencies.dependency
+                                .findAll { dep -> "org.apache.camel.quarkus".equals(dep.groupId.text()) && extensionArtifactIds.contains(dep.artifactId.text()) }
+                                .collect { dep -> dep.artifactId.text() + '-deployment' }
+                        if (policyExtensionExists) {
+                            extensionDependencies.add('camel-quarkus-support-policy-deployment')
+                        }
+
+                        final String expectedRule = extensionDependencies
+                                .toSorted()
+                                .join(',')
+
+                        final Matcher depsMatcher = dependenciesPattern.matcher(pomXmlText)
+                        if (depsMatcher.find()) {
+                            final String indent = depsMatcher.group(1)
+                            final int insertionPos = depsMatcher.start()
+
+                            final NodeList props = pomXmlProject.properties
+                            if (props.isEmpty()) {
+                                final String insert = indent + '<properties>\n' +
+                                    indent + indent + '<!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->\n' +
+                                    indent + indent + '<!-- The following rule tells mvnd to build the listed deployment modules before this module. -->\n' +
+                                    indent + indent + '<!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not -->\n' +
+                                    indent + indent + '<!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. -->\n' +
+                                    indent + indent + '<!-- Please update rule whenever you change the dependencies of this module by running -->\n' +
+                                    indent + indent + '<!--     mvn process-resources -Pformat    from the root directory -->\n' +
+                                    indent + indent + '<mvnd.builder.rule>' + expectedRule + '</mvnd.builder.rule>\n' +
+                                    indent + '</properties>\n\n'
+                                pomXmlText = new StringBuilder(pomXmlText).insert(insertionPos, insert).toString()
+                                Files.write(pomXmlPath, pomXmlText.getBytes('UTF-8'))
+                            } else {
+                                final NodeList mvndRule = props.'mvnd.builder.rule'
+                                if (mvndRule.isEmpty()) {
+                                    final Matcher propsMatcher = propsPattern.matcher(pomXmlText)
+                                    if (propsMatcher.find()) {
+                                        final int insPos = propsMatcher.start()
+                                        final String insert = indent + indent + '<mvnd.builder.rule>' + expectedRule + '</mvnd.builder.rule>\n'
+                                        pomXmlText = new StringBuilder(pomXmlText).insert(insPos, insert).toString()
+                                        Files.write(pomXmlPath, pomXmlText.getBytes('UTF-8'))
+                                    } else {
+                                        throw new IllegalStateException('Could not find ' + propsPattern.pattern() + ' in ' + relativePomPath)
+                                    }
+                                } else {
+                                    final String actualRule = mvndRule.get(0).text()
+                                            .split(',')
+                                            .collect{ it -> it.trim() }
+                                            .toSorted()
+                                            .join(',')
+                                    if (!expectedRule.equals(actualRule)) {
+                                        final Matcher ruleMatcher = rulePattern.matcher(pomXmlText)
+                                        if (ruleMatcher.find()) {
+                                            final StringBuffer buf = new StringBuffer(pomXmlText.length() + 128)
+                                            final String replacement = '<mvnd.builder.rule>' + expectedRule + '</mvnd.builder.rule>'
+                                            ruleMatcher.appendReplacement(buf, Matcher.quoteReplacement(replacement))
+                                            ruleMatcher.appendTail(buf)
+                                            Files.write(pomXmlPath, buf.toString().getBytes('UTF-8'))
+                                        } else {
+                                            throw new IllegalStateException('Could not find ' + rulePattern.pattern() + ' in ' + relativePomPath)
+                                        }
+                                    }
+                                }
+                            }
+
+                        } else {
+                            throw new IllegalStateException('Could not find ' + dependenciesPattern.pattern() + ' in ' + relativePomPath)
+                        }
+
+
+
+                }
+    }
+}


[camel-quarkus] 09/34: #670 fix PDF itests in native mode

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 23e36a10c3083be2d899fc8e78e6e03055221445
Author: Freeman Fang <fr...@gmail.com>
AuthorDate: Wed Feb 12 17:23:29 2020 -0500

    #670 fix PDF itests in native mode
---
 extensions/pdf/deployment/pom.xml                              |  4 ++++
 .../camel/quarkus/component/pdf/deployment/PdfProcessor.java   | 10 +++++++---
 extensions/pdf/runtime/pom.xml                                 | 10 ++++++++++
 .../org/apache/camel/quarkus/component/pdf/it/PdfResource.java |  2 +-
 4 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/extensions/pdf/deployment/pom.xml b/extensions/pdf/deployment/pom.xml
index 3b7e9a2..0058ff4 100644
--- a/extensions/pdf/deployment/pom.xml
+++ b/extensions/pdf/deployment/pom.xml
@@ -50,6 +50,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-pdf</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-commons-logging-deployment</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions/pdf/deployment/src/main/java/org/apache/camel/quarkus/component/pdf/deployment/PdfProcessor.java b/extensions/pdf/deployment/src/main/java/org/apache/camel/quarkus/component/pdf/deployment/PdfProcessor.java
index 60568c0..e7bbf14 100644
--- a/extensions/pdf/deployment/src/main/java/org/apache/camel/quarkus/component/pdf/deployment/PdfProcessor.java
+++ b/extensions/pdf/deployment/src/main/java/org/apache/camel/quarkus/component/pdf/deployment/PdfProcessor.java
@@ -16,11 +16,12 @@
  */
 package org.apache.camel.quarkus.component.pdf.deployment;
 
+import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageConfigBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
-import org.apache.camel.component.pdf.PdfConfiguration;
 
 class PdfProcessor {
 
@@ -42,8 +43,11 @@ class PdfProcessor {
     }
 
     @BuildStep
-    ReflectiveClassBuildItem initReflectiveConfiguration() {
-        return new ReflectiveClassBuildItem(true, false, PdfConfiguration.class);
+    NativeImageConfigBuildItem build(BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
+        return NativeImageConfigBuildItem.builder()
+                .addRuntimeInitializedClass("org.apache.pdfbox.pdmodel.font.PDType1Font")
+                .addRuntimeInitializedClass("org.apache.camel.component.pdf.PdfConfiguration")
+                .build();
     }
 
 }
diff --git a/extensions/pdf/runtime/pom.xml b/extensions/pdf/runtime/pom.xml
index a4de961..72da6bc 100644
--- a/extensions/pdf/runtime/pom.xml
+++ b/extensions/pdf/runtime/pom.xml
@@ -53,6 +53,16 @@
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-pdf</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-logging</groupId>
+                    <artifactId>commons-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-support-commons-logging</artifactId>
         </dependency>
     </dependencies>
 
diff --git a/integration-tests/pdf/src/main/java/org/apache/camel/quarkus/component/pdf/it/PdfResource.java b/integration-tests/pdf/src/main/java/org/apache/camel/quarkus/component/pdf/it/PdfResource.java
index ffd6fa8..c8d7bda 100644
--- a/integration-tests/pdf/src/main/java/org/apache/camel/quarkus/component/pdf/it/PdfResource.java
+++ b/integration-tests/pdf/src/main/java/org/apache/camel/quarkus/component/pdf/it/PdfResource.java
@@ -51,7 +51,7 @@ public class PdfResource {
     @Produces(MediaType.APPLICATION_OCTET_STREAM)
     public Response createFromText(String message) throws Exception {
         document = producerTemplate.requestBody(
-                "pdf:create?fontSize=6&pageSize=PAGE_SIZE_A5&font=Courier", message, byte[].class);
+                "pdf:create?fontSize=6&pageSize=PAGE_SIZE_A5", message, byte[].class);
 
         LOG.infof("The PDDocument has been created and contains %d bytes", document.length);
 


[camel-quarkus] 02/34: chore: Remove redundant note related to fileWatcher param in stream extension docs

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 882bb408d632a3be449a43a14d8596757ba71e36
Author: James Netherton <ja...@gmail.com>
AuthorDate: Tue Feb 11 15:19:02 2020 +0000

    chore: Remove redundant note related to fileWatcher param in stream extension docs
---
 docs/modules/ROOT/pages/extensions/stream.adoc | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/docs/modules/ROOT/pages/extensions/stream.adoc b/docs/modules/ROOT/pages/extensions/stream.adoc
index 0da0e4c..eae7814 100644
--- a/docs/modules/ROOT/pages/extensions/stream.adoc
+++ b/docs/modules/ROOT/pages/extensions/stream.adoc
@@ -25,7 +25,3 @@ Please refer to the https://camel.apache.org/components/latest/stream-component.
 * Check the xref:native-mode.adoc#charsets[Character encodings section] of the Native mode guide if you want to use
  non-default encodings for the stream endpoint `encoding` URI parameter.
 
-[NOTE]
-====
-The `fileWatcher` feature of the stream consumer requires GraalVM >= 19.3.0, due to a https://github.com/oracle/graal/issues/1253[bug].
-====


[camel-quarkus] 22/34: Upgarde to Camel 3.1.0 - WIP (xml loader/dumper)

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 8de15a2906c77e4a79fc18bc74d10e6c903c9fc4
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Wed Feb 5 18:06:29 2020 +0100

    Upgarde to Camel 3.1.0 - WIP (xml loader/dumper)
---
 .../camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java       | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
index 1fba95f..c38edc8 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
@@ -19,6 +19,7 @@ package org.apache.camel.quarkus.core;
 import java.io.InputStream;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
 import org.apache.camel.spi.XMLRoutesDefinitionLoader;
 
 public class DisabledXMLRoutesDefinitionLoader implements XMLRoutesDefinitionLoader {
@@ -31,4 +32,9 @@ public class DisabledXMLRoutesDefinitionLoader implements XMLRoutesDefinitionLoa
     public Object loadRestsDefinition(CamelContext context, InputStream inputStream) throws Exception {
         throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
     }
+
+    @Override
+    public <T extends NamedNode> T createModelFromXml(CamelContext context, String xml, Class<T> type) throws Exception {
+        throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
+    }
 }


[camel-quarkus] 04/34: Remove enableJni from integration tests as JNI si always enabled on GraalVM 19.3.1

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 0e5feb3818131a80519d5c77533ac7c951ab1f05
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Tue Feb 11 18:40:17 2020 +0100

    Remove enableJni from integration tests as JNI si always enabled on GraalVM 19.3.1
---
 integration-tests/aws/pom.xml                               | 1 -
 integration-tests/base64/pom.xml                            | 1 -
 integration-tests/bean-validator/pom.xml                    | 1 -
 integration-tests/bean/pom.xml                              | 1 -
 integration-tests/bindy/pom.xml                             | 1 -
 integration-tests/consul/pom.xml                            | 1 -
 integration-tests/controlbus/pom.xml                        | 1 -
 integration-tests/core-impl/pom.xml                         | 1 -
 integration-tests/core-main-xml/pom.xml                     | 1 -
 integration-tests/core-main/pom.xml                         | 1 -
 integration-tests/core/pom.xml                              | 1 -
 integration-tests/csv/pom.xml                               | 1 -
 integration-tests/dataformat/pom.xml                        | 1 -
 integration-tests/dozer/pom.xml                             | 1 -
 integration-tests/exec/pom.xml                              | 1 -
 integration-tests/fhir/pom.xml                              | 1 -
 integration-tests/file/pom.xml                              | 1 -
 integration-tests/ftp/pom.xml                               | 1 -
 integration-tests/http/pom.xml                              | 1 -
 integration-tests/hystrix/pom.xml                           | 1 -
 integration-tests/infinispan/pom.xml                        | 1 -
 integration-tests/jackson/pom.xml                           | 1 -
 integration-tests/jdbc/pom.xml                              | 1 -
 integration-tests/jsonpath/pom.xml                          | 1 -
 integration-tests/kafka/pom.xml                             | 1 -
 integration-tests/mail/pom.xml                              | 1 -
 integration-tests/microprofile/pom.xml                      | 1 -
 integration-tests/mongodb/pom.xml                           | 1 -
 integration-tests/netty/pom.xml                             | 1 -
 integration-tests/olingo4/pom.xml                           | 1 -
 integration-tests/opentracing/pom.xml                       | 1 -
 integration-tests/paho/pom.xml                              | 1 -
 integration-tests/pdf/pom.xml                               | 1 -
 integration-tests/platform-http-engine/pom.xml              | 1 -
 integration-tests/platform-http/pom.xml                     | 1 -
 integration-tests/salesforce/pom.xml                        | 1 -
 integration-tests/scheduler/pom.xml                         | 1 -
 integration-tests/seda/pom.xml                              | 1 -
 integration-tests/servlet/pom.xml                           | 1 -
 integration-tests/sjms/pom.xml                              | 1 -
 integration-tests/slack/pom.xml                             | 1 -
 integration-tests/snakeyaml/pom.xml                         | 1 -
 integration-tests/sql/pom.xml                               | 1 -
 integration-tests/stream/pom.xml                            | 1 -
 integration-tests/tagsoup/pom.xml                           | 1 -
 integration-tests/tarfile/pom.xml                           | 1 -
 integration-tests/twitter/pom.xml                           | 1 -
 integration-tests/validator/pom.xml                         | 1 -
 integration-tests/xslt/pom.xml                              | 1 -
 integration-tests/zipfile/pom.xml                           | 1 -
 tooling/create-extension-templates/integration-test-pom.xml | 1 -
 51 files changed, 51 deletions(-)

diff --git a/integration-tests/aws/pom.xml b/integration-tests/aws/pom.xml
index ed6e34c..19482fe 100644
--- a/integration-tests/aws/pom.xml
+++ b/integration-tests/aws/pom.xml
@@ -156,7 +156,6 @@
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/base64/pom.xml b/integration-tests/base64/pom.xml
index c086814..f987b02 100644
--- a/integration-tests/base64/pom.xml
+++ b/integration-tests/base64/pom.xml
@@ -115,7 +115,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/bean-validator/pom.xml b/integration-tests/bean-validator/pom.xml
index 066d27c..c525317 100644
--- a/integration-tests/bean-validator/pom.xml
+++ b/integration-tests/bean-validator/pom.xml
@@ -115,7 +115,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/bean/pom.xml b/integration-tests/bean/pom.xml
index 738d62e..bfe1aa1 100644
--- a/integration-tests/bean/pom.xml
+++ b/integration-tests/bean/pom.xml
@@ -125,7 +125,6 @@
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>false</enableJni>
                                     <disableReports>true</disableReports>
                                 </configuration>
                             </execution>
diff --git a/integration-tests/bindy/pom.xml b/integration-tests/bindy/pom.xml
index fc7d8ed..d9958db 100644
--- a/integration-tests/bindy/pom.xml
+++ b/integration-tests/bindy/pom.xml
@@ -121,7 +121,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/consul/pom.xml b/integration-tests/consul/pom.xml
index 2392692..e2e6a05 100644
--- a/integration-tests/consul/pom.xml
+++ b/integration-tests/consul/pom.xml
@@ -118,7 +118,6 @@
                                     <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/controlbus/pom.xml b/integration-tests/controlbus/pom.xml
index efb255c..26a8df8 100644
--- a/integration-tests/controlbus/pom.xml
+++ b/integration-tests/controlbus/pom.xml
@@ -123,7 +123,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/core-impl/pom.xml b/integration-tests/core-impl/pom.xml
index 40d415b..7409d0f 100644
--- a/integration-tests/core-impl/pom.xml
+++ b/integration-tests/core-impl/pom.xml
@@ -99,7 +99,6 @@
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>false</enableJni>
                                     <disableReports>true</disableReports>
                                 </configuration>
                             </execution>
diff --git a/integration-tests/core-main-xml/pom.xml b/integration-tests/core-main-xml/pom.xml
index 79ee762..477622a 100644
--- a/integration-tests/core-main-xml/pom.xml
+++ b/integration-tests/core-main-xml/pom.xml
@@ -132,7 +132,6 @@
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>false</enableJni>
                                     <disableReports>true</disableReports>
                                 </configuration>
                             </execution>
diff --git a/integration-tests/core-main/pom.xml b/integration-tests/core-main/pom.xml
index 262c9f1..0a0419d 100644
--- a/integration-tests/core-main/pom.xml
+++ b/integration-tests/core-main/pom.xml
@@ -154,7 +154,6 @@
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>false</enableJni>
                                     <disableReports>true</disableReports>
                                 </configuration>
                             </execution>
diff --git a/integration-tests/core/pom.xml b/integration-tests/core/pom.xml
index d88c6fd..5644c99 100644
--- a/integration-tests/core/pom.xml
+++ b/integration-tests/core/pom.xml
@@ -127,7 +127,6 @@
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>false</enableJni>
                                     <disableReports>true</disableReports>
                                 </configuration>
                             </execution>
diff --git a/integration-tests/csv/pom.xml b/integration-tests/csv/pom.xml
index e5972d2..ebe3f6e 100644
--- a/integration-tests/csv/pom.xml
+++ b/integration-tests/csv/pom.xml
@@ -117,7 +117,6 @@
                                     <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/dataformat/pom.xml b/integration-tests/dataformat/pom.xml
index baf9c19..54160f5 100644
--- a/integration-tests/dataformat/pom.xml
+++ b/integration-tests/dataformat/pom.xml
@@ -119,7 +119,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/dozer/pom.xml b/integration-tests/dozer/pom.xml
index 96a34c8..53752ab 100644
--- a/integration-tests/dozer/pom.xml
+++ b/integration-tests/dozer/pom.xml
@@ -119,7 +119,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/exec/pom.xml b/integration-tests/exec/pom.xml
index 7dc8b4d..5332ea6 100644
--- a/integration-tests/exec/pom.xml
+++ b/integration-tests/exec/pom.xml
@@ -115,7 +115,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/fhir/pom.xml b/integration-tests/fhir/pom.xml
index e6b58dd..f149b8c 100644
--- a/integration-tests/fhir/pom.xml
+++ b/integration-tests/fhir/pom.xml
@@ -143,7 +143,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/file/pom.xml b/integration-tests/file/pom.xml
index 01ac766..d020885 100644
--- a/integration-tests/file/pom.xml
+++ b/integration-tests/file/pom.xml
@@ -111,7 +111,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/ftp/pom.xml b/integration-tests/ftp/pom.xml
index 6434d10..3bc09f1 100644
--- a/integration-tests/ftp/pom.xml
+++ b/integration-tests/ftp/pom.xml
@@ -145,7 +145,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/http/pom.xml b/integration-tests/http/pom.xml
index 82d1685..2b6118d 100644
--- a/integration-tests/http/pom.xml
+++ b/integration-tests/http/pom.xml
@@ -138,7 +138,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/hystrix/pom.xml b/integration-tests/hystrix/pom.xml
index ecc4de6..57b69c9 100644
--- a/integration-tests/hystrix/pom.xml
+++ b/integration-tests/hystrix/pom.xml
@@ -126,7 +126,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/infinispan/pom.xml b/integration-tests/infinispan/pom.xml
index ddb0fdb..5c4139f 100644
--- a/integration-tests/infinispan/pom.xml
+++ b/integration-tests/infinispan/pom.xml
@@ -224,7 +224,6 @@
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>false</enableJni>
                                     <disableReports>true</disableReports>
                                 </configuration>
                             </execution>
diff --git a/integration-tests/jackson/pom.xml b/integration-tests/jackson/pom.xml
index 0e17502..cec72a2 100644
--- a/integration-tests/jackson/pom.xml
+++ b/integration-tests/jackson/pom.xml
@@ -141,7 +141,6 @@
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>false</enableJni>
                                     <disableReports>true</disableReports>
                                 </configuration>
                             </execution>
diff --git a/integration-tests/jdbc/pom.xml b/integration-tests/jdbc/pom.xml
index 971b831..9e5ba03 100644
--- a/integration-tests/jdbc/pom.xml
+++ b/integration-tests/jdbc/pom.xml
@@ -124,7 +124,6 @@
                                 <configuration>
                                     <cleanupServer>true</cleanupServer>
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
-                                    <enableJni>false</enableJni>
                                     <debugBuildProcess>false</debugBuildProcess>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/jsonpath/pom.xml b/integration-tests/jsonpath/pom.xml
index 3863c4b..9f13bdc 100644
--- a/integration-tests/jsonpath/pom.xml
+++ b/integration-tests/jsonpath/pom.xml
@@ -119,7 +119,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/kafka/pom.xml b/integration-tests/kafka/pom.xml
index 49434b1..9347056 100644
--- a/integration-tests/kafka/pom.xml
+++ b/integration-tests/kafka/pom.xml
@@ -140,7 +140,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/mail/pom.xml b/integration-tests/mail/pom.xml
index 758922a..a53f7c1 100644
--- a/integration-tests/mail/pom.xml
+++ b/integration-tests/mail/pom.xml
@@ -137,7 +137,6 @@
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>false</enableJni>
                                     <disableReports>true</disableReports>
                                 </configuration>
                             </execution>
diff --git a/integration-tests/microprofile/pom.xml b/integration-tests/microprofile/pom.xml
index 0e9134c..3409c44 100644
--- a/integration-tests/microprofile/pom.xml
+++ b/integration-tests/microprofile/pom.xml
@@ -121,7 +121,6 @@
                                     <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/mongodb/pom.xml b/integration-tests/mongodb/pom.xml
index d03f438..5804bc3 100644
--- a/integration-tests/mongodb/pom.xml
+++ b/integration-tests/mongodb/pom.xml
@@ -122,7 +122,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/netty/pom.xml b/integration-tests/netty/pom.xml
index 993905b..bbb55f3 100644
--- a/integration-tests/netty/pom.xml
+++ b/integration-tests/netty/pom.xml
@@ -120,7 +120,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/olingo4/pom.xml b/integration-tests/olingo4/pom.xml
index 294b65e..f96f3fc 100644
--- a/integration-tests/olingo4/pom.xml
+++ b/integration-tests/olingo4/pom.xml
@@ -117,7 +117,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/opentracing/pom.xml b/integration-tests/opentracing/pom.xml
index de8e5d6..1297c5a 100644
--- a/integration-tests/opentracing/pom.xml
+++ b/integration-tests/opentracing/pom.xml
@@ -123,7 +123,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/paho/pom.xml b/integration-tests/paho/pom.xml
index 669885d..08586d7 100644
--- a/integration-tests/paho/pom.xml
+++ b/integration-tests/paho/pom.xml
@@ -133,7 +133,6 @@
                                     <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/pdf/pom.xml b/integration-tests/pdf/pom.xml
index d8426ea..bd626a1 100644
--- a/integration-tests/pdf/pom.xml
+++ b/integration-tests/pdf/pom.xml
@@ -104,7 +104,6 @@
                   <enableServer>false</enableServer>
                   <dumpProxies>false</dumpProxies>
                   <graalvmHome>${graalvmHome}</graalvmHome>
-                  <enableJni>true</enableJni>
                   <enableAllSecurityServices>true</enableAllSecurityServices>
                   <disableReports>true</disableReports>
                 </configuration>
diff --git a/integration-tests/platform-http-engine/pom.xml b/integration-tests/platform-http-engine/pom.xml
index 6b4a51a..2c8cd8a 100644
--- a/integration-tests/platform-http-engine/pom.xml
+++ b/integration-tests/platform-http-engine/pom.xml
@@ -121,7 +121,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/platform-http/pom.xml b/integration-tests/platform-http/pom.xml
index ae09986..4a5d267 100644
--- a/integration-tests/platform-http/pom.xml
+++ b/integration-tests/platform-http/pom.xml
@@ -125,7 +125,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/salesforce/pom.xml b/integration-tests/salesforce/pom.xml
index 4e07b7e..da2011c 100644
--- a/integration-tests/salesforce/pom.xml
+++ b/integration-tests/salesforce/pom.xml
@@ -117,7 +117,6 @@
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>true</enableJni>
                                     <disableReports>true</disableReports>
                                 </configuration>
                             </execution>
diff --git a/integration-tests/scheduler/pom.xml b/integration-tests/scheduler/pom.xml
index 0fb2ff7..9bc6162 100644
--- a/integration-tests/scheduler/pom.xml
+++ b/integration-tests/scheduler/pom.xml
@@ -126,7 +126,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/seda/pom.xml b/integration-tests/seda/pom.xml
index 50b4fc1..2da505a 100644
--- a/integration-tests/seda/pom.xml
+++ b/integration-tests/seda/pom.xml
@@ -111,7 +111,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/servlet/pom.xml b/integration-tests/servlet/pom.xml
index 004d05b..47d168d 100644
--- a/integration-tests/servlet/pom.xml
+++ b/integration-tests/servlet/pom.xml
@@ -111,7 +111,6 @@
                                 <configuration>
                                     <cleanupServer>true</cleanupServer>
                                     <enableHttpUrlHandler>true</enableHttpUrlHandler>
-                                    <enableJni>false</enableJni>
                                     <debugBuildProcess>false</debugBuildProcess>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/sjms/pom.xml b/integration-tests/sjms/pom.xml
index cdeb694..3502ae8 100644
--- a/integration-tests/sjms/pom.xml
+++ b/integration-tests/sjms/pom.xml
@@ -171,7 +171,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/slack/pom.xml b/integration-tests/slack/pom.xml
index 40f64da..586df17 100644
--- a/integration-tests/slack/pom.xml
+++ b/integration-tests/slack/pom.xml
@@ -119,7 +119,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/snakeyaml/pom.xml b/integration-tests/snakeyaml/pom.xml
index 56a2805..9c21d6c 100644
--- a/integration-tests/snakeyaml/pom.xml
+++ b/integration-tests/snakeyaml/pom.xml
@@ -115,7 +115,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/sql/pom.xml b/integration-tests/sql/pom.xml
index 4e08aeb..8a072f1 100644
--- a/integration-tests/sql/pom.xml
+++ b/integration-tests/sql/pom.xml
@@ -120,7 +120,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/stream/pom.xml b/integration-tests/stream/pom.xml
index 512a131..366c439 100644
--- a/integration-tests/stream/pom.xml
+++ b/integration-tests/stream/pom.xml
@@ -113,7 +113,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/tagsoup/pom.xml b/integration-tests/tagsoup/pom.xml
index e88a119..3113d43 100644
--- a/integration-tests/tagsoup/pom.xml
+++ b/integration-tests/tagsoup/pom.xml
@@ -123,7 +123,6 @@
                                     <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/tarfile/pom.xml b/integration-tests/tarfile/pom.xml
index 4b25352..de34f7a 100644
--- a/integration-tests/tarfile/pom.xml
+++ b/integration-tests/tarfile/pom.xml
@@ -113,7 +113,6 @@
                                     <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/twitter/pom.xml b/integration-tests/twitter/pom.xml
index 2d232d7..5ad072f 100644
--- a/integration-tests/twitter/pom.xml
+++ b/integration-tests/twitter/pom.xml
@@ -109,7 +109,6 @@
                                     <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/validator/pom.xml b/integration-tests/validator/pom.xml
index 5d0d40d..385bb2e 100644
--- a/integration-tests/validator/pom.xml
+++ b/integration-tests/validator/pom.xml
@@ -117,7 +117,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/xslt/pom.xml b/integration-tests/xslt/pom.xml
index a3656d0..d19b0b1 100644
--- a/integration-tests/xslt/pom.xml
+++ b/integration-tests/xslt/pom.xml
@@ -123,7 +123,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/integration-tests/zipfile/pom.xml b/integration-tests/zipfile/pom.xml
index ff1b49a..b623e69 100644
--- a/integration-tests/zipfile/pom.xml
+++ b/integration-tests/zipfile/pom.xml
@@ -113,7 +113,6 @@
                                     <enableHttpsUrlHandler>true</enableHttpsUrlHandler>
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>
diff --git a/tooling/create-extension-templates/integration-test-pom.xml b/tooling/create-extension-templates/integration-test-pom.xml
index 941052d..834259c 100644
--- a/tooling/create-extension-templates/integration-test-pom.xml
+++ b/tooling/create-extension-templates/integration-test-pom.xml
@@ -113,7 +113,6 @@
                                     <enableServer>false</enableServer>
                                     <dumpProxies>false</dumpProxies>
                                     <graalvmHome>${graalvmHome}</graalvmHome>
-                                    <enableJni>true</enableJni>
                                     <enableAllSecurityServices>true</enableAllSecurityServices>
                                     <disableReports>true</disableReports>
                                 </configuration>


[camel-quarkus] 06/34: Cleanup: Declare quarkus-development-mode-spi as a nonExtensionArtifact

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 878a6d22851a1ec781238856f36191d98dcf66f2
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Mon Feb 10 10:45:59 2020 +0100

    Cleanup: Declare quarkus-development-mode-spi as a nonExtensionArtifact
---
 tooling/scripts/validate-dependencies.groovy | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tooling/scripts/validate-dependencies.groovy b/tooling/scripts/validate-dependencies.groovy
index 6d9cbd6..1328bf4 100644
--- a/tooling/scripts/validate-dependencies.groovy
+++ b/tooling/scripts/validate-dependencies.groovy
@@ -24,7 +24,7 @@ final File pomXml = new File(project.basedir, "pom.xml")
 /* groupIds that contain extensions */
 final Set<String> extensionGroupIds = ["org.apache.camel.quarkus", "io.quarkus"] as Set
 /* artifactIds from groups contained in extensionGroupIds that are not extensions */
-final Set<String> nonExtensionArtifactIds = [] as Set
+final Set<String> nonExtensionArtifactIds = ["quarkus-development-mode-spi"] as Set
 
 final Path treeRootDir = Paths.get(project.properties['camel.quarkus.project.root'])
 final Path relativePomPath = treeRootDir.relativize(pomXml.toPath().normalize())
@@ -86,7 +86,7 @@ if (pomXml.exists()) {
 
         actualRuntimeDeps
             .findAll {
-                !expectedRuntimeDeps.contains(it) && it.second != "quarkus-development-mode-spi"
+                !expectedRuntimeDeps.contains(it)
             }
             .each {
                 parityViolations << "${relativePomPath}  is missing  ${it.first}:${it.second}-deployment  dependency?"


[camel-quarkus] 31/34: Upgarde to Camel 3.1.0 - WIP (bindy)

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 8386dc96af534060cc677152b758bd56e3e1d9f2
Author: James Netherton <ja...@gmail.com>
AuthorDate: Fri Feb 14 08:27:46 2020 +0000

    Upgarde to Camel 3.1.0 - WIP (bindy)
---
 .../org/apache/camel/quarkus/component/bindy/it/BindyTestRoute.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/integration-tests/bindy/src/main/java/org/apache/camel/quarkus/component/bindy/it/BindyTestRoute.java b/integration-tests/bindy/src/main/java/org/apache/camel/quarkus/component/bindy/it/BindyTestRoute.java
index f98c016..2d26c32 100644
--- a/integration-tests/bindy/src/main/java/org/apache/camel/quarkus/component/bindy/it/BindyTestRoute.java
+++ b/integration-tests/bindy/src/main/java/org/apache/camel/quarkus/component/bindy/it/BindyTestRoute.java
@@ -30,13 +30,13 @@ public class BindyTestRoute extends RouteBuilder {
     public void configure() {
         BindyDataFormat bindyCsvDataFormat = new BindyDataFormat();
         bindyCsvDataFormat.setClassType(CsvOrder.class);
-        bindyCsvDataFormat.setType(BindyType.Csv);
+        bindyCsvDataFormat.setType(BindyType.Csv.name());
         from("direct:jsonToCsv").marshal(bindyCsvDataFormat);
         from("direct:csvToJson").unmarshal(bindyCsvDataFormat);
 
         BindyDataFormat bindyFixedLengthDataFormat = new BindyDataFormat();
         bindyFixedLengthDataFormat.setClassType(FixedLengthOrder.class);
-        bindyFixedLengthDataFormat.setType(BindyType.Fixed);
+        bindyFixedLengthDataFormat.setType(BindyType.Fixed.name());
         from("direct:jsonToFixedLength").marshal(bindyFixedLengthDataFormat);
         from("direct:fixedLengthToJson").unmarshal(bindyFixedLengthDataFormat);
 


[camel-quarkus] 25/34: Renamed camel-jaxp to camel-xml-jaxp

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit fec7df2cd1b45218a3d7fe097610ceb8241596b1
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Feb 7 11:28:16 2020 +0100

    Renamed camel-jaxp to camel-xml-jaxp
---
 extensions/core/runtime/pom.xml        |  2 +-
 extensions/support/xml/runtime/pom.xml |  2 +-
 poms/bom/pom.xml                       | 10 +++++-----
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/extensions/core/runtime/pom.xml b/extensions/core/runtime/pom.xml
index f0ab723..f7706ec 100644
--- a/extensions/core/runtime/pom.xml
+++ b/extensions/core/runtime/pom.xml
@@ -80,7 +80,7 @@
             <exclusions>
                 <exclusion>
                     <groupId>org.apache.camel</groupId>
-                    <artifactId>camel-jaxp</artifactId>
+                    <artifactId>camel-xml-jaxp</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
diff --git a/extensions/support/xml/runtime/pom.xml b/extensions/support/xml/runtime/pom.xml
index e72f1ab..5f99efa 100644
--- a/extensions/support/xml/runtime/pom.xml
+++ b/extensions/support/xml/runtime/pom.xml
@@ -52,7 +52,7 @@
 
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-jaxp</artifactId>
+            <artifactId>camel-xml-jaxp</artifactId>
         </dependency>
     </dependencies>
 
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 8e74d06..c3964fb 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -305,11 +305,6 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
-                <artifactId>camel-jaxp</artifactId>
-                <version>${camel.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-jdbc</artifactId>
                 <version>${camel.version}</version>
             </dependency>
@@ -541,6 +536,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-xml-jaxp</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-xslt</artifactId>
                 <version>${camel.version}</version>
             </dependency>


[camel-quarkus] 33/34: Upgarde to Camel 3.1.0 - WIP (FastTypeConverter)

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit c1451c7a89b205430dd195c4b707f5938ba43227
Author: James Netherton <ja...@gmail.com>
AuthorDate: Mon Feb 17 09:32:03 2020 +0000

    Upgarde to Camel 3.1.0 - WIP (FastTypeConverter)
---
 .../main/java/org/apache/camel/quarkus/core/FastTypeConverter.java   | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
index 7ed602b..178250f 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
@@ -40,9 +40,4 @@ public class FastTypeConverter extends DefaultTypeConverter {
     public void loadCoreAndFastTypeConverters() throws Exception {
         throw new UnsupportedOperationException();
     }
-
-    @Override
-    protected void initTypeConverterLoaders() {
-        // no-op
-    }
 }


[camel-quarkus] 03/34: Add olingo4 itest to project list

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 4b1d7da25b1d61f5bab621bca2d3e9d2ef0b761a
Author: James Netherton <ja...@gmail.com>
AuthorDate: Tue Feb 11 18:31:57 2020 +0000

    Add olingo4 itest to project list
---
 .github/workflows/pr-build.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml
index f36c6f2..3e4843a 100644
--- a/.github/workflows/pr-build.yaml
+++ b/.github/workflows/pr-build.yaml
@@ -366,6 +366,7 @@ jobs:
             -pl :camel-quarkus-integration-test-ftp \
             -pl :camel-quarkus-integration-test-infinispan \
             -pl :camel-quarkus-integration-test-mail \
+            -pl :camel-quarkus-integration-test-olingo4 \
             -pl :camel-quarkus-integration-test-pdf \
             -pl :camel-quarkus-integration-test-stream \
             -pl :camel-quarkus-integration-test-tarfile \


[camel-quarkus] 21/34: Upgarde to Camel 3.1.0 - WIP (xml loader/dumper)

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 6dac73aef63a103aad2816f9b5844845d8bbd8d7
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Tue Feb 4 17:57:53 2020 +0100

    Upgarde to Camel 3.1.0 - WIP (xml loader/dumper)
---
 .../component/xml/deployment/XmlProcessor.java     |  9 +++++-
 extensions/core-xml/runtime/pom.xml                |  4 +++
 .../camel/quarkus/component/xml/XmlRecorder.java   | 27 ++++++++++++++--
 .../quarkus/core/deployment/BuildProcessor.java    | 13 ++++++--
 .../CamelModelToXMLDumperBuildItem.java}           | 22 +++++++------
 .../deployment/CamelRoutesLoaderBuildItems.java    | 10 +++---
 .../camel/quarkus/core/CamelMainRecorder.java      |  3 +-
 .../apache/camel/quarkus/core/CamelRecorder.java   | 23 +++++++++-----
 .../camel/quarkus/core/CamelRoutesCollector.java   | 17 +++++++---
 .../quarkus/core/DisabledModelToXMLDumper.java}    | 23 ++++++--------
 ...java => DisabledXMLRoutesDefinitionLoader.java} | 11 +++----
 .../camel/quarkus/core/FastCamelContext.java       | 36 ++++++++++++----------
 .../org/apache/camel/quarkus/core/FastModel.java   |  6 +---
 .../apache/camel/quarkus/core/CamelServlet.java    |  5 +++
 .../org/apache/camel/quarkus/core/CamelTest.java   |  5 +++
 .../apache/camel/quarkus/core/CamelServlet.java    |  2 ++
 .../org/apache/camel/quarkus/core/CamelTest.java   |  5 ++-
 poms/bom/pom.xml                                   | 11 +++++++
 tooling/package-maven-plugin/pom.xml               | 10 ++++++
 19 files changed, 165 insertions(+), 77 deletions(-)

diff --git a/extensions/core-xml/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java b/extensions/core-xml/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java
index 07329c8..19b096b 100644
--- a/extensions/core-xml/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java
+++ b/extensions/core-xml/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java
@@ -24,6 +24,7 @@ import io.quarkus.deployment.builditem.FeatureBuildItem;
 import io.quarkus.jaxb.deployment.JaxbFileRootBuildItem;
 import org.apache.camel.quarkus.component.xml.XmlRecorder;
 import org.apache.camel.quarkus.core.deployment.CamelModelJAXBContextFactoryBuildItem;
+import org.apache.camel.quarkus.core.deployment.CamelModelToXMLDumperBuildItem;
 import org.apache.camel.quarkus.core.deployment.CamelRoutesLoaderBuildItems;
 import org.apache.camel.quarkus.core.deployment.CamelSupport;
 import org.apache.camel.quarkus.support.common.CamelCapabilities;
@@ -56,7 +57,13 @@ class XmlProcessor {
     @BuildStep
     @Record(value = ExecutionTime.STATIC_INIT, optional = true)
     CamelRoutesLoaderBuildItems.Xml xmlLoader(XmlRecorder recorder) {
-        return new CamelRoutesLoaderBuildItems.Xml(recorder.newDefaultXmlLoader());
+        return new CamelRoutesLoaderBuildItems.Xml(recorder.newJaxbXMLRoutesDefinitionLoader());
+    }
+
+    @BuildStep
+    @Record(value = ExecutionTime.STATIC_INIT, optional = true)
+    CamelModelToXMLDumperBuildItem xmlModelDumper(XmlRecorder recorder) {
+        return new CamelModelToXMLDumperBuildItem(recorder.newJaxbModelToXMLDumper());
     }
 
     @BuildStep
diff --git a/extensions/core-xml/runtime/pom.xml b/extensions/core-xml/runtime/pom.xml
index aac5cda..f61467d 100644
--- a/extensions/core-xml/runtime/pom.xml
+++ b/extensions/core-xml/runtime/pom.xml
@@ -48,6 +48,10 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-xml-jaxb</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
diff --git a/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java b/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java
index 0170587..1469086 100644
--- a/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java
+++ b/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java
@@ -24,12 +24,15 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.impl.DefaultModelJAXBContextFactory;
 import org.apache.camel.model.ValidateDefinition;
 import org.apache.camel.model.validator.PredicateValidatorDefinition;
-import org.apache.camel.quarkus.core.XmlRoutesLoader;
 import org.apache.camel.reifier.ProcessorReifier;
 import org.apache.camel.reifier.ValidateReifier;
 import org.apache.camel.reifier.validator.PredicateValidatorReifier;
 import org.apache.camel.reifier.validator.ValidatorReifier;
 import org.apache.camel.spi.ModelJAXBContextFactory;
+import org.apache.camel.spi.ModelToXMLDumper;
+import org.apache.camel.spi.XMLRoutesDefinitionLoader;
+import org.apache.camel.xml.jaxb.JaxbModelToXMLDumper;
+import org.apache.camel.xml.jaxb.JaxbXMLRoutesDefinitionLoader;
 import org.graalvm.nativeimage.ImageInfo;
 
 @Recorder
@@ -47,12 +50,30 @@ public class XmlRecorder {
         return new RuntimeValue<>(factory);
     }
 
-    public RuntimeValue<XmlRoutesLoader> newDefaultXmlLoader() {
-        return new RuntimeValue<>(new DefaultXmlRoutesLoader());
+    public RuntimeValue<XMLRoutesDefinitionLoader> newJaxbXMLRoutesDefinitionLoader() {
+        return new RuntimeValue<>(new JaxbXMLRoutesDefinitionLoader());
+    }
+
+    public RuntimeValue<ModelToXMLDumper> newJaxbModelToXMLDumper() {
+        return new RuntimeValue<>(new JaxbModelToXMLDumper());
     }
 
     public void initXmlReifiers() {
         ProcessorReifier.registerReifier(ValidateDefinition.class, ValidateReifier::new);
         ValidatorReifier.registerReifier(PredicateValidatorDefinition.class, PredicateValidatorReifier::new);
     }
+
+    /*
+    
+    
+    @Override
+    protected XMLRoutesDefinitionLoader createXMLRoutesDefinitionLoader() {
+        return xmlLoader;
+    }
+    
+    @Override
+    protected ModelToXMLDumper createModelToXMLDumper() {
+        return modelDumper;
+    }
+     */
 }
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
index 2672806..1783ab3 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
@@ -334,8 +334,15 @@ class BuildProcessor {
         @Overridable
         @BuildStep
         @Record(value = ExecutionTime.STATIC_INIT, optional = true)
-        public CamelRoutesLoaderBuildItems.Xml createXmlLoader(CamelRecorder recorder) {
-            return new CamelRoutesLoaderBuildItems.Xml(recorder.newDisabledXmlRoutesLoader());
+        public CamelRoutesLoaderBuildItems.Xml createXMLRoutesLoader(CamelRecorder recorder) {
+            return new CamelRoutesLoaderBuildItems.Xml(recorder.newDisabledXMLRoutesDefinitionLoader());
+        }
+
+        @Overridable
+        @BuildStep
+        @Record(value = ExecutionTime.STATIC_INIT, optional = true)
+        public CamelModelToXMLDumperBuildItem createModelToXMLDumper(CamelRecorder recorder) {
+            return new CamelModelToXMLDumperBuildItem(recorder.newDisabledModelToXMLDumper());
         }
 
         @BuildStep
@@ -355,6 +362,7 @@ class BuildProcessor {
                 CamelTypeConverterRegistryBuildItem typeConverterRegistry,
                 CamelModelJAXBContextFactoryBuildItem contextFactory,
                 CamelRoutesLoaderBuildItems.Xml xmlLoader,
+                CamelModelToXMLDumperBuildItem modelDumper,
                 CamelFactoryFinderResolverBuildItem factoryFinderResolverBuildItem,
                 BeanContainerBuildItem beanContainer,
                 CamelConfig config) {
@@ -364,6 +372,7 @@ class BuildProcessor {
                     typeConverterRegistry.getRegistry(),
                     contextFactory.getContextFactory(),
                     xmlLoader.getLoader(),
+                    modelDumper.getValue(),
                     factoryFinderResolverBuildItem.getFactoryFinderResolver(),
                     beanContainer.getValue(),
                     CamelSupport.getCamelVersion(),
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlRoutesLoader.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelModelToXMLDumperBuildItem.java
similarity index 61%
rename from extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlRoutesLoader.java
rename to extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelModelToXMLDumperBuildItem.java
index 36a2c1d..0bab4db 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlRoutesLoader.java
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelModelToXMLDumperBuildItem.java
@@ -14,18 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.core;
+package org.apache.camel.quarkus.core.deployment;
 
-import java.io.InputStream;
+import io.quarkus.builder.item.SimpleBuildItem;
+import io.quarkus.runtime.RuntimeValue;
+import org.apache.camel.spi.ModelToXMLDumper;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.rest.RestsDefinition;
+public final class CamelModelToXMLDumperBuildItem extends SimpleBuildItem {
+    private final RuntimeValue<ModelToXMLDumper> value;
 
-public interface XmlRoutesLoader {
-
-    RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception;
-
-    RestsDefinition loadRestsDefinition(CamelContext context, InputStream is) throws Exception;
+    public CamelModelToXMLDumperBuildItem(RuntimeValue<ModelToXMLDumper> value) {
+        this.value = value;
+    }
 
+    public RuntimeValue<ModelToXMLDumper> getValue() {
+        return value;
+    }
 }
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRoutesLoaderBuildItems.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRoutesLoaderBuildItems.java
index 815cff7..5638bbc 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRoutesLoaderBuildItems.java
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRoutesLoaderBuildItems.java
@@ -19,7 +19,7 @@ package org.apache.camel.quarkus.core.deployment;
 import io.quarkus.builder.item.SimpleBuildItem;
 import io.quarkus.runtime.RuntimeValue;
 import org.apache.camel.quarkus.core.RegistryRoutesLoader;
-import org.apache.camel.quarkus.core.XmlRoutesLoader;
+import org.apache.camel.spi.XMLRoutesDefinitionLoader;
 
 public final class CamelRoutesLoaderBuildItems {
     private CamelRoutesLoaderBuildItems() {
@@ -41,16 +41,16 @@ public final class CamelRoutesLoaderBuildItems {
     }
 
     /**
-     * Holds the {@link XmlRoutesLoader} instance.
+     * Holds the {@link XMLRoutesDefinitionLoader} instance.
      */
     public static final class Xml extends SimpleBuildItem {
-        private final RuntimeValue<XmlRoutesLoader> value;
+        private final RuntimeValue<XMLRoutesDefinitionLoader> value;
 
-        public Xml(RuntimeValue<XmlRoutesLoader> value) {
+        public Xml(RuntimeValue<XMLRoutesDefinitionLoader> value) {
             this.value = value;
         }
 
-        public RuntimeValue<XmlRoutesLoader> getLoader() {
+        public RuntimeValue<XMLRoutesDefinitionLoader> getLoader() {
             return value;
         }
     }
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
index 68de3ea..ec0d238 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
@@ -27,6 +27,7 @@ import org.apache.camel.impl.engine.DefaultReactiveExecutor;
 import org.apache.camel.main.MainListener;
 import org.apache.camel.main.RoutesCollector;
 import org.apache.camel.spi.ReactiveExecutor;
+import org.apache.camel.spi.XMLRoutesDefinitionLoader;
 
 @Recorder
 public class CamelMainRecorder {
@@ -101,7 +102,7 @@ public class CamelMainRecorder {
 
     public RuntimeValue<RoutesCollector> newRoutesCollector(
             RuntimeValue<RegistryRoutesLoader> registryRoutesLoader,
-            RuntimeValue<XmlRoutesLoader> xmlRoutesLoader) {
+            RuntimeValue<XMLRoutesDefinitionLoader> xmlRoutesLoader) {
 
         return new RuntimeValue<>(new CamelRoutesCollector(registryRoutesLoader.getValue(), xmlRoutesLoader.getValue()));
     }
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
index db05027..e37ca47 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
@@ -28,9 +28,11 @@ import org.apache.camel.reifier.validator.ValidatorReifier;
 import org.apache.camel.runtimecatalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.FactoryFinderResolver;
 import org.apache.camel.spi.ModelJAXBContextFactory;
+import org.apache.camel.spi.ModelToXMLDumper;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.TypeConverterLoader;
 import org.apache.camel.spi.TypeConverterRegistry;
+import org.apache.camel.spi.XMLRoutesDefinitionLoader;
 
 @Recorder
 public class CamelRecorder {
@@ -60,21 +62,24 @@ public class CamelRecorder {
             RuntimeValue<Registry> registry,
             RuntimeValue<TypeConverterRegistry> typeConverterRegistry,
             RuntimeValue<ModelJAXBContextFactory> contextFactory,
-            RuntimeValue<XmlRoutesLoader> xmlLoader,
+            RuntimeValue<XMLRoutesDefinitionLoader> xmlLoader,
+            RuntimeValue<ModelToXMLDumper> xmlModelDumper,
             RuntimeValue<FactoryFinderResolver> factoryFinderResolver,
             BeanContainer beanContainer,
             String version,
             CamelConfig config) {
 
-        FastCamelContext context = new FastCamelContext(factoryFinderResolver.getValue(), version);
+        FastCamelContext context = new FastCamelContext(
+                factoryFinderResolver.getValue(),
+                version,
+                xmlLoader.getValue(),
+                xmlModelDumper.getValue());
+
         context.setDefaultExtension(RuntimeCamelCatalog.class, () -> new CamelRuntimeCatalog(context, config.runtimeCatalog));
         context.setRegistry(registry.getValue());
         context.setTypeConverterRegistry(typeConverterRegistry.getValue());
         context.setLoadTypeConverters(false);
         context.setModelJAXBContextFactory(contextFactory.getValue());
-
-        FastModel model = new FastModel(context, xmlLoader.getValue());
-        context.setModel(model);
         context.init();
 
         // register to the container
@@ -122,8 +127,12 @@ public class CamelRecorder {
         return new RuntimeValue<>(new DisabledModelJAXBContextFactory());
     }
 
-    public RuntimeValue<XmlRoutesLoader> newDisabledXmlRoutesLoader() {
-        return new RuntimeValue<>(new DisabledXmlRoutesLoader());
+    public RuntimeValue<XMLRoutesDefinitionLoader> newDisabledXMLRoutesDefinitionLoader() {
+        return new RuntimeValue<>(new DisabledXMLRoutesDefinitionLoader());
+    }
+
+    public RuntimeValue<ModelToXMLDumper> newDisabledModelToXMLDumper() {
+        return new RuntimeValue<>(new DisabledModelToXMLDumper());
     }
 
     public RuntimeValue<RegistryRoutesLoader> newDefaultRegistryRoutesLoader() {
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRoutesCollector.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRoutesCollector.java
index 8f63cea..0c63b2a 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRoutesCollector.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRoutesCollector.java
@@ -29,6 +29,7 @@ import org.apache.camel.main.RoutesCollector;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
 import org.apache.camel.spi.PackageScanResourceResolver;
+import org.apache.camel.spi.XMLRoutesDefinitionLoader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -36,9 +37,9 @@ public class CamelRoutesCollector implements RoutesCollector {
     private static final Logger LOGGER = LoggerFactory.getLogger(CamelRoutesCollector.class);
 
     private final RegistryRoutesLoader registryRoutesLoader;
-    private final XmlRoutesLoader xmlRoutesLoader;
+    private final XMLRoutesDefinitionLoader xmlRoutesLoader;
 
-    public CamelRoutesCollector(RegistryRoutesLoader registryRoutesLoader, XmlRoutesLoader xmlRoutesLoader) {
+    public CamelRoutesCollector(RegistryRoutesLoader registryRoutesLoader, XMLRoutesDefinitionLoader xmlRoutesLoader) {
         this.registryRoutesLoader = registryRoutesLoader;
         this.xmlRoutesLoader = xmlRoutesLoader;
     }
@@ -47,7 +48,7 @@ public class CamelRoutesCollector implements RoutesCollector {
         return registryRoutesLoader;
     }
 
-    public XmlRoutesLoader getXmlRoutesLoader() {
+    public XMLRoutesDefinitionLoader getXmlRoutesLoader() {
         return xmlRoutesLoader;
     }
 
@@ -69,7 +70,10 @@ public class CamelRoutesCollector implements RoutesCollector {
             LOGGER.info("Loading additional Camel XML routes from: {}", part);
             try {
                 for (InputStream is : resolver.findResources(part)) {
-                    answer.add(xmlRoutesLoader.loadRoutesDefinition(camelContext, is));
+                    Object definition = xmlRoutesLoader.loadRoutesDefinition(camelContext, is);
+                    if (definition instanceof RoutesDefinition) {
+                        answer.add((RoutesDefinition) definition);
+                    }
                 }
             } catch (FileNotFoundException e) {
                 LOGGER.debug("No XML routes found in {}. Skipping XML routes detection.", part);
@@ -90,7 +94,10 @@ public class CamelRoutesCollector implements RoutesCollector {
             LOGGER.info("Loading additional Camel XML rests from: {}", part);
             try {
                 for (InputStream is : resolver.findResources(part)) {
-                    answer.add(xmlRoutesLoader.loadRestsDefinition(camelContext, is));
+                    Object definition = xmlRoutesLoader.loadRestsDefinition(camelContext, is);
+                    if (definition instanceof RestsDefinition) {
+                        answer.add((RestsDefinition) definition);
+                    }
                 }
             } catch (FileNotFoundException e) {
                 LOGGER.debug("No XML rests found in {}. Skipping XML rests detection.", part);
diff --git a/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlRoutesLoader.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledModelToXMLDumper.java
similarity index 56%
rename from extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlRoutesLoader.java
rename to extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledModelToXMLDumper.java
index c9e1455..94f2f03 100644
--- a/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlRoutesLoader.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledModelToXMLDumper.java
@@ -14,26 +14,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.xml;
-
-import java.io.InputStream;
+package org.apache.camel.quarkus.core;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.model.ModelHelper;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.rest.RestsDefinition;
-import org.apache.camel.quarkus.core.XmlRoutesLoader;
-
-public class DefaultXmlRoutesLoader implements XmlRoutesLoader {
+import org.apache.camel.NamedNode;
+import org.apache.camel.spi.ModelToXMLDumper;
 
+public class DisabledModelToXMLDumper implements ModelToXMLDumper {
     @Override
-    public RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream is) throws Exception {
-        return ModelHelper.loadRoutesDefinition(context, is);
+    public String dumpModelAsXml(CamelContext context, NamedNode definition) throws Exception {
+        throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
     }
 
     @Override
-    public RestsDefinition loadRestsDefinition(CamelContext context, InputStream is) throws Exception {
-        return ModelHelper.loadRestsDefinition(context, is);
+    public String dumpModelAsXml(CamelContext context, NamedNode definition, boolean resolvePlaceholders,
+            boolean resolveDelegateEndpoints) throws Exception {
+        throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
     }
-
 }
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesLoader.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
similarity index 74%
rename from extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesLoader.java
rename to extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
index b470294..1fba95f 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesLoader.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
@@ -19,19 +19,16 @@ package org.apache.camel.quarkus.core;
 import java.io.InputStream;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.rest.RestsDefinition;
-
-public class DisabledXmlRoutesLoader implements XmlRoutesLoader {
+import org.apache.camel.spi.XMLRoutesDefinitionLoader;
 
+public class DisabledXMLRoutesDefinitionLoader implements XMLRoutesDefinitionLoader {
     @Override
-    public RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception {
+    public Object loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception {
         throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
     }
 
     @Override
-    public RestsDefinition loadRestsDefinition(CamelContext context, InputStream is) throws Exception {
+    public Object loadRestsDefinition(CamelContext context, InputStream inputStream) throws Exception {
         throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
     }
-
 }
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index 225d760..f0233b6 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -32,7 +32,6 @@ import org.apache.camel.component.microprofile.config.CamelMicroProfilePropertie
 import org.apache.camel.health.HealthCheckRegistry;
 import org.apache.camel.impl.DefaultExecutorServiceManager;
 import org.apache.camel.impl.engine.AbstractCamelContext;
-import org.apache.camel.impl.engine.BaseRouteService;
 import org.apache.camel.impl.engine.BeanProcessorFactoryResolver;
 import org.apache.camel.impl.engine.BeanProxyFactoryResolver;
 import org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager;
@@ -66,7 +65,6 @@ import org.apache.camel.impl.transformer.TransformerKey;
 import org.apache.camel.impl.validator.ValidatorKey;
 import org.apache.camel.model.Model;
 import org.apache.camel.processor.MulticastProcessor;
-import org.apache.camel.quarkus.core.FastModel.FastRouteContext;
 import org.apache.camel.spi.AsyncProcessorAwaitManager;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.BeanProcessorFactory;
@@ -88,6 +86,7 @@ import org.apache.camel.spi.LanguageResolver;
 import org.apache.camel.spi.ManagementNameStrategy;
 import org.apache.camel.spi.MessageHistoryFactory;
 import org.apache.camel.spi.ModelJAXBContextFactory;
+import org.apache.camel.spi.ModelToXMLDumper;
 import org.apache.camel.spi.NodeIdFactory;
 import org.apache.camel.spi.PackageScanClassResolver;
 import org.apache.camel.spi.PackageScanResourceResolver;
@@ -105,35 +104,31 @@ import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.spi.UnitOfWorkFactory;
 import org.apache.camel.spi.UuidGenerator;
 import org.apache.camel.spi.ValidatorRegistry;
+import org.apache.camel.spi.XMLRoutesDefinitionLoader;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.util.IOHelper;
 
 public class FastCamelContext extends AbstractCamelContext implements CatalogCamelContext {
-    private Model model;
+    private final Model model;
     private final String version;
+    private final XMLRoutesDefinitionLoader xmlLoader;
+    private final ModelToXMLDumper modelDumper;
 
-    public FastCamelContext(FactoryFinderResolver factoryFinderResolver, String version) {
+    public FastCamelContext(FactoryFinderResolver factoryFinderResolver, String version, XMLRoutesDefinitionLoader xmlLoader,
+            ModelToXMLDumper modelDumper) {
         super(false);
 
         this.version = version;
+        this.xmlLoader = xmlLoader;
+        this.modelDumper = modelDumper;
+        this.model = new FastModel(this);
 
         setFactoryFinderResolver(factoryFinderResolver);
         setTracing(Boolean.FALSE);
         setDebugging(Boolean.FALSE);
         setMessageHistory(Boolean.FALSE);
-
         setDefaultExtension(HealthCheckRegistry.class, DefaultHealthCheckRegistry::new);
-    }
-
-    public void setModel(Model model) {
-        this.model = model;
-    }
 
-    public void clearModel() {
-        this.model = null;
-        for (BaseRouteService rs : getRouteServices().values()) {
-            ((FastRouteContext) rs.getRouteContext()).clearModel();
-        }
     }
 
     @Override
@@ -315,6 +310,16 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
+    protected XMLRoutesDefinitionLoader createXMLRoutesDefinitionLoader() {
+        return xmlLoader;
+    }
+
+    @Override
+    protected ModelToXMLDumper createModelToXMLDumper() {
+        return modelDumper;
+    }
+
+    @Override
     protected Tracer createTracer() {
         Tracer tracer = null;
         if (getRegistry() != null) {
@@ -473,7 +478,6 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
 
         if (inputStream != null) {
             try {
-                log.debug("loading scheme {} ", path);
                 return IOHelper.loadText(inputStream);
             } finally {
                 IOHelper.close(inputStream);
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
index 182f252..c619f11 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
@@ -40,12 +40,8 @@ import org.apache.camel.reifier.RouteReifier;
 import org.apache.camel.support.CamelContextHelper;
 
 public class FastModel extends BaseModel {
-
-    private final XmlRoutesLoader xmlLoader;
-
-    public FastModel(CamelContext camelContext, XmlRoutesLoader xmlLoader) {
+    public FastModel(CamelContext camelContext) {
         super(camelContext);
-        this.xmlLoader = xmlLoader;
     }
 
     @Override
diff --git a/integration-tests/core-main-xml/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java b/integration-tests/core-main-xml/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
index bab7f56..d7052bb 100644
--- a/integration-tests/core-main-xml/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
+++ b/integration-tests/core-main-xml/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
@@ -28,6 +28,7 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.Registry;
 
 @Path("/test")
@@ -44,6 +45,8 @@ public class CamelServlet {
     @GET
     @Produces(MediaType.APPLICATION_JSON)
     public JsonObject describeMain() {
+        final ExtendedCamelContext camelContext = main.getCamelContext().adapt(ExtendedCamelContext.class);
+
         JsonArrayBuilder listeners = Json.createArrayBuilder();
         main.getMainListeners().forEach(listener -> listeners.add(listener.getClass().getName()));
 
@@ -62,6 +65,8 @@ public class CamelServlet {
         }
 
         return Json.createObjectBuilder()
+                .add("xml-loader", camelContext.getXMLRoutesDefinitionLoader().getClass().getName())
+                .add("xml-model-dumper", camelContext.getModelToXMLDumper().getClass().getName())
                 .add("routes-collector", collector)
                 .add("listeners", listeners)
                 .add("routeBuilders", routeBuilders)
diff --git a/integration-tests/core-main-xml/src/test/java/org/apache/camel/quarkus/core/CamelTest.java b/integration-tests/core-main-xml/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
index b6bc1eb..d3fd12d 100644
--- a/integration-tests/core-main-xml/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
+++ b/integration-tests/core-main-xml/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
@@ -21,6 +21,8 @@ import javax.ws.rs.core.MediaType;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.path.json.JsonPath;
+import org.apache.camel.xml.jaxb.JaxbModelToXMLDumper;
+import org.apache.camel.xml.jaxb.JaxbXMLRoutesDefinitionLoader;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -38,6 +40,9 @@ public class CamelTest {
                 .body()
                 .jsonPath();
 
+        assertThat(p.getString("xml-loader")).isEqualTo(JaxbXMLRoutesDefinitionLoader.class.getName());
+        assertThat(p.getString("xml-model-dumper")).isEqualTo(JaxbModelToXMLDumper.class.getName());
+
         assertThat(p.getList("routeBuilders", String.class))
                 .isEmpty();
         assertThat(p.getList("routes", String.class))
diff --git a/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java b/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
index b243845..de0c8ca 100644
--- a/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
+++ b/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
@@ -147,6 +147,8 @@ public class CamelServlet {
         }
 
         return Json.createObjectBuilder()
+                .add("xml-loader", camelContext.getXMLRoutesDefinitionLoader().getClass().getName())
+                .add("xml-model-dumper", camelContext.getModelToXMLDumper().getClass().getName())
                 .add("routes-collector", collector)
                 .add("listeners", listeners)
                 .add("routeBuilders", routeBuilders)
diff --git a/integration-tests/core-main/src/test/java/org/apache/camel/quarkus/core/CamelTest.java b/integration-tests/core-main/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
index a9c5892..ab7e3d4 100644
--- a/integration-tests/core-main/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
+++ b/integration-tests/core-main/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
@@ -77,9 +77,12 @@ public class CamelTest {
                 .body()
                 .jsonPath();
 
+        assertThat(p.getString("xml-loader")).isEqualTo(DisabledXMLRoutesDefinitionLoader.class.getName());
+        assertThat(p.getString("xml-model-dumper")).isEqualTo(DisabledModelToXMLDumper.class.getName());
+
         assertThat(p.getString("routes-collector.type")).isEqualTo(CamelRoutesCollector.class.getName());
         assertThat(p.getString("routes-collector.type-registry")).isEqualTo(RegistryRoutesLoaders.Default.class.getName());
-        assertThat(p.getString("routes-collector.type-xml")).isEqualTo(DisabledXmlRoutesLoader.class.getName());
+        assertThat(p.getString("routes-collector.type-xml")).isEqualTo(DisabledXMLRoutesDefinitionLoader.class.getName());
 
         assertThat(p.getList("listeners", String.class))
                 .containsOnly(CamelMainEventDispatcher.class.getName(), SupportListener.class.getName());
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index f849a11..b699120 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -332,6 +332,12 @@
                 <groupId>org.apache.camel</groupId>
                 <artifactId>camel-main</artifactId>
                 <version>${camel.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.apache.camel</groupId>
+                        <artifactId>camel-headersmap</artifactId>
+                    </exclusion>
+                </exclusions>
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
@@ -520,6 +526,11 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
+                <artifactId>camel-xml-jaxb</artifactId>
+                <version>${camel.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-xslt</artifactId>
                 <version>${camel.version}</version>
             </dependency>
diff --git a/tooling/package-maven-plugin/pom.xml b/tooling/package-maven-plugin/pom.xml
index fc0eb30..d8d07f2 100644
--- a/tooling/package-maven-plugin/pom.xml
+++ b/tooling/package-maven-plugin/pom.xml
@@ -91,6 +91,10 @@
                     <artifactId>commons-io</artifactId>
                 </exclusion>
                 <exclusion>
+                    <groupId>org.apache.commons</groupId>
+                    <artifactId>commons-lang3</artifactId>
+                </exclusion>
+                <exclusion>
                     <groupId>com.google.guava</groupId>
                     <artifactId>guava</artifactId>
                 </exclusion>
@@ -99,6 +103,12 @@
         <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-artifact</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.commons</groupId>
+                    <artifactId>commons-lang3</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.apache.maven</groupId>