You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2020/03/24 16:16:14 UTC

[camel-k-runtime] branch master updated (67b9777 -> c7670b5)

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

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


    from 67b9777  Merge pull request #276 from apache/jandex-2.1.3
     new 15e692a  create platform http service #265
     new 46b9371  Leverage platform http service in camel-knative #264
     new ebc2c81  Improve it for camel-k-maven-plugin
     new abdb7ab  Review dependencies
     new 1ddff6e  Remove deprecate method
     new b69f1fe  Fix camel-buildtools in bom
     new c7670b5  Set version to 1.3.0-SNAPSHOT

The 7 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:
 camel-k-loader-groovy/pom.xml                      |  61 +--
 camel-k-loader-java/pom.xml                        |  40 +-
 .../camel/k/loader/java/JavaSourceLoader.java      |   9 +-
 .../camel/k/loader/java/RoutesLoaderTest.java      |   3 +-
 camel-k-loader-js/pom.xml                          |  46 +-
 .../camel/k/loader/js/JavaScriptSourceLoader.java  |   6 +-
 camel-k-loader-kotlin/pom.xml                      |  50 +-
 camel-k-loader-xml/pom.xml                         |  34 +-
 .../camel-k-loader-yaml-common/pom.xml             |   2 +-
 camel-k-loader-yaml/camel-k-loader-yaml/pom.xml    |  60 +--
 .../camel/k/loader/yaml/YamlSourceLoader.java      |   6 +
 .../camel/k/loader/yaml/DefinitionsTest.groovy     |  21 +-
 .../apache/camel/k/loader/yaml/TestSupport.groovy  |   3 +-
 camel-k-loader-yaml/pom.xml                        |   2 +-
 camel-k-main/camel-k-runtime-health/pom.xml        |  59 +--
 .../camel/k/health/HealthContextCustomizer.java    |  23 +-
 .../camel/k/health/HealthCustomizerTest.java       |  22 +-
 .../camel/k/inspector/InspectorCustomizer.java     |  29 --
 .../camel/k/inspector/InspectorEndpoint.java       | 220 ---------
 .../camel/k/inspector/InspectorCustomizerTest.java |  74 ---
 camel-k-main/camel-k-runtime-main/pom.xml          |  36 +-
 camel-k-main/pom.xml                               |   3 +-
 .../camel-k-quarkus-core/deployment/pom.xml        |   2 +-
 camel-k-quarkus/camel-k-quarkus-core/it/pom.xml    |   2 +-
 camel-k-quarkus/camel-k-quarkus-core/pom.xml       |   2 +-
 .../camel-k-quarkus-core/runtime/pom.xml           |   2 +-
 .../camel-k-quarkus-knative/deployment/pom.xml     |   2 +-
 .../knative/deployment/DeploymentProcessor.java    |  14 +-
 camel-k-quarkus/camel-k-quarkus-knative/pom.xml    |   2 +-
 .../camel-k-quarkus-knative/runtime/pom.xml        |   2 +-
 .../camel/k/quarkus/knative/KnativeRecorder.java   |  17 +-
 .../deployment/pom.xml                             |   2 +-
 .../camel-k-quarkus-loader-groovy/pom.xml          |   2 +-
 .../camel-k-quarkus-loader-groovy/runtime/pom.xml  |   2 +-
 .../camel-k-quarkus-loader-java/deployment/pom.xml |   2 +-
 .../camel-k-quarkus-loader-java/pom.xml            |   2 +-
 .../camel-k-quarkus-loader-java/runtime/pom.xml    |   2 +-
 .../camel-k-quarkus-loader-js/deployment/pom.xml   |   2 +-
 .../camel-k-quarkus-loader-js/it/pom.xml           |   2 +-
 .../js/quarkus/deployment/ExtensionTest.java       |   5 +-
 camel-k-quarkus/camel-k-quarkus-loader-js/pom.xml  |   2 +-
 .../camel-k-quarkus-loader-js/runtime/pom.xml      |   2 +-
 .../deployment/pom.xml                             |   2 +-
 .../camel-k-quarkus-loader-kotlin/pom.xml          |   2 +-
 .../camel-k-quarkus-loader-kotlin/runtime/pom.xml  |   2 +-
 .../camel-k-quarkus-loader-xml/deployment/pom.xml  |   2 +-
 .../camel-k-quarkus-loader-xml/it/pom.xml          |   2 +-
 .../xml/quarkus/deployment/ExtensionTest.java      |   5 +-
 camel-k-quarkus/camel-k-quarkus-loader-xml/pom.xml |   2 +-
 .../camel-k-quarkus-loader-xml/runtime/pom.xml     |   2 +-
 .../camel-k-quarkus-loader-yaml/deployment/pom.xml |   2 +-
 .../camel-k-quarkus-loader-yaml/it/pom.xml         |   2 +-
 .../yaml/quarkus/deployment/ExtensionTest.java     |   5 +-
 .../camel-k-quarkus-loader-yaml/pom.xml            |   2 +-
 .../camel-k-quarkus-loader-yaml/runtime/pom.xml    |   2 +-
 .../camel-k-runtime-quarkus/deployment/pom.xml     |   2 +-
 camel-k-quarkus/camel-k-runtime-quarkus/pom.xml    |   2 +-
 .../camel-k-runtime-quarkus/runtime/pom.xml        |   2 +-
 camel-k-quarkus/pom.xml                            |   2 +-
 camel-k-runtime-bom/pom.xml                        |   6 +-
 camel-k-runtime-core/pom.xml                       |  48 +-
 .../src/main/java/org/apache/camel/k/Sources.java  |  18 +-
 .../apache/camel/k/support/PropertiesSupport.java  |   5 +-
 .../org/apache/camel/k/support/StringSupport.java  |  69 +++
 camel-k-runtime-cron/pom.xml                       |  57 +--
 .../pom.xml                                        |  67 +--
 .../java/org/apache/camel/k/http/PlatformHttp.java |  75 +++
 .../apache/camel/k/http/PlatformHttpServer.java    | 175 +++++++
 .../k/http/PlatformHttpServiceConfiguration.java   | 131 +++++
 .../http/PlatformHttpServiceContextCustomizer.java |  56 +--
 .../camel/k/http/PlatformHttpServiceEndpoint.java  | 118 +++++
 .../k/http/engine/RuntimePlatformHttpConsumer.java | 391 +++++++++++++++
 .../k/http/engine/RuntimePlatformHttpEngine.java   |  15 +-
 .../org/apache/camel/k/customizer/platform-http    |   2 +-
 .../k/http/PlatformHttpServiceCustomizerTest.java  | 145 ++++++
 .../src/test/resources/log4j2-test.xml             |   0
 camel-k-runtime-knative/pom.xml                    |  61 +--
 .../knative/KnativeSourceRoutesLoaderTest.java     |   7 +-
 camel-k-runtime-master/pom.xml                     |  52 +-
 camel-k-runtime-webhook/pom.xml                    |  69 +--
 .../camel/k/webhook/DummyWebhookComponent.java     |   9 +
 .../org/apache/camel/k/webhook/WebhookTest.java    |  48 +-
 .../src/test/resources/webhook.js                  |   3 +-
 camel-knative/camel-knative-api/pom.xml            |   2 +-
 .../component/knative/spi/KnativeEnvironment.java  |  37 +-
 camel-knative/camel-knative-http/pom.xml           |  73 +--
 .../camel/component/knative/http/KnativeHttp.java  |  46 --
 .../knative/http/KnativeHttpConsumer.java          | 164 +++---
 .../http/KnativeHttpConsumerDispatcher.java        | 203 --------
 .../knative/http/KnativeHttpProducer.java          |  17 +-
 .../component/knative/http/KnativeHttpSupport.java |   7 -
 .../knative/http/KnativeHttpTransport.java         | 136 +----
 .../component/knative/http/KnativeHttpTest.java    | 549 +++++++++++----------
 .../src/test/resources/log4j2-test.xml             |   7 +-
 camel-knative/camel-knative/pom.xml                |  91 +---
 .../apache/camel/component/knative/knative.json    |   4 +-
 .../camel/component/knative/KnativeComponent.java  |  28 +-
 .../component/knative/KnativeConfiguration.java    |  12 +
 .../camel/component/knative/KnativeProducer.java   |   7 +-
 .../component/knative/ce/CloudEventProcessors.java |   5 +-
 camel-knative/pom.xml                              |   2 +-
 distribution/pom.xml                               |   2 +-
 examples/camel-k-runtime-example-groovy/pom.xml    |   2 +-
 .../camel-k-runtime-example-health/README.adoc     |  25 -
 .../src/main/resources/routes.groovy               |  21 -
 .../main/resources => data}/application.properties |   8 +-
 .../{src/main/resources => data}/env.json          |   2 -
 .../{src/main/resources => data}/routes.yaml       |   0
 examples/camel-k-runtime-example-knative/pom.xml   |   6 +-
 .../camel-k-runtime-example-quarkus-groovy/pom.xml |   2 +-
 .../camel-k-runtime-example-quarkus-java/pom.xml   |   2 +-
 .../camel-k-runtime-example-quarkus-js/pom.xml     |   2 +-
 .../pom.xml                                        |   2 +-
 .../camel-k-runtime-example-quarkus-xml/pom.xml    |   2 +-
 .../camel-k-runtime-example-quarkus-yaml/pom.xml   |   2 +-
 examples/camel-k-runtime-example-rest/README.adoc  |  58 +++
 .../data}/application.properties                   |   4 +-
 .../data/routes.groovy                             |  18 +-
 .../pom.xml                                        |  20 +-
 examples/camel-k-runtime-example-yaml/pom.xml      |   2 +-
 examples/pom.xml                                   |   4 +-
 pom.xml                                            |  92 +++-
 tooling/camel-k-annotations/pom.xml                |   2 +-
 tooling/camel-k-apt/pom.xml                        |   2 +-
 tooling/camel-k-maven-plugin/pom.xml               |  32 +-
 .../src/it/generate-catalog-main/verify.groovy     |  39 +-
 .../src/it/generate-catalog-quarkus/verify.groovy  |  37 +-
 .../src/it/generate-rest-dsl-from-v2/verify.groovy |  16 +-
 .../src/it/generate-rest-dsl-from-v3/verify.groovy |  21 +-
 .../camel/k/tooling/maven/GenerateCatalogMojo.java |   2 +-
 .../camel/k/tooling/maven/GenerateRestXML.java     |  10 +-
 .../maven/processors/CatalogProcessor3x.java       |   2 +-
 .../maven/processors/CatalogProcessor3Test.java    |   2 +-
 .../camel-k-test}/pom.xml                          | 101 ++--
 .../apache/camel/k/test/AvailablePortFinder.java   |  84 ++++
 tooling/pom.xml                                    |   3 +-
 136 files changed, 2359 insertions(+), 2206 deletions(-)
 delete mode 100644 camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorCustomizer.java
 delete mode 100644 camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorEndpoint.java
 delete mode 100644 camel-k-main/camel-k-runtime-inspector/src/test/java/org/apache/camel/k/inspector/InspectorCustomizerTest.java
 create mode 100644 camel-k-runtime-core/src/main/java/org/apache/camel/k/support/StringSupport.java
 copy {camel-k-main/camel-k-runtime-inspector => camel-k-runtime-http}/pom.xml (59%)
 create mode 100644 camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttp.java
 create mode 100644 camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServer.java
 create mode 100644 camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceConfiguration.java
 rename camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorContextCustomizer.java => camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceContextCustomizer.java (52%)
 create mode 100644 camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceEndpoint.java
 create mode 100644 camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpConsumer.java
 copy camel-k-loader-js/src/main/java/org/apache/camel/k/loader/js/dsl/ProcessorSupport.java => camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpEngine.java (63%)
 rename camel-k-main/camel-k-runtime-inspector/src/main/resources/META-INF/services/org/apache/camel/k/customizer/inspector => camel-k-runtime-http/src/main/resources/META-INF/services/org/apache/camel/k/customizer/platform-http (92%)
 create mode 100644 camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
 rename {camel-k-main/camel-k-runtime-inspector => camel-k-runtime-http}/src/test/resources/log4j2-test.xml (100%)
 delete mode 100644 camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumerDispatcher.java
 delete mode 100644 examples/camel-k-runtime-example-health/README.adoc
 delete mode 100644 examples/camel-k-runtime-example-health/src/main/resources/routes.groovy
 rename examples/camel-k-runtime-example-knative/{src/main/resources => data}/application.properties (88%)
 rename examples/camel-k-runtime-example-knative/{src/main/resources => data}/env.json (75%)
 rename examples/camel-k-runtime-example-knative/{src/main/resources => data}/routes.yaml (100%)
 create mode 100644 examples/camel-k-runtime-example-rest/README.adoc
 rename examples/{camel-k-runtime-example-health/src/main/resources => camel-k-runtime-example-rest/data}/application.properties (91%)
 copy camel-k-loader-groovy/src/test/resources/routes-with-component-wrong-property-configuration.groovy => examples/camel-k-runtime-example-rest/data/routes.groovy (79%)
 rename examples/{camel-k-runtime-example-health => camel-k-runtime-example-rest}/pom.xml (83%)
 rename {camel-k-main/camel-k-runtime-inspector => tooling/camel-k-test}/pom.xml (53%)
 create mode 100644 tooling/camel-k-test/src/main/java/org/apache/camel/k/test/AvailablePortFinder.java


[camel-k-runtime] 03/07: Improve it for camel-k-maven-plugin

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

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

commit ebc2c819dbed24b7f2eac587214bc951b3757736
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Fri Mar 20 16:06:58 2020 +0100

    Improve it for camel-k-maven-plugin
---
 tooling/camel-k-maven-plugin/pom.xml               | 24 +++++++++++--
 .../src/it/generate-catalog-main/verify.groovy     | 39 ++++++++++++----------
 .../src/it/generate-catalog-quarkus/verify.groovy  | 37 +++++++++++---------
 .../src/it/generate-rest-dsl-from-v2/verify.groovy | 16 +++++----
 .../src/it/generate-rest-dsl-from-v3/verify.groovy | 21 ++++++------
 5 files changed, 84 insertions(+), 53 deletions(-)

diff --git a/tooling/camel-k-maven-plugin/pom.xml b/tooling/camel-k-maven-plugin/pom.xml
index e8497a1..f011d1c 100644
--- a/tooling/camel-k-maven-plugin/pom.xml
+++ b/tooling/camel-k-maven-plugin/pom.xml
@@ -230,6 +230,9 @@
         <configuration>
           <scriptVariables>
             <runtimeVersion>${project.version}</runtimeVersion>
+            <camelVersion>${camel.version}</camelVersion>
+            <camelQuarkusVersion>${camel-quarkus.version}</camelQuarkusVersion>
+            <quarkusVersion>${quarkus.version}</quarkusVersion>
           </scriptVariables>
           <pomIncludes>
             <pomInclude>generate-catalog-main/pom.xml</pomInclude>
@@ -258,9 +261,24 @@
         </executions>
         <dependencies>
           <dependency>
-            <groupId>org.yaml</groupId>
-            <artifactId>snakeyaml</artifactId>
-            <version>1.25</version>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy</artifactId>
+            <version>${groovy.version}</version>
+          </dependency>
+          <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-yaml</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.groovy</groupId>
+            <artifactId>groovy-xml</artifactId>
+            <version>${groovy.version}</version>
           </dependency>
         </dependencies>
       </plugin>
diff --git a/tooling/camel-k-maven-plugin/src/it/generate-catalog-main/verify.groovy b/tooling/camel-k-maven-plugin/src/it/generate-catalog-main/verify.groovy
index f9ebcef..570e81d 100644
--- a/tooling/camel-k-maven-plugin/src/it/generate-catalog-main/verify.groovy
+++ b/tooling/camel-k-maven-plugin/src/it/generate-catalog-main/verify.groovy
@@ -14,25 +14,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-def source  = new File(basedir, "catalog.yaml")
-def catalog = new org.yaml.snakeyaml.Yaml().load(new FileInputStream(source))
 
-assert catalog.spec.runtime.version == runtimeVersion
-assert catalog.spec.runtime.applicationClass == 'org.apache.camel.k.main.Application'
+new File(basedir, "catalog.yaml").withReader {
+    def catalog = new groovy.yaml.YamlSlurper().parse(it)
 
-assert catalog.spec.runtime.capabilities['health'].dependencies[0].groupId == 'org.apache.camel.k'
-assert catalog.spec.runtime.capabilities['health'].dependencies[0].artifactId == 'camel-k-runtime-health'
-assert catalog.spec.runtime.capabilities['rest'].dependencies[0].groupId == 'org.apache.camel'
-assert catalog.spec.runtime.capabilities['rest'].dependencies[0].artifactId == 'camel-rest'
-assert catalog.spec.runtime.capabilities['rest'].dependencies[1].groupId == 'org.apache.camel.k'
-assert catalog.spec.runtime.capabilities['rest'].dependencies[1].artifactId == 'camel-k-runtime-http'
+    assert catalog.spec.runtime.version == runtimeVersion
+    assert catalog.spec.runtime.applicationClass == 'org.apache.camel.k.main.Application'
+    assert catalog.spec.runtime.metadata['camel.version'] == camelVersion
+    assert catalog.spec.runtime.metadata['quarkus.version'] == quarkusVersion
+    assert catalog.spec.runtime.metadata['camel-quarkus.version'] == camelQuarkusVersion
 
-assert catalog.metadata.labels['camel.apache.org/runtime.version'] == runtimeVersion
+    assert catalog.spec.runtime.capabilities['health'].dependencies[0].groupId == 'org.apache.camel.k'
+    assert catalog.spec.runtime.capabilities['health'].dependencies[0].artifactId == 'camel-k-runtime-health'
+    assert catalog.spec.runtime.capabilities['rest'].dependencies[0].groupId == 'org.apache.camel'
+    assert catalog.spec.runtime.capabilities['rest'].dependencies[0].artifactId == 'camel-rest'
+    assert catalog.spec.runtime.capabilities['rest'].dependencies[1].groupId == 'org.apache.camel.k'
+    assert catalog.spec.runtime.capabilities['rest'].dependencies[1].artifactId == 'camel-k-runtime-http'
 
-assert catalog.spec.artifacts['camel-knative'].dependencies.size == 3
-assert catalog.spec.artifacts['camel-knative'].dependencies.find { it.groupId == 'org.apache.camel.k' && it.artifactId == 'camel-knative-api'}
-assert catalog.spec.artifacts['camel-knative'].dependencies.find { it.groupId == 'org.apache.camel.k' && it.artifactId == 'camel-knative'}
-assert catalog.spec.artifacts['camel-knative'].dependencies.find { it.groupId == 'org.apache.camel.k' && it.artifactId == 'camel-knative-http'}
+    assert catalog.metadata.labels['camel.apache.org/runtime.version'] == runtimeVersion
 
-assert catalog.spec.artifacts['camel-knative'].schemes.size == 1
-assert catalog.spec.artifacts['camel-knative'].schemes[0].id == 'knative'
+    assert catalog.spec.artifacts['camel-knative'].dependencies.size == 3
+    assert catalog.spec.artifacts['camel-knative'].dependencies.find { it.groupId == 'org.apache.camel.k' && it.artifactId == 'camel-knative-api'}
+    assert catalog.spec.artifacts['camel-knative'].dependencies.find { it.groupId == 'org.apache.camel.k' && it.artifactId == 'camel-knative'}
+    assert catalog.spec.artifacts['camel-knative'].dependencies.find { it.groupId == 'org.apache.camel.k' && it.artifactId == 'camel-knative-http'}
+
+    assert catalog.spec.artifacts['camel-knative'].schemes.size == 1
+    assert catalog.spec.artifacts['camel-knative'].schemes[0].id == 'knative'
+}
diff --git a/tooling/camel-k-maven-plugin/src/it/generate-catalog-quarkus/verify.groovy b/tooling/camel-k-maven-plugin/src/it/generate-catalog-quarkus/verify.groovy
index 0236404..af9d3db 100644
--- a/tooling/camel-k-maven-plugin/src/it/generate-catalog-quarkus/verify.groovy
+++ b/tooling/camel-k-maven-plugin/src/it/generate-catalog-quarkus/verify.groovy
@@ -14,23 +14,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-def source  = new File(basedir, "catalog.yaml")
-def catalog = new org.yaml.snakeyaml.Yaml().load(new FileInputStream(source))
 
-assert catalog.spec.runtime.version == runtimeVersion
-assert catalog.spec.runtime.applicationClass == 'io.quarkus.runner.GeneratedMain'
+new File(basedir, "catalog.yaml").withReader {
+    def catalog = new groovy.yaml.YamlSlurper().parse(it)
 
-assert catalog.spec.runtime.capabilities['health'].dependencies[0].groupId == 'org.apache.camel.quarkus'
-assert catalog.spec.runtime.capabilities['health'].dependencies[0].artifactId == 'camel-quarkus-microprofile-health'
-assert catalog.spec.runtime.capabilities['rest'].dependencies[0].groupId == 'org.apache.camel.quarkus'
-assert catalog.spec.runtime.capabilities['rest'].dependencies[0].artifactId == 'camel-quarkus-rest'
-assert catalog.spec.runtime.capabilities['rest'].dependencies[1].groupId == 'org.apache.camel.quarkus'
-assert catalog.spec.runtime.capabilities['rest'].dependencies[1].artifactId == 'camel-quarkus-platform-http'
+    assert catalog.spec.runtime.version == runtimeVersion
+    assert catalog.spec.runtime.applicationClass == 'io.quarkus.runner.GeneratedMain'
+    assert catalog.spec.runtime.metadata['camel.version'] == camelVersion
+    assert catalog.spec.runtime.metadata['quarkus.version'] == quarkusVersion
+    assert catalog.spec.runtime.metadata['camel-quarkus.version'] == camelQuarkusVersion
 
-assert catalog.metadata.labels['camel.apache.org/runtime.version'] == runtimeVersion
+    assert catalog.spec.runtime.capabilities['health'].dependencies[0].groupId == 'org.apache.camel.quarkus'
+    assert catalog.spec.runtime.capabilities['health'].dependencies[0].artifactId == 'camel-quarkus-microprofile-health'
+    assert catalog.spec.runtime.capabilities['rest'].dependencies[0].groupId == 'org.apache.camel.quarkus'
+    assert catalog.spec.runtime.capabilities['rest'].dependencies[0].artifactId == 'camel-quarkus-rest'
+    assert catalog.spec.runtime.capabilities['rest'].dependencies[1].groupId == 'org.apache.camel.quarkus'
+    assert catalog.spec.runtime.capabilities['rest'].dependencies[1].artifactId == 'camel-quarkus-platform-http'
 
-assert catalog.spec.artifacts['camel-knative'].dependencies.size == 1
-assert catalog.spec.artifacts['camel-knative'].dependencies[0].groupId == 'org.apache.camel.k'
-assert catalog.spec.artifacts['camel-knative'].dependencies[0].artifactId == 'camel-k-quarkus-knative'
-assert catalog.spec.artifacts['camel-knative'].schemes.size == 1
-assert catalog.spec.artifacts['camel-knative'].schemes[0].id == 'knative'
+    assert catalog.metadata.labels['camel.apache.org/runtime.version'] == runtimeVersion
+
+    assert catalog.spec.artifacts['camel-knative'].dependencies.size == 1
+    assert catalog.spec.artifacts['camel-knative'].dependencies[0].groupId == 'org.apache.camel.k'
+    assert catalog.spec.artifacts['camel-knative'].dependencies[0].artifactId == 'camel-k-quarkus-knative'
+    assert catalog.spec.artifacts['camel-knative'].schemes.size == 1
+    assert catalog.spec.artifacts['camel-knative'].schemes[0].id == 'knative'
+}
\ No newline at end of file
diff --git a/tooling/camel-k-maven-plugin/src/it/generate-rest-dsl-from-v2/verify.groovy b/tooling/camel-k-maven-plugin/src/it/generate-rest-dsl-from-v2/verify.groovy
index c17d402..55386da 100644
--- a/tooling/camel-k-maven-plugin/src/it/generate-rest-dsl-from-v2/verify.groovy
+++ b/tooling/camel-k-maven-plugin/src/it/generate-rest-dsl-from-v2/verify.groovy
@@ -15,11 +15,13 @@
  * limitations under the License.
  */
 
-def source  = new File(basedir, "document.xml")
-def document = new XmlSlurper().parse(source)
 
-assert document.rest.@path == '/camel/'
-assert document.rest.get.size() == 1
-assert document.rest.get[0].@id == 'greeting-api'
-assert document.rest.get[0].@uri == '/greetings/{name}'
-assert document.rest.get[0].to.@uri == 'direct:greeting-api'
\ No newline at end of file
+new File(basedir, "document.xml").withReader {
+    def document = new groovy.util.XmlSlurper().parse(it)
+
+    assert document.rest.@path == '/camel/'
+    assert document.rest.get.size() == 1
+    assert document.rest.get[0].@id == 'greeting-api'
+    assert document.rest.get[0].@uri == '/greetings/{name}'
+    assert document.rest.get[0].to.@uri == 'direct:greeting-api'
+}
\ No newline at end of file
diff --git a/tooling/camel-k-maven-plugin/src/it/generate-rest-dsl-from-v3/verify.groovy b/tooling/camel-k-maven-plugin/src/it/generate-rest-dsl-from-v3/verify.groovy
index 30e90e0..b5d010d 100644
--- a/tooling/camel-k-maven-plugin/src/it/generate-rest-dsl-from-v3/verify.groovy
+++ b/tooling/camel-k-maven-plugin/src/it/generate-rest-dsl-from-v3/verify.groovy
@@ -15,14 +15,15 @@
  * limitations under the License.
  */
 
-def source  = new File(basedir, "document.xml")
-def document = new XmlSlurper().parse(source)
+new File(basedir, "document.xml").withReader {
+    def document = new groovy.util.XmlSlurper().parse(it)
 
-assert document.rest.@path == '/v1'
-assert document.rest.get.size() == 2
-assert document.rest.get.find { it.@id == 'listPets' }.@uri == '/pets'
-assert document.rest.get.find { it.@id == 'listPets' }.to.@uri == 'direct:listPets'
-assert document.rest.get.find { it.@id == 'showPetById' }.@uri == '/pets/{petId}'
-assert document.rest.get.find { it.@id == 'showPetById' }.to.@uri == 'direct:showPetById'
-assert document.rest.post.find { it.@id == 'createPets' }.@uri == '/pets'
-assert document.rest.post.find { it.@id == 'createPets' }.to.@uri == 'direct:createPets'
+    assert document.rest.@path == '/v1'
+    assert document.rest.get.size() == 2
+    assert document.rest.get.find { it.@id == 'listPets' }.@uri == '/pets'
+    assert document.rest.get.find { it.@id == 'listPets' }.to.@uri == 'direct:listPets'
+    assert document.rest.get.find { it.@id == 'showPetById' }.@uri == '/pets/{petId}'
+    assert document.rest.get.find { it.@id == 'showPetById' }.to.@uri == 'direct:showPetById'
+    assert document.rest.post.find { it.@id == 'createPets' }.@uri == '/pets'
+    assert document.rest.post.find { it.@id == 'createPets' }.to.@uri == 'direct:createPets'
+}


[camel-k-runtime] 07/07: Set version to 1.3.0-SNAPSHOT

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

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

commit c7670b5949f18f691d57cb2984956c70b51c035a
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Mon Mar 23 08:28:03 2020 +0100

    Set version to 1.3.0-SNAPSHOT
---
 camel-k-loader-groovy/pom.xml                                           | 2 +-
 camel-k-loader-java/pom.xml                                             | 2 +-
 camel-k-loader-js/pom.xml                                               | 2 +-
 camel-k-loader-kotlin/pom.xml                                           | 2 +-
 camel-k-loader-xml/pom.xml                                              | 2 +-
 camel-k-loader-yaml/camel-k-loader-yaml-common/pom.xml                  | 2 +-
 camel-k-loader-yaml/camel-k-loader-yaml/pom.xml                         | 2 +-
 camel-k-loader-yaml/pom.xml                                             | 2 +-
 camel-k-main/camel-k-runtime-health/pom.xml                             | 2 +-
 camel-k-main/camel-k-runtime-main/pom.xml                               | 2 +-
 camel-k-main/pom.xml                                                    | 2 +-
 camel-k-quarkus/camel-k-quarkus-core/deployment/pom.xml                 | 2 +-
 camel-k-quarkus/camel-k-quarkus-core/it/pom.xml                         | 2 +-
 camel-k-quarkus/camel-k-quarkus-core/pom.xml                            | 2 +-
 camel-k-quarkus/camel-k-quarkus-core/runtime/pom.xml                    | 2 +-
 camel-k-quarkus/camel-k-quarkus-knative/deployment/pom.xml              | 2 +-
 camel-k-quarkus/camel-k-quarkus-knative/pom.xml                         | 2 +-
 camel-k-quarkus/camel-k-quarkus-knative/runtime/pom.xml                 | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-groovy/deployment/pom.xml        | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-groovy/pom.xml                   | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-groovy/runtime/pom.xml           | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-java/deployment/pom.xml          | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-java/pom.xml                     | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-java/runtime/pom.xml             | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-js/deployment/pom.xml            | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-js/it/pom.xml                    | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-js/pom.xml                       | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-js/runtime/pom.xml               | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-kotlin/deployment/pom.xml        | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-kotlin/pom.xml                   | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-kotlin/runtime/pom.xml           | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-xml/deployment/pom.xml           | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-xml/it/pom.xml                   | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-xml/pom.xml                      | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-xml/runtime/pom.xml              | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-yaml/deployment/pom.xml          | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-yaml/it/pom.xml                  | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-yaml/pom.xml                     | 2 +-
 camel-k-quarkus/camel-k-quarkus-loader-yaml/runtime/pom.xml             | 2 +-
 camel-k-quarkus/camel-k-runtime-quarkus/deployment/pom.xml              | 2 +-
 camel-k-quarkus/camel-k-runtime-quarkus/pom.xml                         | 2 +-
 camel-k-quarkus/camel-k-runtime-quarkus/runtime/pom.xml                 | 2 +-
 camel-k-quarkus/pom.xml                                                 | 2 +-
 camel-k-runtime-bom/pom.xml                                             | 2 +-
 camel-k-runtime-core/pom.xml                                            | 2 +-
 camel-k-runtime-cron/pom.xml                                            | 2 +-
 camel-k-runtime-http/pom.xml                                            | 2 +-
 camel-k-runtime-knative/pom.xml                                         | 2 +-
 camel-k-runtime-master/pom.xml                                          | 2 +-
 camel-k-runtime-webhook/pom.xml                                         | 2 +-
 camel-knative/camel-knative-api/pom.xml                                 | 2 +-
 camel-knative/camel-knative-http/pom.xml                                | 2 +-
 camel-knative/camel-knative/pom.xml                                     | 2 +-
 .../generated/resources/org/apache/camel/component/knative/knative.json | 2 +-
 camel-knative/pom.xml                                                   | 2 +-
 distribution/pom.xml                                                    | 2 +-
 examples/camel-k-runtime-example-groovy/pom.xml                         | 2 +-
 examples/camel-k-runtime-example-knative/pom.xml                        | 2 +-
 examples/camel-k-runtime-example-quarkus-groovy/pom.xml                 | 2 +-
 examples/camel-k-runtime-example-quarkus-java/pom.xml                   | 2 +-
 examples/camel-k-runtime-example-quarkus-js/pom.xml                     | 2 +-
 examples/camel-k-runtime-example-quarkus-knative/pom.xml                | 2 +-
 examples/camel-k-runtime-example-quarkus-xml/pom.xml                    | 2 +-
 examples/camel-k-runtime-example-quarkus-yaml/pom.xml                   | 2 +-
 examples/camel-k-runtime-example-rest/pom.xml                           | 2 +-
 examples/camel-k-runtime-example-yaml/pom.xml                           | 2 +-
 examples/pom.xml                                                        | 2 +-
 pom.xml                                                                 | 2 +-
 tooling/camel-k-annotations/pom.xml                                     | 2 +-
 tooling/camel-k-apt/pom.xml                                             | 2 +-
 tooling/camel-k-maven-plugin/pom.xml                                    | 2 +-
 tooling/camel-k-test/pom.xml                                            | 2 +-
 tooling/pom.xml                                                         | 2 +-
 73 files changed, 73 insertions(+), 73 deletions(-)

