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/08/17 08:00:18 UTC

[camel-quarkus] branch camel-master updated (85cb9c2 -> b752bf0)

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.


 discard 85cb9c2  CAMEL-14297: Introduce RouteBuilderConfigurer. Check route names in test, thanks Peter.
 discard b8cb6f4  CAMEL-14297: Introduce RouteBuilderConfigurer. Thanks Luca
 discard fd60bbc  CAMEL-14297: Introduce RouteBuilderConfigurer.
    omit 9efdccd  Fixes health example #1500
    omit 61760ce  Upgrade to Camel 3.5.0-SNAPSHOT
     add 078a668  Improve the Release guide
     add b1e5d89  Add test support module for executing quarkus runners
     add 2858b94  Add master extension
     add a17e808  Add extension for smallrye-reactive-messaging-camel
     add 48c795c  The next 1.1.0
     add 4d8ad7b  Collapse all 1.0.0-M* and 1.0.0-CR* version labels to just 1.0.0
     add 349d9a9  Set antora's camel-quarkus-last-release to 1.0.0
     add 5f816a0  Fixed the VerifyError in the health example fixes #1517
     add 87246b0  Fixed minor issues in examples doc
     add 3e7862d  Completed bean itests with an @InjectMock test
     add 8644281  Fixed typos
     add 6f7f29b  Avoid purging artifacts for builds that may be in progress
     new 5325104  Upgrade to Camel 3.5.0-SNAPSHOT
     new b752bf0  CAMEL-14297: Introduce RouteBuilderConfigurer.

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (85cb9c2)
            \
             N -- N -- N   refs/heads/camel-master (b752bf0)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 2 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/purge-stale-artifacts-cron.yaml  |   3 +-
 docs/antora.yml                                    |   2 +-
 .../pages/contributor-guide/release-guide.adoc     |  39 ++-
 docs/modules/ROOT/pages/extensions/activemq.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/ahc-ws.adoc     |   2 +-
 docs/modules/ROOT/pages/extensions/ahc.adoc        |   2 +-
 docs/modules/ROOT/pages/extensions/amqp.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/avro-rpc.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/avro.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/aws-ec2.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/aws-ecs.adoc    |   2 +-
 .../modules/ROOT/pages/extensions/aws-kinesis.adoc |   2 +-
 docs/modules/ROOT/pages/extensions/aws-kms.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/aws-lambda.adoc |   2 +-
 docs/modules/ROOT/pages/extensions/aws-sdb.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/aws-swf.adoc    |   2 +-
 .../ROOT/pages/extensions/aws-translate.adoc       |   2 +-
 .../modules/ROOT/pages/extensions/aws2-athena.adoc |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-cw.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-ddb.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-ec2.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-ecs.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-eks.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-iam.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-kms.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-mq.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-msk.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-s3.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-ses.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-sns.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/aws2-sqs.adoc   |   2 +-
 .../ROOT/pages/extensions/aws2-translate.adoc      |   2 +-
 docs/modules/ROOT/pages/extensions/azure.adoc      |   2 +-
 docs/modules/ROOT/pages/extensions/base64.adoc     |   2 +-
 .../ROOT/pages/extensions/bean-validator.adoc      |   2 +-
 docs/modules/ROOT/pages/extensions/bindy.adoc      |   2 +-
 docs/modules/ROOT/pages/extensions/box.adoc        |   2 +-
 .../ROOT/pages/extensions/caffeine-lrucache.adoc   |   2 +-
 .../modules/ROOT/pages/extensions/cassandraql.adoc |   2 +-
 .../ROOT/pages/extensions/componentdsl.adoc        |   2 +-
 docs/modules/ROOT/pages/extensions/consul.adoc     |   2 +-
 docs/modules/ROOT/pages/extensions/couchbase.adoc  |   2 +-
 docs/modules/ROOT/pages/extensions/couchdb.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/cron.adoc       |   2 +-
 .../ROOT/pages/extensions/debezium-mongodb.adoc    |   2 +-
 .../ROOT/pages/extensions/debezium-mysql.adoc      |   2 +-
 .../ROOT/pages/extensions/debezium-postgres.adoc   |   2 +-
 .../ROOT/pages/extensions/debezium-sqlserver.adoc  |   2 +-
 docs/modules/ROOT/pages/extensions/dozer.adoc      |   2 +-
 .../ROOT/pages/extensions/elasticsearch-rest.adoc  |   2 +-
 .../modules/ROOT/pages/extensions/endpointdsl.adoc |   2 +-
 docs/modules/ROOT/pages/extensions/file-watch.adoc |   2 +-
 docs/modules/ROOT/pages/extensions/ftp.adoc        |   2 +-
 docs/modules/ROOT/pages/extensions/github.adoc     |   2 +-
 .../ROOT/pages/extensions/google-bigquery.adoc     |   2 +-
 .../ROOT/pages/extensions/google-calendar.adoc     |   2 +-
 .../ROOT/pages/extensions/google-drive.adoc        |   2 +-
 .../modules/ROOT/pages/extensions/google-mail.adoc |   2 +-
 .../ROOT/pages/extensions/google-pubsub.adoc       |   2 +-
 .../ROOT/pages/extensions/google-sheets.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/graphql.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/grok.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/groovy.adoc     |   2 +-
 docs/modules/ROOT/pages/extensions/grpc.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/gson.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/http.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/hystrix.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/ical.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/influxdb.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/jacksonxml.adoc |   2 +-
 docs/modules/ROOT/pages/extensions/jaxb.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/jira.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/johnzon.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/jolt.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/jpa.adoc        |   2 +-
 .../ROOT/pages/extensions/json-validator.adoc      |   2 +-
 docs/modules/ROOT/pages/extensions/jsonpath.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/jta.adoc        |   2 +-
 docs/modules/ROOT/pages/extensions/kafka.adoc      |   2 +-
 docs/modules/ROOT/pages/extensions/kotlin.adoc     |   2 +-
 docs/modules/ROOT/pages/extensions/kubernetes.adoc |   2 +-
 docs/modules/ROOT/pages/extensions/kudu.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/lzf.adoc        |   2 +-
 docs/modules/ROOT/pages/extensions/main.adoc       |   2 +-
 .../pages/extensions/{direct.adoc => master.adoc}  |  12 +-
 .../extensions/microprofile-fault-tolerance.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/mock.adoc       |   2 +-
 .../ROOT/pages/extensions/mongodb-gridfs.adoc      |   2 +-
 docs/modules/ROOT/pages/extensions/mongodb.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/mustache.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/nitrite.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/ognl.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/olingo4.adoc    |   2 +-
 .../ROOT/pages/extensions/openapi-java.adoc        |   2 +-
 docs/modules/ROOT/pages/extensions/openstack.adoc  |   2 +-
 docs/modules/ROOT/pages/extensions/protobuf.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/pubnub.adoc     |   2 +-
 docs/modules/ROOT/pages/extensions/quartz.adoc     |   2 +-
 docs/modules/ROOT/pages/extensions/qute.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/rabbitmq.adoc   |   2 +-
 .../ROOT/pages/extensions/reactive-streams.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/ref.adoc        |   2 +-
 .../ROOT/pages/extensions/rest-openapi.adoc        |   2 +-
 .../ROOT/pages/extensions/sap-netweaver.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/seda.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/servicenow.adoc |   2 +-
 docs/modules/ROOT/pages/extensions/sjms.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/sjms2.adoc      |   2 +-
 .../extensions/smallrye-reactive-messaging.adoc    |  38 +++
 docs/modules/ROOT/pages/extensions/soap.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/sql.adoc        |   2 +-
 docs/modules/ROOT/pages/extensions/stream.adoc     |   2 +-
 docs/modules/ROOT/pages/extensions/tagsoup.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/telegram.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/tika.adoc       |   2 +-
 docs/modules/ROOT/pages/extensions/vertx.adoc      |   2 +-
 .../ROOT/pages/extensions/websocket-jsr356.adoc    |   2 +-
 docs/modules/ROOT/pages/extensions/xml-io.adoc     |   2 +-
 docs/modules/ROOT/pages/extensions/xml-jaxb.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/xml-jaxp.adoc   |   2 +-
 docs/modules/ROOT/pages/extensions/xpath.adoc      |   2 +-
 docs/modules/ROOT/pages/extensions/xstream.adoc    |   2 +-
 .../ROOT/pages/extensions/zip-deflater.adoc        |   2 +-
 .../pages/list-of-camel-quarkus-extensions.adoc    | 314 +++++++++++----------
 docs/modules/ROOT/pages/user-guide/bootstrap.adoc  |   2 +-
 docs/modules/ROOT/pages/user-guide/cdi.adoc        |   2 +-
 examples/file-split-log-xml/README.adoc            |   4 +-
 examples/health/README.adoc                        |  17 +-
 examples/health/pom.xml                            |   8 +
 .../main/java/org/acme/health/MyRouteBuilder.java  |  19 +-
 ...HealthCheck.java => RunTooLongHealthCheck.java} |  32 +--
 .../src/main/resources/application.properties      |   5 +
 examples/http-log/README.adoc                      |   8 +-
 examples/observability/README.adoc                 |   4 +-
 examples/rest-json/README.adoc                     |   4 +-
 examples/timer-log-cdi/README.adoc                 |   6 +-
 examples/timer-log-main/README.adoc                |   6 +-
 examples/timer-log-spring/README.adoc              |   6 +-
 examples/timer-log-xml/README.adoc                 |   4 +-
 examples/timer-log/README.adoc                     |   4 +-
 extensions-core/caffeine-lrucache/runtime/pom.xml  |   2 +-
 .../spi/CamelBootstrapCompletedBuildItem.java      |   2 +-
 extensions-core/main/runtime/pom.xml               |   2 +-
 .../quarkus/main/events/BeforeInitialize.java      |   2 +-
 extensions-core/xml-io/runtime/pom.xml             |   2 +-
 extensions-core/xml-jaxb/runtime/pom.xml           |   2 +-
 extensions-core/xml-jaxp/runtime/pom.xml           |   2 +-
 extensions-jvm/avro-rpc/runtime/pom.xml            |   2 +-
 extensions-jvm/cassandraql/runtime/pom.xml         |   2 +-
 extensions-jvm/couchbase/runtime/pom.xml           |   2 +-
 extensions-jvm/debezium-mongodb/runtime/pom.xml    |   2 +-
 extensions-jvm/google-bigquery/runtime/pom.xml     |   2 +-
 extensions-jvm/google-pubsub/runtime/pom.xml       |   2 +-
 extensions-jvm/groovy/runtime/pom.xml              |   2 +-
 extensions-jvm/grpc/runtime/pom.xml                |   2 +-
 extensions-jvm/nitrite/runtime/pom.xml             |   2 +-
 extensions-jvm/ognl/runtime/pom.xml                |   2 +-
 extensions-jvm/openstack/runtime/pom.xml           |   2 +-
 extensions-jvm/protobuf/runtime/pom.xml            |   2 +-
 extensions-jvm/pubnub/runtime/pom.xml              |   2 +-
 extensions-jvm/rabbitmq/runtime/pom.xml            |   2 +-
 extensions-support/aws/runtime/pom.xml             |   2 +-
 extensions-support/aws2/runtime/pom.xml            |   2 +-
 extensions-support/debezium/runtime/pom.xml        |   2 +-
 .../google-http-client/runtime/pom.xml             |   2 +-
 extensions-support/mail/runtime/pom.xml            |   2 +-
 extensions-support/mongodb/runtime/pom.xml         |   2 +-
 extensions-support/policy/runtime/pom.xml          |   2 +-
 extensions/activemq/runtime/pom.xml                |   2 +-
 extensions/ahc-ws/runtime/pom.xml                  |   2 +-
 extensions/ahc/runtime/pom.xml                     |   2 +-
 extensions/amqp/runtime/pom.xml                    |   2 +-
 extensions/avro/runtime/pom.xml                    |   2 +-
 extensions/aws-ec2/runtime/pom.xml                 |   2 +-
 extensions/aws-ecs/runtime/pom.xml                 |   2 +-
 extensions/aws-kinesis/runtime/pom.xml             |   2 +-
 extensions/aws-kms/runtime/pom.xml                 |   2 +-
 extensions/aws-lambda/runtime/pom.xml              |   2 +-
 extensions/aws-sdb/runtime/pom.xml                 |   2 +-
 extensions/aws-swf/runtime/pom.xml                 |   2 +-
 extensions/aws-translate/runtime/pom.xml           |   2 +-
 extensions/aws2-athena/runtime/pom.xml             |   2 +-
 extensions/aws2-cw/runtime/pom.xml                 |   2 +-
 extensions/aws2-ddb/runtime/pom.xml                |   2 +-
 extensions/aws2-ec2/runtime/pom.xml                |   2 +-
 extensions/aws2-ecs/runtime/pom.xml                |   2 +-
 extensions/aws2-eks/runtime/pom.xml                |   2 +-
 extensions/aws2-iam/runtime/pom.xml                |   2 +-
 extensions/aws2-kms/runtime/pom.xml                |   2 +-
 extensions/aws2-mq/runtime/pom.xml                 |   2 +-
 extensions/aws2-msk/runtime/pom.xml                |   2 +-
 extensions/aws2-s3/runtime/pom.xml                 |   2 +-
 extensions/aws2-ses/runtime/pom.xml                |   2 +-
 extensions/aws2-sns/runtime/pom.xml                |   2 +-
 extensions/aws2-sqs/runtime/pom.xml                |   2 +-
 extensions/aws2-translate/runtime/pom.xml          |   2 +-
 extensions/azure/runtime/pom.xml                   |   2 +-
 extensions/base64/runtime/pom.xml                  |   2 +-
 extensions/bean-validator/runtime/pom.xml          |   2 +-
 extensions/bindy/runtime/pom.xml                   |   2 +-
 extensions/box/runtime/pom.xml                     |   2 +-
 extensions/componentdsl/runtime/pom.xml            |   2 +-
 extensions/consul/runtime/pom.xml                  |   2 +-
 extensions/couchdb/runtime/pom.xml                 |   2 +-
 extensions/cron/runtime/pom.xml                    |   2 +-
 extensions/debezium-mysql/runtime/pom.xml          |   2 +-
 extensions/debezium-postgres/runtime/pom.xml       |   2 +-
 extensions/debezium-sqlserver/runtime/pom.xml      |   2 +-
 extensions/dozer/runtime/pom.xml                   |   2 +-
 extensions/elasticsearch-rest/runtime/pom.xml      |   2 +-
 extensions/endpointdsl/runtime/pom.xml             |   2 +-
 extensions/file-watch/runtime/pom.xml              |   2 +-
 extensions/ftp/runtime/pom.xml                     |   2 +-
 extensions/github/runtime/pom.xml                  |   2 +-
 extensions/google-calendar/runtime/pom.xml         |   2 +-
 extensions/google-drive/runtime/pom.xml            |   2 +-
 extensions/google-mail/runtime/pom.xml             |   2 +-
 extensions/google-sheets/runtime/pom.xml           |   2 +-
 extensions/graphql/runtime/pom.xml                 |   2 +-
 extensions/grok/runtime/pom.xml                    |   2 +-
 .../main/resources/META-INF/quarkus-extension.yaml |   2 +
 extensions/gson/runtime/pom.xml                    |   2 +-
 extensions/http/runtime/pom.xml                    |   2 +-
 extensions/hystrix/runtime/pom.xml                 |   2 +-
 extensions/ical/runtime/pom.xml                    |   2 +-
 extensions/influxdb/runtime/pom.xml                |   2 +-
 extensions/jacksonxml/runtime/pom.xml              |   2 +-
 extensions/jaxb/runtime/pom.xml                    |   2 +-
 extensions/jira/runtime/pom.xml                    |   2 +-
 extensions/johnzon/runtime/pom.xml                 |   2 +-
 extensions/jolt/runtime/pom.xml                    |   2 +-
 extensions/jpa/runtime/pom.xml                     |   2 +-
 extensions/json-validator/runtime/pom.xml          |   2 +-
 extensions/jsonpath/runtime/pom.xml                |   2 +-
 extensions/jta/runtime/pom.xml                     |   2 +-
 extensions/kafka/runtime/pom.xml                   |   2 +-
 extensions/kotlin/runtime/pom.xml                  |   2 +-
 extensions/kubernetes/runtime/pom.xml              |   2 +-
 extensions/kudu/runtime/pom.xml                    |   2 +-
 extensions/lzf/runtime/pom.xml                     |   2 +-
 extensions/{grok => master}/deployment/pom.xml     |   8 +-
 .../master/deployment/MasterProcessor.java}        |   7 +-
 extensions/{grok => master}/pom.xml                |   4 +-
 extensions/{grok => master}/runtime/pom.xml        |  12 +-
 .../main/resources/META-INF/quarkus-extension.yaml |   8 +-
 .../microprofile-fault-tolerance/runtime/pom.xml   |   2 +-
 extensions/mock/runtime/pom.xml                    |   2 +-
 extensions/mongodb-gridfs/runtime/pom.xml          |   2 +-
 extensions/mongodb/runtime/pom.xml                 |   2 +-
 extensions/mustache/runtime/pom.xml                |   2 +-
 extensions/olingo4/runtime/pom.xml                 |   2 +-
 extensions/openapi-java/runtime/pom.xml            |   2 +-
 extensions/pom.xml                                 |   2 +
 extensions/quartz/runtime/pom.xml                  |   2 +-
 extensions/qute/runtime/pom.xml                    |   2 +-
 extensions/reactive-streams/runtime/pom.xml        |   2 +-
 extensions/ref/runtime/pom.xml                     |   2 +-
 extensions/rest-openapi/runtime/pom.xml            |   2 +-
 extensions/sap-netweaver/runtime/pom.xml           |   2 +-
 extensions/seda/runtime/pom.xml                    |   2 +-
 extensions/servicenow/runtime/pom.xml              |   2 +-
 extensions/sjms/runtime/pom.xml                    |   2 +-
 extensions/sjms2/runtime/pom.xml                   |   2 +-
 .../deployment/pom.xml                             |  18 +-
 .../SmallRyeReactiveMessagingProcessor.java        |  87 ++++++
 .../smallrye-reactive-messaging}/pom.xml           |  10 +-
 .../runtime/pom.xml                                |  23 +-
 .../runtime/src/main/doc/configuration.adoc        |   4 +
 .../runtime/src/main/doc/usage.adoc                |   4 +
 .../main/resources/META-INF/quarkus-extension.yaml |   6 +-
 extensions/soap/runtime/pom.xml                    |   2 +-
 extensions/sql/runtime/pom.xml                     |   2 +-
 extensions/stream/runtime/pom.xml                  |   2 +-
 extensions/tagsoup/runtime/pom.xml                 |   2 +-
 extensions/telegram/runtime/pom.xml                |   2 +-
 extensions/tika/runtime/pom.xml                    |   2 +-
 extensions/vertx/runtime/pom.xml                   |   2 +-
 extensions/websocket-jsr356/runtime/pom.xml        |   2 +-
 extensions/xpath/runtime/pom.xml                   |   2 +-
 extensions/xstream/runtime/pom.xml                 |   2 +-
 extensions/zip-deflater/runtime/pom.xml            |   2 +-
 integration-tests-support/pom.xml                  |   1 +
 .../pom.xml                                        |   8 +-
 .../support/process/QuarkusProcessExecutor.java    |  97 +++++++
 integration-tests/bean/pom.xml                     |   5 +
 .../component/bean/BeanInjectMockTest.java}        |  43 +--
 integration-tests/main-command-mode/pom.xml        |  12 +-
 .../camel/quarkus/main/cmd/it/CommandModeIT.java   |  12 -
 .../camel/quarkus/main/cmd/it/CommandModeTest.java |  19 +-
 .../{main-command-mode => master}/pom.xml          |  69 +++--
 .../component/master/it/MasterResource.java        |  20 +-
 .../quarkus/component/master/it/MasterRoutes.java  |  44 ++-
 .../src/main/resources/application.properties      |   2 +-
 .../quarkus/component/master/it/MasterIT.java}     |   4 +-
 .../quarkus/component/master/it/MasterTest.java    |  96 +++++++
 integration-tests/pom.xml                          |   2 +
 .../{mock => smallrye-reactive-messaging}/pom.xml  |  25 +-
 .../reactive/messaging/it/PublisherRoute.java      |  62 ++++
 .../reactive/messaging/it/ResultsBean.java         |  21 +-
 .../it/SmallRyeReactiveMessagingResource.java}     |  31 +-
 .../reactive/messaging/it/SubscriberRoute.java}    |  31 +-
 .../messaging/it/SmallRyeReactiveMessagingIT.java} |   4 +-
 .../it/SmallRyeReactiveMessagingTest.java          |  72 +++++
 pom.xml                                            |   1 +
 poms/bom-test/pom.xml                              |   5 +
 poms/bom/pom.xml                                   |  30 ++
 tooling/create-extension-templates/runtime-pom.xml |   2 +-
 tooling/scripts/test-categories.yaml               |   4 +-
 308 files changed, 1256 insertions(+), 690 deletions(-)
 copy docs/modules/ROOT/pages/extensions/{direct.adoc => master.adoc} (59%)
 create mode 100644 docs/modules/ROOT/pages/extensions/smallrye-reactive-messaging.adoc
 rename examples/health/src/main/java/org/acme/health/{MonkeyHealthCheck.java => RunTooLongHealthCheck.java} (63%)
 copy extensions/{grok => master}/deployment/pom.xml (90%)
 copy extensions/{bean/deployment/src/main/java/org/apache/camel/quarkus/component/bean/deployment/BeanProcessor.java => master/deployment/src/main/java/org/apache/camel/quarkus/component/master/deployment/MasterProcessor.java} (87%)
 copy extensions/{grok => master}/pom.xml (93%)
 copy extensions/{grok => master}/runtime/pom.xml (89%)
 copy extensions/{aws-sns => master}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (86%)
 copy extensions/{debezium-mysql => smallrye-reactive-messaging}/deployment/pom.xml (83%)
 create mode 100644 extensions/smallrye-reactive-messaging/deployment/src/main/java/org/apache/camel/quarkus/component/smallrye/reactive/messaging/deployment/SmallRyeReactiveMessagingProcessor.java
 copy {extensions-core/main => extensions/smallrye-reactive-messaging}/pom.xml (91%)
 copy extensions/{sap-netweaver => smallrye-reactive-messaging}/runtime/pom.xml (84%)
 create mode 100644 extensions/smallrye-reactive-messaging/runtime/src/main/doc/configuration.adoc
 create mode 100644 extensions/smallrye-reactive-messaging/runtime/src/main/doc/usage.adoc
 copy extensions/{aws2-ec2 => smallrye-reactive-messaging}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (88%)
 copy integration-tests-support/{testcontainers-support => process-executor-support}/pom.xml (88%)
 create mode 100644 integration-tests-support/process-executor-support/src/main/java/org/apache/camel/quarkus/test/support/process/QuarkusProcessExecutor.java
 copy integration-tests/{openapi-java/src/test/java/org/apache/camel/quarkus/component/openapijava/it/OpenApiTest.java => bean/src/test/java/org/apache/camel/quarkus/component/bean/BeanInjectMockTest.java} (53%)
 copy integration-tests/{main-command-mode => master}/pom.xml (65%)
 copy examples/http-log/src/main/java/org/acme/http/ExampleResource.java => integration-tests/master/src/main/java/org/apache/camel/quarkus/component/master/it/MasterResource.java (73%)
 copy examples/timer-log-cdi/src/main/java/org/acme/timer/TimerRoute.java => integration-tests/master/src/main/java/org/apache/camel/quarkus/component/master/it/MasterRoutes.java (52%)
 copy integration-tests-support/testcontainers-support/src/main/resources/testcontainers.properties => integration-tests/master/src/main/resources/application.properties (97%)
 copy integration-tests/{base64/src/test/java/org/apache/camel/quarkus/component/base64/it/Base64IT.java => master/src/test/java/org/apache/camel/quarkus/component/master/it/MasterIT.java} (90%)
 create mode 100644 integration-tests/master/src/test/java/org/apache/camel/quarkus/component/master/it/MasterTest.java
 copy integration-tests/{mock => smallrye-reactive-messaging}/pom.xml (85%)
 create mode 100644 integration-tests/smallrye-reactive-messaging/src/main/java/org/apache/camel/quarkus/component/smallrye/reactive/messaging/it/PublisherRoute.java
 copy extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainProducers.java => integration-tests/smallrye-reactive-messaging/src/main/java/org/apache/camel/quarkus/component/smallrye/reactive/messaging/it/ResultsBean.java (71%)
 copy integration-tests/{base64/src/main/java/org/apache/camel/quarkus/component/base64/it/Base64Resource.java => smallrye-reactive-messaging/src/main/java/org/apache/camel/quarkus/component/smallrye/reactive/messaging/it/SmallRyeReactiveMessagingResource.java} (68%)
 copy integration-tests/{couchdb/src/main/java/org/apache/camel/quarkus/component/couchdb/it/CouchDbRoute.java => smallrye-reactive-messaging/src/main/java/org/apache/camel/quarkus/component/smallrye/reactive/messaging/it/SubscriberRoute.java} (52%)
 copy integration-tests/{activemq/src/test/java/org/apache/camel/quarkus/component/activemq/it/ActiveMQIT.java => smallrye-reactive-messaging/src/test/java/org/apache/camel/quarkus/component/smallrye/reactive/messaging/it/SmallRyeReactiveMessagingIT.java} (85%)
 create mode 100644 integration-tests/smallrye-reactive-messaging/src/test/java/org/apache/camel/quarkus/component/smallrye/reactive/messaging/it/SmallRyeReactiveMessagingTest.java


[camel-quarkus] 02/02: CAMEL-14297: Introduce RouteBuilderConfigurer.

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 b752bf0839550b917c7f25f6e85741e04b82cbde
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Aug 12 09:10:16 2020 +0200

    CAMEL-14297: Introduce RouteBuilderConfigurer.
---
 .../quarkus/core/deployment/CamelProcessor.java    |  3 +
 .../camel/quarkus/core/CamelContextRecorder.java   | 10 +++
 .../camel/quarkus/core/RegistryRoutesLoaders.java  | 13 ++++
 ...melMainRouteBuilderConfigurerDiscoveryTest.java | 74 ++++++++++++++++++++++
 .../apache/camel/quarkus/core/CoreResource.java    | 15 +++++
 .../org/apache/camel/quarkus/core/CoreRoutes.java  |  2 +-
 .../org/apache/camel/quarkus/core/CoreTest.java    |  6 ++
 7 files changed, 122 insertions(+), 1 deletion(-)

diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
index 728812d..870fa8d 100644
--- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
+++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
@@ -79,6 +79,8 @@ class CamelProcessor {
             "org.apache.camel.RoutesBuilder");
     private static final DotName ROUTE_BUILDER_TYPE = DotName.createSimple(
             "org.apache.camel.builder.RouteBuilder");