diff --git a/camel-k-loader-groovy/pom.xml b/camel-k-loader-groovy/pom.xml
index 42b52b7..112aac3 100644
--- a/camel-k-loader-groovy/pom.xml
+++ b/camel-k-loader-groovy/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-loader-java/pom.xml b/camel-k-loader-java/pom.xml
index 0302e8c..a5d1db8 100644
--- a/camel-k-loader-java/pom.xml
+++ b/camel-k-loader-java/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-loader-js/pom.xml b/camel-k-loader-js/pom.xml
index 04daef8..6bb27d4 100644
--- a/camel-k-loader-js/pom.xml
+++ b/camel-k-loader-js/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-loader-kotlin/pom.xml b/camel-k-loader-kotlin/pom.xml
index f79338f..82ce0ec 100644
--- a/camel-k-loader-kotlin/pom.xml
+++ b/camel-k-loader-kotlin/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-loader-xml/pom.xml b/camel-k-loader-xml/pom.xml
index 496b2be..764a069 100644
--- a/camel-k-loader-xml/pom.xml
+++ b/camel-k-loader-xml/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml-common/pom.xml b/camel-k-loader-yaml/camel-k-loader-yaml-common/pom.xml
index 1a8ddc2..1cb76b1 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml-common/pom.xml
+++ b/camel-k-loader-yaml/camel-k-loader-yaml-common/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-loader-yaml-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml b/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
index 5f12848..1f8d67f 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-loader-yaml-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-loader-yaml/pom.xml b/camel-k-loader-yaml/pom.xml
index 47c7753..70089d7 100644
--- a/camel-k-loader-yaml/pom.xml
+++ b/camel-k-loader-yaml/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-main/camel-k-runtime-health/pom.xml b/camel-k-main/camel-k-runtime-health/pom.xml
index 2edea97..5552954 100644
--- a/camel-k-main/camel-k-runtime-health/pom.xml
+++ b/camel-k-main/camel-k-runtime-health/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-main</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-main/camel-k-runtime-main/pom.xml b/camel-k-main/camel-k-runtime-main/pom.xml
index 369d308..c826594 100644
--- a/camel-k-main/camel-k-runtime-main/pom.xml
+++ b/camel-k-main/camel-k-runtime-main/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-main</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-main/pom.xml b/camel-k-main/pom.xml
index 5bcb63b..bd0184e 100644
--- a/camel-k-main/pom.xml
+++ b/camel-k-main/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-quarkus/camel-k-quarkus-core/deployment/pom.xml b/camel-k-quarkus/camel-k-quarkus-core/deployment/pom.xml
index d11bfd4..eb83460 100644
--- a/camel-k-quarkus/camel-k-quarkus-core/deployment/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-core/deployment/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-core-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-core/it/pom.xml b/camel-k-quarkus/camel-k-quarkus-core/it/pom.xml
index 150081e..2ddb15d 100644
--- a/camel-k-quarkus/camel-k-quarkus-core/it/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-core/it/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-core-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-core/pom.xml b/camel-k-quarkus/camel-k-quarkus-core/pom.xml
index 1db2e93..4aa53bb 100644
--- a/camel-k-quarkus/camel-k-quarkus-core/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-core/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-quarkus/camel-k-quarkus-core/runtime/pom.xml b/camel-k-quarkus/camel-k-quarkus-core/runtime/pom.xml
index 3f6cda8..cddd7d6 100644
--- a/camel-k-quarkus/camel-k-quarkus-core/runtime/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-core/runtime/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-core-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-knative/deployment/pom.xml b/camel-k-quarkus/camel-k-quarkus-knative/deployment/pom.xml
index 96f8bc2..33dd66d 100644
--- a/camel-k-quarkus/camel-k-quarkus-knative/deployment/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-knative/deployment/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-knative-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-knative/pom.xml b/camel-k-quarkus/camel-k-quarkus-knative/pom.xml
index 6e5a00e..a6b81b3 100644
--- a/camel-k-quarkus/camel-k-quarkus-knative/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-knative/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-quarkus/camel-k-quarkus-knative/runtime/pom.xml b/camel-k-quarkus/camel-k-quarkus-knative/runtime/pom.xml
index 1b6020f..d89f3e3 100644
--- a/camel-k-quarkus/camel-k-quarkus-knative/runtime/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-knative/runtime/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-knative-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-groovy/deployment/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-groovy/deployment/pom.xml
index c0480dd..6f3c77b 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-groovy/deployment/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-groovy/deployment/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-groovy-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-groovy/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-groovy/pom.xml
index be5bc2f..c3db6a8 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-groovy/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-groovy/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-groovy/runtime/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-groovy/runtime/pom.xml
index 330b9b6..703f040 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-groovy/runtime/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-groovy/runtime/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-groovy-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-java/deployment/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-java/deployment/pom.xml
index 67cba9e..2dc995a 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-java/deployment/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-java/deployment/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-java-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-java/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-java/pom.xml
index 6f5914c..eebf5e9 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-java/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-java/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-java/runtime/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-java/runtime/pom.xml
index 36cf84a..2e85114 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-java/runtime/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-java/runtime/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-java-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-js/deployment/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-js/deployment/pom.xml
index e390e85..b8756a4 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-js/deployment/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-js/deployment/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-js-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-js/it/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-js/it/pom.xml
index 98c71ba..268bccd 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-js/it/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-js/it/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-js-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-js/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-js/pom.xml
index f65dbd4..846f151 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-js/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-js/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-js/runtime/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-js/runtime/pom.xml
index f1f7bf7..c7f4da6 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-js/runtime/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-js/runtime/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-js-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/deployment/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/deployment/pom.xml
index 891be73..821fd9a 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/deployment/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/deployment/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-kotlin-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/pom.xml
index 7fbb747..fbb56cb 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/runtime/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/runtime/pom.xml
index 270dae5..3a6dda0 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/runtime/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/runtime/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-kotlin-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-xml/deployment/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-xml/deployment/pom.xml
index 192f2d1..18c6ad9 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-xml/deployment/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-xml/deployment/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-xml-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-xml/it/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-xml/it/pom.xml
index e1ee50c..b09eefc 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-xml/it/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-xml/it/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-xml-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-xml/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-xml/pom.xml
index 985f8cc..c3e98b7 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-xml/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-xml/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-xml/runtime/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-xml/runtime/pom.xml
index e5d4b77..c1f4f4a 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-xml/runtime/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-xml/runtime/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-xml-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-yaml/deployment/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-yaml/deployment/pom.xml
index 650ecb2..76ee20b 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-yaml/deployment/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-yaml/deployment/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-yaml-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-yaml/it/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-yaml/it/pom.xml
index 5025e14..733a071 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-yaml/it/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-yaml/it/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-yaml-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-yaml/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-yaml/pom.xml
index 88ce419..27b7cec 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-yaml/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-yaml/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-yaml/runtime/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-yaml/runtime/pom.xml
index e6c98ed..c81e6b3 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-yaml/runtime/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-loader-yaml/runtime/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus-loader-yaml-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-runtime-quarkus/deployment/pom.xml b/camel-k-quarkus/camel-k-runtime-quarkus/deployment/pom.xml
index f6fa6e7..81cdf1a 100644
--- a/camel-k-quarkus/camel-k-runtime-quarkus/deployment/pom.xml
+++ b/camel-k-quarkus/camel-k-runtime-quarkus/deployment/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-quarkus-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/camel-k-runtime-quarkus/pom.xml b/camel-k-quarkus/camel-k-runtime-quarkus/pom.xml
index fd4bee9..720a93d 100644
--- a/camel-k-quarkus/camel-k-runtime-quarkus/pom.xml
+++ b/camel-k-quarkus/camel-k-runtime-quarkus/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-quarkus</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/pom.xml b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/pom.xml
index 42cad4b..b776cb7 100644
--- a/camel-k-quarkus/camel-k-runtime-quarkus/runtime/pom.xml
+++ b/camel-k-quarkus/camel-k-runtime-quarkus/runtime/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-quarkus-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-quarkus/pom.xml b/camel-k-quarkus/pom.xml
index 4d7cde2..5643159 100644
--- a/camel-k-quarkus/pom.xml
+++ b/camel-k-quarkus/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/camel-k-runtime-bom/pom.xml b/camel-k-runtime-bom/pom.xml
index af147b7..fdf21cb 100644
--- a/camel-k-runtime-bom/pom.xml
+++ b/camel-k-runtime-bom/pom.xml
@@ -28,7 +28,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.camel.k</groupId>
     <artifactId>camel-k-runtime-bom</artifactId>
-    <version>1.2.2-SNAPSHOT</version>
+    <version>1.3.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <developers>
diff --git a/camel-k-runtime-core/pom.xml b/camel-k-runtime-core/pom.xml
index 97aaa00..f11052a 100644
--- a/camel-k-runtime-core/pom.xml
+++ b/camel-k-runtime-core/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-runtime-cron/pom.xml b/camel-k-runtime-cron/pom.xml
index 7ba8429..e52d253 100644
--- a/camel-k-runtime-cron/pom.xml
+++ b/camel-k-runtime-cron/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-runtime-http/pom.xml b/camel-k-runtime-http/pom.xml
index dff4e07..c4d4eb2 100644
--- a/camel-k-runtime-http/pom.xml
+++ b/camel-k-runtime-http/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/camel-k-runtime-knative/pom.xml b/camel-k-runtime-knative/pom.xml
index d93b7a7..520c0a9 100644
--- a/camel-k-runtime-knative/pom.xml
+++ b/camel-k-runtime-knative/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-runtime-master/pom.xml b/camel-k-runtime-master/pom.xml
index d48f74c..306762f 100644
--- a/camel-k-runtime-master/pom.xml
+++ b/camel-k-runtime-master/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-k-runtime-webhook/pom.xml b/camel-k-runtime-webhook/pom.xml
index 7d277a5..7c5e9c8 100644
--- a/camel-k-runtime-webhook/pom.xml
+++ b/camel-k-runtime-webhook/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-knative/camel-knative-api/pom.xml b/camel-knative/camel-knative-api/pom.xml
index ef7db3f..86df59b 100644
--- a/camel-knative/camel-knative-api/pom.xml
+++ b/camel-knative/camel-knative-api/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-knative-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-knative/camel-knative-http/pom.xml b/camel-knative/camel-knative-http/pom.xml
index 59b1daa..abd18b0 100644
--- a/camel-knative/camel-knative-http/pom.xml
+++ b/camel-knative/camel-knative-http/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-knative-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-knative/camel-knative/pom.xml b/camel-knative/camel-knative/pom.xml
index 798c168..f1d2301 100644
--- a/camel-knative/camel-knative/pom.xml
+++ b/camel-knative/camel-knative/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-knative-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json b/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
index 5cebe3c..98a5a45 100644
--- a/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
+++ b/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
@@ -16,7 +16,7 @@
     "firstVersion": "3.0.0",
     "groupId": "org.apache.camel.k",
     "artifactId": "camel-knative",
-    "version": "1.2.2-SNAPSHOT"
+    "version": "1.3.0-SNAPSHOT"
   },
   "componentProperties": {
     "cloudEventsSpecVersion": { "kind": "property", "displayName": "Cloud Events Spec Version", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Set the version of the cloudevents spec." },
diff --git a/camel-knative/pom.xml b/camel-knative/pom.xml
index 5ce1167..cd716b7 100644
--- a/camel-knative/pom.xml
+++ b/camel-knative/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
diff --git a/distribution/pom.xml b/distribution/pom.xml
index e792aa5..4d1389b 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.apache.camel.k</groupId>
     <artifactId>camel-k-runtime-parent</artifactId>
-    <version>1.2.2-SNAPSHOT</version>
+    <version>1.3.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>
diff --git a/examples/camel-k-runtime-example-groovy/pom.xml b/examples/camel-k-runtime-example-groovy/pom.xml
index 482afd0..e33f4fd 100644
--- a/examples/camel-k-runtime-example-groovy/pom.xml
+++ b/examples/camel-k-runtime-example-groovy/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-examples</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/camel-k-runtime-example-knative/pom.xml b/examples/camel-k-runtime-example-knative/pom.xml
index c8a7064..5fa4ba2 100644
--- a/examples/camel-k-runtime-example-knative/pom.xml
+++ b/examples/camel-k-runtime-example-knative/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-examples</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/camel-k-runtime-example-quarkus-groovy/pom.xml b/examples/camel-k-runtime-example-quarkus-groovy/pom.xml
index 1c5dcd1..a47f89b 100644
--- a/examples/camel-k-runtime-example-quarkus-groovy/pom.xml
+++ b/examples/camel-k-runtime-example-quarkus-groovy/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-examples</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/examples/camel-k-runtime-example-quarkus-java/pom.xml b/examples/camel-k-runtime-example-quarkus-java/pom.xml
index abaea2e..f393442 100644
--- a/examples/camel-k-runtime-example-quarkus-java/pom.xml
+++ b/examples/camel-k-runtime-example-quarkus-java/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-examples</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/examples/camel-k-runtime-example-quarkus-js/pom.xml b/examples/camel-k-runtime-example-quarkus-js/pom.xml
index d83fe78..855b828 100644
--- a/examples/camel-k-runtime-example-quarkus-js/pom.xml
+++ b/examples/camel-k-runtime-example-quarkus-js/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-examples</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/examples/camel-k-runtime-example-quarkus-knative/pom.xml b/examples/camel-k-runtime-example-quarkus-knative/pom.xml
index d144fe1..90990c2 100644
--- a/examples/camel-k-runtime-example-quarkus-knative/pom.xml
+++ b/examples/camel-k-runtime-example-quarkus-knative/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-examples</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/examples/camel-k-runtime-example-quarkus-xml/pom.xml b/examples/camel-k-runtime-example-quarkus-xml/pom.xml
index 632b788..e2891e2 100644
--- a/examples/camel-k-runtime-example-quarkus-xml/pom.xml
+++ b/examples/camel-k-runtime-example-quarkus-xml/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-examples</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/examples/camel-k-runtime-example-quarkus-yaml/pom.xml b/examples/camel-k-runtime-example-quarkus-yaml/pom.xml
index 26566e4..25ee665 100644
--- a/examples/camel-k-runtime-example-quarkus-yaml/pom.xml
+++ b/examples/camel-k-runtime-example-quarkus-yaml/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-examples</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/examples/camel-k-runtime-example-rest/pom.xml b/examples/camel-k-runtime-example-rest/pom.xml
index 1245993..2ee2a07 100644
--- a/examples/camel-k-runtime-example-rest/pom.xml
+++ b/examples/camel-k-runtime-example-rest/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-examples</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/camel-k-runtime-example-yaml/pom.xml b/examples/camel-k-runtime-example-yaml/pom.xml
index 763d93d..f0525a7 100644
--- a/examples/camel-k-runtime-example-yaml/pom.xml
+++ b/examples/camel-k-runtime-example-yaml/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-examples</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/pom.xml b/examples/pom.xml
index 80a7d73..59615a4 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/pom.xml b/pom.xml
index 290d041..efd15f6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.camel.k</groupId>
     <artifactId>camel-k-runtime-parent</artifactId>
-    <version>1.2.2-SNAPSHOT</version>
+    <version>1.3.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <properties>
diff --git a/tooling/camel-k-annotations/pom.xml b/tooling/camel-k-annotations/pom.xml
index 234dea0..91fff6d 100644
--- a/tooling/camel-k-annotations/pom.xml
+++ b/tooling/camel-k-annotations/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-tooling</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/tooling/camel-k-apt/pom.xml b/tooling/camel-k-apt/pom.xml
index 30af40a..d987f0e 100644
--- a/tooling/camel-k-apt/pom.xml
+++ b/tooling/camel-k-apt/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-tooling</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/tooling/camel-k-maven-plugin/pom.xml b/tooling/camel-k-maven-plugin/pom.xml
index 7d9f5d6..2b19839 100644
--- a/tooling/camel-k-maven-plugin/pom.xml
+++ b/tooling/camel-k-maven-plugin/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.apache.camel.k</groupId>
     <artifactId>camel-k-tooling</artifactId>
-    <version>1.2.2-SNAPSHOT</version>
+    <version>1.3.0-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tooling/camel-k-test/pom.xml b/tooling/camel-k-test/pom.xml
index 5d238be..d752767 100644
--- a/tooling/camel-k-test/pom.xml
+++ b/tooling/camel-k-test/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-tooling</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
diff --git a/tooling/pom.xml b/tooling/pom.xml
index 0996895..79687da 100644
--- a/tooling/pom.xml
+++ b/tooling/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.camel.k</groupId>
         <artifactId>camel-k-runtime-parent</artifactId>
-        <version>1.2.2-SNAPSHOT</version>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 


[camel-k-runtime] 06/07: Fix camel-buildtools in bom

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

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

commit b69f1fe9f7821895423a4fd9d3f0571562eb0f6d
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Fri Mar 20 18:39:11 2020 +0100

    Fix camel-buildtools in bom
---
 camel-k-runtime-bom/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/camel-k-runtime-bom/pom.xml b/camel-k-runtime-bom/pom.xml
index 57fc9a2..af147b7 100644
--- a/camel-k-runtime-bom/pom.xml
+++ b/camel-k-runtime-bom/pom.xml
@@ -416,7 +416,7 @@
                             <dependency>
                                 <groupId>org.apache.camel</groupId>
                                 <artifactId>camel-buildtools</artifactId>
-                                <version>3.0.0-M3</version>
+                                <version>3.1.0</version>
                             </dependency>
                         </dependencies>
                     </plugin>


[camel-k-runtime] 01/07: create platform http service #265

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

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

commit 15e692a0f642f230ba6a8af3b680f162c9608aad
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Wed Mar 18 15:28:09 2020 +0100

    create platform http service #265
---
 camel-k-main/camel-k-runtime-health/pom.xml        |   2 +-
 .../camel/k/health/HealthContextCustomizer.java    |  17 +-
 .../camel/k/health/HealthCustomizerTest.java       |  20 +-
 .../pom.xml                                        |   6 +-
 .../apache/camel/k/http/PlatformHttpRouter.java    |  50 +++
 .../apache/camel/k/http/PlatformHttpServer.java    | 178 ++++++++++
 .../k/http/PlatformHttpServiceConfiguration.java   | 131 +++++++
 .../PlatformHttpServiceContextCustomizer.java}     |  56 +--
 .../camel/k/http/PlatformHttpServiceEndpoint.java  | 118 +++++++
 .../k/http/engine/RuntimePlatformHttpConsumer.java | 389 +++++++++++++++++++++
 .../k/http/engine/RuntimePlatformHttpEngine.java}  |  20 +-
 .../org/apache/camel/k/customizer/platform-http}   |   2 +-
 .../k/http/PlatformHttpServiceCustomizerTest.java  | 145 ++++++++
 .../src/test/resources/log4j2-test.xml             |   0
 .../camel/k/inspector/InspectorEndpoint.java       | 220 ------------
 .../camel/k/inspector/InspectorCustomizerTest.java |  74 ----
 camel-k-main/pom.xml                               |   2 +-
 camel-k-runtime-bom/pom.xml                        |   2 +-
 .../camel-k-runtime-example-health/README.adoc     |  25 --
 examples/camel-k-runtime-example-rest/README.adoc  |  58 +++
 .../data}/application.properties                   |   4 +-
 .../data}/routes.groovy                            |  17 +-
 .../pom.xml                                        |  18 +-
 examples/pom.xml                                   |   2 +-
 pom.xml                                            |   2 +-
 .../src/it/generate-catalog-main/verify.groovy     |   4 +-
 .../camel/k/tooling/maven/GenerateCatalogMojo.java |   2 +-
 .../maven/processors/CatalogProcessor3x.java       |   2 +-
 .../maven/processors/CatalogProcessor3Test.java    |   2 +-
 29 files changed, 1157 insertions(+), 411 deletions(-)

diff --git a/camel-k-main/camel-k-runtime-health/pom.xml b/camel-k-main/camel-k-runtime-health/pom.xml
index d203545..07624b3 100644
--- a/camel-k-main/camel-k-runtime-health/pom.xml
+++ b/camel-k-main/camel-k-runtime-health/pom.xml
@@ -45,7 +45,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-k-runtime-inspector</artifactId>
+            <artifactId>camel-k-runtime-http</artifactId>
         </dependency>
 
         <dependency>
diff --git a/camel-k-main/camel-k-runtime-health/src/main/java/org/apache/camel/k/health/HealthContextCustomizer.java b/camel-k-main/camel-k-runtime-health/src/main/java/org/apache/camel/k/health/HealthContextCustomizer.java
index 8d70f10..f1308d2 100644
--- a/camel-k-main/camel-k-runtime-health/src/main/java/org/apache/camel/k/health/HealthContextCustomizer.java
+++ b/camel-k-main/camel-k-runtime-health/src/main/java/org/apache/camel/k/health/HealthContextCustomizer.java
@@ -23,6 +23,8 @@ import io.vertx.core.http.HttpMethod;
 import io.vertx.core.json.Json;
 import io.vertx.core.json.JsonArray;
 import io.vertx.core.json.JsonObject;
+import io.vertx.ext.web.Route;
+import io.vertx.ext.web.Router;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Ordered;
 import org.apache.camel.health.HealthCheck;
@@ -33,7 +35,7 @@ import org.apache.camel.impl.health.AbstractHealthCheck;
 import org.apache.camel.impl.health.ContextHealthCheck;
 import org.apache.camel.impl.health.RoutesHealthCheckRepository;
 import org.apache.camel.k.ContextCustomizer;