+    private static final DotName ROUTE_BUILDER_CONFIGURER_TYPE = DotName.createSimple(
+            "org.apache.camel.builder.RouteBuilderConfigurer");
     private static final DotName ADVICE_WITH_ROUTE_BUILDER_TYPE = DotName.createSimple(
             "org.apache.camel.builder.AdviceWithRouteBuilder");
     private static final DotName DATA_FORMAT_TYPE = DotName.createSimple(
@@ -94,6 +96,7 @@ class CamelProcessor {
 
     private static final Set<DotName> UNREMOVABLE_BEANS_TYPES = CamelSupport.setOf(
             ROUTES_BUILDER_TYPE,
+            ROUTE_BUILDER_CONFIGURER_TYPE,
             DATA_FORMAT_TYPE,
             LANGUAGE_TYPE,
             COMPONENT_TYPE,
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelContextRecorder.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelContextRecorder.java
index 17cb43b..9a555ba 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelContextRecorder.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelContextRecorder.java
@@ -21,6 +21,8 @@ import io.quarkus.runtime.RuntimeValue;
 import io.quarkus.runtime.annotations.Recorder;
 import org.apache.camel.CamelContext;
 import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.builder.RouteBuilderConfigurer;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.spi.FactoryFinderResolver;
 import org.apache.camel.spi.ModelJAXBContextFactory;
@@ -97,6 +99,14 @@ public class CamelContextRecorder {
 
     public void addRoutesFromContainer(RuntimeValue<CamelContext> context) {
         try {
+            for (RouteBuilderConfigurer builder : context.getValue().getRegistry().findByType(RouteBuilderConfigurer.class)) {
+                context.getValue().addRoutes(new RouteBuilder() {
+                    @Override
+                    public void configure() throws Exception {
+                        builder.accept(this);
+                    }
+                });
+            }
             for (RoutesBuilder builder : context.getValue().getRegistry().findByType(RoutesBuilder.class)) {
                 context.getValue().addRoutes(builder);
             }
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RegistryRoutesLoaders.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RegistryRoutesLoaders.java
index 2167689..2aa04f5 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RegistryRoutesLoaders.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RegistryRoutesLoaders.java
@@ -24,6 +24,8 @@ import java.util.Set;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.builder.RouteBuilderConfigurer;
 import org.apache.camel.util.AntPathMatcher;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -56,6 +58,17 @@ public final class RegistryRoutesLoaders {
             final List<RoutesBuilder> routes = new ArrayList<>();
             final AntPathMatcher matcher = new AntPathMatcher();
 
+            Set<RouteBuilderConfigurer> configurers = camelContext.getRegistry().findByType(RouteBuilderConfigurer.class);
+            for (RouteBuilderConfigurer configurer : configurers) {
+                RouteBuilder rb = new RouteBuilder() {
+                    @Override
+                    public void configure() throws Exception {
+                        configurer.accept(this);
+                    }
+                };
+                routes.add(rb);
+            }
+
             Set<RoutesBuilder> builders = camelContext.getRegistry().findByType(RoutesBuilder.class);
             for (RoutesBuilder routesBuilder : builders) {
                 // filter out abstract classes
diff --git a/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRouteBuilderConfigurerDiscoveryTest.java b/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRouteBuilderConfigurerDiscoveryTest.java
new file mode 100644
index 0000000..bbf9f3f
--- /dev/null
+++ b/extensions-core/main/deployment/src/test/java/org/apache/camel/quarkus/main/deployment/CamelMainRouteBuilderConfigurerDiscoveryTest.java
@@ -0,0 +1,74 @@
+/*
+ * 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.main.deployment;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Properties;
+
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+
+import io.quarkus.test.QuarkusUnitTest;
+import org.apache.camel.builder.RouteBuilderConfigurer;
+import org.apache.camel.quarkus.main.CamelMain;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.Asset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class CamelMainRouteBuilderConfigurerDiscoveryTest {
+    @RegisterExtension
+    static final QuarkusUnitTest CONFIG = new QuarkusUnitTest()
+            .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
+                    .addAsResource(applicationProperties(), "application.properties"));
+
+    @Inject
+    CamelMain main;
+
+    public static Asset applicationProperties() {
+        Writer writer = new StringWriter();
+
+        Properties props = new Properties();
+        props.setProperty("quarkus.banner.enabled", "false");
+
+        try {
+            props.store(writer, "");
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+
+        return new StringAsset(writer.toString());
+    }
+
+    @Test
+    public void testRoutesDiscovery() {
+        assertThat(main.getCamelContext().getRoutes()).isNotEmpty();
+        assertThat(main.configure().getRoutesBuilders()).isNotEmpty();
+    }
+
+    @Produces
+    public RouteBuilderConfigurer myRoute() {
+        return rb -> rb.from("direct:in").routeId("my-route").to("log:out");
+    }
+
+}
diff --git a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CoreResource.java b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CoreResource.java
index 21e5e80..af45a13 100644
--- a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CoreResource.java
+++ b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CoreResource.java
@@ -39,6 +39,8 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.NoSuchLanguageException;
+import org.apache.camel.Route;
+import org.apache.camel.builder.RouteBuilderConfigurer;
 import org.apache.camel.catalog.RuntimeCamelCatalog;
 import org.apache.camel.component.log.LogComponent;
 import org.apache.camel.model.ModelCamelContext;
@@ -70,6 +72,19 @@ public class CoreResource {
         return result;
     }
 
+    @javax.enterprise.inject.Produces
+    public RouteBuilderConfigurer myOtherRoute() {
+        return rb -> rb.from("timer:bar").routeId("bar").to("log:bar");
+    }
+
+    @Path("/routes/lookup-routes")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public String lookupRoutes() {
+        // there should be 2 routes, the one with RouteBuilderConfigurer method above and from CoreRoutes.java
+        return context.getRoutes().stream().map(Route::getId).sorted().collect(Collectors.joining(","));
+    }
+
     @Path("/registry/lookup-registry")
     @GET
     @Produces(MediaType.TEXT_PLAIN)
diff --git a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CoreRoutes.java b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CoreRoutes.java
index e3bb7e3..4aa1678 100644
--- a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CoreRoutes.java
+++ b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CoreRoutes.java
@@ -23,7 +23,7 @@ public class CoreRoutes extends RouteBuilder {
     @Override
     public void configure() {
         from("timer:keep-alive")
-                .id("timer")
+                .routeId("timer")
                 .setBody().constant("I'm alive !")
                 .to("log:keep-alive");
 
diff --git a/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CoreTest.java b/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CoreTest.java
index 42db9c8..f45b7f0 100644
--- a/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CoreTest.java
+++ b/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CoreTest.java
@@ -33,6 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 @QuarkusTest
 public class CoreTest {
+
     @Test
     public void testContainerLookupFromRegistry() {
         RestAssured.when().get("/test/registry/lookup-registry").then().body(is("true"));
@@ -40,6 +41,11 @@ public class CoreTest {
     }
 
     @Test
+    public void testLookupRoutes() {
+        RestAssured.when().get("/test/routes/lookup-routes").then().body(is("bar,timer"));
+    }
+
+    @Test
     public void testCamelContextAwareRegistryBeansInitialized() {
         RestAssured.when().get("/test/registry/camel-context-aware/initialized").then().body(is("true"));
     }


[camel-quarkus] 01/02: Upgrade to Camel 3.5.0-SNAPSHOT

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 5325104493fb6d4800e9bc206de7087f8f533101
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Jun 18 16:30:49 2020 +0100

    Upgrade to Camel 3.5.0-SNAPSHOT
---
 docs/modules/ROOT/pages/extensions/aws-s3.adoc     |  2 +-
 docs/modules/ROOT/pages/extensions/aws2-s3.adoc    |  2 +-
 docs/modules/ROOT/pages/extensions/azure.adoc      |  4 +-
 .../pages/list-of-camel-quarkus-extensions.adoc    | 10 +--
 .../org/apache/camel/quarkus/core/BaseModel.java   | 98 ++++++++++++++++++++++
 .../core/DisabledXMLRoutesDefinitionLoader.java    |  5 ++
 .../camel/quarkus/core/FastCamelContext.java       | 46 ++++++++++
 .../org/apache/camel/quarkus/main/CamelMain.java   | 17 ++++
 .../quarkus/main/CamelMainRoutesCollector.java     | 26 ++++++
 extensions-jvm/cassandraql/runtime/pom.xml         | 16 ++++
 .../deployment/DebeziumSupportProcessor.java       | 14 +++-
 .../runtime/support/CustomRoutesCollector.java     |  7 ++
 pom.xml                                            | 11 +--
 poms/bom/pom.xml                                   | 10 +++
 14 files changed, 251 insertions(+), 17 deletions(-)

diff --git a/docs/modules/ROOT/pages/extensions/aws-s3.adoc b/docs/modules/ROOT/pages/extensions/aws-s3.adoc
index 643d7fc..3d26d63 100644
--- a/docs/modules/ROOT/pages/extensions/aws-s3.adoc
+++ b/docs/modules/ROOT/pages/extensions/aws-s3.adoc
@@ -7,7 +7,7 @@
 [.badges]
 [.badge-key]##Since Camel Quarkus##[.badge-version]##0.2.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-supported]##supported##
 
-Store and retrie objects from AWS S3 Storage Service.
+Store and retrieve objects from AWS S3 Storage Service.
 
 == What's inside
 
diff --git a/docs/modules/ROOT/pages/extensions/aws2-s3.adoc b/docs/modules/ROOT/pages/extensions/aws2-s3.adoc
index 26b6450..0f2f1fa 100644
--- a/docs/modules/ROOT/pages/extensions/aws2-s3.adoc
+++ b/docs/modules/ROOT/pages/extensions/aws2-s3.adoc
@@ -7,7 +7,7 @@
 [.badges]
 [.badge-key]##Since Camel Quarkus##[.badge-version]##1.0.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-supported]##supported##
 
-Store and retrie objects from AWS S3 Storage Service using AWS SDK version 2.x.
+Store and retrieve objects from AWS S3 Storage Service using AWS SDK version 2.x.
 
 == What's inside
 
diff --git a/docs/modules/ROOT/pages/extensions/azure.adoc b/docs/modules/ROOT/pages/extensions/azure.adoc
index b414195..16123b0 100644
--- a/docs/modules/ROOT/pages/extensions/azure.adoc
+++ b/docs/modules/ROOT/pages/extensions/azure.adoc
@@ -11,8 +11,8 @@ Store and retrieve blobs from Azure Storage Blob Service or store and retrieve m
 
 == What's inside
 
-* https://camel.apache.org/components/latest/azure-blob-component.html[Azure Storage Blob Service (Legacy) component], URI syntax: `azure-blob:containerOrBlobUri`
-* https://camel.apache.org/components/latest/azure-queue-component.html[Azure Storage Queue Service (Legacy) component], URI syntax: `azure-queue:containerAndQueueUri`
+* https://camel.apache.org/components/latest/azure-blob-component.html[Azure Storage Blob Service (Deprecated) component], URI syntax: `azure-blob:containerOrBlobUri`
+* https://camel.apache.org/components/latest/azure-queue-component.html[Azure Storage Queue Service (Deprecated) component], URI syntax: `azure-queue:containerAndQueueUri`
 
 Please refer to the above links for usage and configuration details.
 
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 5a23017..4f987c4 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: 156 in 121 JAR artifacts (0 deprecated)
+Number of Camel components: 156 in 121 JAR artifacts (2 deprecated)
 
 [width="100%",cols="4,1,1,1,5",options="header"]
 |===
@@ -56,7 +56,7 @@ Number of Camel components: 156 in 121 JAR artifacts (0 deprecated)
 
 | xref:extensions/aws2-mq.adoc[AWS 2 MQ] | camel-quarkus-aws2-mq | Native + Stable | 1.0.0 | Manage AWS MQ instances using AWS SDK version 2.x.
 
-| xref:extensions/aws2-s3.adoc[AWS 2 S3 Storage Service] | camel-quarkus-aws2-s3 | Native + Stable | 1.0.0 | Store and retrie objects from AWS S3 Storage Service using AWS SDK version 2.x.
+| xref:extensions/aws2-s3.adoc[AWS 2 S3 Storage Service] | camel-quarkus-aws2-s3 | Native + Stable | 1.0.0 | Store and retrieve objects from AWS S3 Storage Service using AWS SDK version 2.x.
 
 | xref:extensions/aws2-ses.adoc[AWS 2 Simple Email Service (SES)] | camel-quarkus-aws2-ses | Native + Stable | 1.0.0 | Send e-mails through AWS SES service using AWS SDK version 2.x.
 
@@ -82,7 +82,7 @@ Number of Camel components: 156 in 121 JAR artifacts (0 deprecated)
 
 | xref:extensions/aws-lambda.adoc[AWS Lambda] | camel-quarkus-aws-lambda | Native + Stable | 1.0.0 | Manage and invoke AWS Lambda functions.
 
-| xref:extensions/aws-s3.adoc[AWS S3 Storage Service] | camel-quarkus-aws-s3 | Native + Stable | 0.2.0 | Store and retrie objects from AWS S3 Storage Service.
+| xref:extensions/aws-s3.adoc[AWS S3 Storage Service] | camel-quarkus-aws-s3 | Native + Stable | 0.2.0 | Store and retrieve objects from AWS S3 Storage Service.
 
 | xref:extensions/aws-sns.adoc[AWS Simple Notification System (SNS)] | camel-quarkus-aws-sns | Native + Stable | 0.2.0 | Send messages to an AWS Simple Notification Topic.
 
@@ -94,9 +94,9 @@ Number of Camel components: 156 in 121 JAR artifacts (0 deprecated)
 
 | xref:extensions/aws-translate.adoc[AWS Translate] | camel-quarkus-aws-translate | Native + Stable | 1.0.0 | Translate texts using AWS Translate.
 
-| xref:extensions/azure.adoc[Azure Storage Blob Service (Legacy)] | camel-quarkus-azure | Native + Stable | 1.0.0 | Store and retrieve blobs from Azure Storage Blob Service.
+| xref:extensions/azure.adoc[Azure Storage Blob Service (Deprecated)] | camel-quarkus-azure | Native + Stable | 1.0.0 | *deprecated* Store and retrieve blobs from Azure Storage Blob Service.
 
-| xref:extensions/azure.adoc[Azure Storage Queue Service (Legacy)] | camel-quarkus-azure | Native + Stable | 1.0.0 | Store and retrieve messages from Azure Storage Queue Service.
+| xref:extensions/azure.adoc[Azure Storage Queue Service (Deprecated)] | camel-quarkus-azure | Native + Stable | 1.0.0 | *deprecated* Store and retrieve messages from Azure Storage Queue Service.
 
 | xref:extensions/bean.adoc[Bean] | camel-quarkus-bean | Native + Stable | 0.2.0 | Invoke methods of Java beans stored in Camel registry.
 
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
index 9bd3b06..058901d 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
@@ -27,12 +27,15 @@ import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.transformer.TransformerDefinition;
 import org.apache.camel.model.validator.ValidatorDefinition;
+import org.apache.camel.util.CollectionStringBuffer;
 
 public abstract class BaseModel implements Model {
 
     private final CamelContext camelContext;
 
+    private final List<ModelLifecycleStrategy> modelLifecycleStrategies = new ArrayList<>();
     private final List<RouteDefinition> routeDefinitions = new ArrayList<>();
+    private final List<RouteTemplateDefinition> routeTemplateDefinitions = new ArrayList<>();
     private final List<RestDefinition> restDefinitions = new ArrayList<>();
     private Map<String, DataFormatDefinition> dataFormats = new HashMap<>();
     private List<TransformerDefinition> transformers = new ArrayList<>();
@@ -52,6 +55,16 @@ public abstract class BaseModel implements Model {
     }
 
     @Override
+    public void addModelLifecycleStrategy(ModelLifecycleStrategy modelLifecycleStrategy) {
+        this.modelLifecycleStrategies.add(modelLifecycleStrategy);
+    }
+
+    @Override
+    public List<ModelLifecycleStrategy> getModelLifecycleStrategies() {
+        return modelLifecycleStrategies;
+    }
+
+    @Override
     public synchronized void addRouteDefinitions(Collection<RouteDefinition> routeDefinitions) throws Exception {
         if (routeDefinitions == null || routeDefinitions.isEmpty()) {
             return;
@@ -111,6 +124,91 @@ public abstract class BaseModel implements Model {
     }
 
     @Override
+    public List<RouteTemplateDefinition> getRouteTemplateDefinitions() {
+        return routeTemplateDefinitions;
+    }
+
+    @Override
+    public RouteTemplateDefinition getRouteTemplateDefinition(String id) {
+        for (RouteTemplateDefinition route : routeTemplateDefinitions) {
+            if (route.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory()).equals(id)) {
+                return route;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public void addRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+        if (routeTemplateDefinitions == null || routeTemplateDefinitions.isEmpty()) {
+            return;
+        }
+        this.routeTemplateDefinitions.addAll(routeTemplateDefinitions);
+    }
+
+    @Override
+    public void addRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+        this.routeTemplateDefinitions.addAll(routeTemplateDefinitions);
+    }
+
+    @Override
+    public void removeRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+        routeTemplateDefinitions.removeAll(routeTemplateDefinitions);
+    }
+
+    @Override
+    public void removeRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+        routeTemplateDefinitions.remove(routeTemplateDefinition);
+    }
+
+    @Override
+    public String addRouteFromTemplate(String routeId, String routeTemplateId, Map<String, Object> parameters)
+            throws Exception {
+        RouteTemplateDefinition target = null;
+        for (RouteTemplateDefinition def : routeTemplateDefinitions) {
+            if (routeTemplateId.equals(def.getId())) {
+                target = def;
+                break;
+            }
+        }
+        if (target == null) {
+            throw new IllegalArgumentException("Cannot find RouteTemplate with id " + routeTemplateId);
+        }
+
+        CollectionStringBuffer cbs = new CollectionStringBuffer();
+        final Map<String, Object> prop = new HashMap();
+        // include default values first from the template (and validate that we have inputs for all required parameters)
+        if (target.getTemplateParameters() != null) {
+            for (RouteTemplateParameterDefinition temp : target.getTemplateParameters()) {
+                if (temp.getDefaultValue() != null) {
+                    prop.put(temp.getName(), temp.getDefaultValue());
+                } else {
+                    // this is a required parameter do we have that as input
+                    if (!parameters.containsKey(temp.getName())) {
+                        cbs.append(temp.getName());
+                    }
+                }
+            }
+        }
+        if (!cbs.isEmpty()) {
+            throw new IllegalArgumentException("Route template " + routeTemplateId
+                    + " the following mandatory parameters must be provided: " + cbs.toString());
+        }
+        // then override with user parameters
+        if (parameters != null) {
+            prop.putAll(parameters);
+        }
+
+        RouteDefinition def = target.asRouteDefinition();
+        if (routeId != null) {
+            def.setId(routeId);
+        }
+        def.setTemplateParameters(prop);
+        addRouteDefinition(def);
+        return def.getId();
+    }
+
+    @Override
     public synchronized List<RestDefinition> getRestDefinitions() {
         return restDefinitions;
     }
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
index 904d50d..a50befb 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
@@ -29,6 +29,11 @@ public class DisabledXMLRoutesDefinitionLoader implements XMLRoutesDefinitionLoa
     }
 
     @Override
+    public Object loadRouteTemplatesDefinition(CamelContext context, InputStream inputStream) throws Exception {
+        throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-xml-io");
+    }
+
+    @Override
     public Object loadRestsDefinition(CamelContext context, InputStream inputStream) throws Exception {
         throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-xml-io");
     }
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index 5066702..843c5c1 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -87,6 +87,12 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
+    public String addRouteFromTemplate(String routeId, String routeTemplateId, Map<String, Object> parameters)
+            throws Exception {
+        return model.addRouteFromTemplate(routeId, routeTemplateId, parameters);
+    }
+
+    @Override
     protected Registry createRegistry() {
         throw new UnsupportedOperationException();
     }
@@ -482,6 +488,16 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
+    public void addModelLifecycleStrategy(ModelLifecycleStrategy modelLifecycleStrategy) {
+        model.addModelLifecycleStrategy(modelLifecycleStrategy);
+    }
+
+    @Override
+    public List<ModelLifecycleStrategy> getModelLifecycleStrategies() {
+        return model.getModelLifecycleStrategies();
+    }
+
+    @Override
     public List<RouteDefinition> getRouteDefinitions() {
         return model.getRouteDefinitions();
     }
@@ -512,6 +528,36 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
     }
 
     @Override
+    public List<RouteTemplateDefinition> getRouteTemplateDefinitions() {
+        return model.getRouteTemplateDefinitions();
+    }
+
+    @Override
+    public RouteTemplateDefinition getRouteTemplateDefinition(String id) {
+        return model.getRouteTemplateDefinition(id);
+    }
+
+    @Override
+    public void addRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+        model.addRouteTemplateDefinitions(routeTemplateDefinitions);
+    }
+
+    @Override
+    public void addRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+        model.addRouteTemplateDefinition(routeTemplateDefinition);
+    }
+
+    @Override
+    public void removeRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+        model.removeRouteTemplateDefinitions(routeTemplateDefinitions);
+    }
+
+    @Override
+    public void removeRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+        model.removeRouteTemplateDefinition(routeTemplateDefinition);
+    }
+
+    @Override
     public List<RestDefinition> getRestDefinitions() {
         return model.getRestDefinitions();
     }
diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java
index 7e71a52..b2ef402 100644
--- a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java
+++ b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMain.java
@@ -18,6 +18,8 @@ package org.apache.camel.quarkus.main;
 
 import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -31,6 +33,7 @@ import org.apache.camel.main.MainCommandLineSupport;
 import org.apache.camel.main.MainConfigurationProperties;
 import org.apache.camel.main.MainListener;
 import org.apache.camel.main.MainShutdownStrategy;
+import org.apache.camel.main.MainShutdownStrategy.ShutdownEventListener;
 import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.spi.HasCamelContext;
 import org.apache.camel.support.service.ServiceHelper;
@@ -157,6 +160,7 @@ public final class CamelMain extends MainCommandLineSupport implements HasCamelC
     private class ShutdownStrategy implements MainShutdownStrategy {
         private final AtomicBoolean completed;
         private final CountDownLatch latch;
+        private final Set<ShutdownEventListener> listeners = new LinkedHashSet<>();
 
         public ShutdownStrategy() {
             this.completed = new AtomicBoolean(false);
@@ -172,6 +176,15 @@ public final class CamelMain extends MainCommandLineSupport implements HasCamelC
         public boolean shutdown() {
             if (completed.compareAndSet(false, true)) {
                 latch.countDown();
+                for (ShutdownEventListener l : listeners) {
+                    try {
+                        LOG.trace("ShutdownEventListener: {}", l);
+                        l.onShutdown();
+                    } catch (Throwable e) {
+                        // ignore as we must continue
+                        LOG.debug("Error during ShutdownEventListener: {}. This exception is ignored.", l, e);
+                    }
+                }
                 Quarkus.asyncExit(getExitCode());
                 return true;
             }
@@ -192,5 +205,9 @@ public final class CamelMain extends MainCommandLineSupport implements HasCamelC
                         timeout, unit);
             }
         }
+
+        public void addShutdownListener(ShutdownEventListener listener) {
+            listeners.add(listener);
+        }
     }
 }
diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
index da9350b..9498cc1 100644
--- a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
+++ b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
@@ -26,6 +26,7 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.main.RoutesCollector;
+import org.apache.camel.model.RouteTemplatesDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
 import org.apache.camel.quarkus.core.RegistryRoutesLoader;
@@ -87,6 +88,31 @@ public class CamelMainRoutesCollector implements RoutesCollector {
     }
 
     @Override
+    public List<RouteTemplatesDefinition> collectXmlRouteTemplatesFromDirectory(CamelContext camelContext, String directory)
+            throws Exception {
+        List<RouteTemplatesDefinition> answer = new ArrayList<>();
+        PackageScanResourceResolver resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanResourceResolver();
+
+        for (String part : directory.split(",")) {
+            LOGGER.info("Loading additional Camel XML route templates from: {}", part);
+            try {
+                for (InputStream is : resolver.findResources(part)) {
+                    Object definition = xmlRoutesLoader.loadRouteTemplatesDefinition(camelContext, is);
+                    if (definition instanceof RestsDefinition) {
+                        answer.add((RouteTemplatesDefinition) definition);
+                    }
+                }
+            } catch (FileNotFoundException e) {
+                LOGGER.debug("No XML route templates found in {}. Skipping XML route templates detection.", part);
+            } catch (Exception e) {
+                throw RuntimeCamelException.wrapRuntimeException(e);
+            }
+        }
+
+        return answer;
+    }
+
+    @Override
     public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) {
         List<RestsDefinition> answer = new ArrayList<>();
         PackageScanResourceResolver resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanResourceResolver();
diff --git a/extensions-jvm/cassandraql/runtime/pom.xml b/extensions-jvm/cassandraql/runtime/pom.xml
index 04cff31..86d66ef 100644
--- a/extensions-jvm/cassandraql/runtime/pom.xml
+++ b/extensions-jvm/cassandraql/runtime/pom.xml
@@ -58,8 +58,24 @@
                     <groupId>org.ow2.asm</groupId>
                     <artifactId>asm-util</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.groovy</groupId>
+                    <artifactId>groovy</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.groovy</groupId>
+                    <artifactId>groovy-json</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-json</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java b/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java
index 7810d88..7fcda1a 100644
--- a/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java
+++ b/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java
@@ -21,6 +21,7 @@ import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
 import io.quarkus.deployment.builditem.IndexDependencyBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import org.jboss.jandex.IndexView;
 
@@ -38,7 +39,7 @@ public class DebeziumSupportProcessor {
 
         String[] dtos = index.getKnownClasses().stream().map(ci -> ci.name().toString())
                 .filter(n -> n.startsWith("org.apache.kafka.connect.json")
-                        || n.startsWith("io.debezium.embedded.spi"))
+                        || n.startsWith("io.debezium.engine.spi"))
                 .sorted()
                 .toArray(String[]::new);
 
@@ -50,12 +51,19 @@ public class DebeziumSupportProcessor {
         return new ReflectiveClassBuildItem(false, false,
                 new String[] { "org.apache.kafka.connect.storage.FileOffsetBackingStore",
                         "org.apache.kafka.connect.storage.MemoryOffsetBackingStore",
-                        "io.debezium.relational.history.FileDatabaseHistory" });
+                        "io.debezium.relational.history.FileDatabaseHistory",
+                        "io.debezium.embedded.ConvertingEngineBuilderFactory" });
     }
 
     @BuildStep
     void addDependencies(BuildProducer<IndexDependencyBuildItem> indexDependency) {
         indexDependency.produce(new IndexDependencyBuildItem("org.apache.kafka", "connect-json"));
-        indexDependency.produce(new IndexDependencyBuildItem("io.debezium", "debezium-embedded"));
+        indexDependency.produce(new IndexDependencyBuildItem("io.debezium", "debezium-api"));
+    }
+
+    @BuildStep
+    void registerServiceProviders(BuildProducer<NativeImageResourceBuildItem> nativeImage) {
+        nativeImage.produce(
+                new NativeImageResourceBuildItem("META-INF/services/io.debezium.engine.DebeziumEngine$BuilderFactory"));
     }
 }
diff --git a/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java b/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java
index 84029bc..34f58be 100644
--- a/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java
+++ b/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java
@@ -22,6 +22,7 @@ import java.util.List;
 import org.apache.camel.CamelContext;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.main.RoutesCollector;
+import org.apache.camel.model.RouteTemplatesDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
 
@@ -40,6 +41,12 @@ public class CustomRoutesCollector implements RoutesCollector {
     }
 
     @Override
+    public List<RouteTemplatesDefinition> collectXmlRouteTemplatesFromDirectory(CamelContext camelContext, String directory)
+            throws Exception {
+        return Collections.emptyList();
+    }
+
+    @Override
     public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) throws Exception {
         return Collections.emptyList();
     }
diff --git a/pom.xml b/pom.xml
index 3634157..14c2ecf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,9 +45,10 @@
         <animal-sniffer.version>1.18</animal-sniffer.version>
         <awssdk1.version>1.11.714</awssdk1.version>
         <awssdk1-swf-libs.version>1.11.22</awssdk1-swf-libs.version>
-        <awssdk2.version>2.13.33</awssdk2.version>
-        <camel.version>3.4.2</camel.version>
-        <debezium.version>1.2.0.Final</debezium.version>
+        <awssdk2.version>2.13.58</awssdk2.version>
+        <camel.version>3.5.0-SNAPSHOT</camel.version>
+        <debezium.version>1.2.1.Final</debezium.version>
+        <elasticsearch.version>7.6.1</elasticsearch.version>
         <freemarker.version>2.3.30</freemarker.version>
         <github-api.version>1.111</github-api.version>
         <google-http-client.version>1.22.0</google-http-client.version>
@@ -72,7 +73,7 @@
         <retrofit.version>2.5.0</retrofit.version>
         <smallrye.reactive.messaging.camel.version>2.2.1</smallrye.reactive.messaging.camel.version>
         <!-- Keep spring.version aligned with the version used by Camel -->
-        <spring.version>5.2.7.RELEASE</spring.version>
+        <spring.version>5.2.8.RELEASE</spring.version>
         <snakeyaml.version>1.26</snakeyaml.version>
         <threetenbp.version>1.4.0</threetenbp.version>
         <xalan.version>2.7.2</xalan.version>
@@ -104,7 +105,7 @@
         <google-auth-library-credentials.version>0.19.0</google-auth-library-credentials.version>
         <google-auth-library-oauth2-http.version>0.19.0</google-auth-library-oauth2-http.version>
         <groovy-maven-plugin.version>2.1.1</groovy-maven-plugin.version>
-        <groovy.version>3.0.4</groovy.version>
+        <groovy.version>3.0.5</groovy.version>
         <jandex-maven-plugin.version>1.0.8</jandex-maven-plugin.version>
         <os-maven-plugin.version>1.6.2</os-maven-plugin.version>
         <properties-maven-plugin.version>1.0.0</properties-maven-plugin.version>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index b3dcdb2..eeedc63 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -3261,6 +3261,16 @@
                 <version>${ahc.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.codehaus.groovy</groupId>
+                <artifactId>groovy</artifactId>
+                <version>${groovy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.groovy</groupId>
+                <artifactId>groovy-json</artifactId>
+                <version>${groovy.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>animal-sniffer-annotations</artifactId>
                 <version>${animal-sniffer.version}</version>