-import org.apache.camel.k.inspector.InspectorCustomizer;
+import org.apache.camel.k.http.PlatformHttpRouter;
 
 public class HealthContextCustomizer implements ContextCustomizer {
     public static final String DEFAULT_PATH = "/health";
@@ -83,7 +85,7 @@ public class HealthContextCustomizer implements ContextCustomizer {
 
     @Override
     public int getOrder() {
-        return Ordered.HIGHEST;
+        return Ordered.LOWEST;
     }
 
     @Override
@@ -105,14 +107,15 @@ public class HealthContextCustomizer implements ContextCustomizer {
             throw new RuntimeException(e);
         }
 
-        camelContext.getRegistry().bind(
-            "health-route",
-            customizer(camelContext)
+        // add health route
+        addRoute(
+            camelContext,
+            PlatformHttpRouter.lookup(camelContext).get()
         );
     }
 
-    private InspectorCustomizer customizer(CamelContext camelContext) {
-        return router -> router.route(HttpMethod.GET, path).handler(routingContext -> {
+    private Route addRoute(CamelContext camelContext, Router router) {
+        return router.route(HttpMethod.GET, path).handler(routingContext -> {
             int code = 200;
 
             Collection<HealthCheck.Result> results = HealthCheckHelper.invoke(
diff --git a/camel-k-main/camel-k-runtime-health/src/test/java/org/apache/camel/k/health/HealthCustomizerTest.java b/camel-k-main/camel-k-runtime-health/src/test/java/org/apache/camel/k/health/HealthCustomizerTest.java
index 1a7fb06..caf512e 100644
--- a/camel-k-main/camel-k-runtime-health/src/test/java/org/apache/camel/k/health/HealthCustomizerTest.java
+++ b/camel-k-main/camel-k-runtime-health/src/test/java/org/apache/camel/k/health/HealthCustomizerTest.java
@@ -21,7 +21,7 @@ import java.net.URL;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.k.Runtime;
-import org.apache.camel.k.inspector.InspectorContextCustomizer;
+import org.apache.camel.k.http.PlatformHttpServiceContextCustomizer;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.util.ObjectHelper;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -46,22 +46,22 @@ public class HealthCustomizerTest {
             }
         });
 
-        HealthContextCustomizer healthCustomizer = new HealthContextCustomizer();
-        healthCustomizer.apply(runtime.getCamelContext());
-
-        InspectorContextCustomizer inspectorCustomizer = new InspectorContextCustomizer();
-        inspectorCustomizer.setBindPort(AvailablePortFinder.getNextAvailable());
+        PlatformHttpServiceContextCustomizer phsc = new PlatformHttpServiceContextCustomizer();
+        phsc.setBindPort(AvailablePortFinder.getNextAvailable());
 
         String url;
         if (ObjectHelper.isEmpty(path)) {
-            url = "http://localhost:" + inspectorCustomizer.getBindPort() + HealthContextCustomizer.DEFAULT_PATH;
+            url = "http://localhost:" + phsc.getBindPort() + HealthContextCustomizer.DEFAULT_PATH;
         } else {
-            inspectorCustomizer.setPath(path);
+            phsc.setPath(path);
 
-            url = "http://localhost:" + inspectorCustomizer.getBindPort() + path + HealthContextCustomizer.DEFAULT_PATH;
+            url = "http://localhost:" + phsc.getBindPort() + path + HealthContextCustomizer.DEFAULT_PATH;
         }
 
-        inspectorCustomizer.apply(runtime.getCamelContext());
+        phsc.apply(runtime.getCamelContext());
+
+        HealthContextCustomizer healthCustomizer = new HealthContextCustomizer();
+        healthCustomizer.apply(runtime.getCamelContext());
 
         try {
             runtime.getCamelContext().start();
diff --git a/camel-k-main/camel-k-runtime-inspector/pom.xml b/camel-k-main/camel-k-runtime-http/pom.xml
similarity index 96%
rename from camel-k-main/camel-k-runtime-inspector/pom.xml
rename to camel-k-main/camel-k-runtime-http/pom.xml
index 1e57d08..934c70e 100644
--- a/camel-k-main/camel-k-runtime-inspector/pom.xml
+++ b/camel-k-main/camel-k-runtime-http/pom.xml
@@ -25,7 +25,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>camel-k-runtime-inspector</artifactId>
+    <artifactId>camel-k-runtime-http</artifactId>
 
     <dependencies>
 
@@ -40,6 +40,10 @@
             <artifactId>camel-core-engine</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-platform-http</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel.k</groupId>
             <artifactId>camel-k-runtime-core</artifactId>
         </dependency>
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpRouter.java b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpRouter.java
new file mode 100644
index 0000000..5f33f2f
--- /dev/null
+++ b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpRouter.java
@@ -0,0 +1,50 @@
+/*
+ * 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.k.http;
+
+import io.vertx.ext.web.Router;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.platform.http.PlatformHttpConstants;
+import org.apache.camel.support.CamelContextHelper;
+
+public class PlatformHttpRouter {
+    public static final String PLATFORM_HTTP_ROUTER_NAME = PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME + "-router";
+
+    private final Router router;
+
+    public PlatformHttpRouter(Router router) {
+        this.router = router;
+    }
+
+    public Router get() {
+        return router;
+    }
+
+    // **********************
+    //
+    // Helpers
+    //
+    // **********************
+
+    public static PlatformHttpRouter lookup(CamelContext camelContext) {
+        return CamelContextHelper.mandatoryLookup(
+            camelContext,
+            PlatformHttpRouter.PLATFORM_HTTP_ROUTER_NAME,
+            PlatformHttpRouter.class
+        );
+    }
+}
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServer.java b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServer.java
new file mode 100644
index 0000000..6d1bd7d
--- /dev/null
+++ b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServer.java
@@ -0,0 +1,178 @@
+/*
+ * 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.k.http;
+
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionStage;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+
+import io.vertx.core.Handler;
+import io.vertx.core.Vertx;
+import io.vertx.core.http.HttpServer;
+import io.vertx.ext.web.Router;
+import io.vertx.ext.web.RoutingContext;
+import io.vertx.ext.web.handler.BodyHandler;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.platform.http.PlatformHttpConstants;
+import org.apache.camel.support.service.ServiceSupport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+final class PlatformHttpServer extends ServiceSupport {
+    private static final Logger LOGGER = LoggerFactory.getLogger(PlatformHttpServer.class);
+
+    private final CamelContext context;
+    private final PlatformHttpServiceConfiguration configuration;
+    private final Vertx vertx;
+    private final ExecutorService executor;
+
+    private HttpServer server;
+
+    public PlatformHttpServer(CamelContext context, PlatformHttpServiceConfiguration configuration, Vertx vertx, ExecutorService executor) {
+        this.context = context;
+        this.configuration = configuration;
+        this.vertx = vertx;
+        this.executor = executor;
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        startAsync().toCompletableFuture().join();
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        try {
+            if (server != null) {
+                stopAsync().toCompletableFuture().join();
+            }
+        } finally {
+            this.server = null;
+        }
+    }
+
+    private CompletionStage<Void> startAsync() {
+        final Router router = Router.router(vertx);
+        final Router subRouter = Router.router(vertx);
+
+        router.route()
+            .order(Integer.MIN_VALUE)
+            .handler(ctx -> {
+                ctx.request().resume();
+                createBodyHandler().handle(ctx);
+            });
+
+        router.mountSubRouter(configuration.getPath(), subRouter);
+
+        context.getRegistry().bind(PlatformHttpRouter.PLATFORM_HTTP_ROUTER_NAME, new PlatformHttpRouter(subRouter));
+
+        //HttpServerOptions options = new HttpServerOptions();
+        if (configuration.getSslContextParameters() != null) {
+            // TODO: add ssl support
+            throw new UnsupportedOperationException("Not yet implemented");
+        }
+
+        server = vertx.createHttpServer();
+
+        return CompletableFuture.runAsync(
+            () -> {
+                CountDownLatch latch = new CountDownLatch(1);
+                server.requestHandler(router).listen(configuration.getBindPort(), configuration.getBindHost(), result -> {
+                    try {
+                        if (result.failed()) {
+                            LOGGER.warn("Failed to start Vert.x HttpServer on {}:{}, reason: {}",
+                                configuration.getBindHost(),
+                                configuration.getBindPort(),
+                                result.cause().getMessage()
+                            );
+
+                            throw new RuntimeException(result.cause());
+                        }
+
+                        LOGGER.info("Vert.x HttpServer started on {}:{}", configuration.getBindHost(), configuration.getBindPort());
+                    } finally {
+                        latch.countDown();
+                    }
+                });
+
+                try {
+                    latch.await();
+                } catch (InterruptedException e) {
+                    throw new RuntimeException(e);
+                }
+            },
+            executor
+        );
+    }
+
+    protected CompletionStage<Void> stopAsync() {
+        return CompletableFuture.runAsync(
+            () -> {
+                CountDownLatch latch = new CountDownLatch(1);
+
+                // remove the platform-http component
+                context.removeComponent(PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME);
+
+                server.close(result -> {
+                    try {
+                        if (result.failed()) {
+                            LOGGER.warn("Failed to close Vert.x HttpServer reason: {}",
+                                result.cause().getMessage()
+                            );
+
+                            throw new RuntimeException(result.cause());
+                        }
+
+                        LOGGER.info("Vert.x HttpServer stopped");
+                    } finally {
+                        latch.countDown();
+                    }
+                });
+
+                try {
+                    latch.await();
+                } catch (InterruptedException e) {
+                    throw new RuntimeException(e);
+                }
+            },
+            executor
+        );
+    }
+
+    private Handler<RoutingContext> createBodyHandler() {
+        BodyHandler bodyHandler = BodyHandler.create();
+
+        if (configuration.getMaxBodySize() != null) {
+            bodyHandler.setBodyLimit(configuration.getMaxBodySize().longValueExact());
+        }
+
+        bodyHandler.setHandleFileUploads(configuration.getBodyHandler().isHandleFileUploads());
+        bodyHandler.setUploadsDirectory(configuration.getBodyHandler().getUploadsDirectory());
+        bodyHandler.setDeleteUploadedFilesOnEnd(configuration.getBodyHandler().isDeleteUploadedFilesOnEnd());
+        bodyHandler.setMergeFormAttributes(configuration.getBodyHandler().isMergeFormAttributes());
+        bodyHandler.setPreallocateBodyBuffer(configuration.getBodyHandler().isPreallocateBodyBuffer());
+
+        return new Handler<RoutingContext>() {
+            @Override
+            public void handle(RoutingContext event) {
+                event.request().resume();
+                bodyHandler.handle(event);
+            }
+        };
+    }
+}
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceConfiguration.java b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceConfiguration.java
new file mode 100644
index 0000000..659ecab
--- /dev/null
+++ b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceConfiguration.java
@@ -0,0 +1,131 @@
+/*
+ * 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.k.http;
+
+import java.math.BigInteger;
+
+import org.apache.camel.support.jsse.SSLContextParameters;
+
+public class PlatformHttpServiceConfiguration {
+    public static final String DEFAULT_BIND_HOST = "0.0.0.0";
+    public static final int DEFAULT_BIND_PORT = 8081;
+    public static final String DEFAULT_PATH = "/";
+
+    private String bindHost = DEFAULT_BIND_HOST;
+    private int bindPort = DEFAULT_BIND_PORT;
+    private String path = DEFAULT_PATH;
+    private BigInteger maxBodySize;
+
+    private BodyHandler bodyHandler = new BodyHandler();
+    private SSLContextParameters sslContextParameters;
+
+    public String getBindHost() {
+        return bindHost;
+    }
+
+    public void setBindHost(String bindHost) {
+        this.bindHost = bindHost;
+    }
+
+    public int getBindPort() {
+        return bindPort;
+    }
+
+    public void setBindPort(int bindPort) {
+        this.bindPort = bindPort;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public BigInteger getMaxBodySize() {
+        return maxBodySize;
+    }
+
+    public void setMaxBodySize(BigInteger maxBodySize) {
+        this.maxBodySize = maxBodySize;
+    }
+
+    public BodyHandler getBodyHandler() {
+        return bodyHandler;
+    }
+
+    public void setBodyHandler(BodyHandler bodyHandler) {
+        this.bodyHandler = bodyHandler;
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
+    public static class BodyHandler {
+        private boolean handleFileUploads = true;
+        private String uploadsDirectory = "file-uploads";
+        private boolean mergeFormAttributes = true;
+        private boolean deleteUploadedFilesOnEnd;
+        private boolean preallocateBodyBuffer = true;
+
+        public boolean isHandleFileUploads() {
+            return handleFileUploads;
+        }
+
+        public void setHandleFileUploads(boolean handleFileUploads) {
+            this.handleFileUploads = handleFileUploads;
+        }
+
+        public String getUploadsDirectory() {
+            return uploadsDirectory;
+        }
+
+        public void setUploadsDirectory(String uploadsDirectory) {
+            this.uploadsDirectory = uploadsDirectory;
+        }
+
+        public boolean isMergeFormAttributes() {
+            return mergeFormAttributes;
+        }
+
+        public void setMergeFormAttributes(boolean mergeFormAttributes) {
+            this.mergeFormAttributes = mergeFormAttributes;
+        }
+
+        public boolean isDeleteUploadedFilesOnEnd() {
+            return deleteUploadedFilesOnEnd;
+        }
+
+        public void setDeleteUploadedFilesOnEnd(boolean deleteUploadedFilesOnEnd) {
+            this.deleteUploadedFilesOnEnd = deleteUploadedFilesOnEnd;
+        }
+
+        public boolean isPreallocateBodyBuffer() {
+            return preallocateBodyBuffer;
+        }
+
+        public void setPreallocateBodyBuffer(boolean preallocateBodyBuffer) {
+            this.preallocateBodyBuffer = preallocateBodyBuffer;
+        }
+    }
+}
diff --git a/camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorContextCustomizer.java b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceContextCustomizer.java
similarity index 52%
rename from camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorContextCustomizer.java
rename to camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceContextCustomizer.java
index 5bcc396..cc100ae 100644
--- a/camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorContextCustomizer.java
+++ b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceContextCustomizer.java
@@ -14,65 +14,37 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.k.inspector;
+package org.apache.camel.k.http;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Ordered;
+import org.apache.camel.component.platform.http.PlatformHttpComponent;
+import org.apache.camel.component.platform.http.PlatformHttpConstants;
 import org.apache.camel.k.ContextCustomizer;
+import org.apache.camel.k.http.engine.RuntimePlatformHttpEngine;
 
-public class InspectorContextCustomizer implements ContextCustomizer {
-    public static final String DEFAULT_BIND_HOST = "0.0.0.0";
-    public static final int DEFAULT_BIND_PORT = 8081;
-    public static final String DEFAULT_PATH = "/";
-
-    private String bindHost;
-    private int bindPort;
-    private String path;
-    private InspectorEndpoint endpoint;
-
-    public InspectorContextCustomizer() {
-        this.bindHost = DEFAULT_BIND_HOST;
-        this.bindPort = DEFAULT_BIND_PORT;
-        this.path = DEFAULT_PATH;
-    }
-
-    public String getBindHost() {
-        return bindHost;
-    }
-
-    public void setBindHost(String bindHost) {
-        this.bindHost = bindHost;
-    }
-
-    public int getBindPort() {
-        return bindPort;
-    }
-
-    public void setBindPort(int bindPort) {
-        this.bindPort = bindPort;
-    }
-
-    public String getPath() {
-        return path;
-    }
-
-    public void setPath(String path) {
-        this.path = path;
-    }
+public class PlatformHttpServiceContextCustomizer extends PlatformHttpServiceConfiguration implements ContextCustomizer {
+    private PlatformHttpServiceEndpoint endpoint;
 
     @Override
     public int getOrder() {
-        return Ordered.LOWEST;
+        return Ordered.HIGHEST;
     }
 
     @Override
     public void apply(CamelContext camelContext) {
-        endpoint = new InspectorEndpoint(camelContext, bindHost, bindPort, path);
+        endpoint = new PlatformHttpServiceEndpoint(camelContext, this);
 
         try {
             camelContext.addService(endpoint, true, true);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
+
+        // add the platform-http component
+        PlatformHttpComponent component = new PlatformHttpComponent();
+        component.setEngine(new RuntimePlatformHttpEngine());
+
+        camelContext.addComponent(PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME, component);
     }
 }
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceEndpoint.java b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceEndpoint.java
new file mode 100644
index 0000000..1f904e9
--- /dev/null
+++ b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceEndpoint.java
@@ -0,0 +1,118 @@
+/*
+ * 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.k.http;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+
+import io.vertx.core.Vertx;
+import io.vertx.core.VertxOptions;
+import org.apache.camel.CamelContext;
+import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.support.service.ServiceSupport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PlatformHttpServiceEndpoint extends ServiceSupport {
+    private static final Logger LOGGER = LoggerFactory.getLogger(PlatformHttpServiceEndpoint.class);
+
+    private final CamelContext context;
+    private final PlatformHttpServiceConfiguration configuration;
+
+    private Vertx vertx;
+    private boolean localVertx;
+    private PlatformHttpServer vertxHttpServer;
+    private ExecutorService executor;
+
+    public PlatformHttpServiceEndpoint(CamelContext context, PlatformHttpServiceConfiguration configuration) {
+        this.context = context;
+        this.configuration = configuration;
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        vertx = CamelContextHelper.findByType(context, Vertx.class);
+        executor = context.getExecutorServiceManager().newSingleThreadExecutor(this, "platform-http-service");
+
+        if (vertx != null) {
+            LOGGER.info("Found Vert.x instance in registry: {}", vertx);
+        } else {
+            VertxOptions options = CamelContextHelper.findByType(context, VertxOptions.class);
+            if (options == null) {
+                options = new VertxOptions();
+            }
+
+            LOGGER.info("Creating new Vert.x instance");
+
+            vertx = Vertx.vertx(options);
+            localVertx = true;
+        }
+
+        vertxHttpServer = new PlatformHttpServer(context, configuration, vertx, executor);
+        vertxHttpServer.start();
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        if (vertxHttpServer != null) {
+            vertxHttpServer.stop();
+        }
+
+        if (vertx != null && localVertx) {
+            Future<?> future = executor.submit(
+                () -> {
+                    CountDownLatch latch = new CountDownLatch(1);
+
+                    vertx.close(result -> {
+                        try {
+                            if (result.failed()) {
+                                LOGGER.warn("Failed to close Vert.x reason: {}",
+                                    result.cause().getMessage()
+                                );
+
+                                throw new RuntimeException(result.cause());
+                            }
+
+                            LOGGER.info("Vert.x stopped");
+                        } finally {
+                            latch.countDown();
+                        }
+                    });
+
+                    try {
+                        latch.await();
+                    } catch (InterruptedException e) {
+                        throw new RuntimeException(e);
+                    }
+                }
+            );
+
+            try {
+                future.get();
+            } finally {
+                vertx = null;
+                localVertx = false;
+            }
+        }
+
+        if (executor != null) {
+            context.getExecutorServiceManager().shutdown(executor);
+            executor = null;
+        }
+    }
+}
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpConsumer.java b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpConsumer.java
new file mode 100644
index 0000000..e438c32
--- /dev/null
+++ b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpConsumer.java
@@ -0,0 +1,389 @@
+/*
+ * 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.k.http.engine;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+import io.vertx.core.MultiMap;
+import io.vertx.core.buffer.Buffer;
+import io.vertx.core.http.HttpMethod;
+import io.vertx.core.http.HttpServerRequest;
+import io.vertx.core.http.HttpServerResponse;
+import io.vertx.ext.web.Route;
+import io.vertx.ext.web.RoutingContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.NoTypeConversionAvailableException;
+import org.apache.camel.Processor;
+import org.apache.camel.TypeConversionException;
+import org.apache.camel.TypeConverter;
+import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
+import org.apache.camel.component.platform.http.spi.Method;
+import org.apache.camel.k.http.PlatformHttpRouter;
+import org.apache.camel.spi.HeaderFilterStrategy;
+import org.apache.camel.support.DefaultConsumer;
+import org.apache.camel.support.DefaultMessage;
+import org.apache.camel.support.ExchangeHelper;
+import org.apache.camel.support.MessageHelper;
+import org.apache.camel.support.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RuntimePlatformHttpConsumer extends DefaultConsumer {
+    private static final Logger LOG = LoggerFactory.getLogger(RuntimePlatformHttpConsumer.class);
+    private static final Pattern PATH_PARAMETER_PATTERN = Pattern.compile("\\{([^/}]+)\\}");
+
+    private Route route;
+
+    public RuntimePlatformHttpConsumer(PlatformHttpEndpoint endpoint, Processor processor) {
+        super(endpoint, processor);
+    }
+
+    @Override
+    public PlatformHttpEndpoint getEndpoint() {
+        return (PlatformHttpEndpoint) super.getEndpoint();
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+
+        final PlatformHttpEndpoint endpoint = getEndpoint();
+        final PlatformHttpRouter router = PlatformHttpRouter.lookup(endpoint.getCamelContext());
+        final String path = endpoint.getPath();
+        final String vertxPathParamPath = PATH_PARAMETER_PATTERN.matcher(path).replaceAll(":$1");
+        final Route newRoute = router.get().route(vertxPathParamPath);
+
+        final Set<Method> methods = Method.parseList(endpoint.getHttpMethodRestrict());
+        if (!methods.equals(Method.getAll())) {
+            methods.stream().forEach(m -> newRoute.method(HttpMethod.valueOf(m.name())));
+        }
+        if (endpoint.getConsumes() != null) {
+            newRoute.consumes(endpoint.getConsumes());
+        }
+        if (endpoint.getProduces() != null) {
+            newRoute.produces(endpoint.getProduces());
+        }
+
+        newRoute.handler(
+            ctx -> {
+                Exchange exchg = null;
+                try {
+                    final Exchange exchange = exchg = toExchange(ctx);
+                    createUoW(exchange);
+                    getAsyncProcessor().process(
+                        exchange,
+                        doneSync -> writeResponse(ctx, exchange, getEndpoint().getHeaderFilterStrategy()));
+                } catch (Exception e) {
+                    ctx.fail(e);
+                    getExceptionHandler().handleException("Failed handling platform-http endpoint " + path, exchg, e);
+                } finally {
+                    if (exchg != null) {
+                        doneUoW(exchg);
+                    }
+                }
+            });
+
+        this.route = newRoute;
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        if (route != null) {
+            route.remove();
+            route = null;
+        }
+        super.doStop();
+    }
+
+    @Override
+    protected void doSuspend() throws Exception {
+        if (route != null) {
+            route.disable();
+        }
+        super.doSuspend();
+    }
+
+    @Override
+    protected void doResume() throws Exception {
+        if (route != null) {
+            route.enable();
+        }
+        super.doResume();
+    }
+
+    static Object toHttpResponse(HttpServerResponse response, Message message, HeaderFilterStrategy headerFilterStrategy) {
+        final Exchange exchange = message.getExchange();
+        final TypeConverter tc = exchange.getContext().getTypeConverter();
+        final int code = determineResponseCode(exchange, message.getBody());
+
+        response.setStatusCode(code);
+
+        // copy headers from Message to Response
+        if (headerFilterStrategy != null) {
+            for (Map.Entry<String, Object> entry : message.getHeaders().entrySet()) {
+                final String key = entry.getKey();
+                final Object value = entry.getValue();
+                // use an iterator as there can be multiple values. (must not use a delimiter)
+                final Iterator<?> it = ObjectHelper.createIterator(value, null);
+
+                String firstValue = null;
+                List<String> values = null;
+
+                while (it.hasNext()) {
+                    final String headerValue = tc.convertTo(String.class, it.next());
+                    if (headerValue != null
+                        && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, exchange)) {
+                        if (firstValue == null) {
+                            firstValue = headerValue;
+                        } else {
+                            if (values == null) {
+                                values = new ArrayList<>();
+                                values.add(firstValue);
+                            }
+                            values.add(headerValue);
+                        }
+                    }
+                }
+                if (values != null) {
+                    response.putHeader(key, values);
+                } else if (firstValue != null) {
+                    response.putHeader(key, firstValue);
+                }
+            }
+        }
+
+        Object body = message.getBody();
+        final Exception exception = exchange.getException();
+
+        if (exception != null) {
+            // we failed due an exception so print it as plain text
+            final StringWriter sw = new StringWriter();
+            final PrintWriter pw = new PrintWriter(sw);
+
+            exception.printStackTrace(pw);
+
+            // the body should then be the stacktrace
+            body = ByteBuffer.wrap(sw.toString().getBytes(StandardCharsets.UTF_8));
+            // force content type to be text/plain as that is what the stacktrace is
+            message.setHeader(Exchange.CONTENT_TYPE, "text/plain; charset=utf-8");
+
+            // and mark the exception as failure handled, as we handled it by returning it as the response
+            ExchangeHelper.setFailureHandled(exchange);
+        }
+
+        // set the content type in the response.
+        final String contentType = MessageHelper.getContentType(message);
+        if (contentType != null) {
+            // set content-type
+            response.putHeader("Content-Type", contentType);
+        }
+        return body;
+    }
+
+    /*
+     * Copied from org.apache.camel.http.common.DefaultHttpBinding.determineResponseCode(Exchange, Object)
+     * If DefaultHttpBinding.determineResponseCode(Exchange, Object) is moved to a module without the servlet-api
+     * dependency we could eventually consume it from there.
+     */
+    static int determineResponseCode(Exchange camelExchange, Object body) {
+        boolean failed = camelExchange.isFailed();
+        int defaultCode = failed ? 500 : 200;
+
+        Message message = camelExchange.getMessage();
+        Integer currentCode = message.getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class);
+        int codeToUse = currentCode == null ? defaultCode : currentCode;
+
+        if (codeToUse != 500) {
+            if ((body == null) || (body instanceof String && ((String) body).trim().isEmpty())) {
+                // no content
+                codeToUse = currentCode == null ? 204 : currentCode;
+            }
+        }
+
+        return codeToUse;
+    }
+
+    static void writeResponse(RoutingContext ctx, Exchange camelExchange, HeaderFilterStrategy headerFilterStrategy) {
+        final Object body = toHttpResponse(ctx.response(), camelExchange.getMessage(), headerFilterStrategy);
+
+        final HttpServerResponse response = ctx.response();
+        if (body == null) {
+            LOG.trace("No payload to send as reply for exchange: {}", camelExchange);
+            response.end();
+        } else if (body instanceof String) {
+            response.end((String) body);
+        } else if (body instanceof InputStream) {
+            final byte[] bytes = new byte[4096];
+            try (InputStream in = (InputStream) body) {
+                int len;
+                while ((len = in.read(bytes)) >= 0) {
+                    response.write(Buffer.buffer(len).appendBytes(bytes, 0, len));
+                }
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+            response.end();
+        } else {
+            final TypeConverter tc = camelExchange.getContext().getTypeConverter();
+            try {
+                final ByteBuffer bb = tc.mandatoryConvertTo(ByteBuffer.class, body);
+                response.end(Buffer.buffer(bb.capacity()).setBytes(0, bb));
+            } catch (TypeConversionException | NoTypeConversionAvailableException e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+    }
+
+    private Exchange toExchange(RoutingContext ctx) {
+        final Exchange exchange = getEndpoint().createExchange();
+        Message in = toCamelMessage(ctx, exchange);
+
+        final String charset = ctx.parsedHeaders().contentType().parameter("charset");
+        if (charset != null) {
+            exchange.setProperty(Exchange.CHARSET_NAME, charset);
+            in.setHeader(Exchange.HTTP_CHARACTER_ENCODING, charset);
+        }
+
+        exchange.setIn(in);
+        return exchange;
+    }
+
+    private Message toCamelMessage(RoutingContext ctx, Exchange exchange) {
+        final Message result = new DefaultMessage(exchange);
+
+        final HeaderFilterStrategy headerFilterStrategy = getEndpoint().getHeaderFilterStrategy();
+        populateCamelHeaders(ctx, result.getHeaders(), exchange, headerFilterStrategy);
+        final String mimeType = ctx.parsedHeaders().contentType().value();
+        final boolean isMultipartFormData = "multipart/form-data".equals(mimeType);
+        if ("application/x-www-form-urlencoded".equals(mimeType) || isMultipartFormData) {
+            final MultiMap formData = ctx.request().formAttributes();
+            final Map<String, Object> body = new HashMap<>();
+            for (String key : formData.names()) {
+                for (String value : formData.getAll(key)) {
+                    if (headerFilterStrategy != null
+                        && !headerFilterStrategy.applyFilterToExternalHeaders(key, value, exchange)) {
+                        appendHeader(result.getHeaders(), key, value);
+                        appendHeader(body, key, value);
+                    }
+                }
+            }
+            result.setBody(body);
+            if (isMultipartFormData) {
+                //populateAttachments(ctx.fileUploads(), result);
+            }
+        } else {
+            // extract body by myself if undertow parser didn't handle and the method is allowed to have one
+            // body is extracted as byte[] then auto TypeConverter kicks in
+            Method m = Method.valueOf(ctx.request().method().name());
+            if (m.canHaveBody()) {
+                final Buffer body = ctx.getBody();
+                if (body != null) {
+                    result.setBody(body.getBytes());
+                }
+            } else {
+                result.setBody(null);
+            }
+        }
+        return result;
+    }
+
+    static void populateCamelHeaders(
+        RoutingContext ctx,
+        Map<String, Object> headersMap,
+        Exchange exchange,
+        HeaderFilterStrategy headerFilterStrategy) {
+
+        final HttpServerRequest request = ctx.request();
+        headersMap.put(Exchange.HTTP_PATH, request.path());
+
+        if (headerFilterStrategy != null) {
+            final MultiMap requestHeaders = request.headers();
+            final String authz = requestHeaders.get("authorization");
+            // store a special header that this request was authenticated using HTTP Basic
+            if (authz != null && authz.trim().startsWith("Basic")) {
+                if (!headerFilterStrategy.applyFilterToExternalHeaders(Exchange.AUTHENTICATION, "Basic", exchange)) {
+                    appendHeader(headersMap, Exchange.AUTHENTICATION, "Basic");
+                }
+            }
+            for (String name : requestHeaders.names()) {
+                // add the headers one by one, and use the header filter strategy
+                for (String value : requestHeaders.getAll(name)) {
+                    if (!headerFilterStrategy.applyFilterToExternalHeaders(name.toString(), value, exchange)) {
+                        appendHeader(headersMap, name.toString(), value);
+                    }
+                }
+            }
+
+            // process uri parameters as headers
+            final MultiMap pathParameters = ctx.queryParams();
+            // continue if the map is not empty, otherwise there are no params
+            if (!pathParameters.isEmpty()) {
+                for (String name : pathParameters.names()) {
+                    for (String value : pathParameters.getAll(name)) {
+                        if (!headerFilterStrategy.applyFilterToExternalHeaders(name, value, exchange)) {
+                            appendHeader(headersMap, name, value);
+                        }
+                    }
+                }
+            }
+        }
+
+        // Path parameters
+        ctx.pathParams().forEach((k, v) ->  appendHeader(headersMap, k, v));
+
+        // NOTE: these headers is applied using the same logic as camel-http/camel-jetty to be consistent
+        headersMap.put(Exchange.HTTP_METHOD, request.method().toString());
+        // strip query parameters from the uri
+        headersMap.put(Exchange.HTTP_URL, request.absoluteURI());
+        // uri is without the host and port
+        headersMap.put(Exchange.HTTP_URI, request.uri());
+        headersMap.put(Exchange.HTTP_QUERY, request.query());
+        headersMap.put(Exchange.HTTP_RAW_QUERY, request.query());
+    }
+
+    @SuppressWarnings("unchecked")
+    static void appendHeader(Map<String, Object> headers, String key, Object value) {
+        if (headers.containsKey(key)) {
+            Object existing = headers.get(key);
+            List<Object> list;
+            if (existing instanceof List) {
+                list = (List<Object>) existing;
+            } else {
+                list = new ArrayList<>();
+                list.add(existing);
+            }
+            list.add(value);
+            value = list;
+        }
+
+        headers.put(key, value);
+    }
+}
diff --git a/camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorCustomizer.java b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpEngine.java
similarity index 60%
rename from camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorCustomizer.java
rename to camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpEngine.java
index 06b4cbb..05f8111 100644
--- a/camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorCustomizer.java
+++ b/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpEngine.java
@@ -14,16 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.k.inspector;
+package org.apache.camel.k.http.engine;
 
-import java.util.function.Consumer;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
+import org.apache.camel.component.platform.http.spi.PlatformHttpEngine;
 
-import io.vertx.ext.web.Router;
-
-/**
- * Marker interface to easily lookup Vertx customizer from the
- * camel {@link org.apache.camel.spi.Registry}.
- */
-@FunctionalInterface
-public interface InspectorCustomizer extends Consumer<Router> {
+public class RuntimePlatformHttpEngine implements PlatformHttpEngine {
+    @Override
+    public Consumer createConsumer(PlatformHttpEndpoint platformHttpEndpoint, Processor processor) {
+        return new RuntimePlatformHttpConsumer(platformHttpEndpoint, processor);
+    }
 }
diff --git a/camel-k-main/camel-k-runtime-inspector/src/main/resources/META-INF/services/org/apache/camel/k/customizer/inspector b/camel-k-main/camel-k-runtime-http/src/main/resources/META-INF/services/org/apache/camel/k/customizer/platform-http
similarity index 92%
rename from camel-k-main/camel-k-runtime-inspector/src/main/resources/META-INF/services/org/apache/camel/k/customizer/inspector
rename to camel-k-main/camel-k-runtime-http/src/main/resources/META-INF/services/org/apache/camel/k/customizer/platform-http
index 6fa86ed..9be183b 100644
--- a/camel-k-main/camel-k-runtime-inspector/src/main/resources/META-INF/services/org/apache/camel/k/customizer/inspector
+++ b/camel-k-main/camel-k-runtime-http/src/main/resources/META-INF/services/org/apache/camel/k/customizer/platform-http
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-class=org.apache.camel.k.inspector.InspectorContextCustomizer
+class=org.apache.camel.k.http.PlatformHttpServiceContextCustomizer
diff --git a/camel-k-main/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java b/camel-k-main/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
new file mode 100644
index 0000000..5756d37
--- /dev/null
+++ b/camel-k-main/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
@@ -0,0 +1,145 @@
+/*
+ * 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.k.http;
+
+import io.vertx.core.http.HttpMethod;
+import io.vertx.core.json.Json;
+import io.vertx.core.json.JsonObject;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.platform.http.PlatformHttpComponent;
+import org.apache.camel.component.platform.http.PlatformHttpConstants;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.k.Runtime;
+import org.apache.camel.k.http.engine.RuntimePlatformHttpEngine;
+import org.apache.camel.test.AvailablePortFinder;
+import org.apache.camel.util.ObjectHelper;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
+
+import static io.restassured.RestAssured.given;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+
+public class PlatformHttpServiceCustomizerTest {
+
+    @ParameterizedTest
+    @ValueSource(strings = { "", "/test", "/test/nested" })
+    public void testPlatformHttpServiceCustomizer(String path) throws Exception {
+        Runtime runtime = Runtime.on(new DefaultCamelContext());
+
+        PlatformHttpServiceContextCustomizer httpService = new PlatformHttpServiceContextCustomizer();
+        httpService.setBindPort(AvailablePortFinder.getNextAvailable());
+
+        if (ObjectHelper.isNotEmpty(path)) {
+            httpService.setPath(path);
+        }
+
+        httpService.apply(runtime.getCamelContext());
+
+        PlatformHttpRouter.lookup(runtime.getCamelContext()).get().route(HttpMethod.GET, "/my/path")
+            .handler(routingContext -> {
+                JsonObject response = new JsonObject();
+                response.put("status", "UP");
+
+                routingContext.response()
+                    .putHeader("content-type", "application/json")
+                    .setStatusCode(200)
+                    .end(Json.encodePrettily(response));
+            });
+
+        given()
+            .port(httpService.getBindPort())
+        .when()
+            .get(path + "/my/path")
+        .then()
+            .statusCode(200)
+            .body("status", equalTo("UP"));
+    }
+
+    @ParameterizedTest
+    @ValueSource(strings = { "/", "/test", "/test/nested" })
+    public void testPlatformHttpComponent(String path) throws Exception {
+        Runtime runtime = Runtime.on(new DefaultCamelContext());
+        runtime.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                fromF("platform-http:%s", path)
+                    .setBody().constant(PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME);
+            }
+        });
+
+        PlatformHttpServiceContextCustomizer httpService = new PlatformHttpServiceContextCustomizer();
+        httpService.setBindPort(AvailablePortFinder.getNextAvailable());
+        httpService.apply(runtime.getCamelContext());
+
+        PlatformHttpComponent c = runtime.getCamelContext().getComponent(PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME, PlatformHttpComponent.class);
+
+        assertThat(c).isNotNull();
+        assertThat(c.getEngine()).isInstanceOf(RuntimePlatformHttpEngine.class);
+
+        try {
+            runtime.getCamelContext().start();
+
+            given()
+                .port(httpService.getBindPort())
+            .when()
+                .get(path)
+            .then()
+                .statusCode(200)
+                .body(equalTo(PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME));
+        } finally {
+            runtime.getCamelContext().stop();
+        }
+    }
+
+    @ParameterizedTest
+    @ValueSource(strings = { "/", "/test", "/test/nested" })
+    public void testPlatformHttpComponentPost(String path) throws Exception {
+        Runtime runtime = Runtime.on(new DefaultCamelContext());
+        runtime.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                fromF("platform-http:%s", path)
+                    .transform().body(String.class, b -> b.toUpperCase());
+            }
+        });
+
+        PlatformHttpServiceContextCustomizer httpService = new PlatformHttpServiceContextCustomizer();
+        httpService.setBindPort(AvailablePortFinder.getNextAvailable());
+        httpService.apply(runtime.getCamelContext());
+
+        PlatformHttpComponent c = runtime.getCamelContext().getComponent(PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME, PlatformHttpComponent.class);
+
+        assertThat(c).isNotNull();
+        assertThat(c.getEngine()).isInstanceOf(RuntimePlatformHttpEngine.class);
+
+        try {
+            runtime.getCamelContext().start();
+
+            given()
+                .port(httpService.getBindPort())
+                .body("test")
+            .when()
+                .post(path)
+            .then()
+                .statusCode(200)
+                .body(equalTo("TEST"));
+        } finally {
+            runtime.getCamelContext().stop();
+        }
+    }
+}
diff --git a/camel-k-main/camel-k-runtime-inspector/src/test/resources/log4j2-test.xml b/camel-k-main/camel-k-runtime-http/src/test/resources/log4j2-test.xml
similarity index 100%
rename from camel-k-main/camel-k-runtime-inspector/src/test/resources/log4j2-test.xml
rename to camel-k-main/camel-k-runtime-http/src/test/resources/log4j2-test.xml
diff --git a/camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorEndpoint.java b/camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorEndpoint.java
deleted file mode 100644
index 71eafde..0000000
--- a/camel-k-main/camel-k-runtime-inspector/src/main/java/org/apache/camel/k/inspector/InspectorEndpoint.java
+++ /dev/null
@@ -1,220 +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.k.inspector;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionStage;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-
-import io.vertx.core.Vertx;
-import io.vertx.core.VertxOptions;
-import io.vertx.core.http.HttpServer;
-import io.vertx.ext.web.Router;
-import org.apache.camel.CamelContext;
-import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.support.service.ServiceSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class InspectorEndpoint extends ServiceSupport {
-    private static final Logger LOGGER = LoggerFactory.getLogger(InspectorEndpoint.class);
-
-    private final CamelContext context;
-    private final String bindHost;
-    private final int bindPort;
-    private final String path;
-
-    private Vertx vertx;
-    private boolean localVertx;
-    private ExecutorService executor;
-    private HttpServerWrapper vertxHttpServer;
-
-    public InspectorEndpoint(CamelContext context, String bindHost, int bindPort, String path) {
-        this.context = context;
-        this.bindHost = bindHost;
-        this.bindPort = bindPort;
-        this.path = path;
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        this.executor = context.getExecutorServiceManager().newSingleThreadExecutor(this, "main-actuator");
-        this.vertx = CamelContextHelper.findByType(context, Vertx.class);
-
-        if (this.vertx != null) {
-            LOGGER.info("Found Vert.x instance in registry: {}", this.vertx);
-        } else {
-            VertxOptions options = CamelContextHelper.findByType(context, VertxOptions.class);
-            if (options == null) {
-                options = new VertxOptions();
-            }
-
-            LOGGER.info("Creating new Vert.x instance");
-
-            this.vertx = Vertx.vertx(options);
-            this.localVertx = true;
-        }
-
-        vertxHttpServer = new HttpServerWrapper();
-        vertxHttpServer.start();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        if (this.vertxHttpServer != null) {
-            vertxHttpServer.stop();
-        }
-
-        if (this.vertx != null && this.localVertx) {
-            Future<?> future = this.executor.submit(
-                () -> {
-                    CountDownLatch latch = new CountDownLatch(1);
-
-                    this.vertx.close(result -> {
-                        try {
-                            if (result.failed()) {
-                                LOGGER.warn("Failed to close Vert.x reason: {}",
-                                    result.cause().getMessage()
-                                );
-
-                                throw new RuntimeException(result.cause());
-                            }
-
-                            LOGGER.info("Vert.x stopped");
-                        } finally {
-                            latch.countDown();
-                        }
-                    });
-
-                    try {
-                        latch.await();
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            );
-
-            try {
-                future.get();
-            } finally {
-                this.vertx = null;
-                this.localVertx = false;
-            }
-        }
-
-        if (this.executor != null) {
-            context.getExecutorServiceManager().shutdownNow(this.executor);
-        }
-    }
-
-    private final class HttpServerWrapper extends ServiceSupport {
-        private HttpServer server;
-
-        @Override
-        protected void doStart() throws Exception {
-            startAsync().toCompletableFuture().join();
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-            try {
-                if (server != null) {
-                    stopAsync().toCompletableFuture().join();
-                }
-            } finally {
-                this.server = null;
-            }
-        }
-
-        private CompletionStage<Void> startAsync() {
-            final Router router = Router.router(vertx);
-            final Router subRouter = Router.router(vertx);
-
-            context.getRegistry().findByType(InspectorCustomizer.class).forEach(customizer -> {
-                LOGGER.debug("InspectorCustomizer: {}", customizer);
-                customizer.accept(subRouter);
-            });
-
-            router.mountSubRouter(path, subRouter);
-
-            server = vertx.createHttpServer();
-            return CompletableFuture.runAsync(
-                () -> {
-                    CountDownLatch latch = new CountDownLatch(1);
-
-                    server.requestHandler(router).listen(bindPort, bindHost, result -> {
-                        try {
-                            if (result.failed()) {
-                                LOGGER.warn("Failed to start Vert.x HttpServer on {}:{}, reason: {}",
-                                    bindHost,
-                                    bindPort,
-                                    result.cause().getMessage()
-                                );
-
-                                throw new RuntimeException(result.cause());
-                            }
-
-                            LOGGER.info("Vert.x HttpServer started on {}:{}", bindHost, bindPort);
-                        } finally {
-                            latch.countDown();
-                        }
-                    });
-
-                    try {
-                        latch.await();
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                },
-                executor
-            );
-        }
-
-        protected CompletionStage<Void> stopAsync() {
-            return CompletableFuture.runAsync(
-                () -> {
-                    CountDownLatch latch = new CountDownLatch(1);
-
-                    server.close(result -> {
-                        try {
-                            if (result.failed()) {
-                                LOGGER.warn("Failed to close Vert.x HttpServer reason: {}",
-                                    result.cause().getMessage()
-                                );
-
-                                throw new RuntimeException(result.cause());
-                            }
-
-                            LOGGER.info("Vert.x HttpServer stopped");
-                        } finally {
-                            latch.countDown();
-                        }
-                    });
-
-                    try {
-                        latch.await();
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                },
-                executor
-            );
-        }
-    }
-}
diff --git a/camel-k-main/camel-k-runtime-inspector/src/test/java/org/apache/camel/k/inspector/InspectorCustomizerTest.java b/camel-k-main/camel-k-runtime-inspector/src/test/java/org/apache/camel/k/inspector/InspectorCustomizerTest.java
deleted file mode 100644
index d103b1f..0000000
--- a/camel-k-main/camel-k-runtime-inspector/src/test/java/org/apache/camel/k/inspector/InspectorCustomizerTest.java
+++ /dev/null
@@ -1,74 +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.k.inspector;
-
-import java.net.URL;
-
-import io.vertx.core.http.HttpMethod;
-import io.vertx.core.json.Json;
-import io.vertx.core.json.JsonObject;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.k.Runtime;
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.util.ObjectHelper;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-
-import static io.restassured.RestAssured.when;
-import static org.hamcrest.Matchers.equalTo;
-
-public class InspectorCustomizerTest {
-
-    @ParameterizedTest
-    @ValueSource(strings = { "", "/test", "/test/nested" })
-    public void testInspectorConfigurer(String path) throws Exception {
-        Runtime runtime = Runtime.on(new DefaultCamelContext());
-
-        runtime.getRegistry().bind("my-customizer", (InspectorCustomizer) router ->
-            router.route(HttpMethod.GET, "/my/path")
-                .handler(routingContext -> {
-                    JsonObject response = new JsonObject();
-                    response.put("status", "UP");
-
-                    routingContext.response()
-                        .putHeader("content-type", "application/json")
-                        .setStatusCode(200)
-                        .end(Json.encodePrettily(response));
-                })
-        );
-
-        InspectorContextCustomizer inspectorCustomizer = new InspectorContextCustomizer();
-        inspectorCustomizer.setBindPort(AvailablePortFinder.getNextAvailable());
-
-        String url;
-        if (ObjectHelper.isEmpty(path)) {
-            url = "http://localhost:" + inspectorCustomizer.getBindPort() + "/my/path";
-        } else {
-            inspectorCustomizer.setPath(path);
-
-            url = "http://localhost:" + inspectorCustomizer.getBindPort() + path + "/my/path";
-        }
-
-        inspectorCustomizer.apply(runtime.getCamelContext());
-
-        when()
-            .get(new URL(url))
-        .then()
-            .statusCode(200)
-            .body("status", equalTo("UP"));
-    }
-}
diff --git a/camel-k-main/pom.xml b/camel-k-main/pom.xml
index d9d5762..eb217ef 100644
--- a/camel-k-main/pom.xml
+++ b/camel-k-main/pom.xml
@@ -31,7 +31,7 @@
     <modules>
         <module>camel-k-runtime-main</module>
         <module>camel-k-runtime-health</module>
-        <module>camel-k-runtime-inspector</module>
+        <module>camel-k-runtime-http</module>
     </modules>
 
 </project>
diff --git a/camel-k-runtime-bom/pom.xml b/camel-k-runtime-bom/pom.xml
index ca51c48..57fc9a2 100644
--- a/camel-k-runtime-bom/pom.xml
+++ b/camel-k-runtime-bom/pom.xml
@@ -135,7 +135,7 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.k</groupId>
-                <artifactId>camel-k-runtime-inspector</artifactId>
+                <artifactId>camel-k-runtime-http</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
diff --git a/examples/camel-k-runtime-example-health/README.adoc b/examples/camel-k-runtime-example-health/README.adoc
deleted file mode 100644
index 1c19469..0000000
--- a/examples/camel-k-runtime-example-health/README.adoc
+++ /dev/null
@@ -1,25 +0,0 @@
-Health Apache Camel K Runtime example
-======================================
-
-This repository contains an Apache Camel-K Runtime application that expose `/health` endpoint to gather Camel context status.
-
-In order to run it:
-```bash
-mvn clean exec:java
-```
-while it is running (from another terminal) you can access the rest camel route exposed through the servlet with:
-```bash
-curl http://localhost:8082/health
-```
-if the camel context has started properly that should get:
-```json
-{
-    "checks": [
-        {
-            "name": "route:my-route",
-            "status": "UP"
-        }
-    ],
-    "status": "UP"
-}
-```
\ No newline at end of file
diff --git a/examples/camel-k-runtime-example-rest/README.adoc b/examples/camel-k-runtime-example-rest/README.adoc
new file mode 100644
index 0000000..bc2024f
--- /dev/null
+++ b/examples/camel-k-runtime-example-rest/README.adoc
@@ -0,0 +1,58 @@
+Rest Apache Camel K Runtime example
+======================================
+
+This repository contains an Apache Camel-K Runtime application that expose a `rest` endpoint and and `/health` endpoint to gather Camel context status.
+
+In order to run it:
+[code,shell]
+----
+mvn clean exec:java
+----
+
+while it is running (from another terminal) you can access to:
+
+* health info with:
++
+[code,shell]
+----
+http http://localhost:8080/health
+----
++
+if the camel context has started properly that should get:
++
+[code,json]
+----
+{
+    "checks": [
+        {
+            "name": "context",
+            "status": "UP"
+        },
+        {
+            "name": "route:route1",
+            "status": "UP"
+        },
+        {
+            "name": "route:route2",
+            "status": "UP"
+        }
+    ],
+    "status": "UP"
+}
+----
+
+* rest endpoint info with:
++
+[code,shell]
+----
+http POST http://localhost:8080/rest a=b
+----
++
+if the route has started properly that should get:
++
+[code,json]
+----
+{
+    "A": "B"
+}
+----
\ No newline at end of file
diff --git a/examples/camel-k-runtime-example-health/src/main/resources/application.properties b/examples/camel-k-runtime-example-rest/data/application.properties
similarity index 91%
rename from examples/camel-k-runtime-example-health/src/main/resources/application.properties
rename to examples/camel-k-runtime-example-rest/data/application.properties
index cf08a83..3977fbf 100644
--- a/examples/camel-k-runtime-example-health/src/main/resources/application.properties
+++ b/examples/camel-k-runtime-example-rest/data/application.properties
@@ -30,6 +30,6 @@ camel.main.stream-caching-spool-directory = ${java.io.tmpdir}/camel-k
 #
 # Camel K
 #
-customizer.inspector.enabled = true
-customizer.inspector.bind-port = 8082
+customizer.platform-http.enabled = true
+customizer.platform-http.bind-port = 8080
 customizer.health.enabled = true
\ No newline at end of file
diff --git a/examples/camel-k-runtime-example-health/src/main/resources/routes.groovy b/examples/camel-k-runtime-example-rest/data/routes.groovy
similarity index 78%
rename from examples/camel-k-runtime-example-health/src/main/resources/routes.groovy
rename to examples/camel-k-runtime-example-rest/data/routes.groovy
index a1818bd..28a8fad 100644
--- a/examples/camel-k-runtime-example-health/src/main/resources/routes.groovy
+++ b/examples/camel-k-runtime-example-rest/data/routes.groovy
@@ -15,7 +15,16 @@
  * limitations under the License.
  */
 
-from('netty-http:http:0.0.0.0:8080//test')
-    .routeId('my-route')
-    .convertBodyTo(String.class)
-    .to('log:info')
\ No newline at end of file
+rest {
+    configuration {
+        component 'platform-http'
+    }
+
+    post('/rest') {
+        to 'direct:post'
+    }
+}
+
+from('direct:post')
+    .transform().body(String.class, b -> b.toUpperCase())
+    .to('log:post')
\ No newline at end of file
diff --git a/examples/camel-k-runtime-example-health/pom.xml b/examples/camel-k-runtime-example-rest/pom.xml
similarity index 84%
rename from examples/camel-k-runtime-example-health/pom.xml
rename to examples/camel-k-runtime-example-rest/pom.xml
index e4aa9ff..1245993 100644
--- a/examples/camel-k-runtime-example-health/pom.xml
+++ b/examples/camel-k-runtime-example-rest/pom.xml
@@ -25,7 +25,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>camel-k-runtime-example-health</artifactId>
+    <artifactId>camel-k-runtime-example-rest</artifactId>
 
     <dependencies>
         <dependency>
@@ -41,13 +41,21 @@
             <artifactId>camel-k-runtime-health</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-netty-http</artifactId>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-runtime-http</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-log</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-rest</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-direct</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
@@ -70,11 +78,11 @@
                     <systemProperties>
                         <systemProperty>
                             <key>camel.k.conf</key>
-                            <value>${project.basedir}/src/main/resources/application.properties</value>
+                            <value>${project.basedir}/data/application.properties</value>
                         </systemProperty>
                         <systemProperty>
                             <key>camel.k.routes</key>
-                            <value>file:${project.basedir}/src/main/resources/routes.groovy</value>
+                            <value>file:${project.basedir}/data/routes.groovy</value>
                         </systemProperty>
                     </systemProperties>
                 </configuration>
diff --git a/examples/pom.xml b/examples/pom.xml
index 47ec202..80a7d73 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -33,7 +33,7 @@
     </properties>
 
     <modules>
-        <module>camel-k-runtime-example-health</module>
+        <module>camel-k-runtime-example-rest</module>
         <module>camel-k-runtime-example-groovy</module>
         <module>camel-k-runtime-example-yaml</module>
         <module>camel-k-runtime-example-knative</module>
diff --git a/pom.xml b/pom.xml
index 6d6fa00..d6a58fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -318,7 +318,7 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.k</groupId>
-                <artifactId>camel-k-runtime-inspector</artifactId>
+                <artifactId>camel-k-runtime-http</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
diff --git a/tooling/camel-k-maven-plugin/src/it/generate-catalog-main/verify.groovy b/tooling/camel-k-maven-plugin/src/it/generate-catalog-main/verify.groovy
index fbad5a9..f9ebcef 100644
--- a/tooling/camel-k-maven-plugin/src/it/generate-catalog-main/verify.groovy
+++ b/tooling/camel-k-maven-plugin/src/it/generate-catalog-main/verify.groovy
@@ -24,8 +24,8 @@ assert catalog.spec.runtime.capabilities['health'].dependencies[0].groupId == 'o
 assert catalog.spec.runtime.capabilities['health'].dependencies[0].artifactId == 'camel-k-runtime-health'
 assert catalog.spec.runtime.capabilities['rest'].dependencies[0].groupId == 'org.apache.camel'
 assert catalog.spec.runtime.capabilities['rest'].dependencies[0].artifactId == 'camel-rest'
-assert catalog.spec.runtime.capabilities['rest'].dependencies[1].groupId == 'org.apache.camel'
-assert catalog.spec.runtime.capabilities['rest'].dependencies[1].artifactId == 'camel-undertow'
+assert catalog.spec.runtime.capabilities['rest'].dependencies[1].groupId == 'org.apache.camel.k'
+assert catalog.spec.runtime.capabilities['rest'].dependencies[1].artifactId == 'camel-k-runtime-http'
 
 assert catalog.metadata.labels['camel.apache.org/runtime.version'] == runtimeVersion
 
diff --git a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
index c3e5341..b1637a2 100644
--- a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
+++ b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
@@ -133,7 +133,7 @@ public class GenerateCatalogMojo extends AbstractMojo {
                         "rest",
                         new CamelCapability.Builder()
                             .addDependency("org.apache.camel", "camel-rest")
-                            .addDependency("org.apache.camel", "camel-undertow")
+                            .addDependency("org.apache.camel.k", "camel-k-runtime-http")
                             .build());
                     break;
                 case "quarkus":
diff --git a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3x.java b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3x.java
index e235443..60ed03c 100644
--- a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3x.java
+++ b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3x.java
@@ -132,7 +132,7 @@ public class CatalogProcessor3x implements CatalogProcessor {
         specBuilder.putArtifact(
             new CamelArtifact.Builder()
                 .groupId("org.apache.camel.k")
-                .artifactId("camel-k-runtime-inspector")
+                .artifactId("camel-k-runtime-http")
                 .build()
         );
         specBuilder.putArtifact(
diff --git a/tooling/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3Test.java b/tooling/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3Test.java
index 9a953bc..4496d42 100644
--- a/tooling/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3Test.java
+++ b/tooling/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3Test.java
@@ -80,7 +80,7 @@ public class CatalogProcessor3Test extends AbstractCatalogProcessorTest {
         Map<String, CamelArtifact> artifactMap = spec.getArtifacts();
 
         assertThat(artifactMap).containsKeys("camel-k-runtime-health");
-        assertThat(artifactMap).containsKeys("camel-k-runtime-inspector");
+        assertThat(artifactMap).containsKeys("camel-k-runtime-http");
         assertThat(artifactMap).containsKeys("camel-k-runtime-webhook");
 
         assertThat(artifactMap.get("camel-k-runtime-knative")).satisfies(a -> {


[camel-k-runtime] 02/07: Leverage platform http service in camel-knative #264

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

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

commit 46b937157eb6c4138ac4b8bb39454ecf07d41dbc
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Thu Mar 19 18:25:14 2020 +0100

    Leverage platform http service in camel-knative #264
---
 .../camel/k/health/HealthContextCustomizer.java    |  16 +-
 camel-k-main/pom.xml                               |   1 -
 .../knative/deployment/DeploymentProcessor.java    |  14 +-
 .../camel/k/quarkus/knative/KnativeRecorder.java   |  17 +-
 .../pom.xml                                        |   3 +-
 .../java/org/apache/camel/k/http/PlatformHttp.java |  37 +-
 .../apache/camel/k/http/PlatformHttpServer.java    |  15 +-
 .../k/http/PlatformHttpServiceConfiguration.java   |  12 +-
 .../http/PlatformHttpServiceContextCustomizer.java |   0
 .../camel/k/http/PlatformHttpServiceEndpoint.java  |   0
 .../k/http/engine/RuntimePlatformHttpConsumer.java |   8 +-
 .../k/http/engine/RuntimePlatformHttpEngine.java   |   0
 .../org/apache/camel/k/customizer/platform-http    |   0
 .../k/http/PlatformHttpServiceCustomizerTest.java  |   2 +-
 .../src/test/resources/log4j2-test.xml             |   0
 .../knative/KnativeSourceRoutesLoaderTest.java     |   8 +
 .../component/knative/spi/KnativeEnvironment.java  |  37 +-
 camel-knative/camel-knative-http/pom.xml           |  24 +-
 .../camel/component/knative/http/KnativeHttp.java  |  46 --
 .../knative/http/KnativeHttpConsumer.java          | 164 +++---
 .../http/KnativeHttpConsumerDispatcher.java        | 203 --------
 .../knative/http/KnativeHttpProducer.java          |  17 +-
 .../component/knative/http/KnativeHttpSupport.java |   7 -
 .../knative/http/KnativeHttpTransport.java         | 136 +----
 .../component/knative/http/KnativeHttpTest.java    | 547 +++++++++++----------
 .../src/test/resources/log4j2-test.xml             |   7 +-
 .../apache/camel/component/knative/knative.json    |   4 +-
 .../camel/component/knative/KnativeComponent.java  |  28 +-
 .../component/knative/KnativeConfiguration.java    |  12 +
 .../main/resources => data}/application.properties |   8 +-
 .../{src/main/resources => data}/env.json          |   2 -
 .../{src/main/resources => data}/routes.yaml       |   0
 examples/camel-k-runtime-example-knative/pom.xml   |   4 +-
 pom.xml                                            |   1 +
 34 files changed, 618 insertions(+), 762 deletions(-)

diff --git a/camel-k-main/camel-k-runtime-health/src/main/java/org/apache/camel/k/health/HealthContextCustomizer.java b/camel-k-main/camel-k-runtime-health/src/main/java/org/apache/camel/k/health/HealthContextCustomizer.java
index f1308d2..cd31d23 100644
--- a/camel-k-main/camel-k-runtime-health/src/main/java/org/apache/camel/k/health/HealthContextCustomizer.java
+++ b/camel-k-main/camel-k-runtime-health/src/main/java/org/apache/camel/k/health/HealthContextCustomizer.java
@@ -24,7 +24,6 @@ import io.vertx.core.json.Json;
 import io.vertx.core.json.JsonArray;
 import io.vertx.core.json.JsonObject;
 import io.vertx.ext.web.Route;
-import io.vertx.ext.web.Router;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Ordered;
 import org.apache.camel.health.HealthCheck;
@@ -35,7 +34,7 @@ import org.apache.camel.impl.health.AbstractHealthCheck;
 import org.apache.camel.impl.health.ContextHealthCheck;
 import org.apache.camel.impl.health.RoutesHealthCheckRepository;
 import org.apache.camel.k.ContextCustomizer;
-import org.apache.camel.k.http.PlatformHttpRouter;
+import org.apache.camel.k.http.PlatformHttp;
 
 public class HealthContextCustomizer implements ContextCustomizer {
     public static final String DEFAULT_PATH = "/health";
@@ -110,12 +109,17 @@ public class HealthContextCustomizer implements ContextCustomizer {
         // add health route
         addRoute(
             camelContext,
-            PlatformHttpRouter.lookup(camelContext).get()
+            PlatformHttp.lookup(camelContext)
         );
     }
 
-    private Route addRoute(CamelContext camelContext, Router router) {
-        return router.route(HttpMethod.GET, path).handler(routingContext -> {
+    private Route addRoute(CamelContext camelContext, PlatformHttp platformHttp) {
+        Route route = platformHttp.router().route(HttpMethod.GET, path);
+
+        // add global handlers first i.e. body handler
+        platformHttp.handlers().forEach(route::handler);
+
+        route.handler(routingContext -> {
             int code = 200;
 
             Collection<HealthCheck.Result> results = HealthCheckHelper.invoke(
@@ -158,5 +162,7 @@ public class HealthContextCustomizer implements ContextCustomizer {
                 .setStatusCode(code)
                 .end(Json.encodePrettily(response));
         });
+
+        return route;
     }
 }
diff --git a/camel-k-main/pom.xml b/camel-k-main/pom.xml
index eb217ef..5bcb63b 100644
--- a/camel-k-main/pom.xml
+++ b/camel-k-main/pom.xml
@@ -31,7 +31,6 @@
     <modules>
         <module>camel-k-runtime-main</module>
         <module>camel-k-runtime-health</module>
-        <module>camel-k-runtime-http</module>
     </modules>
 
 </project>
diff --git a/camel-k-quarkus/camel-k-quarkus-knative/deployment/src/main/java/org/apache/camel/k/quarkus/knative/deployment/DeploymentProcessor.java b/camel-k-quarkus/camel-k-quarkus-knative/deployment/src/main/java/org/apache/camel/k/quarkus/knative/deployment/DeploymentProcessor.java
index bb21f4f..159f946 100644
--- a/camel-k-quarkus/camel-k-quarkus-knative/deployment/src/main/java/org/apache/camel/k/quarkus/knative/deployment/DeploymentProcessor.java
+++ b/camel-k-quarkus/camel-k-quarkus-knative/deployment/src/main/java/org/apache/camel/k/quarkus/knative/deployment/DeploymentProcessor.java
@@ -22,6 +22,8 @@ import io.quarkus.deployment.annotations.ExecutionTime;
 import io.quarkus.deployment.annotations.Record;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import io.quarkus.vertx.core.deployment.CoreVertxBuildItem;
+import io.quarkus.vertx.http.deployment.BodyHandlerBuildItem;
+import io.quarkus.vertx.http.deployment.VertxWebRouterBuildItem;
 import org.apache.camel.component.knative.spi.KnativeEnvironment;
 import org.apache.camel.k.quarkus.knative.KnativeRecorder;
 import org.apache.camel.quarkus.core.deployment.CamelRuntimeBeanBuildItem;
@@ -41,11 +43,19 @@ public class DeploymentProcessor {
 
     @Record(ExecutionTime.RUNTIME_INIT)
     @BuildStep
-    CamelRuntimeBeanBuildItem knativeComponent(KnativeRecorder recorder, CoreVertxBuildItem vertx) {
+    CamelRuntimeBeanBuildItem knativeComponent(
+        KnativeRecorder recorder,
+        CoreVertxBuildItem vertx,
+        VertxWebRouterBuildItem router,
+        BodyHandlerBuildItem bodyHandlerBuildItem) {
+
         return new CamelRuntimeBeanBuildItem(
             "knative",
             "org.apache.camel.component.knative.KnativeComponent",
-            recorder.createKnativeComponent(vertx.getVertx())
+            recorder.createKnativeComponent(
+                vertx.getVertx(),
+                router.getRouter(),
+                bodyHandlerBuildItem.getHandler())
         );
     }
 
diff --git a/camel-k-quarkus/camel-k-quarkus-knative/runtime/src/main/java/org/apache/camel/k/quarkus/knative/KnativeRecorder.java b/camel-k-quarkus/camel-k-quarkus-knative/runtime/src/main/java/org/apache/camel/k/quarkus/knative/KnativeRecorder.java
index 24f0780..2ce29c6 100644
--- a/camel-k-quarkus/camel-k-quarkus-knative/runtime/src/main/java/org/apache/camel/k/quarkus/knative/KnativeRecorder.java
+++ b/camel-k-quarkus/camel-k-quarkus-knative/runtime/src/main/java/org/apache/camel/k/quarkus/knative/KnativeRecorder.java
@@ -16,19 +16,32 @@
  */
 package org.apache.camel.k.quarkus.knative;
 
+import java.util.Collections;
 import java.util.function.Supplier;
 
 import io.quarkus.runtime.RuntimeValue;
 import io.quarkus.runtime.annotations.Recorder;
+import io.vertx.core.Handler;
 import io.vertx.core.Vertx;
+import io.vertx.ext.web.Router;
+import io.vertx.ext.web.RoutingContext;
 import org.apache.camel.component.knative.KnativeComponent;
 import org.apache.camel.component.knative.http.KnativeHttpTransport;
+import org.apache.camel.k.http.PlatformHttp;
 
 @Recorder
 public class KnativeRecorder {
-    public RuntimeValue<KnativeComponent> createKnativeComponent(Supplier<Vertx> vertx) {
+    public RuntimeValue<KnativeComponent> createKnativeComponent(
+        Supplier<Vertx> vertx,
+        RuntimeValue<Router> router,
+        Handler<RoutingContext> bodyHandler) {
+
         KnativeHttpTransport transport = new KnativeHttpTransport();
-        transport.setVertx(vertx.get());
+        transport.setPlatformHttp(new PlatformHttp(
+            vertx.get(),
+            router.getValue(),
+            Collections.singletonList(bodyHandler)
+        ));
 
         KnativeComponent component = new KnativeComponent();
         component.setTransport(transport);
diff --git a/camel-k-main/camel-k-runtime-http/pom.xml b/camel-k-runtime-http/pom.xml
similarity index 98%
rename from camel-k-main/camel-k-runtime-http/pom.xml
rename to camel-k-runtime-http/pom.xml
index 934c70e..aabec84 100644
--- a/camel-k-main/camel-k-runtime-http/pom.xml
+++ b/camel-k-runtime-http/pom.xml
@@ -20,9 +20,10 @@
 <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">
     <parent>
         <groupId>org.apache.camel.k</groupId>
-        <artifactId>camel-k-main</artifactId>
+        <artifactId>camel-k-runtime-parent</artifactId>
         <version>1.2.2-SNAPSHOT</version>
     </parent>
+
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>camel-k-runtime-http</artifactId>
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpRouter.java b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttp.java
similarity index 59%
rename from camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpRouter.java
rename to camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttp.java
index 5f33f2f..52ab74e 100644
--- a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpRouter.java
+++ b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttp.java
@@ -16,35 +16,60 @@
  */
 package org.apache.camel.k.http;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import io.vertx.core.Handler;
+import io.vertx.core.Vertx;
 import io.vertx.ext.web.Router;
+import io.vertx.ext.web.RoutingContext;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.platform.http.PlatformHttpConstants;
 import org.apache.camel.support.CamelContextHelper;
 
-public class PlatformHttpRouter {
+public class PlatformHttp {
     public static final String PLATFORM_HTTP_ROUTER_NAME = PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME + "-router";
 
+    private final Vertx vertx;
     private final Router router;
+    private final List<Handler<RoutingContext>> handlers;
+
+    public PlatformHttp(Vertx vertx, Router router) {
+        this.vertx = vertx;
+        this.router = router;
+        this.handlers = Collections.emptyList();
+    }
 
-    public PlatformHttpRouter(Router router) {
+    public PlatformHttp(Vertx vertx, Router router, List<Handler<RoutingContext>> handlers) {
+        this.vertx = vertx;
         this.router = router;
+        this.handlers = Collections.unmodifiableList(new ArrayList<>(handlers));
     }
 
-    public Router get() {
+    public Vertx vertx() {
+        return vertx;
+    }
+
+    public Router router() {
         return router;
     }
 
+    public List<Handler<RoutingContext>> handlers() {
+        return handlers;
+    }
+
     // **********************
     //
     // Helpers
     //
     // **********************
 
-    public static PlatformHttpRouter lookup(CamelContext camelContext) {
+    public static PlatformHttp lookup(CamelContext camelContext) {
         return CamelContextHelper.mandatoryLookup(
             camelContext,
-            PlatformHttpRouter.PLATFORM_HTTP_ROUTER_NAME,
-            PlatformHttpRouter.class
+            PlatformHttp.PLATFORM_HTTP_ROUTER_NAME,
+            PlatformHttp.class
         );
     }
 }
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServer.java b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServer.java
similarity index 94%
rename from camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServer.java
rename to camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServer.java
index 6d1bd7d..2e86409 100644
--- a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServer.java
+++ b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServer.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.k.http;
 
+import java.util.Collections;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionStage;
 import java.util.concurrent.CountDownLatch;
@@ -33,7 +34,7 @@ import org.apache.camel.support.service.ServiceSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-final class PlatformHttpServer extends ServiceSupport {
+public final class PlatformHttpServer extends ServiceSupport {
     private static final Logger LOGGER = LoggerFactory.getLogger(PlatformHttpServer.class);
 
     private final CamelContext context;
@@ -70,16 +71,12 @@ final class PlatformHttpServer extends ServiceSupport {
         final Router router = Router.router(vertx);
         final Router subRouter = Router.router(vertx);
 
-        router.route()
-            .order(Integer.MIN_VALUE)
-            .handler(ctx -> {
-                ctx.request().resume();
-                createBodyHandler().handle(ctx);
-            });
-
         router.mountSubRouter(configuration.getPath(), subRouter);
 
-        context.getRegistry().bind(PlatformHttpRouter.PLATFORM_HTTP_ROUTER_NAME, new PlatformHttpRouter(subRouter));
+        context.getRegistry().bind(
+            PlatformHttp.PLATFORM_HTTP_ROUTER_NAME,
+            new PlatformHttp(vertx, subRouter, Collections.singletonList(createBodyHandler()))
+        );
 
         //HttpServerOptions options = new HttpServerOptions();
         if (configuration.getSslContextParameters() != null) {
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceConfiguration.java b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceConfiguration.java
similarity index 91%
rename from camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceConfiguration.java
rename to camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceConfiguration.java
index 659ecab..5aa5a3e 100644
--- a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceConfiguration.java
+++ b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceConfiguration.java
@@ -30,7 +30,7 @@ public class PlatformHttpServiceConfiguration {
     private String path = DEFAULT_PATH;
     private BigInteger maxBodySize;
 
-    private BodyHandler bodyHandler = new BodyHandler();
+    private BodyHandlerConfiguration bodyHandlerConfiguration = new BodyHandlerConfiguration();
     private SSLContextParameters sslContextParameters;
 
     public String getBindHost() {
@@ -65,12 +65,12 @@ public class PlatformHttpServiceConfiguration {
         this.maxBodySize = maxBodySize;
     }
 
-    public BodyHandler getBodyHandler() {
-        return bodyHandler;
+    public BodyHandlerConfiguration getBodyHandler() {
+        return bodyHandlerConfiguration;
     }
 
-    public void setBodyHandler(BodyHandler bodyHandler) {
-        this.bodyHandler = bodyHandler;
+    public void setBodyHandler(BodyHandlerConfiguration bodyHandler) {
+        this.bodyHandlerConfiguration = bodyHandler;
     }
 
     public SSLContextParameters getSslContextParameters() {
@@ -81,7 +81,7 @@ public class PlatformHttpServiceConfiguration {
         this.sslContextParameters = sslContextParameters;
     }
 
-    public static class BodyHandler {
+    public static class BodyHandlerConfiguration {
         private boolean handleFileUploads = true;
         private String uploadsDirectory = "file-uploads";
         private boolean mergeFormAttributes = true;
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceContextCustomizer.java b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceContextCustomizer.java
similarity index 100%
rename from camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceContextCustomizer.java
rename to camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceContextCustomizer.java
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceEndpoint.java b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceEndpoint.java
similarity index 100%
rename from camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceEndpoint.java
rename to camel-k-runtime-http/src/main/java/org/apache/camel/k/http/PlatformHttpServiceEndpoint.java
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpConsumer.java b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpConsumer.java
similarity index 98%
rename from camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpConsumer.java
rename to camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpConsumer.java
index e438c32..300fe91 100644
--- a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpConsumer.java
+++ b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpConsumer.java
@@ -45,7 +45,7 @@ import org.apache.camel.TypeConversionException;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.component.platform.http.PlatformHttpEndpoint;
 import org.apache.camel.component.platform.http.spi.Method;
-import org.apache.camel.k.http.PlatformHttpRouter;
+import org.apache.camel.k.http.PlatformHttp;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.support.DefaultConsumer;
 import org.apache.camel.support.DefaultMessage;
@@ -75,10 +75,12 @@ public class RuntimePlatformHttpConsumer extends DefaultConsumer {
         super.doStart();
 
         final PlatformHttpEndpoint endpoint = getEndpoint();
-        final PlatformHttpRouter router = PlatformHttpRouter.lookup(endpoint.getCamelContext());
+        final PlatformHttp router = PlatformHttp.lookup(endpoint.getCamelContext());
         final String path = endpoint.getPath();
         final String vertxPathParamPath = PATH_PARAMETER_PATTERN.matcher(path).replaceAll(":$1");
-        final Route newRoute = router.get().route(vertxPathParamPath);
+        final Route newRoute = router.router().route(vertxPathParamPath);
+
+        router.handlers().forEach(newRoute::handler);
 
         final Set<Method> methods = Method.parseList(endpoint.getHttpMethodRestrict());
         if (!methods.equals(Method.getAll())) {
diff --git a/camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpEngine.java b/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpEngine.java
similarity index 100%
rename from camel-k-main/camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpEngine.java
rename to camel-k-runtime-http/src/main/java/org/apache/camel/k/http/engine/RuntimePlatformHttpEngine.java
diff --git a/camel-k-main/camel-k-runtime-http/src/main/resources/META-INF/services/org/apache/camel/k/customizer/platform-http b/camel-k-runtime-http/src/main/resources/META-INF/services/org/apache/camel/k/customizer/platform-http
similarity index 100%
rename from camel-k-main/camel-k-runtime-http/src/main/resources/META-INF/services/org/apache/camel/k/customizer/platform-http
rename to camel-k-runtime-http/src/main/resources/META-INF/services/org/apache/camel/k/customizer/platform-http
diff --git a/camel-k-main/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java b/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
similarity index 98%
rename from camel-k-main/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
rename to camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
index 5756d37..61435ac 100644
--- a/camel-k-main/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
+++ b/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
@@ -50,7 +50,7 @@ public class PlatformHttpServiceCustomizerTest {
 
         httpService.apply(runtime.getCamelContext());
 
-        PlatformHttpRouter.lookup(runtime.getCamelContext()).get().route(HttpMethod.GET, "/my/path")
+        PlatformHttp.lookup(runtime.getCamelContext()).router().route(HttpMethod.GET, "/my/path")
             .handler(routingContext -> {
                 JsonObject response = new JsonObject();
                 response.put("status", "UP");
diff --git a/camel-k-main/camel-k-runtime-http/src/test/resources/log4j2-test.xml b/camel-k-runtime-http/src/test/resources/log4j2-test.xml
similarity index 100%
rename from camel-k-main/camel-k-runtime-http/src/test/resources/log4j2-test.xml
rename to camel-k-runtime-http/src/test/resources/log4j2-test.xml
diff --git a/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java b/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java
index 2719289..e977e70 100644
--- a/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java
+++ b/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java
@@ -35,6 +35,7 @@ import org.apache.camel.k.Runtime;
 import org.apache.camel.k.Source;
 import org.apache.camel.k.SourceLoader;
 import org.apache.camel.k.Sources;
+import org.apache.camel.k.http.PlatformHttpServiceContextCustomizer;
 import org.apache.camel.k.listener.RoutesConfigurer;
 import org.apache.camel.k.loader.java.JavaSourceLoader;
 import org.apache.camel.model.ModelCamelContext;
@@ -69,6 +70,7 @@ public class KnativeSourceRoutesLoaderTest {
         LOGGER.info("uri: {}", uri);
 
         final int port = AvailablePortFinder.getNextAvailable();
+        final int platformHttpPort = AvailablePortFinder.getNextAvailable();
         final String data = UUID.randomUUID().toString();
 
         KnativeComponent component = new KnativeComponent();
@@ -173,10 +175,16 @@ public class KnativeSourceRoutesLoaderTest {
     static class TestRuntime implements Runtime {
         private final CamelContext camelContext;
         private final List<RoutesBuilder> builders;
+        private final int platformHttpPort;
 
         public TestRuntime() {
             this.camelContext = new DefaultCamelContext();
             this.builders = new ArrayList<>();
+            this.platformHttpPort = AvailablePortFinder.getNextAvailable();
+
+            PlatformHttpServiceContextCustomizer httpService = new PlatformHttpServiceContextCustomizer();
+            httpService.setBindPort(platformHttpPort);
+            httpService.apply(this.camelContext);
         }
 
         @Override
diff --git a/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java b/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java
index 1702ae2..d0547bf 100644
--- a/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java
+++ b/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java
@@ -124,6 +124,17 @@ public class KnativeEnvironment {
         );
     }
 
+    public static KnativeServiceDefinition sourceEndpoint(String name, Map<String, String> metadata) {
+        return entry(
+            Knative.EndpointKind.source,
+            Knative.Type.endpoint,
+            name,
+            null,
+            -1,
+            metadata
+        );
+    }
+
     public static KnativeServiceDefinition channel(Knative.EndpointKind endpointKind, String name, String host, int port) {
         return entry(
             endpointKind,
@@ -157,6 +168,28 @@ public class KnativeEnvironment {
         );
     }
 
+    public static KnativeServiceDefinition sourceEvent(String name) {
+        return entry(
+            Knative.EndpointKind.source,
+            Knative.Type.event,
+            name,
+            null,
+            -1,
+            Collections.emptyMap()
+        );
+    }
+
+    public static KnativeServiceDefinition sourceEvent(String name, Map<String, String> metadata) {
+        return entry(
+            Knative.EndpointKind.source,
+            Knative.Type.event,
+            name,
+            null,
+            -1,
+            metadata
+        );
+    }
+
     public static KnativeServiceDefinition event(Knative.EndpointKind endpointKind, String name, String host, int port, Map<String, String> metadata) {
         return entry(
             endpointKind,
@@ -198,8 +231,8 @@ public class KnativeEnvironment {
         public KnativeServiceDefinition(
             @JsonProperty(value = "type", required = true) Knative.Type type,
             @JsonProperty(value = "name", required = true) String name,
-            @JsonProperty(value = "host", required = true) String host,
-            @JsonProperty(value = "port", required = true) int port,
+            @JsonProperty(value = "host", required = false) String host,
+            @JsonProperty(value = "port", required = false) int port,
             @JsonProperty(value = "metadata", required = false) Map<String, String> metadata) {
 
             super(
diff --git a/camel-knative/camel-knative-http/pom.xml b/camel-knative/camel-knative-http/pom.xml
index 58f9f13..731bcfa 100644
--- a/camel-knative/camel-knative-http/pom.xml
+++ b/camel-knative/camel-knative-http/pom.xml
@@ -36,12 +36,6 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>${slf4j.version}</version>
-        </dependency>
-
-        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-core-engine</artifactId>
         </dependency>
@@ -56,10 +50,10 @@
         </dependency>
 
         <dependency>
-            <groupId>io.vertx</groupId>
-            <artifactId>vertx-web</artifactId>
-            <version>${vertx.version}</version>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-runtime-http</artifactId>
         </dependency>
+
         <dependency>
             <groupId>io.vertx</groupId>
             <artifactId>vertx-web-client</artifactId>
@@ -118,6 +112,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
+            <artifactId>camel-http</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-bean</artifactId>
             <scope>test</scope>
         </dependency>
@@ -140,12 +139,19 @@
             <version>${junit.version}</version>
             <scope>test</scope>
         </dependency>
+
         <dependency>
             <groupId>org.assertj</groupId>
             <artifactId>assertj-core</artifactId>
             <version>${assertj.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <version>${rest-assured.version}</version>
+            <scope>test</scope>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
diff --git a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttp.java b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttp.java
index aad1725..a7d83d3 100644
--- a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttp.java
+++ b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttp.java
@@ -16,56 +16,10 @@
  */
 package org.apache.camel.component.knative.http;
 
-import java.util.Objects;
-import java.util.regex.Pattern;
-
-import io.vertx.core.Handler;
-import io.vertx.core.http.HttpServerRequest;
-
 public final class KnativeHttp {
     public static final int DEFAULT_PORT = 8080;
     public static final String DEFAULT_PATH = "/";
-    public static final Pattern ENDPOINT_PATTERN = Pattern.compile("([0-9a-zA-Z][\\w\\.-]+):(\\d+)\\/?(.*)");
 
     private KnativeHttp() {
     }
-
-    public static final class ServerKey {
-        private final String host;
-        private final int port;
-
-        public ServerKey(String host, int port) {
-            this.host = host;
-            this.port = port;
-        }
-
-        public String getHost() {
-            return host;
-        }
-
-        public int getPort() {
-            return port;
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (this == o) {
-                return true;
-            }
-            if (o == null || getClass() != o.getClass()) {
-                return false;
-            }
-            ServerKey key = (ServerKey) o;
-            return getPort() == key.getPort() && getHost().equals(key.getHost());
-        }
-
-        @Override
-        public int hashCode() {
-            return Objects.hash(getHost(), getPort());
-        }
-    }
-
-    public interface PredicatedHandler extends Handler<HttpServerRequest> {
-        boolean canHandle(HttpServerRequest event);
-    }
 }
diff --git a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java
index 3759ccc..d8d3688 100644
--- a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java
+++ b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java
@@ -27,6 +27,8 @@ import io.vertx.core.buffer.Buffer;
 import io.vertx.core.http.HttpMethod;
 import io.vertx.core.http.HttpServerRequest;
 import io.vertx.core.http.HttpServerResponse;
+import io.vertx.ext.web.Route;
+import io.vertx.ext.web.RoutingContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
@@ -35,109 +37,160 @@ import org.apache.camel.NoTypeConversionAvailableException;
 import org.apache.camel.Processor;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.component.knative.spi.KnativeEnvironment;
+import org.apache.camel.k.http.PlatformHttp;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.support.DefaultConsumer;
 import org.apache.camel.support.DefaultMessage;
 import org.apache.camel.support.ExchangeHelper;
 import org.apache.camel.support.MessageHelper;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class KnativeHttpConsumer extends DefaultConsumer {
+    private static final Logger LOGGER = LoggerFactory.getLogger(KnativeHttpConsumer.class);
 
-public class KnativeHttpConsumer extends DefaultConsumer implements KnativeHttp.PredicatedHandler {
     private final KnativeHttpTransport transport;
     private final Predicate<HttpServerRequest> filter;
-    private final KnativeHttp.ServerKey key;
     private final KnativeEnvironment.KnativeServiceDefinition serviceDefinition;
+    private final PlatformHttp platformHttp;
     private final HeaderFilterStrategy headerFilterStrategy;
 
+    private String basePath;
+    private Route route;
+
     public KnativeHttpConsumer(
-            KnativeHttpTransport transport,
-            Endpoint endpoint,
-            KnativeEnvironment.KnativeServiceDefinition serviceDefinition,
-            Processor processor) {
+        KnativeHttpTransport transport,
+        Endpoint endpoint,
+        KnativeEnvironment.KnativeServiceDefinition serviceDefinition,
+        PlatformHttp platformHttp,
+        Processor processor) {
 
         super(endpoint, processor);
 
         this.transport = transport;
         this.serviceDefinition = serviceDefinition;
+        this.platformHttp = platformHttp;
         this.headerFilterStrategy = new KnativeHttpHeaderFilterStrategy();
-        this.key = new KnativeHttp.ServerKey(serviceDefinition.getHost(), serviceDefinition.getPortOrDefault(KnativeHttp.DEFAULT_PORT));
         this.filter = KnativeHttpSupport.createFilter(serviceDefinition);
     }
 
+    public String getBasePath() {
+        return basePath;
+    }
+
+    public void setBasePath(String basePath) {
+        this.basePath = basePath;
+    }
+
     @Override
     protected void doStart() throws Exception {
-        this.transport.getDispatcher(key).bind(this);
+        if (route == null) {
+            String path = ObjectHelper.supplyIfEmpty(serviceDefinition.getPath(), () -> KnativeHttp.DEFAULT_PATH);
+            if (ObjectHelper.isNotEmpty(basePath)) {
+                path = basePath + path;
+            }
+
+            LOGGER.debug("Creating route for path: {}", path);
+
+            route = platformHttp.router().route(
+                HttpMethod.POST,
+                path
+            );
+
+            // add common handlers
+            platformHttp.handlers().forEach(route::handler);
+
+            route.handler(routingContext -> {
+                LOGGER.debug("Handling {}", routingContext);
+
+                if (filter.test(routingContext.request())) {
+                    handleRequest(routingContext);
+                } else {
+                    LOGGER.debug("Cannot handle request on {}, next", getEndpoint().getEndpointUri());
+                    routingContext.next();
+                }
+            });
+        }
 
         super.doStart();
     }
 
     @Override
     protected void doStop() throws Exception {
-        this.transport.getDispatcher(key).unbind(this);
+        if (route != null) {
+            route.remove();
+        }
 
         super.doStop();
     }
 
     @Override
-    public boolean canHandle(HttpServerRequest request) {
-        return filter.test(request);
+    protected void doSuspend() throws Exception {
+        if (route != null) {
+            route.disable();
+        }
     }
 
     @Override
-    public void handle(HttpServerRequest request) {
-        if (request.method() == HttpMethod.POST) {
-            final Exchange exchange = getEndpoint().createExchange(ExchangePattern.InOut);
-            final Message in = toMessage(request, exchange);
+    protected void doResume() throws Exception {
+        if (route != null) {
+            route.enable();
+        }
+    }
 
-            request.bodyHandler(buffer -> {
-                in.setBody(buffer.getBytes());
+    private void handleRequest(RoutingContext routingContext) {
+        final HttpServerRequest request = routingContext.request();
+        final Exchange exchange = getEndpoint().createExchange(ExchangePattern.InOut);
+        final Message in = toMessage(request, exchange);
 
-                exchange.setIn(in);
+        Buffer payload = routingContext.getBody();
+        if (payload != null) {
+            in.setBody(payload.getBytes());
+        } else {
+            in.setBody(null);
+        }
 
+        exchange.setIn(in);
+
+        try {
+            createUoW(exchange);
+            getAsyncProcessor().process(exchange, doneSync -> {
                 try {
-                    createUoW(exchange);
-                    getAsyncProcessor().process(exchange, doneSync -> {
-                        try {
-                            HttpServerResponse response = toHttpResponse(request, exchange.getMessage());
-                            Buffer body = null;
-
-                            if (request.response().getStatusCode() != 204) {
-                                body = computeResponseBody(exchange.getMessage());
-
-                                // set the content type in the response.
-                                String contentType = MessageHelper.getContentType(exchange.getMessage());
-                                if (contentType != null) {
-                                    // set content-type
-                                    response.putHeader(Exchange.CONTENT_TYPE, contentType);
-                                }
-                            }
-
-                            if (body != null) {
-                                request.response().end(body);
-                            } else {
-                                request.response().setStatusCode(204);
-                                request.response().end();
-                            }
-                        } catch (Exception e) {
-                            getExceptionHandler().handleException(e);
+                    HttpServerResponse response = toHttpResponse(request, exchange.getMessage());
+                    Buffer body = null;
+
+                    if (request.response().getStatusCode() != 204) {
+                        body = computeResponseBody(exchange.getMessage());
+
+                        // set the content type in the response.
+                        String contentType = MessageHelper.getContentType(exchange.getMessage());
+                        if (contentType != null) {
+                            // set content-type
+                            response.putHeader(Exchange.CONTENT_TYPE, contentType);
                         }
-                    });
+                    }
+
+                    if (body != null) {
+                        request.response().end(body);
+                    } else {
+                        request.response().setStatusCode(204);
+                        request.response().end();
+                    }
                 } catch (Exception e) {
                     getExceptionHandler().handleException(e);
-
-                    request.response().setStatusCode(500);
-                    request.response().putHeader(Exchange.CONTENT_TYPE, "text/plain");
-                    request.response().end(e.getMessage());
-                } finally {
-                    doneUoW(exchange);
                 }
             });
-        } else {
-            request.response().setStatusCode(405);
-            request.response().putHeader(Exchange.CONTENT_TYPE, "text/plain");
-            request.response().end("Unsupported method");
+        } catch (Exception e) {
+            getExceptionHandler().handleException(e);
 
-            throw new IllegalArgumentException("Unsupported method: " + request.method());
+            request.response().setStatusCode(500);
+            request.response().putHeader(Exchange.CONTENT_TYPE, "text/plain");
+            request.response().end(e.getMessage());
+        } finally {
+            doneUoW(exchange);
         }
+
     }
 
     private Message toMessage(HttpServerRequest request, Exchange exchange) {
@@ -224,5 +277,4 @@ public class KnativeHttpConsumer extends DefaultConsumer implements KnativeHttp.
             ? Buffer.buffer(message.getExchange().getContext().getTypeConverter().mandatoryConvertTo(byte[].class, body))
             : null;
     }
-
 }
diff --git a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumerDispatcher.java b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumerDispatcher.java
deleted file mode 100644
index 621fb1a..0000000
--- a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumerDispatcher.java
+++ /dev/null
@@ -1,203 +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.component.knative.http;
-
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionStage;
-import java.util.concurrent.CopyOnWriteArraySet;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-
-import io.vertx.core.Handler;
-import io.vertx.core.Vertx;
-import io.vertx.core.http.HttpMethod;
-import io.vertx.core.http.HttpServer;
-import io.vertx.core.http.HttpServerOptions;
-import io.vertx.core.http.HttpServerRequest;
-import io.vertx.core.http.HttpServerResponse;
-import org.apache.camel.Exchange;
-import org.apache.camel.support.service.ServiceSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ReferenceCount;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class KnativeHttpConsumerDispatcher {
-    private static final Logger LOGGER = LoggerFactory.getLogger(KnativeHttpConsumerDispatcher.class);
-
-    private final Vertx vertx;
-    private final KnativeHttp.ServerKey key;
-    private final ReferenceCount refCnt;
-    private final Set<KnativeHttp.PredicatedHandler> handlers;
-    private final HttpServerWrapper server;
-    private final HttpServerOptions serverOptions;
-    private final ExecutorService executor;
-
-    public KnativeHttpConsumerDispatcher(ExecutorService executor,  Vertx vertx, KnativeHttp.ServerKey key, HttpServerOptions serverOptions) {
-        this.executor = executor;
-        this.vertx = vertx;
-        this.serverOptions = ObjectHelper.supplyIfEmpty(serverOptions, HttpServerOptions::new);
-        this.server = new HttpServerWrapper();
-
-        this.handlers = new CopyOnWriteArraySet<>();
-        this.key = key;
-        this.refCnt = ReferenceCount.on(server::start, server::stop);
-    }
-
-    public void bind(KnativeHttp.PredicatedHandler handler) {
-        if (handlers.add(handler)) {
-            refCnt.retain();
-        }
-    }
-
-    public void unbind(KnativeHttp.PredicatedHandler handler) {
-        if (handlers.remove(handler)) {
-            refCnt.release();
-        }
-    }
-
-    private final class HttpServerWrapper extends ServiceSupport implements Handler<HttpServerRequest> {
-        private HttpServer server;
-
-        @Override
-        protected void doStart() throws Exception {
-            LOGGER.info("Starting Vert.x HttpServer on {}:{}}",
-                key.getHost(),
-                key.getPort()
-            );
-
-            startAsync().toCompletableFuture().join();
-        }
-
-        @Override
-        protected void doStop() throws Exception {
-            LOGGER.info("Stopping Vert.x HttpServer on {}:{}",
-                key.getHost(),
-                key.getPort());
-
-            try {
-                if (server != null) {
-                    stopAsync().toCompletableFuture().join();
-                }
-            } finally {
-                this.server = null;
-            }
-        }
-
-        private CompletionStage<Void> startAsync() {
-            server = vertx.createHttpServer(serverOptions);
-            server.requestHandler(this);
-
-            return CompletableFuture.runAsync(
-                () -> {
-                    CountDownLatch latch = new CountDownLatch(1);
-
-                    server.listen(key.getPort(), key.getHost(), result -> {
-                        try {
-                            if (result.failed()) {
-                                LOGGER.warn("Failed to start Vert.x HttpServer on {}:{}, reason: {}",
-                                    key.getHost(),
-                                    key.getPort(),
-                                    result.cause().getMessage()
-                                );
-
-                                throw new RuntimeException(result.cause());
-                            }
-
-                            LOGGER.info("Vert.x HttpServer started on {}:{}", key.getHost(), key.getPort());
-                        } finally {
-                            latch.countDown();
-                        }
-                    });
-
-                    try {
-                        latch.await();
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                },
-                executor
-            );
-        }
-
-        protected CompletionStage<Void> stopAsync() {
-            return CompletableFuture.runAsync(
-                () -> {
-                    CountDownLatch latch = new CountDownLatch(1);
-
-                    server.close(result -> {
-                        try {
-                            if (result.failed()) {
-                                LOGGER.warn("Failed to close Vert.x HttpServer reason: {}",
-                                    result.cause().getMessage()
-                                );
-
-                                throw new RuntimeException(result.cause());
-                            }
-
-                            LOGGER.info("Vert.x HttpServer stopped");
-                        } finally {
-                            latch.countDown();
-                        }
-                    });
-
-                    try {
-                        latch.await();
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                },
-                executor
-            );
-        }
-
-        @Override
-        public void handle(HttpServerRequest request) {
-            if (request.method() != HttpMethod.POST) {
-                HttpServerResponse response = request.response();
-                response.setStatusCode(405);
-                response.putHeader(Exchange.CONTENT_TYPE, "text/plain");
-                response.end("Unsupported method: " + request.method());
-
-                return;
-            }
-
-            LOGGER.debug("received exchange on path: {}, headers: {}",
-                request.path(),
-                request.headers()
-            );
-
-            for (KnativeHttp.PredicatedHandler handler: handlers) {
-                if (handler.canHandle(request)) {
-                    handler.handle(request);
-                    return;
-                }
-            }
-
-            LOGGER.warn("No handler found for path: {}, headers: {}",
-                request.path(),
-                request.headers()
-            );
-
-            HttpServerResponse response = request.response();
-            response.setStatusCode(404);
-            response.putHeader(Exchange.CONTENT_TYPE, "text/plain");
-            response.end("No matching condition found");
-        }
-    }
-}
diff --git a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java
index 124d91a..1e1b7ab 100644
--- a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java
+++ b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java
@@ -19,7 +19,6 @@ package org.apache.camel.component.knative.http;
 import java.util.Map;
 
 import io.vertx.core.MultiMap;
-import io.vertx.core.Vertx;
 import io.vertx.core.buffer.Buffer;
 import io.vertx.core.http.HttpHeaders;
 import io.vertx.ext.web.client.HttpResponse;
@@ -32,6 +31,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.Message;
 import org.apache.camel.component.knative.spi.KnativeEnvironment;
+import org.apache.camel.k.http.PlatformHttp;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.support.DefaultAsyncProducer;
 import org.apache.camel.support.DefaultMessage;
@@ -46,7 +46,7 @@ public class KnativeHttpProducer extends DefaultAsyncProducer {
 
     private final KnativeHttpTransport transport;
     private final KnativeEnvironment.KnativeServiceDefinition serviceDefinition;
-    private final Vertx vertx;
+    private final PlatformHttp platformHttp;
     private final WebClientOptions clientOptions;
     private final HeaderFilterStrategy headerFilterStrategy;
 
@@ -56,13 +56,13 @@ public class KnativeHttpProducer extends DefaultAsyncProducer {
             KnativeHttpTransport transport,
             Endpoint endpoint,
             KnativeEnvironment.KnativeServiceDefinition serviceDefinition,
-            Vertx vertx,
+            PlatformHttp platformHttp,
             WebClientOptions clientOptions) {
         super(endpoint);
 
         this.transport = transport;
         this.serviceDefinition = serviceDefinition;
-        this.vertx = ObjectHelper.notNull(vertx, "vertx");
+        this.platformHttp = ObjectHelper.notNull(platformHttp, "vertx");
         this.clientOptions = ObjectHelper.supplyIfEmpty(clientOptions, WebClientOptions::new);
         this.headerFilterStrategy = new KnativeHttpHeaderFilterStrategy();
     }
@@ -166,7 +166,7 @@ public class KnativeHttpProducer extends DefaultAsyncProducer {
     protected void doInit() throws Exception {
         super.doInit();
 
-        this.client = WebClient.create(vertx, clientOptions);
+        this.client = WebClient.create(platformHttp.vertx(), clientOptions);
     }
 
     @Override
@@ -181,11 +181,8 @@ public class KnativeHttpProducer extends DefaultAsyncProducer {
     }
 
     private String getURI() {
-        String p = serviceDefinition.getPath();
-
-        if (p == null) {
-            p = KnativeHttp.DEFAULT_PATH;
-        } else if (!p.startsWith("/")) {
+        String p = ObjectHelper.supplyIfEmpty(serviceDefinition.getPath(), () -> KnativeHttp.DEFAULT_PATH);
+        if (!p.startsWith("/")) {
             p = "/" + p;
         }
 
diff --git a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java
index faeba6a..f113e78 100644
--- a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java
+++ b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java
@@ -31,7 +31,6 @@ import org.apache.camel.component.knative.spi.CloudEvent;
 import org.apache.camel.component.knative.spi.Knative;
 import org.apache.camel.component.knative.spi.KnativeEnvironment;
 import org.apache.camel.support.processor.DelegateAsyncProcessor;
-import org.apache.camel.util.ObjectHelper;
 
 public final class KnativeHttpSupport {
     private KnativeHttpSupport() {
@@ -63,13 +62,7 @@ public final class KnativeHttpSupport {
                 e -> e.getValue()
             ));
 
-
-        String path = ObjectHelper.supplyIfEmpty(serviceDefinition.getPath(), () -> KnativeHttp.DEFAULT_PATH);
-
         return v -> {
-            if (!Objects.equals(path, v.path())) {
-                return false;
-            }
             if (filters.isEmpty()) {
                 return true;
             }
diff --git a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpTransport.java b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpTransport.java
index 5850a53..aa15464 100644
--- a/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpTransport.java
+++ b/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpTransport.java
@@ -16,16 +16,6 @@
  */
 package org.apache.camel.component.knative.http;
 
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-
-import io.vertx.core.Vertx;
-import io.vertx.core.VertxOptions;
-import io.vertx.core.http.HttpServerOptions;
 import io.vertx.ext.web.client.WebClientOptions;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
@@ -36,66 +26,33 @@ import org.apache.camel.Producer;
 import org.apache.camel.component.knative.spi.KnativeEnvironment;
 import org.apache.camel.component.knative.spi.KnativeTransport;
 import org.apache.camel.component.knative.spi.KnativeTransportConfiguration;
+import org.apache.camel.k.http.PlatformHttp;
 import org.apache.camel.support.service.ServiceSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class KnativeHttpTransport extends ServiceSupport implements CamelContextAware, KnativeTransport {
-    private static final Logger LOGGER = LoggerFactory.getLogger(KnativeHttpTransport.class);
-
-    private final Map<KnativeHttp.ServerKey, KnativeHttpConsumerDispatcher> registry;
-
-    private Vertx vertx;
-    private VertxOptions vertxOptions;
-    private HttpServerOptions vertxHttpServerOptions;
+    private PlatformHttp platformHttp;
     private WebClientOptions vertxHttpClientOptions;
     private CamelContext camelContext;
 
-    private boolean localVertx;
-    private ExecutorService executor;
-
     public KnativeHttpTransport() {
-        this.registry = new ConcurrentHashMap<>();
-        this.localVertx = false;
-    }
-
-    public Vertx getVertx() {
-        return vertx;
-    }
-
-    public void setVertx(Vertx vertx) {
-        this.vertx = vertx;
-    }
-
-    public VertxOptions getVertxOptions() {
-        return vertxOptions;
     }
 
-    public void setVertxOptions(VertxOptions vertxOptions) {
-        this.vertxOptions = vertxOptions;
+    public PlatformHttp getPlatformHttp() {
+        return platformHttp;
     }
 
-    public HttpServerOptions getVertxHttpServerOptions() {
-        return vertxHttpServerOptions;
+    public void setPlatformHttp(PlatformHttp platformHttp) {
+        this.platformHttp = platformHttp;
     }
 
-    public void setVertxHttpServerOptions(HttpServerOptions vertxHttpServerOptions) {
-        this.vertxHttpServerOptions = vertxHttpServerOptions;
-    }
-
-    public WebClientOptions getVertxHttpClientOptions() {
+    public WebClientOptions getClientOptions() {
         return vertxHttpClientOptions;
     }
 
-    public void setVertxHttpClientOptions(WebClientOptions vertxHttpClientOptions) {
+    public void setClientOptions(WebClientOptions vertxHttpClientOptions) {
         this.vertxHttpClientOptions = vertxHttpClientOptions;
     }
 
-    KnativeHttpConsumerDispatcher getDispatcher(KnativeHttp.ServerKey key) {
-        return registry.computeIfAbsent(key, k -> new KnativeHttpConsumerDispatcher(executor, vertx, k, vertxHttpServerOptions));
-    }
-
     @Override
     public void setCamelContext(CamelContext camelContext) {
         this.camelContext = camelContext;
@@ -114,82 +71,13 @@ public class KnativeHttpTransport extends ServiceSupport implements CamelContext
 
     @Override
     protected void doStart() throws Exception {
-        this.executor = getCamelContext().getExecutorServiceManager().newSingleThreadExecutor(this, "knative-http-component");
-
-        if (this.vertx != null)  {
-            LOGGER.info("Using Vert.x instance configured on component: {}", this.vertx);
-            return;
-        }
-
-        if (this.vertx == null) {
-            Set<Vertx> instances = getCamelContext().getRegistry().findByType(Vertx.class);
-            if (instances.size() == 1) {
-                this.vertx = instances.iterator().next();
-
-                //
-                // if this method is executed before the container is fully started,
-                // it may return a null reference, may be related to:
-                //
-                //    https://groups.google.com/forum/#!topic/quarkus-dev/qSo65fTyYVA
-                //
-                if (this.vertx != null) {
-                    LOGGER.info("Found Vert.x instance in registry: {}", this.vertx);
-                }
-            }
-        }
-
-        if (this.vertx == null) {
-            LOGGER.info("Creating new Vert.x instance");
-
-            VertxOptions options = ObjectHelper.supplyIfEmpty(this.vertxOptions, VertxOptions::new);
-
-            this.vertx = Vertx.vertx(options);
-            this.localVertx = true;
+        if (this.platformHttp == null) {
+            this.platformHttp = PlatformHttp.lookup(camelContext);
         }
     }
 
     @Override
     protected void doStop() throws Exception {
-        if (this.vertx != null && this.localVertx) {
-            Future<?> future = this.executor.submit(
-                () -> {
-                    CountDownLatch latch = new CountDownLatch(1);
-
-                    this.vertx.close(result -> {
-                        try {
-                            if (result.failed()) {
-                                LOGGER.warn("Failed to close Vert.x HttpServer reason: {}",
-                                    result.cause().getMessage()
-                                );
-
-                                throw new RuntimeException(result.cause());
-                            }
-
-                            LOGGER.info("Vert.x HttpServer stopped");
-                        } finally {
-                            latch.countDown();
-                        }
-                    });
-
-                    try {
-                        latch.await();
-                    } catch (InterruptedException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
-            );
-
-            try {
-                future.get();
-            } finally {
-                this.vertx = null;
-                this.localVertx = false;
-            }
-        }
-
-        if (this.executor != null) {
-            getCamelContext().getExecutorServiceManager().shutdownNow(this.executor);
-        }
     }
 
     // *****************************
@@ -200,7 +88,7 @@ public class KnativeHttpTransport extends ServiceSupport implements CamelContext
 
     @Override
     public Producer createProducer(Endpoint endpoint, KnativeTransportConfiguration config, KnativeEnvironment.KnativeServiceDefinition service) {
-        return new KnativeHttpProducer(this, endpoint, service, vertx, vertxHttpClientOptions);
+        return new KnativeHttpProducer(this, endpoint, service, this.platformHttp, vertxHttpClientOptions);
     }
 
     @Override
@@ -209,7 +97,7 @@ public class KnativeHttpTransport extends ServiceSupport implements CamelContext
         if (config.isRemoveCloudEventHeadersInReply()) {
             next = KnativeHttpSupport.withoutCloudEventHeaders(processor, config.getCloudEvent());
         }
-        return new KnativeHttpConsumer(this, endpoint, service, next);
+        return new KnativeHttpConsumer(this, endpoint, service, this.platformHttp, next);
     }
 
 }
diff --git a/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java b/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
index 06bba76..405356d 100644
--- a/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
+++ b/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
@@ -27,7 +27,8 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
+import io.restassured.RestAssured;
+import io.restassured.mapper.ObjectMapperType;
 import io.undertow.Undertow;
 import io.undertow.server.HttpServerExchange;
 import io.undertow.util.HeaderMap;
@@ -45,24 +46,32 @@ import org.apache.camel.component.knative.spi.KnativeSupport;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.http.base.HttpOperationFailedException;
 import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.k.http.PlatformHttpServiceContextCustomizer;
 import org.apache.camel.test.AvailablePortFinder;
+import org.apache.camel.util.ObjectHelper;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.EnumSource;
 
+import static io.restassured.RestAssured.config;
+import static io.restassured.RestAssured.given;
+import static io.restassured.config.EncoderConfig.encoderConfig;
 import static org.apache.camel.component.knative.http.KnativeHttpTestSupport.configureKnativeComponent;
 import static org.apache.camel.component.knative.spi.KnativeEnvironment.channel;
 import static org.apache.camel.component.knative.spi.KnativeEnvironment.endpoint;
 import static org.apache.camel.component.knative.spi.KnativeEnvironment.event;
+import static org.apache.camel.component.knative.spi.KnativeEnvironment.sourceEndpoint;
+import static org.apache.camel.component.knative.spi.KnativeEnvironment.sourceEvent;
+import static org.apache.camel.util.CollectionHelper.mapOf;
 import static org.assertj.core.api.Assertions.assertThat;
 
 public class KnativeHttpTest {
 
     private CamelContext context;
     private ProducerTemplate template;
-    private int port;
+    private int platformHttpPort;
 
     // **************************
     //
@@ -74,7 +83,14 @@ public class KnativeHttpTest {
     public void before() {
         this.context = new DefaultCamelContext();
         this.template = this.context.createProducerTemplate();
-        this.port = AvailablePortFinder.getNextAvailable();
+        this.platformHttpPort = AvailablePortFinder.getNextAvailable();
+
+        PlatformHttpServiceContextCustomizer httpService = new PlatformHttpServiceContextCustomizer();
+        httpService.setBindPort(this.platformHttpPort);
+        httpService.apply(context);
+
+        RestAssured.port = platformHttpPort;
+        RestAssured.config = config().encoderConfig(encoderConfig().appendDefaultContentCharsetToContentTypeIfUndefined(false));
     }
 
     @AfterEach
@@ -97,7 +113,88 @@ public class KnativeHttpTest {
         assertThat(context.getComponent("knative")).isInstanceOfSatisfying(KnativeComponent.class, c -> {
             assertThat(c.getTransport()).isInstanceOf(KnativeHttpTransport.class);
         });
+    }
+
+    void doTestKnativeSource(CloudEvent ce, String basePath, String path) throws Exception {
+        KnativeComponent component = configureKnativeComponent(
+            context,
+            CloudEvents.V03,
+            sourceEndpoint(
+                "myEndpoint",
+                KnativeSupport.mapOf(
+                    Knative.SERVICE_META_PATH, path,
+                    Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
+                    Knative.CONTENT_TYPE, "text/plain"
+                ))
+        );
+
+        if (ObjectHelper.isNotEmpty(basePath)) {
+            component.getConfiguration().addTransportOptions("basePath", basePath);
+        }
+
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("knative:endpoint/myEndpoint")
+                    .to("mock:ce");
+            }
+        });
+
+        context.start();
 
+        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
+        mock.expectedHeaderReceived(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version());
+        mock.expectedHeaderReceived(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event");
+        mock.expectedHeaderReceived(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "/somewhere");
+        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
+        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http()));
+        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http()));
+        mock.expectedBodiesReceived("test");
+        mock.expectedMessageCount(1);
+
+        String targetPath = ObjectHelper.supplyIfEmpty(path, () -> "/");
+        if (ObjectHelper.isNotEmpty(basePath)) {
+            targetPath = basePath + targetPath;
+        }
+
+        given()
+            .body("test")
+            .header(Exchange.CONTENT_TYPE, "text/plain")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version())
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "/somewhere")
+        .when()
+            .post(targetPath)
+        .then()
+            .statusCode(200);
+
+        mock.assertIsSatisfied();
+    }
+
+    @ParameterizedTest
+    @EnumSource(CloudEvents.class)
+    void testKnativeSource(CloudEvent ce) throws Exception {
+        doTestKnativeSource(ce, null, null);
+    }
+
+    @ParameterizedTest
+    @EnumSource(CloudEvents.class)
+    void testKnativeSourceWithPath(CloudEvent ce) throws Exception {
+        doTestKnativeSource(ce, null, "/a/path");
+    }
+
+    @ParameterizedTest
+    @EnumSource(CloudEvents.class)
+    void testKnativeSourceWithBasePath(CloudEvent ce) throws Exception {
+        doTestKnativeSource(ce, "/base", null);
+    }
+
+    @ParameterizedTest
+    @EnumSource(CloudEvents.class)
+    void testKnativeSourceWithBasePathAndPath(CloudEvent ce) throws Exception {
+        doTestKnativeSource(ce, "/base", "/a/path");
     }
 
     @ParameterizedTest
@@ -110,7 +207,7 @@ public class KnativeHttpTest {
                 Knative.EndpointKind.sink,
                 "myEndpoint",
                 "localhost",
-                port,
+                platformHttpPort,
                 KnativeSupport.mapOf(
                     Knative.SERVICE_META_PATH, "/a/path",
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
@@ -123,7 +220,7 @@ public class KnativeHttpTest {
             public void configure() throws Exception {
                 from("direct:source")
                     .to("knative:endpoint/myEndpoint");
-                fromF("undertow:http://localhost:%d/a/path", port)
+                from("platform-http:/a/path")
                     .to("mock:ce");
             }
         });
@@ -151,13 +248,9 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "myEndpoint",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
-                    Knative.SERVICE_META_PATH, "/a/path",
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
                 ))
@@ -168,8 +261,6 @@ public class KnativeHttpTest {
             public void configure() throws Exception {
                 from("knative:endpoint/myEndpoint")
                     .to("mock:ce");
-                from("direct:source")
-                    .toF("undertow:http://localhost:%d/a/path", port);
             }
         });
 
@@ -185,23 +276,30 @@ public class KnativeHttpTest {
         mock.expectedBodiesReceived("test");
         mock.expectedMessageCount(1);
 
-        context.createProducerTemplate().send(
-            "direct:source",
-            e -> {
-                e.getMessage().setHeader(Exchange.CONTENT_TYPE, Knative.MIME_STRUCTURED_CONTENT_MODE);
-
-                if (Objects.equals(CloudEvents.V01.version(), ce.version())) {
-                    e.getMessage().setBody(new ObjectMapper().writeValueAsString(KnativeSupport.mapOf(
-                        "cloudEventsVersion", ce.version(),
-                        "eventType", "org.apache.camel.event",
-                        "eventID", "myEventID",
-                        "eventTime", DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()),
-                        "source", "/somewhere",
-                        "contentType", "text/plain",
-                        "data", "test"
-                    )));
-                } else if (Objects.equals(CloudEvents.V02.version(), ce.version())) {
-                    e.getMessage().setBody(new ObjectMapper().writeValueAsString(KnativeSupport.mapOf(
+        if (Objects.equals(CloudEvents.V01.version(), ce.version())) {
+            given()
+                .contentType(Knative.MIME_STRUCTURED_CONTENT_MODE)
+                .body(
+                    mapOf(
+                            "cloudEventsVersion", ce.version(),
+                            "eventType", "org.apache.camel.event",
+                            "eventID", "myEventID",
+                            "eventTime", DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()),
+                            "source", "/somewhere",
+                            "contentType", "text/plain",
+                            "data", "test"
+                    ),
+                    ObjectMapperType.JACKSON_2
+                )
+            .when()
+                .post()
+            .then()
+                .statusCode(200);
+        } else if (Objects.equals(CloudEvents.V02.version(), ce.version())) {
+            given()
+                .contentType(Knative.MIME_STRUCTURED_CONTENT_MODE)
+                .body(
+                    mapOf(
                         "specversion", ce.version(),
                         "type", "org.apache.camel.event",
                         "id", "myEventID",
@@ -209,9 +307,18 @@ public class KnativeHttpTest {
                         "source", "/somewhere",
                         "contenttype", "text/plain",
                         "data", "test"
-                    )));
-                } else if (Objects.equals(CloudEvents.V03.version(), ce.version())) {
-                    e.getMessage().setBody(new ObjectMapper().writeValueAsString(KnativeSupport.mapOf(
+                    ),
+                    ObjectMapperType.JACKSON_2
+                )
+            .when()
+                .post()
+            .then()
+                .statusCode(200);
+        } else if (Objects.equals(CloudEvents.V03.version(), ce.version())) {
+            given()
+                .contentType(Knative.MIME_STRUCTURED_CONTENT_MODE)
+                .body(
+                    mapOf(
                         "specversion", ce.version(),
                         "type", "org.apache.camel.event",
                         "id", "myEventID",
@@ -219,12 +326,16 @@ public class KnativeHttpTest {
                         "source", "/somewhere",
                         "datacontenttype", "text/plain",
                         "data", "test"
-                    )));
-                } else {
-                    throw new IllegalArgumentException("Unknown CloudEvent spec: " + ce.version());
-                }
-            }
-        );
+                    ),
+                    ObjectMapperType.JACKSON_2
+                )
+            .when()
+                .post()
+            .then()
+                .statusCode(200);
+        } else {
+            throw new IllegalArgumentException("Unknown CloudEvent spec: " + ce.version());
+        }
 
         mock.assertIsSatisfied();
     }
@@ -235,13 +346,9 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "myEndpoint",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
-                    Knative.SERVICE_META_PATH, "/a/path",
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
                 ))
@@ -252,8 +359,6 @@ public class KnativeHttpTest {
             public void configure() throws Exception {
                 from("knative:endpoint/myEndpoint")
                     .to("mock:ce");
-                from("direct:source")
-                    .toF("undertow:http://localhost:%d/a/path", port);
             }
         });
 
@@ -274,18 +379,18 @@ public class KnativeHttpTest {
         mock.expectedBodiesReceived("test");
         mock.expectedMessageCount(1);
 
-        context.createProducerTemplate().send(
-            "direct:source",
-            e -> {
-                e.getMessage().setHeader(Exchange.CONTENT_TYPE, "text/plain");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version());
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()));
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "/somewhere");
-                e.getMessage().setBody("test");
-            }
-        );
+        given()
+            .body("test")
+            .header(Exchange.CONTENT_TYPE, "text/plain")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version())
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "/somewhere")
+        .when()
+            .post()
+        .then()
+            .statusCode(200);
 
         mock.assertIsSatisfied();
     }
@@ -296,21 +401,15 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "ep1",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
                     Knative.KNATIVE_FILTER_PREFIX + ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE1"
                 )),
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "ep2",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
@@ -329,13 +428,6 @@ public class KnativeHttpTest {
                     .convertBodyTo(String.class)
                     .to("log:ce2?showAll=true&multiline=true")
                     .to("mock:ce2");
-
-                from("direct:source")
-                    .setBody()
-                        .constant("test")
-                    .setHeader(Exchange.HTTP_METHOD)
-                        .constant("POST")
-                    .toD("undertow:http://localhost:" + port);
             }
         });
 
@@ -359,26 +451,31 @@ public class KnativeHttpTest {
         mock2.expectedBodiesReceived("test");
         mock2.expectedMessageCount(1);
 
-        context.createProducerTemplate().send(
-            "direct:source",
-            e -> {
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version());
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID1");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()));
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE1");
-            }
-        );
-        context.createProducerTemplate().send(
-            "direct:source",
-            e -> {
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version());
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID2");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()));
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE2");
-            }
-        );
+        given()
+            .body("test")
+            .header(Exchange.CONTENT_TYPE, "text/plain")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version())
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID1")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE1")
+        .when()
+            .post()
+        .then()
+            .statusCode(200);
+
+        given()
+            .body("test")
+            .header(Exchange.CONTENT_TYPE, "text/plain")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version())
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID2")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE2")
+        .when()
+            .post()
+        .then()
+            .statusCode(200);
 
         mock1.assertIsSatisfied();
         mock2.assertIsSatisfied();
@@ -390,21 +487,15 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "ep1",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
                     Knative.KNATIVE_FILTER_PREFIX + ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE[01234]"
                 )),
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "ep2",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
@@ -423,13 +514,6 @@ public class KnativeHttpTest {
                     .convertBodyTo(String.class)
                     .to("log:ce2?showAll=true&multiline=true")
                     .to("mock:ce2");
-
-                from("direct:source")
-                    .setBody()
-                    .constant("test")
-                    .setHeader(Exchange.HTTP_METHOD)
-                        .constant("POST")
-                    .toD("undertow:http://localhost:" + port);
             }
         });
 
@@ -453,26 +537,31 @@ public class KnativeHttpTest {
         mock2.expectedBodiesReceived("test");
         mock2.expectedMessageCount(1);
 
-        context.createProducerTemplate().send(
-            "direct:source",
-            e -> {
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version());
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID1");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()));
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE0");
-            }
-        );
-        context.createProducerTemplate().send(
-            "direct:source",
-            e -> {
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version());
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID2");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()));
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE5");
-            }
-        );
+        given()
+            .body("test")
+            .header(Exchange.CONTENT_TYPE, "text/plain")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version())
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID1")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE0")
+        .when()
+            .post()
+        .then()
+            .statusCode(200);
+
+        given()
+            .body("test")
+            .header(Exchange.CONTENT_TYPE, "text/plain")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version())
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID2")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE5")
+        .when()
+            .post()
+        .then()
+            .statusCode(200);
 
         mock1.assertIsSatisfied();
         mock2.assertIsSatisfied();
@@ -484,11 +573,7 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            event(
-                Knative.EndpointKind.source,
-                "default",
-                "localhost",
-                port)
+            sourceEvent("default")
         );
 
         context.addRoutes(new RouteBuilder() {
@@ -502,13 +587,6 @@ public class KnativeHttpTest {
                     .convertBodyTo(String.class)
                     .to("log:ce2?showAll=true&multiline=true")
                     .to("mock:ce2");
-
-                from("direct:source")
-                    .setBody()
-                        .constant("test")
-                    .setHeader(Exchange.HTTP_METHOD)
-                        .constant("POST")
-                    .toD("undertow:http://localhost:" + port);
             }
         });
 
@@ -532,26 +610,31 @@ public class KnativeHttpTest {
         mock2.expectedBodiesReceived("test");
         mock2.expectedMessageCount(1);
 
-        context.createProducerTemplate().send(
-            "direct:source",
-            e -> {
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version());
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "event1");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID1");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()));
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE1");
-            }
-        );
-        context.createProducerTemplate().send(
-            "direct:source",
-            e -> {
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version());
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "event2");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID2");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()));
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE2");
-            }
-        );
+        given()
+            .body("test")
+            .header(Exchange.CONTENT_TYPE, "text/plain")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version())
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "event1")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID1")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE1")
+        .when()
+            .post()
+        .then()
+            .statusCode(200);
+
+        given()
+            .body("test")
+            .header(Exchange.CONTENT_TYPE, "text/plain")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version())
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "event2")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID2")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "CE2")
+        .when()
+            .post()
+        .then()
+            .statusCode(200);
 
         mock1.assertIsSatisfied();
         mock2.assertIsSatisfied();
@@ -563,11 +646,8 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "from",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -576,7 +656,7 @@ public class KnativeHttpTest {
                 Knative.EndpointKind.sink,
                 "to",
                 "localhost",
-                port,
+                platformHttpPort,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -616,11 +696,8 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "from",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -629,7 +706,7 @@ public class KnativeHttpTest {
                 Knative.EndpointKind.sink,
                 "to",
                 "localhost",
-                port,
+                platformHttpPort,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -673,7 +750,7 @@ public class KnativeHttpTest {
                 Knative.EndpointKind.sink,
                 "test",
                 "",
-                port,
+                platformHttpPort,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -705,7 +782,7 @@ public class KnativeHttpTest {
                 Knative.EndpointKind.sink,
                 "test",
                 "localhost",
-                port,
+                platformHttpPort,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -724,7 +801,7 @@ public class KnativeHttpTest {
         Exchange exchange = template.request("direct:start", e -> e.getMessage().setBody(""));
         assertThat(exchange.isFailed()).isTrue();
         assertThat(exchange.getException()).isInstanceOf(CamelException.class);
-        assertThat(exchange.getException()).hasMessageStartingWith("HTTP operation failed invoking http://localhost:" + port + "/");
+        assertThat(exchange.getException()).hasMessageStartingWith("HTTP operation failed invoking http://localhost:" + platformHttpPort + "/");
     }
 
     @ParameterizedTest
@@ -733,22 +810,16 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "ep1",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
                     Knative.KNATIVE_FILTER_PREFIX + "h", "h1"
                 )
             ),
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "ep2",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
@@ -768,7 +839,7 @@ public class KnativeHttpTest {
         RouteBuilder.addRoutes(context, b -> {
             b.from("direct:start")
                 .setHeader("h").body()
-                .toF("undertow:http://localhost:%d", port);
+                .toF("http://localhost:%d", platformHttpPort);
         });
 
         context.start();
@@ -790,22 +861,16 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "ep1",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
                     Knative.KNATIVE_FILTER_PREFIX + "h", "h1"
                 )
             ),
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "ep2",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
@@ -822,7 +887,7 @@ public class KnativeHttpTest {
         RouteBuilder.addRoutes(context, b -> {
             b.from("direct:start")
                 .setHeader("h").body()
-                .toF("undertow:http://localhost:%d", port);
+                .toF("http://localhost:%d", platformHttpPort);
         });
 
         context.start();
@@ -853,7 +918,7 @@ public class KnativeHttpTest {
                 Knative.EndpointKind.sink,
                 "ep",
                 "localhost",
-                port,
+                platformHttpPort,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -865,7 +930,7 @@ public class KnativeHttpTest {
             b.from("direct:start")
                 .to("knative:endpoint/ep")
                 .to("mock:start");
-            b.fromF("undertow:http://0.0.0.0:%d", port)
+            b.fromF("platform-http:/")
                 .routeId("endpoint")
                 .process(e -> {
                     throw new RuntimeException("endpoint error");
@@ -891,16 +956,13 @@ public class KnativeHttpTest {
                 Knative.EndpointKind.sink,
                 "default",
                 "localhost",
-                port,
+                platformHttpPort,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
                 )),
-            event(
-                Knative.EndpointKind.source,
+            sourceEvent(
                 "default",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -943,18 +1005,15 @@ public class KnativeHttpTest {
                 Knative.EndpointKind.sink,
                 "default",
                 "localhost",
-                port,
+                platformHttpPort,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
                     Knative.KNATIVE_KIND, "MyObject",
                     Knative.KNATIVE_API_VERSION, "v1"
                 )),
-            event(
-                Knative.EndpointKind.source,
+            sourceEvent(
                 "default",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
@@ -995,22 +1054,16 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "myEndpoint",
-                "localhost",
-                port + 1,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
                     Knative.KNATIVE_KIND, "MyObject",
                     Knative.KNATIVE_API_VERSION, "v1"
                 )),
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "myEndpoint",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
@@ -1024,8 +1077,6 @@ public class KnativeHttpTest {
             public void configure() throws Exception {
                 from("knative:endpoint/myEndpoint?kind=MyObject&apiVersion=v2")
                     .to("mock:ce");
-                from("direct:source")
-                    .toF("undertow:http://localhost:%d", port);
             }
         });
 
@@ -1041,18 +1092,18 @@ public class KnativeHttpTest {
         mock.expectedBodiesReceived("test");
         mock.expectedMessageCount(1);
 
-        context.createProducerTemplate().send(
-            "direct:source",
-            e -> {
-                e.getMessage().setHeader(Exchange.CONTENT_TYPE, "text/plain");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version());
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID");
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()));
-                e.getMessage().setHeader(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "/somewhere");
-                e.getMessage().setBody("test");
-            }
-        );
+        given()
+            .body("test")
+            .header(Exchange.CONTENT_TYPE, "text/plain")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), ce.version())
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID")
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
+            .header(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "/somewhere")
+        .when()
+            .post()
+        .then()
+            .statusCode(200);
 
         mock.assertIsSatisfied();
     }
@@ -1063,11 +1114,8 @@ public class KnativeHttpTest {
         configureKnativeComponent(
             context,
             ce,
-            endpoint(
-                Knative.EndpointKind.source,
+            sourceEndpoint(
                 "myEndpoint",
-                "localhost",
-                port,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -1079,18 +1127,18 @@ public class KnativeHttpTest {
             public void configure() throws Exception {
                 from("knative:endpoint/myEndpoint")
                     .to("mock:ce");
-                from("direct:start")
-                    .toF("undertow:http://localhost:%d", port);
             }
         });
 
         context.start();
 
-        Exchange exchange = template.request("direct:start", e -> e.getMessage().setBody(null));
-        assertThat(exchange.isFailed()).isTrue();
-        assertThat(exchange.getException()).isInstanceOf(CamelException.class);
-        assertThat(exchange.getException()).hasMessageStartingWith("HTTP operation failed invoking");
-        assertThat(exchange.getException()).hasMessageEndingWith("with statusCode: 405");
+        given()
+            .body("test")
+            .header(Exchange.CONTENT_TYPE, "text/plain")
+        .when()
+            .get()
+        .then()
+            .statusCode(404);
     }
 
     @ParameterizedTest
@@ -1103,7 +1151,7 @@ public class KnativeHttpTest {
                 Knative.EndpointKind.sink,
                 "myEndpoint",
                 "localhost",
-                port,
+                platformHttpPort,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -1129,7 +1177,6 @@ public class KnativeHttpTest {
     @ParameterizedTest
     @EnumSource(CloudEvents.class)
     void testNoContent(CloudEvent ce) throws Exception {
-        final int messagesPort = AvailablePortFinder.getNextAvailable();
         final int wordsPort = AvailablePortFinder.getNextAvailable();
 
         configureKnativeComponent(
@@ -1138,8 +1185,8 @@ public class KnativeHttpTest {
             channel(
                 Knative.EndpointKind.source,
                 "messages",
-                "localhost",
-                messagesPort,
+                null,
+                -1,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -1148,7 +1195,7 @@ public class KnativeHttpTest {
                 Knative.EndpointKind.sink,
                 "messages",
                 "localhost",
-                messagesPort,
+                platformHttpPort,
                 KnativeSupport.mapOf(
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain"
@@ -1202,11 +1249,8 @@ public class KnativeHttpTest {
             .ints(0, 100)
             .distinct()
             .limit(10)
-            .mapToObj(i -> endpoint(
-                Knative.EndpointKind.source,
-                "channel-" + i,
-                "localhost",
-                port,
+            .mapToObj(i -> sourceEndpoint(
+                "ep-" + i,
                 KnativeSupport.mapOf(Knative.KNATIVE_FILTER_PREFIX + "MyHeader", "channel-" + i)))
             .collect(Collectors.toList());
 
@@ -1216,8 +1260,8 @@ public class KnativeHttpTest {
             @Override
             public void configure() throws Exception {
                 from("direct:start")
-                    .routeId("undertow")
-                    .toF("undertow:http://localhost:%d", port)
+                    .routeId("http")
+                    .toF("http://localhost:%d", platformHttpPort)
                     .convertBodyTo(String.class);
 
                 for (KnativeEnvironment.KnativeServiceDefinition definition: hops) {
@@ -1249,6 +1293,8 @@ public class KnativeHttpTest {
     @ParameterizedTest
     @EnumSource(CloudEvents.class)
     void testHeaders(CloudEvent ce) throws Exception {
+        final int port = AvailablePortFinder.getNextAvailable();
+
         configureKnativeComponent(
             context,
             ce,
@@ -1302,6 +1348,7 @@ public class KnativeHttpTest {
     @ParameterizedTest
     @EnumSource(CloudEvents.class)
     void testHeadersOverrideFromEnv(CloudEvent ce) throws Exception {
+        final int port = AvailablePortFinder.getNextAvailable();
         final String typeHeaderKey = ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http();
         final String typeHeaderVal = UUID.randomUUID().toString();
         final String sourceHeaderKey = ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http();
@@ -1362,6 +1409,7 @@ public class KnativeHttpTest {
     @ParameterizedTest
     @EnumSource(CloudEvents.class)
     void testHeadersOverrideFromURI(CloudEvent ce) throws Exception {
+        final int port = AvailablePortFinder.getNextAvailable();
         final String typeHeaderKey = ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http();
         final String typeHeaderVal = UUID.randomUUID().toString();
         final String sourceHeaderKey = ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http();
@@ -1422,6 +1470,7 @@ public class KnativeHttpTest {
     @ParameterizedTest
     @EnumSource(CloudEvents.class)
     void testHeadersOverrideFromConf(CloudEvent ce) throws Exception {
+        final int port = AvailablePortFinder.getNextAvailable();
         final String typeHeaderKey = ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http();
         final String typeHeaderVal = UUID.randomUUID().toString();
         final String sourceHeaderKey = ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http();
@@ -1485,6 +1534,8 @@ public class KnativeHttpTest {
     @ParameterizedTest
     @EnumSource(CloudEvents.class)
     void testHeadersOverrideFromRouteWithCamelHeader(CloudEvent ce) throws Exception {
+        final int port = AvailablePortFinder.getNextAvailable();
+
         configureKnativeComponent(
             context,
             ce,
@@ -1539,6 +1590,8 @@ public class KnativeHttpTest {
     @ParameterizedTest
     @EnumSource(CloudEvents.class)
     void testHeadersOverrideFromRouteWithCEHeader(CloudEvent ce) throws Exception {
+        final int port = AvailablePortFinder.getNextAvailable();
+
         configureKnativeComponent(
             context,
             ce,
diff --git a/camel-knative/camel-knative-http/src/test/resources/log4j2-test.xml b/camel-knative/camel-knative-http/src/test/resources/log4j2-test.xml
index 82b517b..8c95e54 100644
--- a/camel-knative/camel-knative-http/src/test/resources/log4j2-test.xml
+++ b/camel-knative/camel-knative-http/src/test/resources/log4j2-test.xml
@@ -26,10 +26,11 @@
   </Appenders>
 
   <Loggers>
+    <Logger name="org.apache.camel.k" level="DEBUG"/>
+    <Logger name="org.apache.camel.component.knative" level="DEBUG"/>
+
     <Root level="INFO">
-      <!--
-      <AppenderRef ref="STDOUT"/>
-      -->
+      <!--<AppenderRef ref="STDOUT"/>-->
       <AppenderRef ref="NONE"/>
     </Root>
   </Loggers>
diff --git a/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json b/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
index 310c12a..5cebe3c 100644
--- a/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
+++ b/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
@@ -16,7 +16,7 @@
     "firstVersion": "3.0.0",
     "groupId": "org.apache.camel.k",
     "artifactId": "camel-knative",
-    "version": "1.2.0-SNAPSHOT"
+    "version": "1.2.2-SNAPSHOT"
   },
   "componentProperties": {
     "cloudEventsSpecVersion": { "kind": "property", "displayName": "Cloud Events Spec Version", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Set the version of the cloudevents spec." },
@@ -24,7 +24,7 @@
     "environment": { "kind": "property", "displayName": "Environment", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.KnativeEnvironment", "deprecated": false, "secret": false, "description": "The environment" },
     "environmentPath": { "kind": "property", "displayName": "Environment Path", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The path ot the environment definition" },
     "transport": { "kind": "property", "displayName": "Transport", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.KnativeTransport", "deprecated": false, "secret": false, "defaultValue": "http", "description": "The transport implementation." },
-    "transportOptions": { "kind": "property", "displayName": "Transport Options", "group": "common", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, "secret": false, "description": "Transport options." },
+    "transportOptions": { "kind": "property", "displayName": "Transport Options", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, "secret": false, "description": "Transport options." },
     "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by [...]
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the r [...]
     "basicPropertyBinding": { "kind": "property", "displayName": "Basic Property Binding", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities" }
diff --git a/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java b/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
index f33553a..9cbfa6b 100644
--- a/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
+++ b/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
@@ -52,6 +52,9 @@ public class KnativeComponent extends DefaultComponent {
     @Metadata(defaultValue = "http")
     private KnativeTransport transport;
 
+    @Metadata
+    private Map<String, Object> transportOptions;
+
     private boolean managedTransport = true;
 
     public KnativeComponent() {
@@ -62,6 +65,7 @@ public class KnativeComponent extends DefaultComponent {
         super(context);
 
         this.configuration = new KnativeConfiguration();
+        this.configuration.setTransportOptions(new HashMap<>());
     }
 
     // ************************
@@ -114,17 +118,6 @@ public class KnativeComponent extends DefaultComponent {
         configuration.setCloudEventsSpecVersion(cloudEventSpecVersion);
     }
 
-    public Map<String, Object> getTransportOptions() {
-        return configuration.getTransportOptions();
-    }
-
-    /**
-     * Transport options.
-     */
-    public void setTransportOptions(Map<String, Object> transportOptions) {
-        configuration.setTransportOptions(transportOptions);
-    }
-
     public Knative.Protocol getProtocol() {
         return protocol;
     }
@@ -148,6 +141,17 @@ public class KnativeComponent extends DefaultComponent {
         this.transport = transport;
     }
 
+    public Map<String, Object> getTransportOptions() {
+        return configuration.getTransportOptions();
+    }
+
+    /**
+     * Transport options.
+     */
+    public void setTransportOptions(Map<String, Object> transportOptions) {
+        configuration.setTransportOptions(transportOptions);
+    }
+
     // ************************
     //
     // Lifecycle
@@ -208,7 +212,7 @@ public class KnativeComponent extends DefaultComponent {
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
         if (ObjectHelper.isEmpty(remaining)) {
-            throw new IllegalArgumentException("Expecting URI in the forof: 'knative:type/name', got '" + uri + "'");
+            throw new IllegalArgumentException("Expecting URI in the form of: 'knative:type/name', got '" + uri + "'");
         }
 
         final String type = StringHelper.before(remaining, "/");
diff --git a/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java b/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java
index bd29d70..825275e 100644
--- a/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java
+++ b/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.knative;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.camel.RuntimeCamelException;
@@ -128,6 +129,17 @@ public class KnativeConfiguration implements Cloneable {
         this.transportOptions = transportOptions;
     }
 
+    /**
+     * Add a transport option.
+     */
+    public void addTransportOptions(String key, Object value) {
+        if (this.transportOptions == null) {
+            this.transportOptions = new HashMap<>();
+        }
+
+        this.transportOptions.put(key, value);
+    }
+
     public Map<String, Object> getFilters() {
         return filters;
     }
diff --git a/examples/camel-k-runtime-example-knative/src/main/resources/application.properties b/examples/camel-k-runtime-example-knative/data/application.properties
similarity index 88%
rename from examples/camel-k-runtime-example-knative/src/main/resources/application.properties
rename to examples/camel-k-runtime-example-knative/data/application.properties
index 85a8fe9..1dc4084 100644
--- a/examples/camel-k-runtime-example-knative/src/main/resources/application.properties
+++ b/examples/camel-k-runtime-example-knative/data/application.properties
@@ -21,6 +21,12 @@
 logging.level.org.apache.camel.k = DEBUG
 
 #
+# camel-k
+#
+customizer.platform-http.enabled = true
+customizer.platform-http.bind-port = 8080
+
+#
 # camel - main
 #
 camel.main.name = camel-k
@@ -30,4 +36,4 @@ camel.main.stream-caching-spool-directory = ${java.io.tmpdir}/camel-k
 #
 # Camel - components
 #
-camel.component.knative.environment-path = file:src/main/resources/env.json
\ No newline at end of file
+camel.component.knative.environment-path = file:data/env.json
\ No newline at end of file
diff --git a/examples/camel-k-runtime-example-knative/src/main/resources/env.json b/examples/camel-k-runtime-example-knative/data/env.json
similarity index 75%
rename from examples/camel-k-runtime-example-knative/src/main/resources/env.json
rename to examples/camel-k-runtime-example-knative/data/env.json
index 24dbf20..204a3e0 100644
--- a/examples/camel-k-runtime-example-knative/src/main/resources/env.json
+++ b/examples/camel-k-runtime-example-knative/data/env.json
@@ -2,8 +2,6 @@
   "services": [{
       "type": "endpoint",
       "name": "from",
-      "host": "0.0.0.0",
-      "port": 9090,
       "metadata": {
         "camel.endpoint.kind": "source"
       }
diff --git a/examples/camel-k-runtime-example-knative/src/main/resources/routes.yaml b/examples/camel-k-runtime-example-knative/data/routes.yaml
similarity index 100%
rename from examples/camel-k-runtime-example-knative/src/main/resources/routes.yaml
rename to examples/camel-k-runtime-example-knative/data/routes.yaml
diff --git a/examples/camel-k-runtime-example-knative/pom.xml b/examples/camel-k-runtime-example-knative/pom.xml
index 57eb161..c8a7064 100644
--- a/examples/camel-k-runtime-example-knative/pom.xml
+++ b/examples/camel-k-runtime-example-knative/pom.xml
@@ -71,11 +71,11 @@
                     <systemProperties>
                         <systemProperty>
                             <key>camel.k.conf</key>
-                            <value>${project.basedir}/src/main/resources/application.properties</value>
+                            <value>${project.basedir}/data/application.properties</value>
                         </systemProperty>
                         <systemProperty>
                             <key>camel.k.routes</key>
-                            <value>file:${project.basedir}/src/main/resources/routes.yaml</value>
+                            <value>file:${project.basedir}/data/routes.yaml</value>
                         </systemProperty>
                     </systemProperties>
                 </configuration>
diff --git a/pom.xml b/pom.xml
index d6a58fe..912b8a4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -217,6 +217,7 @@
         <module>camel-k-loader-java</module>
 
         <module>camel-k-runtime-cron</module>
+        <module>camel-k-runtime-http</module>
         <module>camel-k-runtime-knative</module>
         <module>camel-k-runtime-master</module>
         <module>camel-k-runtime-webhook</module>


[camel-k-runtime] 05/07: Remove deprecate method

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

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

commit 1ddff6e4f43635931b52baadd2006076a0c395a0
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Fri Mar 20 18:27:00 2020 +0100

    Remove deprecate method
---
 .../src/test/java/org/apache/camel/k/loader/java/RoutesLoaderTest.java | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/camel-k-loader-java/src/test/java/org/apache/camel/k/loader/java/RoutesLoaderTest.java b/camel-k-loader-java/src/test/java/org/apache/camel/k/loader/java/RoutesLoaderTest.java
index 0588923..2125f92 100644
--- a/camel-k-loader-java/src/test/java/org/apache/camel/k/loader/java/RoutesLoaderTest.java
+++ b/camel-k-loader-java/src/test/java/org/apache/camel/k/loader/java/RoutesLoaderTest.java
@@ -76,8 +76,7 @@ public class RoutesLoaderTest {
 
         runtime.getCamelContext().addRoutes(runtime.builders.get(0));
 
-        assertThat(runtime.getCamelContext().getRestConfigurations()).hasSize(1);
-        assertThat(runtime.getCamelContext().getRestConfigurations().iterator().next()).hasFieldOrPropertyWithValue("component", "restlet");
+        assertThat(runtime.getCamelContext().getRestConfiguration()).hasFieldOrPropertyWithValue("component", "restlet");
     }
 
     @Test


[camel-k-runtime] 04/07: Review dependencies

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

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

commit abdb7ab033338db59275a648f0c296b579434800
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Fri Mar 20 18:24:13 2020 +0100

    Review dependencies
---
 camel-k-loader-groovy/pom.xml                      |  59 ++++--------
 camel-k-loader-java/pom.xml                        |  38 +++-----
 .../camel/k/loader/java/JavaSourceLoader.java      |   9 +-
 camel-k-loader-js/pom.xml                          |  44 +++------
 .../camel/k/loader/js/JavaScriptSourceLoader.java  |   6 +-
 camel-k-loader-kotlin/pom.xml                      |  48 +++-------
 camel-k-loader-xml/pom.xml                         |  32 ++-----
 camel-k-loader-yaml/camel-k-loader-yaml/pom.xml    |  58 +-----------
 .../camel/k/loader/yaml/YamlSourceLoader.java      |   6 ++
 .../camel/k/loader/yaml/DefinitionsTest.groovy     |  21 ++---
 .../apache/camel/k/loader/yaml/TestSupport.groovy  |   3 +-
 camel-k-main/camel-k-runtime-health/pom.xml        |  55 +-----------
 .../camel/k/health/HealthCustomizerTest.java       |   2 +-
 camel-k-main/camel-k-runtime-main/pom.xml          |  34 ++++---
 .../js/quarkus/deployment/ExtensionTest.java       |   5 +-
 .../xml/quarkus/deployment/ExtensionTest.java      |   5 +-
 .../yaml/quarkus/deployment/ExtensionTest.java     |   5 +-
 camel-k-runtime-core/pom.xml                       |  46 +---------
 .../src/main/java/org/apache/camel/k/Sources.java  |  18 ++--
 .../apache/camel/k/support/PropertiesSupport.java  |   5 +-
 .../org/apache/camel/k/support/StringSupport.java  |  69 ++++++++++++++
 camel-k-runtime-cron/pom.xml                       |  55 ++----------
 camel-k-runtime-http/pom.xml                       |  56 +-----------
 .../k/http/PlatformHttpServiceCustomizerTest.java  |   2 +-
 camel-k-runtime-knative/pom.xml                    |  59 ++----------
 .../knative/KnativeSourceRoutesLoaderTest.java     |   7 +-
 camel-k-runtime-master/pom.xml                     |  50 ++---------
 camel-k-runtime-webhook/pom.xml                    |  67 +++-----------
 .../camel/k/webhook/DummyWebhookComponent.java     |   9 ++
 .../org/apache/camel/k/webhook/WebhookTest.java    |  48 +++++-----
 .../src/test/resources/webhook.js                  |   3 +-
 camel-knative/camel-knative-http/pom.xml           |  69 +-------------
 .../component/knative/http/KnativeHttpTest.java    |   2 +-
 camel-knative/camel-knative/pom.xml                |  89 +-----------------
 .../camel/component/knative/KnativeProducer.java   |   7 +-
 .../component/knative/ce/CloudEventProcessors.java |   5 +-
 pom.xml                                            |  87 +++++++++++++++++-
 tooling/camel-k-maven-plugin/pom.xml               |   6 --
 .../camel/k/tooling/maven/GenerateRestXML.java     |  10 +--
 .../camel-k-test}/pom.xml                          | 100 ++++++---------------
 .../apache/camel/k/test/AvailablePortFinder.java   |  84 +++++++++++++++++
 tooling/pom.xml                                    |   1 +
 42 files changed, 478 insertions(+), 906 deletions(-)

diff --git a/camel-k-loader-groovy/pom.xml b/camel-k-loader-groovy/pom.xml
index de5c0f3..42b52b7 100644
--- a/camel-k-loader-groovy/pom.xml
+++ b/camel-k-loader-groovy/pom.xml
@@ -57,7 +57,6 @@
         <dependency>
             <groupId>org.codehaus.groovy</groupId>
             <artifactId>groovy</artifactId>
-            <version>${groovy.version}</version>
         </dependency>
 
         <dependency>
@@ -71,11 +70,24 @@
             <scope>provided</scope>
         </dependency>
 
-        <!-- ******************************* -->
-        <!-- test deps :: camel              -->
-        <!-- ******************************* -->
+        <!-- ****************************** -->
+        <!--                                -->
+        <!-- TESTS                          -->
+        <!--                                -->
+        <!-- ****************************** -->
 
         <dependency>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.groovy</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-main</artifactId>
             <scope>test</scope>
@@ -111,27 +123,6 @@
             <scope>test</scope>
         </dependency>
 
-        <!-- ******************************* -->
-        <!-- test deps :: misc               -->
-        <!-- ******************************* -->
-
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-dbcp2</artifactId>
-            <version>${commons-dbcp2.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- ******************************* -->
-        <!-- test deps                       -->
-        <!-- ******************************* -->
-
-        <dependency>
-            <groupId>org.codehaus.groovy</groupId>
-            <artifactId>groovy-test</artifactId>
-            <version>${groovy.version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.spockframework</groupId>
             <artifactId>spock-core</artifactId>
@@ -150,24 +141,12 @@
         </dependency>
 
         <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-dbcp2</artifactId>
+            <version>${commons-dbcp2.version}</version>
             <scope>test</scope>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/camel-k-loader-java/pom.xml b/camel-k-loader-java/pom.xml
index 304b90f..0302e8c 100644
--- a/camel-k-loader-java/pom.xml
+++ b/camel-k-loader-java/pom.xml
@@ -57,6 +57,18 @@
             <scope>provided</scope>
         </dependency>
 
+        <!-- ****************************** -->
+        <!--                                -->
+        <!-- TESTS                          -->
+        <!--                                -->
+        <!-- ****************************** -->
+
+        <dependency>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-main</artifactId>
@@ -97,32 +109,6 @@
             <artifactId>camel-direct</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/camel-k-loader-java/src/main/java/org/apache/camel/k/loader/java/JavaSourceLoader.java b/camel-k-loader-java/src/main/java/org/apache/camel/k/loader/java/JavaSourceLoader.java
index bdecfe5..42009ae 100644
--- a/camel-k-loader-java/src/main/java/org/apache/camel/k/loader/java/JavaSourceLoader.java
+++ b/camel-k-loader-java/src/main/java/org/apache/camel/k/loader/java/JavaSourceLoader.java
@@ -17,7 +17,6 @@
 package org.apache.camel.k.loader.java;
 
 import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.List;
 import java.util.regex.Matcher;
@@ -27,8 +26,8 @@ import org.apache.camel.k.Runtime;
 import org.apache.camel.k.Source;
 import org.apache.camel.k.SourceLoader;
 import org.apache.camel.k.annotation.Loader;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.camel.k.support.StringSupport;
+import org.apache.camel.util.IOHelper;
 import org.joor.Reflect;
 
 @Loader(value = "java")
@@ -43,7 +42,7 @@ public class JavaSourceLoader implements SourceLoader {
     @Override
     public Result load(Runtime runtime, Source source) throws Exception {
         try (InputStream is = source.resolveAsInputStream(runtime.getCamelContext())) {
-            final String content = IOUtils.toString(is, StandardCharsets.UTF_8);
+            final String content = IOHelper.loadText(is);
             final String name = determineQualifiedName(source, content);
             final Reflect compiled = Reflect.compile(name, content);
             final Object instance = compiled.create().get();
@@ -53,7 +52,7 @@ public class JavaSourceLoader implements SourceLoader {
     }
 
     private static String determineQualifiedName(Source source, String content) {
-        String name = StringUtils.removeEnd(source.getName(), ".java");
+        String name = StringSupport.substringBefore(source.getName(), ".java");
         Matcher matcher = PACKAGE_PATTERN.matcher(content);
 
         if (matcher.find()) {
diff --git a/camel-k-loader-js/pom.xml b/camel-k-loader-js/pom.xml
index fcf2e83..04daef8 100644
--- a/camel-k-loader-js/pom.xml
+++ b/camel-k-loader-js/pom.xml
@@ -57,9 +57,17 @@
             <scope>provided</scope>
         </dependency>
 
-        <!-- ******************************* -->
-        <!-- test deps :: camel              -->
-        <!-- ******************************* -->
+        <!-- ****************************** -->
+        <!--                                -->
+        <!-- TESTS                          -->
+        <!--                                -->
+        <!-- ****************************** -->
+
+        <dependency>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
+            <scope>test</scope>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.camel</groupId>
@@ -101,36 +109,6 @@
             <artifactId>camel-mock</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <!-- ******************************* -->
-        <!-- test deps                       -->
-        <!-- ******************************* -->
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/camel-k-loader-js/src/main/java/org/apache/camel/k/loader/js/JavaScriptSourceLoader.java b/camel-k-loader-js/src/main/java/org/apache/camel/k/loader/js/JavaScriptSourceLoader.java
index d99d065..92ad3ae 100644
--- a/camel-k-loader-js/src/main/java/org/apache/camel/k/loader/js/JavaScriptSourceLoader.java
+++ b/camel-k-loader-js/src/main/java/org/apache/camel/k/loader/js/JavaScriptSourceLoader.java
@@ -17,7 +17,6 @@
 package org.apache.camel.k.loader.js;
 
 import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.List;
 
@@ -30,7 +29,7 @@ import org.apache.camel.k.SourceLoader;
 import org.apache.camel.k.annotation.Loader;
 import org.apache.camel.k.loader.js.dsl.IntegrationConfiguration;
 import org.apache.camel.support.LifecycleStrategySupport;
-import org.apache.commons.io.IOUtils;
+import org.apache.camel.util.IOHelper;
 import org.graalvm.polyglot.Context;
 import org.graalvm.polyglot.Value;
 
@@ -56,7 +55,8 @@ public class JavaScriptSourceLoader implements SourceLoader {
                     // configure bindings
                     bindings.putMember("__dsl", new IntegrationConfiguration(this));
 
-                    final String script = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+                    final String script = IOHelper.loadText(is);
                     final String wrappedScript = "with (__dsl) { " + script + " }";
 
                     context.eval(LANGUAGE_ID, wrappedScript);
diff --git a/camel-k-loader-kotlin/pom.xml b/camel-k-loader-kotlin/pom.xml
index eb911f7..f79338f 100644
--- a/camel-k-loader-kotlin/pom.xml
+++ b/camel-k-loader-kotlin/pom.xml
@@ -77,9 +77,17 @@
             <scope>provided</scope>
         </dependency>
 
-        <!-- ******************************* -->
-        <!-- test deps :: camel              -->
-        <!-- ******************************* -->
+        <!-- ****************************** -->
+        <!--                                -->
+        <!-- TESTS                          -->
+        <!--                                -->
+        <!-- ****************************** -->
+
+        <dependency>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
+            <scope>test</scope>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.camel</groupId>
@@ -117,46 +125,12 @@
             <scope>test</scope>
         </dependency>
 
-        <!-- ******************************* -->
-        <!-- test deps :: misc               -->
-        <!-- ******************************* -->
-
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-dbcp2</artifactId>
             <version>${commons-dbcp2.version}</version>
             <scope>test</scope>
         </dependency>
-
-        <!-- ******************************* -->
-        <!-- test deps                       -->
-        <!-- ******************************* -->
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/camel-k-loader-xml/pom.xml b/camel-k-loader-xml/pom.xml
index 1bf42e4..496b2be 100644
--- a/camel-k-loader-xml/pom.xml
+++ b/camel-k-loader-xml/pom.xml
@@ -73,6 +73,12 @@
         <!-- ****************************** -->
 
         <dependency>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-undertow</artifactId>
             <scope>test</scope>
@@ -102,32 +108,6 @@
             <artifactId>camel-direct</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml b/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
index fd1c30e..5f12848 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
@@ -45,11 +45,6 @@
         </dependency>
 
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-engine</artifactId>
-        </dependency>
-
-        <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
         </dependency>
@@ -76,13 +71,14 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-mock</artifactId>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
             <scope>test</scope>
         </dependency>
+
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
+            <artifactId>camel-mock</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -102,13 +98,6 @@
         </dependency>
 
         <dependency>
-            <groupId>org.codehaus.groovy</groupId>
-            <artifactId>groovy-test</artifactId>
-            <version>${groovy.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
             <groupId>org.spockframework</groupId>
             <artifactId>spock-core</artifactId>
             <version>${spock.version}</version>
@@ -124,33 +113,6 @@
                 </exclusion>
             </exclusions>
         </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
@@ -185,18 +147,6 @@
                         </goals>
                     </execution>
                 </executions>
-                <dependencies>
-                    <dependency>
-                        <groupId>com.squareup</groupId>
-                        <artifactId>javapoet</artifactId>
-                        <version>${javapoet.version}</version>
-                    </dependency>
-                    <dependency>
-                        <groupId>org.apache.commons</groupId>
-                        <artifactId>commons-text</artifactId>
-                        <version>${commons-text.version}</version>
-                    </dependency>
-                </dependencies>
             </plugin>
             <plugin>
                 <groupId>org.codehaus.gmavenplus</groupId>
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java b/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java
index 5409cd6..1448b70 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/main/java/org/apache/camel/k/loader/yaml/YamlSourceLoader.java
@@ -16,7 +16,9 @@
  */
 package org.apache.camel.k.loader.yaml;
 
+import java.io.ByteArrayInputStream;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -90,6 +92,10 @@ public class YamlSourceLoader implements SourceLoader {
         return mapper;
     }
 
+    final RouteBuilder builder(String content) {
+        return builder(new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8)));
+    }
+
     final RouteBuilder builder(InputStream is) {
         return new RouteBuilder() {
             @Override
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/DefinitionsTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/DefinitionsTest.groovy
index 0fe243d..f34daba 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/DefinitionsTest.groovy
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/DefinitionsTest.groovy
@@ -23,9 +23,6 @@ import org.apache.camel.model.SplitDefinition
 import org.apache.camel.model.ToDefinition
 import org.apache.camel.model.language.SimpleExpression
 import org.apache.camel.model.language.TokenizerExpression
-import org.apache.commons.io.IOUtils
-
-import java.nio.charset.StandardCharsets
 
 class DefinitionsTest extends TestSupport {
 
@@ -43,9 +40,8 @@ class DefinitionsTest extends TestSupport {
             '''.stripMargin('|')
 
             def camelContext = new DefaultCamelContext()
-            def istream = IOUtils.toInputStream(content, StandardCharsets.UTF_8)
         when:
-            camelContext.addRoutes(new YamlSourceLoader().builder(istream))
+            camelContext.addRoutes(new YamlSourceLoader().builder(content))
         then:
             camelContext.routeDefinitions[0].id == 'my-route-id'
             camelContext.routeDefinitions[0].group == 'my-route-group'
@@ -82,9 +78,8 @@ class DefinitionsTest extends TestSupport {
             '''.stripMargin('|')
 
             def camelContext = new DefaultCamelContext()
-            def istream = IOUtils.toInputStream(content, StandardCharsets.UTF_8)
         when:
-            camelContext.addRoutes(new YamlSourceLoader().builder(istream))
+            camelContext.addRoutes(new YamlSourceLoader().builder(content))
         then:
             camelContext.routeDefinitions[0].input.endpointUri == 'direct:start'
 
@@ -128,9 +123,8 @@ class DefinitionsTest extends TestSupport {
             '''.stripMargin('|')
 
             def camelContext = new DefaultCamelContext()
-            def istream = IOUtils.toInputStream(content, StandardCharsets.UTF_8)
         when:
-            camelContext.addRoutes(new YamlSourceLoader().builder(istream))
+            camelContext.addRoutes(new YamlSourceLoader().builder(content))
         then:
             camelContext.routeDefinitions[0].input.endpointUri == 'direct:start'
             camelContext.routeDefinitions[0].outputs.size() == 2
@@ -167,9 +161,8 @@ class DefinitionsTest extends TestSupport {
             '''.stripMargin('|')
 
             def camelContext = new DefaultCamelContext()
-            def istream = IOUtils.toInputStream(content, StandardCharsets.UTF_8)
         when:
-            camelContext.addRoutes(new YamlSourceLoader().builder(istream))
+            camelContext.addRoutes(new YamlSourceLoader().builder(content))
         then:
             camelContext.routeDefinitions[0].input.endpointUri == 'direct:start'
             camelContext.routeDefinitions[0].outputs.size() == 1
@@ -202,9 +195,8 @@ class DefinitionsTest extends TestSupport {
             '''.stripMargin('|')
 
             def camelContext = new DefaultCamelContext()
-            def istream = IOUtils.toInputStream(content, StandardCharsets.UTF_8)
         when:
-            camelContext.addRoutes(new YamlSourceLoader().builder(istream))
+            camelContext.addRoutes(new YamlSourceLoader().builder(content))
         then:
             camelContext.routeDefinitions[0].input.endpointUri == 'direct:start'
             camelContext.routeDefinitions[0].outputs.size() == 2
@@ -241,9 +233,8 @@ class DefinitionsTest extends TestSupport {
             '''.stripMargin('|')
 
             def camelContext = new DefaultCamelContext()
-            def istream = IOUtils.toInputStream(content, StandardCharsets.UTF_8)
         when:
-            camelContext.addRoutes(new YamlSourceLoader().builder(istream))
+            camelContext.addRoutes(new YamlSourceLoader().builder(content))
         then:
             camelContext.routeDefinitions[0].input.endpointUri == 'direct:start'
             camelContext.routeDefinitions[0].outputs.size() == 1
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/TestSupport.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/TestSupport.groovy
index fea7a41..1b1c4d1 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/TestSupport.groovy
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/TestSupport.groovy
@@ -22,7 +22,6 @@ import org.apache.camel.CamelContext
 import org.apache.camel.component.mock.MockEndpoint
 import org.apache.camel.impl.DefaultCamelContext
 import org.apache.camel.k.loader.yaml.parser.StepParser
-import org.apache.commons.io.IOUtils
 import spock.lang.Specification
 
 import java.nio.charset.StandardCharsets
@@ -48,7 +47,7 @@ class TestSupport extends Specification {
 
     static CamelContext startContext(String content, Map<String, Object> beans) {
         return startContext(
-                IOUtils.toInputStream(content.stripMargin(), StandardCharsets.UTF_8),
+                new ByteArrayInputStream(content.stripMargin().getBytes(StandardCharsets.UTF_8)),
                 beans
         )
     }
diff --git a/camel-k-main/camel-k-runtime-health/pom.xml b/camel-k-main/camel-k-runtime-health/pom.xml
index 07624b3..2edea97 100644
--- a/camel-k-main/camel-k-runtime-health/pom.xml
+++ b/camel-k-main/camel-k-runtime-health/pom.xml
@@ -61,8 +61,8 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -75,57 +75,6 @@
             <artifactId>camel-mock</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>io.rest-assured</groupId>
-            <artifactId>rest-assured</artifactId>
-            <version>${rest-assured.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-jcl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/camel-k-main/camel-k-runtime-health/src/test/java/org/apache/camel/k/health/HealthCustomizerTest.java b/camel-k-main/camel-k-runtime-health/src/test/java/org/apache/camel/k/health/HealthCustomizerTest.java
index caf512e..a2fb9ab 100644
--- a/camel-k-main/camel-k-runtime-health/src/test/java/org/apache/camel/k/health/HealthCustomizerTest.java
+++ b/camel-k-main/camel-k-runtime-health/src/test/java/org/apache/camel/k/health/HealthCustomizerTest.java
@@ -22,7 +22,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.k.Runtime;
 import org.apache.camel.k.http.PlatformHttpServiceContextCustomizer;
-import org.apache.camel.test.AvailablePortFinder;
+import org.apache.camel.k.test.AvailablePortFinder;
 import org.apache.camel.util.ObjectHelper;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
diff --git a/camel-k-main/camel-k-runtime-main/pom.xml b/camel-k-main/camel-k-runtime-main/pom.xml
index d981b3b..369d308 100644
--- a/camel-k-main/camel-k-runtime-main/pom.xml
+++ b/camel-k-main/camel-k-runtime-main/pom.xml
@@ -72,6 +72,22 @@
         <!-- ****************************** -->
 
         <dependency>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.groovy</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.logging.log4j</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-undertow</artifactId>
             <scope>test</scope>
@@ -122,24 +138,14 @@
             <artifactId>camel-k-loader-java</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-loader-groovy</artifactId>
             <scope>test</scope>
         </dependency>
-
         <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-loader-kotlin</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-js/it/src/test/java/org/apache/camel/k/loader/js/quarkus/deployment/ExtensionTest.java b/camel-k-quarkus/camel-k-quarkus-loader-js/it/src/test/java/org/apache/camel/k/loader/js/quarkus/deployment/ExtensionTest.java
index 543da3e..391e23f 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-js/it/src/test/java/org/apache/camel/k/loader/js/quarkus/deployment/ExtensionTest.java
+++ b/camel-k-quarkus/camel-k-quarkus-loader-js/it/src/test/java/org/apache/camel/k/loader/js/quarkus/deployment/ExtensionTest.java
@@ -18,14 +18,13 @@ package org.apache.camel.k.loader.js.quarkus.deployment;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
 
 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.commons.io.IOUtils;
+import org.apache.camel.util.IOHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -37,7 +36,7 @@ public class ExtensionTest {
         String code;
 
         try (InputStream is = ExtensionTest.class.getResourceAsStream("/routes.js")) {
-            code = IOUtils.toString(is, StandardCharsets.UTF_8);
+            code = IOHelper.loadText(is);
         }
 
         JsonPath p = RestAssured.given()
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-xml/it/src/test/java/org/apache/camel/k/loader/xml/quarkus/deployment/ExtensionTest.java b/camel-k-quarkus/camel-k-quarkus-loader-xml/it/src/test/java/org/apache/camel/k/loader/xml/quarkus/deployment/ExtensionTest.java
index 8ee235b..b3ab341 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-xml/it/src/test/java/org/apache/camel/k/loader/xml/quarkus/deployment/ExtensionTest.java
+++ b/camel-k-quarkus/camel-k-quarkus-loader-xml/it/src/test/java/org/apache/camel/k/loader/xml/quarkus/deployment/ExtensionTest.java
@@ -18,14 +18,13 @@ package org.apache.camel.k.loader.xml.quarkus.deployment;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
 
 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.commons.io.IOUtils;
+import org.apache.camel.util.IOHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -37,7 +36,7 @@ public class ExtensionTest {
         String code;
 
         try (InputStream is = ExtensionTest.class.getResourceAsStream("/routes.xml")) {
-            code = IOUtils.toString(is, StandardCharsets.UTF_8);
+            code = IOHelper.loadText(is);
         }
 
         JsonPath p = RestAssured.given()
diff --git a/camel-k-quarkus/camel-k-quarkus-loader-yaml/it/src/test/java/org/apache/camel/k/loader/yaml/quarkus/deployment/ExtensionTest.java b/camel-k-quarkus/camel-k-quarkus-loader-yaml/it/src/test/java/org/apache/camel/k/loader/yaml/quarkus/deployment/ExtensionTest.java
index 963a023..46692d2 100644
--- a/camel-k-quarkus/camel-k-quarkus-loader-yaml/it/src/test/java/org/apache/camel/k/loader/yaml/quarkus/deployment/ExtensionTest.java
+++ b/camel-k-quarkus/camel-k-quarkus-loader-yaml/it/src/test/java/org/apache/camel/k/loader/yaml/quarkus/deployment/ExtensionTest.java
@@ -18,14 +18,13 @@ package org.apache.camel.k.loader.yaml.quarkus.deployment;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
 
 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.commons.io.IOUtils;
+import org.apache.camel.util.IOHelper;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -37,7 +36,7 @@ public class ExtensionTest {
         String code;
 
         try (InputStream is = ExtensionTest.class.getResourceAsStream("/routes.yaml")) {
-            code = IOUtils.toString(is, StandardCharsets.UTF_8);
+            code = IOHelper.loadText(is);
         }
 
         JsonPath p = RestAssured.given()
diff --git a/camel-k-runtime-core/pom.xml b/camel-k-runtime-core/pom.xml
index 46968f6..97aaa00 100644
--- a/camel-k-runtime-core/pom.xml
+++ b/camel-k-runtime-core/pom.xml
@@ -36,27 +36,10 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>${slf4j.version}</version>
-        </dependency>
-
-        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-core-engine</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-            <version>${commons-lang.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>${commons-io.version}</version>
-        </dependency>
-
         <!-- ****************************** -->
         <!--                                -->
         <!-- TESTS                          -->
@@ -64,36 +47,11 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
             <scope>test</scope>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/camel-k-runtime-core/src/main/java/org/apache/camel/k/Sources.java b/camel-k-runtime-core/src/main/java/org/apache/camel/k/Sources.java
index 9a9054d..976d652 100644
--- a/camel-k-runtime-core/src/main/java/org/apache/camel/k/Sources.java
+++ b/camel-k-runtime-core/src/main/java/org/apache/camel/k/Sources.java
@@ -29,11 +29,11 @@ import java.util.UUID;
 import java.util.zip.GZIPInputStream;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.k.support.StringSupport;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
-import org.apache.commons.lang3.StringUtils;
 
 public final class  Sources {
     private Sources() {
@@ -117,13 +117,13 @@ public final class  Sources {
         private final boolean compressed;
 
         private URI(String uri) throws Exception {
-            final String location = StringUtils.substringBefore(uri, "?");
+            final String location = StringSupport.substringBefore(uri, "?");
 
             if (!location.startsWith(Constants.SCHEME_PREFIX_CLASSPATH) && !location.startsWith(Constants.SCHEME_PREFIX_FILE)) {
                 throw new IllegalArgumentException("No valid resource format, expected scheme:path, found " + uri);
             }
 
-            final String query = StringUtils.substringAfter(uri, "?");
+            final String query = StringSupport.substringAfter(uri, "?");
             final Map<String, Object> params = URISupport.parseQuery(query);
             final String languageName = (String) params.get("language");
             final String compression = (String) params.get("compression");
@@ -132,8 +132,8 @@ public final class  Sources {
 
             String language = languageName;
             if (ObjectHelper.isEmpty(language)) {
-                language = StringUtils.substringAfterLast(location, ":");
-                language = StringUtils.substringAfterLast(language, ".");
+                language = StringSupport.substringAfterLast(location, ":");
+                language = StringSupport.substringAfterLast(language, ".");
             }
             if (ObjectHelper.isEmpty(language)) {
                 throw new IllegalArgumentException("Unknown language " + language);
@@ -141,11 +141,11 @@ public final class  Sources {
 
             String name = (String) params.get("name");
             if (name == null) {
-                name = StringUtils.substringAfter(location, ":");
-                name = StringUtils.substringBeforeLast(name, ".");
+                name = StringSupport.substringAfter(location, ":");
+                name = StringSupport.substringBeforeLast(name, ".");
 
                 if (name.contains("/")) {
-                    name = StringUtils.substringAfterLast(name, "/");
+                    name = StringSupport.substringAfterLast(name, "/");
                 }
             }
 
@@ -154,7 +154,7 @@ public final class  Sources {
             this.language = language;
             this.loader = loader;
             this.interceptors = interceptors != null ? Arrays.asList(interceptors.split(",", -1)) : Collections.emptyList();
-            this.compressed = Boolean.valueOf(compression);
+            this.compressed = Boolean.parseBoolean(compression);
         }
 
         @Override
diff --git a/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/PropertiesSupport.java b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/PropertiesSupport.java
index 1459819..096ca68 100644
--- a/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/PropertiesSupport.java
+++ b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/PropertiesSupport.java
@@ -37,7 +37,6 @@ import org.apache.camel.k.Constants;
 import org.apache.camel.spi.PropertiesComponent;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.commons.io.FilenameUtils;
 
 public final class PropertiesSupport {
     private PropertiesSupport() {
@@ -127,9 +126,7 @@ public final class PropertiesSupport {
                     Objects.requireNonNull(attrs);
 
                     final String path = file.toFile().getAbsolutePath();
-                    final String ext = FilenameUtils.getExtension(path);
-
-                    if (Objects.equals("properties", ext)) {
+                    if (path.endsWith(".properties")) {
                         locations.add(path);
                     }
 
diff --git a/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/StringSupport.java b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/StringSupport.java
new file mode 100644
index 0000000..1ecaf2b
--- /dev/null
+++ b/camel-k-runtime-core/src/main/java/org/apache/camel/k/support/StringSupport.java
@@ -0,0 +1,69 @@
+/*
+ * 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.k.support;
+
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.StringHelper;
+
+public final class StringSupport {
+    private StringSupport() {
+    }
+
+    public static String substringBefore(final String str, final String separator) {
+        if (ObjectHelper.isEmpty(str) || separator == null) {
+            return str;
+        }
+        if (separator.isEmpty()) {
+            return "";
+        }
+        final int pos = str.indexOf(separator);
+        if (pos == -1) {
+            return str;
+        }
+        return str.substring(0, pos);
+    }
+
+    public static String substringAfter(final String str, final String separator) {
+        String answer = StringHelper.after(str, separator);
+        return answer != null ? answer : "";
+    }
+
+    public static String substringAfterLast(final String str, final String separator) {
+        if (ObjectHelper.isEmpty(str)) {
+            return str;
+        }
+        if (ObjectHelper.isEmpty(separator)) {
+            return "";
+        }
+        final int pos = str.lastIndexOf(separator);
+        if (pos == -1 || pos == str.length() - separator.length()) {
+            return "";
+        }
+        return str.substring(pos + separator.length());
+    }
+
+    public static String substringBeforeLast(final String str, final String separator) {
+        if (ObjectHelper.isEmpty(str) || ObjectHelper.isEmpty(separator)) {
+            return str;
+        }
+        final int pos = str.lastIndexOf(separator);
+        if (pos == -1) {
+            return str;
+        }
+        return str.substring(0, pos);
+    }
+}
diff --git a/camel-k-runtime-cron/pom.xml b/camel-k-runtime-cron/pom.xml
index f352a12..7ba8429 100644
--- a/camel-k-runtime-cron/pom.xml
+++ b/camel-k-runtime-cron/pom.xml
@@ -66,25 +66,11 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-endpointdsl</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-log</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-main</artifactId>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
             <scope>test</scope>
         </dependency>
+
         <dependency>
             <groupId>org.apache.camel.k</groupId>
             <artifactId>camel-k-loader-js</artifactId>
@@ -97,40 +83,13 @@
         </dependency>
 
         <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-log</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-mock</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/camel-k-runtime-http/pom.xml b/camel-k-runtime-http/pom.xml
index aabec84..dff4e07 100644
--- a/camel-k-runtime-http/pom.xml
+++ b/camel-k-runtime-http/pom.xml
@@ -62,60 +62,8 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>io.rest-assured</groupId>
-            <artifactId>rest-assured</artifactId>
-            <version>${rest-assured.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-jcl</artifactId>
-            <version>${log4j2.version}</version>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java b/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
index 61435ac..6864b1b 100644
--- a/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
+++ b/camel-k-runtime-http/src/test/java/org/apache/camel/k/http/PlatformHttpServiceCustomizerTest.java
@@ -25,7 +25,7 @@ import org.apache.camel.component.platform.http.PlatformHttpConstants;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.k.Runtime;
 import org.apache.camel.k.http.engine.RuntimePlatformHttpEngine;
-import org.apache.camel.test.AvailablePortFinder;
+import org.apache.camel.k.test.AvailablePortFinder;
 import org.apache.camel.util.ObjectHelper;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
diff --git a/camel-k-runtime-knative/pom.xml b/camel-k-runtime-knative/pom.xml
index 97204a0..d93b7a7 100644
--- a/camel-k-runtime-knative/pom.xml
+++ b/camel-k-runtime-knative/pom.xml
@@ -44,11 +44,6 @@
         </dependency>
 
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-engine</artifactId>
-        </dependency>
-
-        <dependency>
             <groupId>org.apache.camel.k</groupId>
             <artifactId>camel-k-apt</artifactId>
             <optional>true</optional>
@@ -67,6 +62,12 @@
 
         <dependency>
             <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel.k</groupId>
             <artifactId>camel-k-loader-xml</artifactId>
             <scope>test</scope>
         </dependency>
@@ -93,11 +94,6 @@
 
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
             <artifactId>camel-direct</artifactId>
             <scope>test</scope>
         </dependency>
@@ -121,49 +117,6 @@
             <artifactId>camel-cloud</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-endpointdsl</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.codehaus.groovy</groupId>
-            <artifactId>groovy</artifactId>
-            <version>${groovy.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java b/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java
index e977e70..6039a09 100644
--- a/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java
+++ b/camel-k-runtime-knative/src/test/java/org/apache/camel/k/loader/knative/KnativeSourceRoutesLoaderTest.java
@@ -38,9 +38,9 @@ import org.apache.camel.k.Sources;
 import org.apache.camel.k.http.PlatformHttpServiceContextCustomizer;
 import org.apache.camel.k.listener.RoutesConfigurer;
 import org.apache.camel.k.loader.java.JavaSourceLoader;
+import org.apache.camel.k.test.AvailablePortFinder;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
@@ -70,7 +70,6 @@ public class KnativeSourceRoutesLoaderTest {
         LOGGER.info("uri: {}", uri);
 
         final int port = AvailablePortFinder.getNextAvailable();
-        final int platformHttpPort = AvailablePortFinder.getNextAvailable();
         final String data = UUID.randomUUID().toString();
 
         KnativeComponent component = new KnativeComponent();
@@ -175,15 +174,13 @@ public class KnativeSourceRoutesLoaderTest {
     static class TestRuntime implements Runtime {
         private final CamelContext camelContext;
         private final List<RoutesBuilder> builders;
-        private final int platformHttpPort;
 
         public TestRuntime() {
             this.camelContext = new DefaultCamelContext();
             this.builders = new ArrayList<>();
-            this.platformHttpPort = AvailablePortFinder.getNextAvailable();
 
             PlatformHttpServiceContextCustomizer httpService = new PlatformHttpServiceContextCustomizer();
-            httpService.setBindPort(platformHttpPort);
+            httpService.setBindPort(AvailablePortFinder.getNextAvailable());
             httpService.apply(this.camelContext);
         }
 
diff --git a/camel-k-runtime-master/pom.xml b/camel-k-runtime-master/pom.xml
index 479fe51..d48f74c 100644
--- a/camel-k-runtime-master/pom.xml
+++ b/camel-k-runtime-master/pom.xml
@@ -55,18 +55,8 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-master</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-main</artifactId>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -74,42 +64,14 @@
             <artifactId>camel-k-runtime-main</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-master</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-main</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/camel-k-runtime-webhook/pom.xml b/camel-k-runtime-webhook/pom.xml
index 614388c..7d277a5 100644
--- a/camel-k-runtime-webhook/pom.xml
+++ b/camel-k-runtime-webhook/pom.xml
@@ -55,38 +55,8 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-endpointdsl</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-log</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-timer</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-undertow</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-rest</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-main</artifactId>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -101,40 +71,23 @@
         </dependency>
 
         <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-rest</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-undertow</artifactId>
             <scope>test</scope>
         </dependency>
-
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-log</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-timer</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/camel-k-runtime-webhook/src/test/java/org/apache/camel/k/webhook/DummyWebhookComponent.java b/camel-k-runtime-webhook/src/test/java/org/apache/camel/k/webhook/DummyWebhookComponent.java
index dafb48b..979b959 100644
--- a/camel-k-runtime-webhook/src/test/java/org/apache/camel/k/webhook/DummyWebhookComponent.java
+++ b/camel-k-runtime-webhook/src/test/java/org/apache/camel/k/webhook/DummyWebhookComponent.java
@@ -36,6 +36,15 @@ public class DummyWebhookComponent extends DefaultComponent {
 
     private final Runnable onUnregister;
 
+    public DummyWebhookComponent() {
+        this(
+            () -> {
+            },
+            () -> {
+            }
+        );
+    }
+
     public DummyWebhookComponent(Runnable onRegister, Runnable onUnregister) {
         this.onRegister = onRegister;
         this.onUnregister = onUnregister;
diff --git a/camel-k-runtime-webhook/src/test/java/org/apache/camel/k/webhook/WebhookTest.java b/camel-k-runtime-webhook/src/test/java/org/apache/camel/k/webhook/WebhookTest.java
index ab4c53f..e6c1338 100644
--- a/camel-k-runtime-webhook/src/test/java/org/apache/camel/k/webhook/WebhookTest.java
+++ b/camel-k-runtime-webhook/src/test/java/org/apache/camel/k/webhook/WebhookTest.java
@@ -51,8 +51,8 @@ public class WebhookTest {
     @BeforeEach
     public void setUp() {
         this.runtime = new ApplicationRuntime();
-        runtime.addListener(RoutesConfigurer.forRoutes("classpath:webhook.js"));
-        runtime.addListener(new ContextConfigurer());
+        this.runtime.addListener(RoutesConfigurer.forRoutes("classpath:webhook.js"));
+        this.runtime.addListener(new ContextConfigurer());
     }
 
     @ParameterizedTest
@@ -68,15 +68,18 @@ public class WebhookTest {
         Map<WebhookAction, AtomicInteger> registerCounters = new HashMap<>();
         Arrays.stream(WebhookAction.values()).forEach(v -> registerCounters.put(v, new AtomicInteger()));
 
-        DummyWebhookComponent dummy = new DummyWebhookComponent(() -> {
-            registerCounters.get(WebhookAction.REGISTER).incrementAndGet();
-            operation.countDown();
-        }, () -> {
-            registerCounters.get(WebhookAction.UNREGISTER).incrementAndGet();
-            operation.countDown();
-        }
+        runtime.getCamelContext().addComponent(
+            "dummy",
+            new DummyWebhookComponent(
+            () -> {
+                registerCounters.get(WebhookAction.REGISTER).incrementAndGet();
+                operation.countDown();
+            },
+            () -> {
+                registerCounters.get(WebhookAction.UNREGISTER).incrementAndGet();
+                operation.countDown();
+            })
         );
-        runtime.getCamelContext().addComponent("dummy", dummy);
 
         AtomicBoolean routeStarted = new AtomicBoolean();
         runtime.getCamelContext().addRoutePolicyFactory(new RoutePolicyFactory() {
@@ -127,12 +130,17 @@ public class WebhookTest {
         properties.setProperty("customizer.webhook.action", action.name());
         runtime.setProperties(properties);
 
-        DummyWebhookComponent dummy = new DummyWebhookComponent(() -> {
-            throw new RuntimeException("dummy error");
-        }, () -> {
-            throw new RuntimeException("dummy error");
-        });
-        runtime.getCamelContext().addComponent("dummy", dummy);
+        runtime.getCamelContext().addComponent(
+            "dummy",
+            new DummyWebhookComponent(
+            () -> {
+                throw new RuntimeException("dummy error");
+            },
+            () -> {
+                throw new RuntimeException("dummy error");
+            })
+        );
+
         Assertions.assertThrows(FailedToCreateRouteException.class, runtime::run);
     }
 
@@ -143,10 +151,10 @@ public class WebhookTest {
         properties.setProperty("customizer.webhook.action", WebhookAction.REGISTER.name());
         runtime.setProperties(properties);
 
-        DummyWebhookComponent dummy = new DummyWebhookComponent(() -> {
-        }, () -> {
-        });
-        runtime.getCamelContext().addComponent("dummy", dummy);
+        runtime.getCamelContext().addComponent(
+            "dummy",
+            new DummyWebhookComponent());
+
         Assertions.assertThrows(FailedToCreateRouteException.class, runtime::run);
     }
 
diff --git a/camel-k-runtime-webhook/src/test/resources/webhook.js b/camel-k-runtime-webhook/src/test/resources/webhook.js
index ef57ca4..da42d97 100644
--- a/camel-k-runtime-webhook/src/test/resources/webhook.js
+++ b/camel-k-runtime-webhook/src/test/resources/webhook.js
@@ -18,4 +18,5 @@
 from('webhook:dummy')
     .to('log:info')
 
-from('timer:tick').to('log:info')
+from('timer:tick')
+    .to('log:info')
diff --git a/camel-knative/camel-knative-http/pom.xml b/camel-knative/camel-knative-http/pom.xml
index 731bcfa..59b1daa 100644
--- a/camel-knative/camel-knative-http/pom.xml
+++ b/camel-knative/camel-knative-http/pom.xml
@@ -60,12 +60,6 @@
             <version>${vertx.version}</version>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-            <version>${commons-collections4.version}</version>
-        </dependency>
-
         <!-- ****************************** -->
         <!--                                -->
         <!-- TESTS                          -->
@@ -74,19 +68,12 @@
 
         <dependency>
             <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-knative</artifactId>
+            <artifactId>camel-k-test</artifactId>
             <scope>test</scope>
         </dependency>
-
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>junit</groupId>
-                    <artifactId>junit</artifactId>
-                </exclusion>
-            </exclusions>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-knative</artifactId>
             <scope>test</scope>
         </dependency>
 
@@ -115,56 +102,6 @@
             <artifactId>camel-http</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-bean</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>io.rest-assured</groupId>
-            <artifactId>rest-assured</artifactId>
-            <version>${rest-assured.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
 
     </dependencies>
 
diff --git a/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java b/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
index 405356d..f615c3c 100644
--- a/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
+++ b/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
@@ -47,7 +47,7 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.http.base.HttpOperationFailedException;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.k.http.PlatformHttpServiceContextCustomizer;
-import org.apache.camel.test.AvailablePortFinder;
+import org.apache.camel.k.test.AvailablePortFinder;
 import org.apache.camel.util.ObjectHelper;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/camel-knative/camel-knative/pom.xml b/camel-knative/camel-knative/pom.xml
index 3659244..798c168 100644
--- a/camel-knative/camel-knative/pom.xml
+++ b/camel-knative/camel-knative/pom.xml
@@ -63,17 +63,6 @@
             <artifactId>jackson-datatype-jdk8</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-            <version>${commons-collections4.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-            <version>${commons-lang.version}</version>
-        </dependency>
-
         <!-- ****************************** -->
         <!--                                -->
         <!-- TESTS                          -->
@@ -81,82 +70,8 @@
         <!-- ****************************** -->
 
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>junit</groupId>
-                    <artifactId>junit</artifactId>
-                </exclusion>
-            </exclusions>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-http</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-file</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-direct</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-mock</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-log</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-undertow</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-test</artifactId>
             <scope>test</scope>
         </dependency>
 
diff --git a/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeProducer.java b/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeProducer.java
index f503a8e..0b7a54f 100644
--- a/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeProducer.java
+++ b/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeProducer.java
@@ -28,7 +28,6 @@ import org.apache.camel.processor.Pipeline;
 import org.apache.camel.support.AsyncProcessorConverterHelper;
 import org.apache.camel.support.DefaultAsyncProducer;
 import org.apache.camel.support.service.ServiceHelper;
-import org.apache.commons.collections4.CollectionUtils;
 
 public class KnativeProducer extends DefaultAsyncProducer {
     final AsyncProcessor processor;
@@ -37,9 +36,11 @@ public class KnativeProducer extends DefaultAsyncProducer {
         super(endpoint);
 
         List<Processor> elements = new ArrayList<>(1 + processors.length);
+        elements.add(processor);
 
-        CollectionUtils.addAll(elements, processor);
-        CollectionUtils.addAll(elements, processors);
+        for (Processor p : processors) {
+            elements.add(p);
+        }
 
         Processor pipeline = Pipeline.newInstance(endpoint.getCamelContext(), elements);
 
diff --git a/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java b/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java
index 2d5f499..04ea3df 100644
--- a/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java
+++ b/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java
@@ -26,7 +26,6 @@ import org.apache.camel.component.knative.KnativeEndpoint;
 import org.apache.camel.component.knative.spi.CloudEvent;
 import org.apache.camel.component.knative.spi.CloudEvents;
 import org.apache.camel.component.knative.spi.KnativeEnvironment;
-import org.apache.commons.lang3.StringUtils;
 
 import static org.apache.camel.util.ObjectHelper.ifNotEmpty;
 
@@ -84,7 +83,7 @@ public enum CloudEventProcessors implements CloudEventProcessor {
             // Map every remaining field as it is (extensions).
             //
             content.forEach((key, val) -> {
-                message.setHeader(StringUtils.lowerCase(key), val);
+                message.setHeader(key.toLowerCase(), val);
             });
 
         }
@@ -115,7 +114,7 @@ public enum CloudEventProcessors implements CloudEventProcessor {
             // Map every remaining field as it is (extensions).
             //
             content.forEach((key, val) -> {
-                message.setHeader(StringUtils.lowerCase(key), val);
+                message.setHeader(key.toLowerCase(), val);
             });
         }
     });
diff --git a/pom.xml b/pom.xml
index 912b8a4..290d041 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,9 +40,7 @@
         <catalog.version>${camel.version}</catalog.version>
         <junit.version>5.6.1</junit.version>
         <joor.version>0.9.12</joor.version>
-        <commons-io.version>2.6</commons-io.version>
         <commons-lang.version>3.9</commons-lang.version>
-        <commons-collections4.version>4.4</commons-collections4.version>
         <commons-text.version>1.8</commons-text.version>
         <commons-dbcp2.version>2.7.0</commons-dbcp2.version>
         <assertj.version>3.15.0</assertj.version>
@@ -57,13 +55,11 @@
         <jaxb-core.version>2.3.0.1</jaxb-core.version>
         <immutables.version>2.8.3</immutables.version>
         <semver4j.version>3.1.0</semver4j.version>
-        <undertow.version>1.4.26.Final</undertow.version>
         <vertx.version>3.8.5</vertx.version>
         <graalvm.version>19.3.1</graalvm.version>
         <quarkus.version>1.3.0.Final</quarkus.version>
         <jandex.version>2.1.3.Final</jandex.version>
         <javapoet.version>1.11.1</javapoet.version>
-        <auto-service.version>1.0-rc6</auto-service.version>
         <rest-assured.version>4.3.0</rest-assured.version>
         <gmavenplus-plugin.version>1.7.1</gmavenplus-plugin.version>
         <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
@@ -195,6 +191,13 @@
                     <groupId>org.jboss.jandex</groupId>
                     <artifactId>jandex-maven-plugin</artifactId>
                     <version>${jandex-maven-plugin.version}</version>
+                    <dependencies>
+                        <dependency>
+                            <groupId>org.jboss</groupId>
+                            <artifactId>jandex</artifactId>
+                            <version>${jandex.version}</version>
+                        </dependency>
+                    </dependencies>
                 </plugin>
             </plugins>
         </pluginManagement>
@@ -283,6 +286,11 @@
                 <artifactId>camel-k-apt</artifactId>
                 <version>${project.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.camel.k</groupId>
+                <artifactId>camel-k-test</artifactId>
+                <version>${project.version}</version>
+            </dependency>
 
             <!-- components -->
             <dependency>
@@ -468,6 +476,77 @@
                 <artifactId>svm</artifactId>
                 <version>${graalvm.version}</version>
             </dependency>
+
+            <!-- misc -->
+            <dependency>
+                <groupId>io.rest-assured</groupId>
+                <artifactId>rest-assured</artifactId>
+                <version>${rest-assured.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-xml</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.groovy</groupId>
+                <artifactId>groovy-yaml</artifactId>
+                <version>${groovy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.groovy</groupId>
+                <artifactId>groovy-test</artifactId>
+                <version>${groovy.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.logging.log4j</groupId>
+                <artifactId>log4j-core</artifactId>
+                <version>${log4j2.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.logging.log4j</groupId>
+                <artifactId>log4j-slf4j-impl</artifactId>
+                <version>${log4j2.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.logging.log4j</groupId>
+                <artifactId>log4j-jcl</artifactId>
+                <version>${log4j2.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.junit.jupiter</groupId>
+                <artifactId>junit-jupiter-api</artifactId>
+                <version>${junit.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.junit.jupiter</groupId>
+                <artifactId>junit-jupiter-engine</artifactId>
+                <version>${junit.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.junit.jupiter</groupId>
+                <artifactId>junit-jupiter-params</artifactId>
+                <version>${junit.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.assertj</groupId>
+                <artifactId>assertj-core</artifactId>
+                <version>${assertj.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 
diff --git a/tooling/camel-k-maven-plugin/pom.xml b/tooling/camel-k-maven-plugin/pom.xml
index f011d1c..7d9f5d6 100644
--- a/tooling/camel-k-maven-plugin/pom.xml
+++ b/tooling/camel-k-maven-plugin/pom.xml
@@ -124,12 +124,6 @@
       <artifactId>jackson-dataformat-yaml</artifactId>
     </dependency>
 
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-collections4</artifactId>
-      <version>${commons-collections4.version}</version>
-    </dependency>
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
diff --git a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateRestXML.java b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateRestXML.java
index ea40a60..67d6bae 100644
--- a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateRestXML.java
+++ b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateRestXML.java
@@ -32,7 +32,6 @@ import io.apicurio.datamodels.openapi.models.OasDocument;
 import org.apache.camel.CamelContext;
 import org.apache.camel.generator.openapi.RestDslXmlGenerator;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.commons.io.FilenameUtils;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
@@ -70,7 +69,10 @@ class GenerateRestXML extends AbstractMojo {
         }
 
         try {
-            JsonFactory factory = FilenameUtils.isExtension(inputFile, YAML_EXTENSIONS) ? new YAMLFactory() : null;
+            JsonFactory factory = null;
+            if (inputFile.endsWith(".yaml") || inputFile.endsWith(".yml")) {
+                factory = new YAMLFactory();
+            }
 
             ObjectMapper mapper = new ObjectMapper(factory);
             mapper.findAndRegisterModules();
@@ -80,10 +82,6 @@ class GenerateRestXML extends AbstractMojo {
             JsonNode node = mapper.readTree(fis);
             OasDocument document = (OasDocument) Library.readDocument(node);
 
-            if (document == null) {
-                throw new MojoExecutionException("Unable to read the OpenAPI file: " + inputFile);
-            }
-
             final Writer writer;
 
             if (outputFile != null) {
diff --git a/camel-k-runtime-http/pom.xml b/tooling/camel-k-test/pom.xml
similarity index 53%
copy from camel-k-runtime-http/pom.xml
copy to tooling/camel-k-test/pom.xml
index aabec84..5d238be 100644
--- a/camel-k-runtime-http/pom.xml
+++ b/tooling/camel-k-test/pom.xml
@@ -20,121 +20,77 @@
 <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">
     <parent>
         <groupId>org.apache.camel.k</groupId>
-        <artifactId>camel-k-runtime-parent</artifactId>
+        <artifactId>camel-k-tooling</artifactId>
         <version>1.2.2-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>camel-k-runtime-http</artifactId>
+    <artifactId>camel-k-test</artifactId>
 
     <dependencies>
-
-        <!-- ****************************** -->
-        <!--                                -->
-        <!-- RUNTIME                        -->
-        <!--                                -->
-        <!-- ****************************** -->
-
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-engine</artifactId>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-platform-http</artifactId>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-k-runtime-core</artifactId>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
         </dependency>
 
         <dependency>
-            <groupId>io.vertx</groupId>
-            <artifactId>vertx-web</artifactId>
-            <version>${vertx.version}</version>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
         </dependency>
 
-        <!-- ****************************** -->
-        <!--                                -->
-        <!-- TESTS                          -->
-        <!--                                -->
-        <!-- ****************************** -->
-
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
-            <scope>test</scope>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.groovy</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-xml</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-json</artifactId>
         </dependency>
-
         <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <version>${assertj.version}</version>
-            <scope>test</scope>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-yaml</artifactId>
         </dependency>
-
         <dependency>
-            <groupId>io.rest-assured</groupId>
-            <artifactId>rest-assured</artifactId>
-            <version>${rest-assured.version}</version>
-            <scope>test</scope>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-test</artifactId>
         </dependency>
 
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-core</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-jcl</artifactId>
-            <version>${log4j2.version}</version>
-            <scope>test</scope>
         </dependency>
     </dependencies>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.jboss.jandex</groupId>
-                <artifactId>jandex-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>make-index</id>
-                        <goals>
-                            <goal>jandex</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
 </project>
diff --git a/tooling/camel-k-test/src/main/java/org/apache/camel/k/test/AvailablePortFinder.java b/tooling/camel-k-test/src/main/java/org/apache/camel/k/test/AvailablePortFinder.java
new file mode 100644
index 0000000..5504b78
--- /dev/null
+++ b/tooling/camel-k-test/src/main/java/org/apache/camel/k/test/AvailablePortFinder.java
@@ -0,0 +1,84 @@
+/*
+ * 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.k.test;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.Function;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Finds currently available server ports.
+ */
+public final class AvailablePortFinder {
+    private static final Logger LOGGER = LoggerFactory.getLogger(AvailablePortFinder.class);
+
+    /**
+     * Creates a new instance.
+     */
+    private AvailablePortFinder() {
+        // Do nothing
+    }
+
+    /**
+     * Gets the next available port.
+     *
+     * @throws IllegalStateException if there are no ports available
+     * @return                       the available port
+     */
+    public static int getNextAvailable() {
+        try (ServerSocket ss = new ServerSocket()) {
+            ss.setReuseAddress(true);
+            ss.bind(new InetSocketAddress((InetAddress) null, 0), 1);
+
+            int port = ss.getLocalPort();
+
+            LOGGER.info("getNextAvailable() -> {}", port);
+
+            return port;
+        } catch (IOException e) {
+            throw new IllegalStateException("Cannot find free port", e);
+        }
+    }
+
+    /**
+     * Reserve a list of random and not in use network ports and place them in Map.
+     */
+    public static Map<String, Integer> reserveNetworkPorts(String... names) {
+        return reserveNetworkPorts(Function.identity(), names);
+    }
+
+    /**
+     * Reserve a list of random and not in use network ports and place them in Map.
+     */
+    public static <T> Map<String, T> reserveNetworkPorts(Function<Integer, T> converter, String... names) {
+        Map<String, T> reservedPorts = new HashMap<>();
+
+        for (String name : names) {
+            reservedPorts.put(name, converter.apply(getNextAvailable()));
+        }
+
+        return reservedPorts;
+    }
+}
+
diff --git a/tooling/pom.xml b/tooling/pom.xml
index 214f7ab..0996895 100644
--- a/tooling/pom.xml
+++ b/tooling/pom.xml
@@ -32,6 +32,7 @@
         <module>camel-k-annotations</module>
         <module>camel-k-apt</module>
         <module>camel-k-maven-plugin</module>
+        <module>camel-k-test</module>
     </modules>
 
 </project>