Upgrade Camel to version 3.15.0 - Migrate to Camel-Knative and Camel-Cloudevents components now in plain Camel
diff --git a/camel-k-cloudevents/runtime/pom.xml b/camel-k-cloudevents/runtime/pom.xml
index 7580970..f67767e 100644
--- a/camel-k-cloudevents/runtime/pom.xml
+++ b/camel-k-cloudevents/runtime/pom.xml
@@ -33,7 +33,7 @@
             <artifactId>camel-k-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-cloudevents</artifactId>
         </dependency>
     </dependencies>
diff --git a/camel-k-knative/consumer/runtime/pom.xml b/camel-k-knative/consumer/runtime/pom.xml
index e03199f..737447c 100644
--- a/camel-k-knative/consumer/runtime/pom.xml
+++ b/camel-k-knative/consumer/runtime/pom.xml
@@ -37,15 +37,15 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative-http</artifactId>
         </dependency>
         <dependency>
diff --git a/camel-k-knative/impl/pom.xml b/camel-k-knative/impl/pom.xml
index b474c1a..69e16ce 100644
--- a/camel-k-knative/impl/pom.xml
+++ b/camel-k-knative/impl/pom.xml
@@ -33,11 +33,11 @@
             <artifactId>camel-k-core-support</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative-http</artifactId>
         </dependency>
 
diff --git a/camel-k-knative/producer/runtime/pom.xml b/camel-k-knative/producer/runtime/pom.xml
index 8e30874..b500693 100644
--- a/camel-k-knative/producer/runtime/pom.xml
+++ b/camel-k-knative/producer/runtime/pom.xml
@@ -37,15 +37,15 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative-http</artifactId>
         </dependency>
         <dependency>
diff --git a/camel-k-knative/runtime/pom.xml b/camel-k-knative/runtime/pom.xml
index 573c065..aa34e29 100644
--- a/camel-k-knative/runtime/pom.xml
+++ b/camel-k-knative/runtime/pom.xml
@@ -38,11 +38,11 @@
         </dependency>
 
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative</artifactId>
         </dependency>
         <dependency>
diff --git a/components/camel-cloudevents/pom.xml b/components/camel-cloudevents/pom.xml
deleted file mode 100644
index 355f9e3..0000000
--- a/components/camel-cloudevents/pom.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.apache.camel.k</groupId>
-        <artifactId>camel-k-components</artifactId>
-        <version>1.13.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>camel-cloudevents</artifactId>
-    <description>Camel CloudEvents support</description>
-
-    <dependencies>
-
-        <!-- ****************************** -->
-        <!--                                -->
-        <!-- RUNTIME                        -->
-        <!--                                -->
-        <!-- ****************************** -->
-
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-engine</artifactId>
-        </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-core-languages</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-log</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-direct</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-http</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-component-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>generate</id>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <phase>process-classes</phase>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                            <goal>add-resource</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>src/generated/java</source>
-                            </sources>
-                            <resources>
-                                <resource>
-                                    <directory>src/generated/resources</directory>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
diff --git a/components/camel-cloudevents/src/generated/java/org/apache/camel/component/cloudevents/CloudEventTypeConverterLoader.java b/components/camel-cloudevents/src/generated/java/org/apache/camel/component/cloudevents/CloudEventTypeConverterLoader.java
deleted file mode 100644
index a81b371..0000000
--- a/components/camel-cloudevents/src/generated/java/org/apache/camel/component/cloudevents/CloudEventTypeConverterLoader.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.cloudevents;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.DeferredContextBinding;
-import org.apache.camel.Exchange;
-import org.apache.camel.TypeConversionException;
-import org.apache.camel.TypeConverterLoaderException;
-import org.apache.camel.spi.TypeConverterLoader;
-import org.apache.camel.spi.TypeConverterRegistry;
-import org.apache.camel.support.SimpleTypeConverter;
-import org.apache.camel.support.TypeConverterSupport;
-import org.apache.camel.util.DoubleMap;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-@DeferredContextBinding
-public final class CloudEventTypeConverterLoader implements TypeConverterLoader, CamelContextAware {
-
-    private CamelContext camelContext;
-
-    public CloudEventTypeConverterLoader() {
-    }
-
-    @Override
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
-    @Override
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public void load(TypeConverterRegistry registry) throws TypeConverterLoaderException {
-        registerConverters(registry);
-    }
-
-    private void registerConverters(TypeConverterRegistry registry) {
-        addTypeConverter(registry, org.apache.camel.component.cloudevents.CloudEvent.class, java.lang.String.class, false,
-            (type, exchange, value) -> org.apache.camel.component.cloudevents.CloudEventTypeConverter.fromSpecVersion((java.lang.String) value));
-    }
-
-    private static void addTypeConverter(TypeConverterRegistry registry, Class<?> toType, Class<?> fromType, boolean allowNull, SimpleTypeConverter.ConversionMethod method) { 
-        registry.addTypeConverter(toType, fromType, new SimpleTypeConverter(allowNull, method));
-    }
-
-}
diff --git a/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader b/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader
deleted file mode 100644
index 640e235..0000000
--- a/components/camel-cloudevents/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-org.apache.camel.component.cloudevents.CloudEventTypeConverterLoader
diff --git a/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/CloudEvent.java b/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/CloudEvent.java
deleted file mode 100644
index e51e9ce..0000000
--- a/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/CloudEvent.java
+++ /dev/null
@@ -1,117 +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.cloudevents;
-
-import java.util.Collection;
-import java.util.Objects;
-import java.util.Optional;
-
-import org.apache.camel.Exchange;
-
-public interface CloudEvent {
-    String CAMEL_CLOUD_EVENT_ID = "CamelCloudEventID";
-    String CAMEL_CLOUD_EVENT_SOURCE = "CamelCloudEventSource";
-    String CAMEL_CLOUD_EVENT_VERSION = "CamelCloudEventVersion";
-    String CAMEL_CLOUD_EVENT_TYPE = "CamelCloudEventType";
-    String CAMEL_CLOUD_EVENT_TYPE_VERSION = "CamelCloudEventTypeVersion";
-    String CAMEL_CLOUD_EVENT_DATA_CONTENT_TYPE = "CamelCloudEventDataContentType";
-    String CAMEL_CLOUD_EVENT_DATA_CONTENT_ENCODING = "CamelCloudEventDataContentEncoding";
-    String CAMEL_CLOUD_EVENT_SCHEMA_URL = "CamelCloudEventSchemaURL";
-    String CAMEL_CLOUD_EVENT_SUBJECT = "CamelCloudEventSubject";
-    String CAMEL_CLOUD_EVENT_TIME = "CamelCloudEventTime";
-    String CAMEL_CLOUD_EVENT_EXTENSIONS = "CamelCloudEventExtensions";
-    String CAMEL_CLOUD_EVENT_CONTENT_TYPE = Exchange.CONTENT_TYPE;
-
-    /**
-     * The CloudEvent spec version.
-     */
-    String version();
-
-    /**
-     * List of supported attributes.
-     */
-    Collection<Attribute> attributes();
-
-    /**
-     * Find attribute by id.
-     */
-    default Optional<Attribute> attribute(String id) {
-        return attributes().stream()
-            .filter(a -> Objects.equals(id, a.id()))
-            .findFirst();
-    }
-
-    /**
-     * Mandatory find attribute by id.
-     */
-    default Attribute mandatoryAttribute(String id) {
-        return attributes().stream()
-            .filter(a -> Objects.equals(id, a.id()))
-            .findFirst()
-                .orElseThrow(() -> new IllegalArgumentException("Unable to find attribute with id: " + id));
-    }
-
-    /**
-     * Mandatory find http attribute by id.
-     */
-    default String httpAttribute(String id) {
-        return mandatoryAttribute(id).http();
-    }
-
-    /**
-     * Mandatory find json attribute by id.
-     */
-    default String jsonAttribute(String id) {
-        return mandatoryAttribute(id).json();
-    }
-
-    interface Attribute {
-        /**
-         * The ID of the attributes, can be used to look it up.
-         */
-        String id();
-
-        /**
-         * The name of the http header.
-         */
-        String http();
-
-        /**
-         * The name of the json field.
-         */
-        String json();
-
-        static Attribute simple(String id, String http, String json) {
-            return new Attribute() {
-                @Override
-                public String id() {
-                    return id;
-                }
-
-                @Override
-                public String http() {
-                    return http;
-                }
-
-                @Override
-                public String json() {
-                    return json;
-                }
-            };
-        }
-    }
-}
diff --git a/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/CloudEventTypeConverter.java b/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/CloudEventTypeConverter.java
deleted file mode 100644
index fbe22e1..0000000
--- a/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/CloudEventTypeConverter.java
+++ /dev/null
@@ -1,30 +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.cloudevents;
-
-import org.apache.camel.Converter;
-
-@Converter(generateLoader = true)
-public final class CloudEventTypeConverter {
-    private CloudEventTypeConverter() {
-    }
-
-    @Converter
-    public static CloudEvent fromSpecVersion(String version) {
-        return CloudEvents.fromSpecVersion(version);
-    }
-}
diff --git a/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/CloudEvents.java b/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/CloudEvents.java
deleted file mode 100644
index 0d7991a..0000000
--- a/components/camel-cloudevents/src/main/java/org/apache/camel/component/cloudevents/CloudEvents.java
+++ /dev/null
@@ -1,136 +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.cloudevents;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Objects;
-
-public enum CloudEvents implements CloudEvent {
-    //
-    // V0.1 - https://github.com/cloudevents/spec/blob/v0.1/spec.md
-    //
-    v0_1(new CloudEventImpl(
-        "0.1",
-        Arrays.asList(
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "CE-EventType", "eventType"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_TYPE_VERSION, "CE-EventTypeVersion", "eventTypeVersion"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, "CE-CloudEventsVersion", "cloudEventsVersion"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "CE-Source", "source"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_ID, "CE-EventID", "eventID"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_TIME, "CE-EventTime", "eventTime"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_SCHEMA_URL, "CE-SchemaURL", "schemaURL"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_CONTENT_TYPE, "Content-Type", "contentType"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_EXTENSIONS, "CE-Extensions", "extensions")
-        )
-    )),
-    //
-    // V0.2 - https://github.com/cloudevents/spec/blob/v0.2/spec.md
-    //
-    v0_2(new CloudEventImpl(
-        "0.2",
-        Arrays.asList(
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "ce-type", "type"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, "ce-specversion", "specversion"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "ce-source", "source"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_ID, "ce-id", "id"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_TIME, "ce-time", "time"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_SCHEMA_URL, "ce-schemaurl", "schemaurl"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_CONTENT_TYPE, "Content-Type", "contenttype")
-        )
-    )),
-    //
-    // V0.3 - https://github.com/cloudevents/spec/blob/v0.3/spec.md
-    //
-    v0_3(new CloudEventImpl(
-        "0.3",
-        Arrays.asList(
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_ID, "ce-id", "id"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "ce-source", "source"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, "ce-specversion", "specversion"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "ce-type", "type"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_DATA_CONTENT_ENCODING, "ce-datacontentencoding", "datacontentencoding"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_DATA_CONTENT_TYPE, "ce-datacontenttype", "datacontenttype"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_SCHEMA_URL, "ce-schemaurl", "schemaurl"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_SUBJECT, "ce-subject", "subject"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_TIME, "ce-time", "time")
-        )
-    )),
-    //
-    // V1.0 - https://github.com/cloudevents/spec/blob/v1.0/spec.md
-    //
-    v1_0(new CloudEventImpl(
-        "1.0",
-        Arrays.asList(
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_ID, "ce-id", "id"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "ce-source", "source"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, "ce-specversion", "specversion"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "ce-type", "type"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_DATA_CONTENT_TYPE, "ce-datacontenttype", "datacontenttype"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_SCHEMA_URL, "ce-dataschema", "dataschema"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_SUBJECT, "ce-subject", "subject"),
-            Attribute.simple(CloudEvent.CAMEL_CLOUD_EVENT_TIME, "ce-time", "time")
-        )
-    ));
-
-    private final CloudEvent instance;
-
-    CloudEvents(CloudEvent instance) {
-        this.instance = instance;
-    }
-
-    @Override
-    public String version() {
-        return instance.version();
-    }
-
-    @Override
-    public Collection<Attribute> attributes() {
-        return instance.attributes();
-    }
-
-    public static CloudEvent fromSpecVersion(String version) {
-        for (CloudEvent event: CloudEvents.values()) {
-            if (Objects.equals(event.version(), version)) {
-                return event;
-            }
-        }
-
-        throw new IllegalArgumentException("Unable to find an implementation fo CloudEvents spec: " + version);
-    }
-
-    private static class CloudEventImpl implements CloudEvent {
-        private final String version;
-        private final Collection<Attribute> attributes;
-
-        public CloudEventImpl(String version, Collection<Attribute> attributes) {
-            this.version = version;
-            this.attributes = attributes;
-        }
-
-        @Override
-        public String version() {
-            return version;
-        }
-
-        @Override
-        public Collection<Attribute> attributes() {
-            return attributes;
-        }
-    }
-}
-
diff --git a/components/camel-knative/camel-knative-api/pom.xml b/components/camel-knative/camel-knative-api/pom.xml
deleted file mode 100644
index 6c0e08d..0000000
--- a/components/camel-knative/camel-knative-api/pom.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.apache.camel.k</groupId>
-        <artifactId>camel-knative-parent</artifactId>
-        <version>1.13.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>camel-knative-api</artifactId>
-
-    <dependencies>
-
-        <!-- ****************************** -->
-        <!--                                -->
-        <!-- RUNTIME                        -->
-        <!--                                -->
-        <!-- ****************************** -->
-
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-engine</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-cloudevents</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.datatype</groupId>
-            <artifactId>jackson-datatype-jdk8</artifactId>
-        </dependency>
-
-        <!-- ****************************** -->
-        <!--                                -->
-        <!-- TESTS                          -->
-        <!--                                -->
-        <!-- ****************************** -->
-
-        <dependency>
-            <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-k-test</artifactId>
-            <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>
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-package-maven-plugin</artifactId>
-                <configuration>
-                    <failFast>false</failFast>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>generate</id>
-                        <goals>
-                            <goal>generate-configurer</goal>
-                        </goals>
-                        <phase>process-classes</phase>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                            <goal>add-resource</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>src/generated/java</source>
-                            </sources>
-                            <resources>
-                                <resource>
-                                    <directory>src/generated/resources</directory>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
diff --git a/components/camel-knative/camel-knative-api/src/generated/java/org/apache/camel/component/knative/spi/KnativeEnvironmentConfigurer.java b/components/camel-knative/camel-knative-api/src/generated/java/org/apache/camel/component/knative/spi/KnativeEnvironmentConfigurer.java
deleted file mode 100644
index d9098cd..0000000
--- a/components/camel-knative/camel-knative-api/src/generated/java/org/apache/camel/component/knative/spi/KnativeEnvironmentConfigurer.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.knative.spi;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.knative.spi.KnativeEnvironment;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class KnativeEnvironmentConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.knative.spi.KnativeEnvironment target = (org.apache.camel.component.knative.spi.KnativeEnvironment) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "resources":
-        case "Resources": target.setResources(property(camelContext, java.util.List.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "resources":
-        case "Resources": return java.util.List.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.knative.spi.KnativeEnvironment target = (org.apache.camel.component.knative.spi.KnativeEnvironment) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "resources":
-        case "Resources": return target.getResources();
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "resources":
-        case "Resources": return org.apache.camel.component.knative.spi.KnativeResource.class;
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-knative/camel-knative-api/src/generated/java/org/apache/camel/component/knative/spi/KnativeResourceConfigurer.java b/components/camel-knative/camel-knative-api/src/generated/java/org/apache/camel/component/knative/spi/KnativeResourceConfigurer.java
deleted file mode 100644
index 2f66314..0000000
--- a/components/camel-knative/camel-knative-api/src/generated/java/org/apache/camel/component/knative/spi/KnativeResourceConfigurer.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.knative.spi;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.knative.spi.KnativeResource;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class KnativeResourceConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.knative.spi.KnativeResource target = (org.apache.camel.component.knative.spi.KnativeResource) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "ceoverrides":
-        case "CeOverrides": target.setCeOverrides(property(camelContext, java.util.Map.class, value)); return true;
-        case "cloudeventtype":
-        case "CloudEventType": target.setCloudEventType(property(camelContext, java.lang.String.class, value)); return true;
-        case "contenttype":
-        case "ContentType": target.setContentType(property(camelContext, java.lang.String.class, value)); return true;
-        case "endpointkind":
-        case "EndpointKind": target.setEndpointKind(property(camelContext, org.apache.camel.component.knative.spi.Knative.EndpointKind.class, value)); return true;
-        case "filters":
-        case "Filters": target.setFilters(property(camelContext, java.util.Map.class, value)); return true;
-        case "metadata":
-        case "Metadata": target.setMetadata(property(camelContext, java.util.Map.class, value)); return true;
-        case "name":
-        case "Name": target.setName(property(camelContext, java.lang.String.class, value)); return true;
-        case "objectapiversion":
-        case "ObjectApiVersion": target.setObjectApiVersion(property(camelContext, java.lang.String.class, value)); return true;
-        case "objectkind":
-        case "ObjectKind": target.setObjectKind(property(camelContext, java.lang.String.class, value)); return true;
-        case "objectname":
-        case "ObjectName": target.setObjectName(property(camelContext, java.lang.String.class, value)); return true;
-        case "path":
-        case "Path": target.setPath(property(camelContext, java.lang.String.class, value)); return true;
-        case "reply":
-        case "Reply": target.setReply(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "type":
-        case "Type": target.setType(property(camelContext, org.apache.camel.component.knative.spi.Knative.Type.class, value)); return true;
-        case "url":
-        case "Url": target.setUrl(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "ceoverrides":
-        case "CeOverrides": return java.util.Map.class;
-        case "cloudeventtype":
-        case "CloudEventType": return java.lang.String.class;
-        case "contenttype":
-        case "ContentType": return java.lang.String.class;
-        case "endpointkind":
-        case "EndpointKind": return org.apache.camel.component.knative.spi.Knative.EndpointKind.class;
-        case "filters":
-        case "Filters": return java.util.Map.class;
-        case "metadata":
-        case "Metadata": return java.util.Map.class;
-        case "name":
-        case "Name": return java.lang.String.class;
-        case "objectapiversion":
-        case "ObjectApiVersion": return java.lang.String.class;
-        case "objectkind":
-        case "ObjectKind": return java.lang.String.class;
-        case "objectname":
-        case "ObjectName": return java.lang.String.class;
-        case "path":
-        case "Path": return java.lang.String.class;
-        case "reply":
-        case "Reply": return java.lang.Boolean.class;
-        case "type":
-        case "Type": return org.apache.camel.component.knative.spi.Knative.Type.class;
-        case "url":
-        case "Url": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.knative.spi.KnativeResource target = (org.apache.camel.component.knative.spi.KnativeResource) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "ceoverrides":
-        case "CeOverrides": return target.getCeOverrides();
-        case "cloudeventtype":
-        case "CloudEventType": return target.getCloudEventType();
-        case "contenttype":
-        case "ContentType": return target.getContentType();
-        case "endpointkind":
-        case "EndpointKind": return target.getEndpointKind();
-        case "filters":
-        case "Filters": return target.getFilters();
-        case "metadata":
-        case "Metadata": return target.getMetadata();
-        case "name":
-        case "Name": return target.getName();
-        case "objectapiversion":
-        case "ObjectApiVersion": return target.getObjectApiVersion();
-        case "objectkind":
-        case "ObjectKind": return target.getObjectKind();
-        case "objectname":
-        case "ObjectName": return target.getObjectName();
-        case "path":
-        case "Path": return target.getPath();
-        case "reply":
-        case "Reply": return target.getReply();
-        case "type":
-        case "Type": return target.getType();
-        case "url":
-        case "Url": return target.getUrl();
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "ceoverrides":
-        case "CeOverrides": return java.lang.String.class;
-        case "filters":
-        case "Filters": return java.lang.String.class;
-        case "metadata":
-        case "Metadata": return java.lang.String.class;
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-knative/camel-knative-api/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.knative.spi.KnativeEnvironment b/components/camel-knative/camel-knative-api/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.knative.spi.KnativeEnvironment
deleted file mode 100644
index 2e65664..0000000
--- a/components/camel-knative/camel-knative-api/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.knative.spi.KnativeEnvironment
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.knative.spi.KnativeEnvironmentConfigurer
diff --git a/components/camel-knative/camel-knative-api/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.knative.spi.KnativeResource b/components/camel-knative/camel-knative-api/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.knative.spi.KnativeResource
deleted file mode 100644
index dc13513..0000000
--- a/components/camel-knative/camel-knative-api/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.knative.spi.KnativeResource
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.knative.spi.KnativeResourceConfigurer
diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java
deleted file mode 100644
index 6831ad5..0000000
--- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java
+++ /dev/null
@@ -1,63 +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.spi;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-
-public final class Knative {
-    public static final ObjectMapper MAPPER = new ObjectMapper().registerModule(new Jdk8Module());
-
-    public static final String MIME_STRUCTURED_CONTENT_MODE = "application/cloudevents+json";
-    public static final String MIME_BATCH_CONTENT_MODE = "application/cloudevents-batch+json";
-
-    public static final String KNATIVE_TRANSPORT_RESOURCE_PATH = "META-INF/services/org/apache/camel/knative/transport/";
-
-    public static final String KNATIVE_FILTER_PREFIX = "filter.";
-    public static final String KNATIVE_CE_OVERRIDE_PREFIX = "ce.override.";
-    public static final String KNATIVE_TYPE = "knative.type";
-    public static final String KNATIVE_CLOUD_EVENT_TYPE = "knative.event.type";
-    public static final String KNATIVE_REPLY = "knative.reply";
-    public static final String CONTENT_TYPE = "content.type";
-    public static final String CAMEL_ENDPOINT_KIND = "camel.endpoint.kind";
-
-    public static final String SERVICE_META_PATH = "service.path";
-    public static final String SERVICE_META_URL = "service.url";
-
-    public static final String KNATIVE_OBJECT_API_VERSION = "knative.apiVersion";
-    public static final String KNATIVE_OBJECT_KIND = "knative.kind";
-    public static final String KNATIVE_OBJECT_NAME = "knative.name";
-
-
-    private Knative() {
-    }
-
-    public enum EndpointKind {
-        source,
-        sink,
-    }
-
-    public enum Type {
-        endpoint,
-        channel,
-        event
-    }
-
-    public enum Protocol {
-        http,
-    }
-}
diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeConsumerFactory.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeConsumerFactory.java
deleted file mode 100644
index c0e6307..0000000
--- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeConsumerFactory.java
+++ /dev/null
@@ -1,37 +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.spi;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Processor;
-import org.apache.camel.Service;
-
-public interface KnativeConsumerFactory extends Service {
-    /**
-     * Create a camel {@link Consumer} in place of the original endpoint for a specific protocol.
-     *
-     * @param endpoint the endpoint for which the consumer should be created.
-     * @param configuration the general transport configuration
-     * @param service the service definition containing information about how make the route reachable from knative.
-     * @return
-     */
-    Consumer createConsumer(
-        Endpoint endpoint,
-        KnativeTransportConfiguration configuration,
-        KnativeResource service, Processor processor);
-}
diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java
deleted file mode 100644
index 4a8ac81..0000000
--- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeEnvironment.java
+++ /dev/null
@@ -1,272 +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.spi;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Stream;
-
-import com.fasterxml.jackson.annotation.JsonAlias;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.spi.Configurer;
-import org.apache.camel.support.PropertyBindingSupport;
-import org.apache.camel.support.ResourceHelper;
-
-/*
- * Assuming it is loaded from a json for now
- */
-@Configurer
-public class KnativeEnvironment {
-    private final List<KnativeResource> resources;
-
-    public KnativeEnvironment() {
-        this.resources = new ArrayList<>();
-    }
-
-    public KnativeEnvironment(Collection<KnativeResource> resources) {
-        this.resources = new ArrayList<>(resources);
-    }
-
-    @JsonAlias("services")
-    @JsonProperty(value = "resources", required = true)
-    public List<KnativeResource> getResources() {
-        return resources;
-    }
-
-    @JsonAlias("services")
-    @JsonProperty(value = "resources", required = true)
-    public void setResources(List<KnativeResource> resources) {
-        this.resources.clear();
-        this.resources.addAll(resources);
-    }
-
-    public Stream<KnativeResource> stream() {
-        return resources.stream();
-    }
-
-    public Stream<KnativeResource> lookup(Knative.Type type, String name) {
-        return stream().filter(definition -> definition.matches(type, name));
-    }
-
-    // ************************
-    //
-    // Helpers
-    //
-    // ************************
-
-    /**
-     * Construct an instance o a {@link KnativeEnvironment} from a json serialized string.
-     * <pre>{@code
-     * {
-     *     "resources": [
-     *         {
-     *              "type": "channel|endpoint|event",
-     *              "name": "",
-     *              "url": "",
-     *              "path": "",
-     *              "eventType": "",
-     *              "objectKind": "",
-     *              "objectApiVersion": "",
-     *              "endpointKind": "source|sink",
-     *              "filters": {
-     *                  "header": "value"
-     *              },
-     *              "ceOverrides": {
-     *                  "ce-type": "something"
-     *              }
-     *         },
-     *     ]
-     * }
-     * }</pre>
-     *
-     * @param configuration the serialized representation of the Knative environment
-     * @return an instance of {@link KnativeEnvironment}
-     * @throws IOException if an error occur while parsing the file
-     */
-    public static KnativeEnvironment mandatoryLoadFromSerializedString(String configuration) throws IOException {
-        try (Reader reader = new StringReader(configuration)) {
-            return Knative.MAPPER.readValue(reader, KnativeEnvironment.class);
-        }
-    }
-
-    /**
-     * Construct an instance o a {@link KnativeEnvironment} from a properties.
-     * <pre>{@code
-     * resources[0].name = ...
-     * resources[0].type = channel|endpoint|event
-     * resources[0].endpointKind = source|sink
-     * resources[0].url = ...
-     * }</pre>
-     *
-     * @param context the {@link CamelContext}
-     * @param properties the properties from which to construct the {@link KnativeEnvironment}
-     * @return an instance of {@link KnativeEnvironment}
-     * @throws IOException if an error occur while parsing the file
-     */
-    public static KnativeEnvironment mandatoryLoadFromProperties(CamelContext context, Map<String, Object> properties) {
-        final ExtendedCamelContext econtext = context.adapt(ExtendedCamelContext.class);
-        final KnativeEnvironment environment = new KnativeEnvironment();
-
-        PropertyBindingSupport.build()
-            .withIgnoreCase(true)
-            .withCamelContext(context)
-            .withTarget(environment)
-            .withProperties(properties)
-            .withRemoveParameters(true)
-            .withConfigurer(econtext.getConfigurerResolver().resolvePropertyConfigurer(KnativeEnvironment.class.getName(), context))
-            .withMandatory(true)
-            .bind();
-
-        return environment;
-    }
-
-    /**
-     * Construct an instance o a {@link KnativeEnvironment} from a json file.
-     * <pre>{@code
-     * {
-     *     "resources": [
-     *         {
-     *              "type": "channel|endpoint|event",
-     *              "name": "",
-     *              "url": "",
-     *              "path": "",
-     *              "eventType": "",
-     *              "objectKind": "",
-     *              "objectApiVersion": "",
-     *              "endpointKind": "source|sink",
-     *              "filters": {
-     *                  "header": "value"
-     *              },
-     *              "ceOverrides": {
-     *                  "ce-type": "something"
-     *              }
-     *         },
-     *     ]
-     * }
-     * }</pre>
-     *
-     * @param context the {@link CamelContext}
-     * @param path URI of the resource
-     * @return an instance of {@link KnativeEnvironment}
-     * @throws IOException if an error occur while parsing the file
-     */
-    public static KnativeEnvironment mandatoryLoadFromResource(CamelContext context, String path) throws IOException {
-        try (InputStream is = ResourceHelper.resolveMandatoryResourceAsInputStream(context, path)) {
-            return Knative.MAPPER.readValue(is, KnativeEnvironment.class);
-        }
-    }
-
-    public static KnativeEnvironment on(KnativeResource... definitions) {
-        KnativeEnvironment env = new KnativeEnvironment();
-        for (KnativeResource definition : definitions) {
-            env.getResources().add(definition);
-        }
-
-        return env;
-    }
-
-    public static KnativeServiceBuilder serviceBuilder(Knative.Type type, String name) {
-        return new KnativeServiceBuilder(type, name);
-    }
-
-    // ************************
-    //
-    // Types
-    //
-    // ************************
-
-    public static final class KnativeServiceBuilder {
-        private final Knative.Type type;
-        private final String name;
-        private Knative.EndpointKind endpointKind;
-        private String url;
-        private Map<String, String> metadata;
-
-        public KnativeServiceBuilder(Knative.Type type, String name) {
-            this.type = type;
-            this.name = name;
-        }
-
-        public KnativeServiceBuilder withUrl(String url) {
-            this.url = url;
-            return this;
-        }
-
-        public KnativeServiceBuilder withUrlf(String format, Object... args) {
-            return withUrl(String.format(format, args));
-        }
-
-        public KnativeServiceBuilder withEndpointKind(Knative.EndpointKind endpointKind) {
-            this.endpointKind = endpointKind;
-            return this;
-        }
-
-        public KnativeServiceBuilder withMeta(Map<String, String> metadata) {
-            if (metadata == null) {
-                return this;
-            }
-            if (this.metadata == null) {
-                this.metadata = new HashMap<>();
-            }
-            this.metadata.putAll(metadata);
-            return this;
-        }
-
-        public KnativeServiceBuilder withMeta(String key, String value) {
-            if (key == null || value == null) {
-                return this;
-            }
-            if (this.metadata == null) {
-                this.metadata = new HashMap<>();
-            }
-            this.metadata.put(key, value);
-            return this;
-        }
-
-        public KnativeServiceBuilder withMeta(String key, Enum<?> e) {
-            if (key == null || e == null) {
-                return this;
-            }
-            if (this.metadata == null) {
-                this.metadata = new HashMap<>();
-            }
-            this.metadata.put(key, e.name());
-            return this;
-        }
-
-        public KnativeResource build() {
-            KnativeResource answer = new KnativeResource();
-            answer.setType(type);
-            answer.setEndpointKind(endpointKind);
-            answer.setName(name);
-            answer.setUrl(url);
-            answer.setMetadata(metadata);
-
-            return answer;
-        }
-    }
-
-}
diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeProducerFactory.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeProducerFactory.java
deleted file mode 100644
index 6c3523b..0000000
--- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeProducerFactory.java
+++ /dev/null
@@ -1,36 +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.spi;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.Producer;
-import org.apache.camel.Service;
-
-public interface KnativeProducerFactory extends Service {
-    /**
-     * Create a camel {@link Producer} in place of the original endpoint for a specific protocol.
-     *
-     * @param endpoint the endpoint for which the producer should be created
-     * @param configuration the general transport configuration
-     * @param service the service definition containing information about how make reach the target service.
-     * @return
-     */
-    Producer createProducer(
-        Endpoint endpoint,
-        KnativeTransportConfiguration configuration,
-        KnativeResource service);
-}
diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeResource.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeResource.java
deleted file mode 100644
index ace649d..0000000
--- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeResource.java
+++ /dev/null
@@ -1,306 +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.spi;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.camel.spi.Configurer;
-
-@Configurer
-public final class KnativeResource {
-    private String name;
-    private String url;
-    private Knative.Type type;
-    private Knative.EndpointKind endpointKind;
-    private Boolean reply;
-    private String contentType;
-    private String cloudEventType;
-    private String path;
-    private String objectApiVersion;
-    private String objectKind;
-    private String objectName;
-    private Map<String, String> metadata;
-    private Map<String, String> ceOverrides;
-    private Map<String, String> filters;
-
-    public String getName() {
-        return this.name;
-    }
-
-    @JsonProperty(required = true)
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @JsonProperty(required = true)
-    public Knative.Type getType() {
-        Knative.Type answer = this.type;
-        if (answer == null) {
-            String stringValue = getMetadata(Knative.KNATIVE_TYPE);
-            if (stringValue != null) {
-                answer = Knative.Type.valueOf(stringValue);
-            }
-        }
-
-        return answer;
-    }
-
-    public void setType(Knative.Type type) {
-        this.type = type;
-    }
-
-    public Knative.EndpointKind getEndpointKind() {
-        Knative.EndpointKind answer = this.endpointKind;
-        if (answer == null) {
-            String stringValue = getMetadata(Knative.CAMEL_ENDPOINT_KIND);
-            if (stringValue != null) {
-                answer = Knative.EndpointKind.valueOf(stringValue);
-            }
-        }
-
-        return answer;
-    }
-
-    public void setEndpointKind(Knative.EndpointKind endpointKind) {
-        this.endpointKind = endpointKind;
-    }
-
-    public String getUrl() {
-        return this.url != null ? this.url : getMetadata(Knative.SERVICE_META_URL);
-    }
-
-    public void setUrl(String url) {
-        this.url = url;
-    }
-
-    public Map<String, String> getMetadata() {
-        if (this.metadata == null) {
-            this.metadata = new HashMap<>();
-        }
-
-        return this.metadata;
-    }
-
-    public void setMetadata(Map<String, String> metadata) {
-        this.metadata = metadata;
-    }
-
-    @JsonIgnore
-    public String getMetadata(String key) {
-        return this.metadata != null ? metadata.get(key) : null;
-    }
-
-    public void setMetadata(String key, String value) {
-        if (this.metadata == null) {
-            this.metadata = new HashMap<>();
-        }
-
-        this.metadata.put(key, value);
-    }
-
-    @JsonIgnore
-    public Optional<String> getOptionalMetadata(String key) {
-        return Optional.ofNullable(getMetadata(key));
-    }
-
-    public String getCloudEventType() {
-        return this.cloudEventType != null
-            ? this.cloudEventType
-            : getMetadata(Knative.KNATIVE_CLOUD_EVENT_TYPE);
-    }
-
-    public void setCloudEventType(String cloudEventType) {
-        this.cloudEventType = cloudEventType;
-    }
-
-    public String getPath() {
-        return this.path != null
-            ? this.path
-            : getMetadata(Knative.SERVICE_META_PATH);
-    }
-
-    public void setPath(String path) {
-        this.path = path;
-    }
-
-    public String getObjectApiVersion() {
-        return this.objectApiVersion != null
-            ? this.objectApiVersion
-            : getMetadata(Knative.KNATIVE_OBJECT_API_VERSION);
-    }
-
-    public void setObjectApiVersion(String objectApiVersion) {
-        this.objectApiVersion = objectApiVersion;
-    }
-
-    public String getObjectKind() {
-        return this.objectKind != null
-            ? this.objectKind
-            : getMetadata(Knative.KNATIVE_OBJECT_KIND);
-    }
-
-    public void setObjectKind(String objectKind) {
-        this.objectKind = objectKind;
-    }
-
-    public String getObjectName() {
-        return this.objectName != null
-            ? this.objectName
-            : getMetadata(Knative.KNATIVE_OBJECT_NAME);
-    }
-
-    public void setObjectName(String objectName) {
-        this.objectName = objectName;
-    }
-
-    public Map<String, String> getCeOverrides() {
-        Map<String, String> answer = new HashMap<>();
-        if (this.ceOverrides != null) {
-            answer.putAll(this.ceOverrides);
-        }
-        if (this.metadata != null) {
-            for (Map.Entry<String, String> entry : this.metadata.entrySet()) {
-                if (entry.getKey().startsWith(Knative.KNATIVE_CE_OVERRIDE_PREFIX)) {
-                    final String key = entry.getKey().substring(Knative.KNATIVE_CE_OVERRIDE_PREFIX.length());
-                    final String val = entry.getValue();
-
-                    answer.put(key, val);
-                }
-            }
-        }
-
-        return answer;
-    }
-
-    public void setCeOverrides(Map<String, String> ceOverride) {
-        this.ceOverrides = ceOverride;
-    }
-
-    public void addCeOverride(String key, String value) {
-        if (this.ceOverrides == null) {
-            this.ceOverrides = new HashMap<>();
-        }
-
-        this.ceOverrides.put(key, value);
-        this.ceOverrides.put(key, value);
-    }
-
-    public Map<String, String> getFilters() {
-        Map<String, String> answer = new HashMap<>();
-        if (this.filters != null) {
-            answer.putAll(this.filters);
-        }
-        if (this.metadata != null) {
-            for (Map.Entry<String, String> entry : this.metadata.entrySet()) {
-                if (entry.getKey().startsWith(Knative.KNATIVE_FILTER_PREFIX)) {
-                    final String key = entry.getKey().substring(Knative.KNATIVE_FILTER_PREFIX.length());
-                    final String val = entry.getValue();
-
-                    answer.put(key, val);
-                }
-            }
-        }
-
-        return answer;
-    }
-
-    public void setFilters(Map<String, String> filters) {
-        this.filters = filters;
-    }
-
-    public void addFilter(String key, String value) {
-        if (this.filters == null) {
-            this.filters = new HashMap<>();
-        }
-
-        this.filters.put(key, value);
-    }
-
-    public Boolean getReply() {
-        return this.reply != null
-            ? this.reply
-            : getOptionalMetadata(Knative.KNATIVE_REPLY).map(Boolean::parseBoolean).orElse(true);
-    }
-
-    public void setReply(Boolean reply) {
-        this.reply = reply;
-    }
-
-    public String getContentType() {
-        return this.contentType != null
-            ? this.contentType
-            : getMetadata(Knative.CONTENT_TYPE);
-    }
-
-    public void setContentType(String contentType) {
-        this.contentType = contentType;
-    }
-
-    public boolean matches(Knative.Type type, String name) {
-        if (type == null || name == null) {
-            return false;
-        }
-
-        return Objects.equals(type, getType())
-            && Objects.equals(name, getName());
-    }
-
-    @Override
-    public String toString() {
-        return "KnativeResource{" +
-            "name='" + name + '\'' +
-            ", url='" + url + '\'' +
-            ", metadata=" + metadata +
-            ", ceOverrides=" + ceOverrides +
-            ", filters=" + filters +
-            ", type=" + type +
-            ", endpointKind=" + endpointKind +
-            ", reply=" + reply +
-            ", contentType='" + contentType + '\'' +
-            '}';
-    }
-
-    public static KnativeResource from(KnativeResource resource) {
-        KnativeResource answer = new KnativeResource();
-
-        answer.name = resource.name;
-        answer.url = resource.url;
-        answer.type = resource.type;
-        answer.endpointKind = resource.endpointKind;
-        answer.reply = resource.reply;
-        answer.contentType = resource.contentType;
-        answer.cloudEventType = resource.cloudEventType;
-        answer.path = resource.path;
-
-        if (resource.metadata != null) {
-            answer.metadata = new HashMap<>(resource.metadata);
-        }
-        if (resource.ceOverrides != null) {
-            answer.ceOverrides = new HashMap<>(resource.ceOverrides);
-        }
-        if (resource.filters != null) {
-            answer.filters = new HashMap<>(resource.filters);
-        }
-
-        return answer;
-    }
-}
diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeSupport.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeSupport.java
deleted file mode 100644
index 363ecd2..0000000
--- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeSupport.java
+++ /dev/null
@@ -1,40 +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.spi;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public final class KnativeSupport {
-    private KnativeSupport() {
-    }
-
-    @SafeVarargs
-    public static <K, V> Map<K, V> mergeMaps(Map<K, V> map, Map<K, V>... maps) {
-        Map<K, V> answer = new HashMap<>();
-
-        if (map != null) {
-            answer.putAll(map);
-        }
-
-        for (Map<K, V> m : maps) {
-            answer.putAll(m);
-        }
-
-        return answer;
-    }
-}
diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeTransportConfiguration.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeTransportConfiguration.java
deleted file mode 100644
index 0c9368d..0000000
--- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/KnativeTransportConfiguration.java
+++ /dev/null
@@ -1,44 +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.spi;
-
-import org.apache.camel.component.cloudevents.CloudEvent;
-
-public final class KnativeTransportConfiguration {
-
-    private final CloudEvent cloudEvent;
-    private final boolean removeCloudEventHeadersInReply;
-    private final boolean reply;
-
-    public KnativeTransportConfiguration(CloudEvent cloudEvent, boolean removeCloudEventHeadersInReply, boolean reply) {
-        this.cloudEvent = cloudEvent;
-        this.removeCloudEventHeadersInReply = removeCloudEventHeadersInReply;
-        this.reply = reply;
-    }
-
-    public CloudEvent getCloudEvent() {
-        return cloudEvent;
-    }
-
-    public boolean isRemoveCloudEventHeadersInReply() {
-        return removeCloudEventHeadersInReply;
-    }
-
-    public boolean isReply() {
-        return reply;
-    }
-}
diff --git a/components/camel-knative/camel-knative-api/src/test/java/org/apache/camel/component/knative/spi/KnativeEnvironmentTest.java b/components/camel-knative/camel-knative-api/src/test/java/org/apache/camel/component/knative/spi/KnativeEnvironmentTest.java
deleted file mode 100644
index 4b60555..0000000
--- a/components/camel-knative/camel-knative-api/src/test/java/org/apache/camel/component/knative/spi/KnativeEnvironmentTest.java
+++ /dev/null
@@ -1,79 +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.spi;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-
-import static org.apache.camel.util.CollectionHelper.mapOf;
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class KnativeEnvironmentTest {
-
-    @ParameterizedTest
-    @ValueSource(strings = {
-        "{\"services\":[{\"type\":\"endpoint\",\"name\":\"knative3\",\"metadata\":{\"camel.endpoint.kind\":\"source\",\"knative.apiVersion\":\"serving.knative.dev/v1\",\"knative.kind\":\"Service\",\"service.path\":\"/\"}}]}",
-        "{\"resources\":[{\"type\":\"endpoint\",\"name\":\"knative3\",\"metadata\":{\"camel.endpoint.kind\":\"source\",\"knative.apiVersion\":\"serving.knative.dev/v1\",\"knative.kind\":\"Service\",\"service.path\":\"/\"}}]}"
-    })
-    public void testKnativeEnvironmentDeserializationFromString(String content) throws Exception {
-        KnativeEnvironment env = KnativeEnvironment.mandatoryLoadFromSerializedString(content);
-        List<KnativeResource> res = env.lookup(Knative.Type.endpoint, "knative3").collect(Collectors.toList());
-
-        assertThat(res).hasSize(1);
-        assertThat(res).first().satisfies(resource  -> {
-            assertThat(resource.getName()).isEqualTo("knative3");
-            assertThat(resource.getEndpointKind()).isEqualTo(Knative.EndpointKind.source);
-            assertThat(resource.getObjectApiVersion()).isEqualTo("serving.knative.dev/v1");
-            assertThat(resource.getObjectKind()).isEqualTo("Service");
-            assertThat(resource.getPath()).isEqualTo("/");
-            assertThat(resource.getMetadata()).isNotEmpty();
-        });
-    }
-
-    @Test
-    public void testKnativeEnvironmentDeserializationFromProperties() {
-        Map<String, Object> properties = mapOf(
-            "resources[0].name", "knative3",
-            "resources[0].type", "endpoint",
-            "resources[0].endpointKind", "source",
-            "resources[0].objectApiVersion", "serving.knative.dev/v1",
-            "resources[0].objectKind", "Service",
-            "resources[0].path", "/"
-        );
-
-        CamelContext context = new DefaultCamelContext();
-        KnativeEnvironment env = KnativeEnvironment.mandatoryLoadFromProperties(context, properties);
-        List<KnativeResource> res = env.lookup(Knative.Type.endpoint, "knative3").collect(Collectors.toList());
-
-        assertThat(res).hasSize(1);
-        assertThat(res).first().satisfies(resource  -> {
-            assertThat(resource.getName()).isEqualTo("knative3");
-            assertThat(resource.getEndpointKind()).isEqualTo(Knative.EndpointKind.source);
-            assertThat(resource.getObjectApiVersion()).isEqualTo("serving.knative.dev/v1");
-            assertThat(resource.getObjectKind()).isEqualTo("Service");
-            assertThat(resource.getPath()).isEqualTo("/");
-            assertThat(resource.getMetadata()).isEmpty();
-        });
-    }
-}
diff --git a/components/camel-knative/camel-knative-api/src/test/resources/log4j2-test.xml b/components/camel-knative/camel-knative-api/src/test/resources/log4j2-test.xml
deleted file mode 100644
index 0caeffa..0000000
--- a/components/camel-knative/camel-knative-api/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<Configuration status="INFO">
-  <Appenders>
-    <Console name="STDOUT" target="SYSTEM_OUT">
-      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%t|%c{1} - %msg%n"/>
-    </Console>
-    <Null name="NONE"/>
-  </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="NONE"/>
-    </Root>
-  </Loggers>
-
-</Configuration>
\ No newline at end of file
diff --git a/components/camel-knative/camel-knative-http/pom.xml b/components/camel-knative/camel-knative-http/pom.xml
deleted file mode 100644
index 6edb41b..0000000
--- a/components/camel-knative/camel-knative-http/pom.xml
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.apache.camel.k</groupId>
-        <artifactId>camel-knative-parent</artifactId>
-        <version>1.13.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>camel-knative-http</artifactId>
-
-    <dependencies>
-
-        <!-- ****************************** -->
-        <!--                                -->
-        <!-- RUNTIME                        -->
-        <!--                                -->
-        <!-- ****************************** -->
-
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-engine</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-knative-api</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>io.vertx</groupId>
-            <artifactId>vertx-web-client</artifactId>
-            <version>${vertx-version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>io.vertx</groupId>
-            <artifactId>vertx-web</artifactId>
-            <version>${vertx-version}</version>
-        </dependency>
-
-        <!-- ****************************** -->
-        <!--                                -->
-        <!-- TESTS                          -->
-        <!--                                -->
-        <!-- ****************************** -->
-
-        <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-knative</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-knative-test</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-direct</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-core-languages</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-platform-http-vertx</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-http</artifactId>
-            <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>
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-package-maven-plugin</artifactId>
-                <configuration>
-                    <failFast>false</failFast>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>generate</id>
-                        <goals>
-                            <goal>generate-configurer</goal>
-                        </goals>
-                        <phase>process-classes</phase>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java
deleted file mode 100644
index 792363d..0000000
--- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumer.java
+++ /dev/null
@@ -1,357 +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.io.PrintWriter;
-import java.io.StringWriter;
-import java.math.BigInteger;
-import java.nio.charset.StandardCharsets;
-import java.util.Locale;
-import java.util.Map;
-import java.util.function.Predicate;
-
-import io.vertx.core.Handler;
-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.Router;
-import io.vertx.ext.web.RoutingContext;
-import io.vertx.ext.web.handler.BodyHandler;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.NoTypeConversionAvailableException;
-import org.apache.camel.Processor;
-import org.apache.camel.TypeConverter;
-import org.apache.camel.component.knative.spi.KnativeResource;
-import org.apache.camel.component.knative.spi.KnativeTransportConfiguration;
-import org.apache.camel.spi.HeaderFilterStrategy;
-import org.apache.camel.support.DefaultConsumer;
-import org.apache.camel.support.ExchangeHelper;
-import org.apache.camel.support.MessageHelper;
-import org.apache.camel.util.IOHelper;
-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);
-
-    private final KnativeTransportConfiguration configuration;
-    private final Predicate<HttpServerRequest> filter;
-    private final KnativeResource resource;
-    private final Router router;
-    private final HeaderFilterStrategy headerFilterStrategy;
-
-    private String basePath;
-    private Route route;
-    private BigInteger maxBodySize;
-    private boolean preallocateBodyBuffer;
-
-    public KnativeHttpConsumer(
-        KnativeTransportConfiguration configuration,
-        Endpoint endpoint,
-        KnativeResource resource,
-        Router router,
-        Processor processor) {
-
-        super(endpoint, processor);
-
-        this.configuration = configuration;
-        this.resource = resource;
-        this.router = router;
-        this.headerFilterStrategy = new KnativeHttpHeaderFilterStrategy();
-        this.filter = KnativeHttpSupport.createFilter(this.configuration.getCloudEvent(), resource);
-        this.preallocateBodyBuffer = true;
-    }
-
-    public String getBasePath() {
-        return basePath;
-    }
-
-    public void setBasePath(String basePath) {
-        this.basePath = basePath;
-    }
-
-    public BigInteger getMaxBodySize() {
-        return maxBodySize;
-    }
-
-    public void setMaxBodySize(BigInteger maxBodySize) {
-        this.maxBodySize = maxBodySize;
-    }
-
-    public boolean isPreallocateBodyBuffer() {
-        return preallocateBodyBuffer;
-    }
-
-    public void setPreallocateBodyBuffer(boolean preallocateBodyBuffer) {
-        this.preallocateBodyBuffer = preallocateBodyBuffer;
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        if (route == null) {
-            String path = resource.getPath();
-            if (ObjectHelper.isEmpty(path)) {
-                path = "/";
-            }
-            if (ObjectHelper.isNotEmpty(basePath)) {
-                path = basePath + path;
-            }
-
-            LOGGER.debug("Creating route for path: {}", path);
-
-            route = router.route(
-                HttpMethod.POST,
-                path
-            );
-
-            BodyHandler bodyHandler = BodyHandler.create();
-            bodyHandler.setPreallocateBodyBuffer(this.preallocateBodyBuffer);
-            if (this.maxBodySize != null) {
-                bodyHandler.setBodyLimit(this.maxBodySize.longValueExact());
-            }
-
-            // add body handler
-            route.handler(new Handler<RoutingContext>() {
-                @Override
-                public void handle(RoutingContext event) {
-                    event.request().resume();
-                    bodyHandler.handle(event);
-                }
-            });
-
-            // add knative 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 {
-        if (route != null) {
-            route.remove();
-        }
-
-        super.doStop();
-    }
-
-    @Override
-    protected void doSuspend() throws Exception {
-        if (route != null) {
-            route.disable();
-        }
-    }
-
-    @Override
-    protected void doResume() throws Exception {
-        if (route != null) {
-            route.enable();
-        }
-    }
-
-    private void handleRequest(RoutingContext routingContext) {
-        final HttpServerRequest request = routingContext.request();
-        final Exchange exchange = getEndpoint().createExchange();
-        final Message message = toMessage(request, exchange);
-
-        Buffer payload = routingContext.getBody();
-        if (payload != null) {
-            message.setBody(payload.getBytes());
-        } else {
-            message.setBody(null);
-        }
-
-        // We do not know if any of the processing logic of the route is synchronous or not so we
-        // need to process the request on a thread on the Vert.x worker pool.
-        //
-        // As example the following route may block the Vert.x event loop as the camel-http component
-        // is not async so if the service is scaled-down, the it may take a while to become ready and
-        // the camel-http component blocks until the service becomes available.
-        //
-        // from("knative:event/my.event")
-        //        .to("http://{{env:PROJECT}}.{{env:NAMESPACE}}.svc.cluster.local/service");
-        //
-        routingContext.vertx().executeBlocking(
-            promise -> {
-                try {
-                    createUoW(exchange);
-                } catch (Exception e) {
-                    promise.fail(e);
-                    return;
-                }
-
-                getAsyncProcessor().process(exchange, c -> {
-                    if (!exchange.isFailed()) {
-                        promise.complete();
-                    } else {
-                        promise.fail(exchange.getException());
-                    }
-                });
-            },
-            false,
-            result -> {
-                try {
-                    Throwable failure = null;
-
-                    if (result.succeeded()) {
-                        try {
-                            HttpServerResponse response = toHttpResponse(request, exchange.getMessage());
-                            Buffer body = null;
-
-                            if (request.response().getStatusCode() != 204 && configuration.isReply()) {
-                                body = computeResponseBody(exchange.getMessage());
-
-                                String contentType = MessageHelper.getContentType(exchange.getMessage());
-                                if (contentType != null) {
-                                    response.putHeader(Exchange.CONTENT_TYPE, contentType);
-                                }
-                            }
-
-                            if (body != null) {
-                                request.response().end(body);
-                            } else {
-                                request.response().setStatusCode(204);
-                                request.response().end();
-                            }
-                        } catch (Exception e) {
-                            failure = e;
-                        }
-                    } else if (result.failed()) {
-                        failure = result.cause();
-                    }
-
-                    if (failure != null) {
-                        getExceptionHandler().handleException(failure);
-                        routingContext.fail(failure);
-                    }
-                } finally {
-                    doneUoW(exchange);
-                }
-            });
-    }
-
-    private Message toMessage(HttpServerRequest request, Exchange exchange) {
-        Message message = exchange.getMessage();
-        String path = request.path();
-
-        if (resource.getPath() != null) {
-            String endpointPath = resource.getPath();
-            String matchPath = path.toLowerCase(Locale.US);
-            String match = endpointPath.toLowerCase(Locale.US);
-
-            if (matchPath.startsWith(match)) {
-                path = path.substring(endpointPath.length());
-            }
-        }
-
-        for (Map.Entry<String, String> entry : request.headers().entries()) {
-            if (!headerFilterStrategy.applyFilterToExternalHeaders(entry.getKey(), entry.getValue(), exchange)) {
-                KnativeHttpSupport.appendHeader(message.getHeaders(), entry.getKey(), entry.getValue());
-            }
-        }
-        for (Map.Entry<String, String> entry : request.params().entries()) {
-            if (!headerFilterStrategy.applyFilterToExternalHeaders(entry.getKey(), entry.getValue(), exchange)) {
-                KnativeHttpSupport.appendHeader(message.getHeaders(), entry.getKey(), entry.getValue());
-            }
-        }
-
-        message.setHeader(Exchange.HTTP_PATH, path);
-        message.setHeader(Exchange.HTTP_METHOD, request.method());
-        message.setHeader(Exchange.HTTP_URI, request.uri());
-        message.setHeader(Exchange.HTTP_QUERY, request.query());
-
-        return message;
-    }
-
-    private HttpServerResponse toHttpResponse(HttpServerRequest request, Message message) {
-        final HttpServerResponse response = request.response();
-        final boolean failed = message.getExchange().isFailed();
-        final int defaultCode = failed ? 500 : 200;
-        final int code = message.getHeader(Exchange.HTTP_RESPONSE_CODE, defaultCode, int.class);
-        final TypeConverter tc = message.getExchange().getContext().getTypeConverter();
-
-        response.setStatusCode(code);
-
-        if (configuration.isReply()) {
-            for (Map.Entry<String, Object> entry : message.getHeaders().entrySet()) {
-                final String key = entry.getKey();
-                final Object value = entry.getValue();
-
-                for (Object it : org.apache.camel.support.ObjectHelper.createIterable(value, null)) {
-                    String headerValue = tc.convertTo(String.class, it);
-                    if (headerValue == null) {
-                        continue;
-                    }
-                    if (!headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, message.getExchange())) {
-                        response.putHeader(key, headerValue);
-                    }
-                }
-            }
-
-            KnativeHttpSupport.remapCloudEventHeaders(configuration.getCloudEvent(), message);
-            if (configuration.isRemoveCloudEventHeadersInReply()) {
-                KnativeHttpSupport.removeCloudEventHeaders(configuration.getCloudEvent(), message);
-            }
-        }
-
-        return response;
-    }
-
-    private Buffer computeResponseBody(Message message) throws NoTypeConversionAvailableException {
-        Object body = message.getBody();
-        Exception exception = message.getExchange().getException();
-
-        if (exception != null) {
-            // we failed due an exception so print it as plain text
-            StringWriter sw = new StringWriter();
-            PrintWriter pw = new PrintWriter(sw);
-
-            try {
-                exception.printStackTrace(pw);
-
-                // the body should then be the stacktrace
-                body = 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");
-
-                // and mark the exception as failure handled, as we handled it by returning
-                // it as the response
-                ExchangeHelper.setFailureHandled(message.getExchange());
-            } finally {
-                IOHelper.close(pw, sw);
-            }
-        }
-
-        return body != null
-            ? Buffer.buffer(message.getExchange().getContext().getTypeConverter().mandatoryConvertTo(byte[].class, body))
-            : null;
-    }
-}
diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumerFactory.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumerFactory.java
deleted file mode 100644
index 0b66b43..0000000
--- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpConsumerFactory.java
+++ /dev/null
@@ -1,67 +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.Objects;
-
-import io.vertx.ext.web.Router;
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Consumer;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Processor;
-import org.apache.camel.component.knative.spi.KnativeConsumerFactory;
-import org.apache.camel.component.knative.spi.KnativeResource;
-import org.apache.camel.component.knative.spi.KnativeTransportConfiguration;
-import org.apache.camel.support.service.ServiceSupport;
-
-public class KnativeHttpConsumerFactory extends ServiceSupport implements CamelContextAware, KnativeConsumerFactory {
-    private Router router;
-    private CamelContext camelContext;
-
-    public Router getRouter() {
-        return router;
-    }
-
-    public KnativeHttpConsumerFactory setRouter(Router router) {
-        this.router = router;
-        return this;
-    }
-
-    @Override
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
-    @Override
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public Consumer createConsumer(Endpoint endpoint, KnativeTransportConfiguration config, KnativeResource service, Processor processor) {
-        Objects.requireNonNull(this.router, "router");
-
-        return new KnativeHttpConsumer(
-            config,
-            endpoint,
-            service,
-            this.router,
-            processor);
-    }
-
-}
diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpHeaderFilterStrategy.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpHeaderFilterStrategy.java
deleted file mode 100644
index db3d165..0000000
--- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpHeaderFilterStrategy.java
+++ /dev/null
@@ -1,48 +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 org.apache.camel.support.DefaultHeaderFilterStrategy;
-
-public class KnativeHttpHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
-    public KnativeHttpHeaderFilterStrategy() {
-        initialize();
-    }
-
-    protected final void initialize() {
-        getOutFilter().add("content-length");
-        getOutFilter().add("content-type");
-        getOutFilter().add("host");
-        // Add the filter for the Generic Message header
-        // http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.5
-        getOutFilter().add("cache-control");
-        getOutFilter().add("connection");
-        getOutFilter().add("date");
-        getOutFilter().add("pragma");
-        getOutFilter().add("trailer");
-        getOutFilter().add("transfer-encoding");
-        getOutFilter().add("upgrade");
-        getOutFilter().add("via");
-        getOutFilter().add("warning");
-
-        setLowerCase(true);
-
-        // filter headers begin with "Camel" or "org.apache.camel"
-        // must ignore case for Http based transports
-        setOutFilterPattern("(?i)(Camel|org\\.apache\\.camel)[\\.|a-z|A-z|0-9]*");
-    }
-}
diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java
deleted file mode 100644
index 62f7b54..0000000
--- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducer.java
+++ /dev/null
@@ -1,205 +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.net.MalformedURLException;
-import java.net.URL;
-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;
-import io.vertx.ext.web.client.WebClient;
-import io.vertx.ext.web.client.WebClientOptions;
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.CamelException;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.InvalidPayloadException;
-import org.apache.camel.Message;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.component.knative.spi.KnativeResource;
-import org.apache.camel.spi.HeaderFilterStrategy;
-import org.apache.camel.support.DefaultAsyncProducer;
-import org.apache.camel.support.MessageHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class KnativeHttpProducer extends DefaultAsyncProducer {
-    private static final Logger LOGGER = LoggerFactory.getLogger(KnativeHttpProducer.class);
-
-    private final KnativeResource serviceDefinition;
-    private final Vertx vertx;
-    private final WebClientOptions clientOptions;
-    private final HeaderFilterStrategy headerFilterStrategy;
-
-    private String uri;
-    private String host;
-    private WebClient client;
-
-    public KnativeHttpProducer(
-            Endpoint endpoint,
-            KnativeResource serviceDefinition,
-            Vertx vertx,
-            WebClientOptions clientOptions) {
-        super(endpoint);
-
-        this.serviceDefinition = serviceDefinition;
-        this.vertx = ObjectHelper.notNull(vertx, "vertx");
-        this.clientOptions = ObjectHelper.supplyIfEmpty(clientOptions, WebClientOptions::new);
-        this.headerFilterStrategy = new KnativeHttpHeaderFilterStrategy();
-    }
-
-    @Override
-    public boolean process(Exchange exchange, AsyncCallback callback) {
-        if (exchange.getMessage().getBody() == null) {
-            exchange.setException(new IllegalArgumentException("body must not be null"));
-            callback.done(true);
-
-            return true;
-        }
-
-        final byte[] payload;
-
-        try {
-            payload = exchange.getMessage().getMandatoryBody(byte[].class);
-        } catch (InvalidPayloadException e) {
-            exchange.setException(e);
-            callback.done(true);
-
-            return true;
-        }
-
-        MultiMap headers = MultiMap.caseInsensitiveMultiMap();
-        headers.add(HttpHeaders.CONTENT_LENGTH, Integer.toString(payload.length));
-        headers.add(HttpHeaders.HOST, this.host);
-
-        String contentType = MessageHelper.getContentType(exchange.getMessage());
-        if (contentType != null) {
-            headers.add(HttpHeaders.CONTENT_TYPE, contentType);
-        }
-
-        for (Map.Entry<String, Object> entry : exchange.getMessage().getHeaders().entrySet()) {
-            if (!headerFilterStrategy.applyFilterToCamelHeaders(entry.getKey(), entry.getValue(), exchange)) {
-                headers.add(entry.getKey(), entry.getValue().toString());
-            }
-        }
-
-        client.postAbs(this.uri)
-            .putHeaders(headers)
-            .sendBuffer(Buffer.buffer(payload), response -> {
-                if (response.succeeded()) {
-                    HttpResponse<Buffer> result = response.result();
-                    Message answer = exchange.getMessage();
-
-                    answer.setHeader(Exchange.HTTP_RESPONSE_CODE, result.statusCode());
-
-                    for (Map.Entry<String, String> entry : result.headers().entries()) {
-                        if (!headerFilterStrategy.applyFilterToExternalHeaders(entry.getKey(), entry.getValue(), exchange)) {
-                            answer.setHeader(entry.getKey(), entry.getValue());
-                        }
-                    }
-
-                    if (result.body() != null) {
-                        answer.setBody(result.body().getBytes());
-                    } else {
-                        answer.setBody(null);
-                    }
-
-                    if (result.statusCode() < 200 || result.statusCode() >= 300) {
-                        String exceptionMessage = String.format(
-                            "HTTP operation failed invoking %s with statusCode: %d, statusMessage: %s",
-                            URISupport.sanitizeUri(this.uri),
-                            result.statusCode(),
-                            result.statusMessage()
-                        );
-
-                        exchange.setException(new CamelException(exceptionMessage));
-                    }
-
-                    answer.setHeader(Exchange.HTTP_RESPONSE_CODE, result.statusCode());
-                } else if (response.failed()) {
-                    String exceptionMessage = "HTTP operation failed invoking " + URISupport.sanitizeUri(this.uri);
-                    if (response.result() != null) {
-                        exceptionMessage += " with statusCode: " + response.result().statusCode();
-                    }
-
-                    exchange.setException(new CamelException(exceptionMessage));
-                }
-
-                callback.done(false);
-            });
-
-        return false;
-    }
-
-    @Override
-    protected void doInit() throws Exception {
-        this.uri = getUrl(serviceDefinition);
-        this.host = getHost(serviceDefinition);
-        this.client = WebClient.create(vertx, clientOptions);
-
-        super.doInit();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-
-        if (this.client != null) {
-            LOGGER.debug("Shutting down client: {}", client);
-            this.client.close();
-            this.client = null;
-        }
-    }
-
-    private String getUrl(KnativeResource definition) {
-        String url = definition.getUrl();
-        if (url == null) {
-            throw new RuntimeCamelException("Unable to determine the `url` for definition: " + definition);
-        }
-
-        String path = definition.getPath();
-        if (path != null) {
-            if (path.charAt(0) != '/') {
-                path = "/" + path;
-            }
-            if (url.endsWith("/")) {
-                url = url.substring(0, url.length() - 1);
-            }
-
-            url += path;
-        }
-
-        return getEndpoint().getCamelContext().resolvePropertyPlaceholders(url);
-    }
-
-    private String getHost(KnativeResource definition) {
-        String url = getUrl(definition);
-
-        try {
-           return new URL(url).getHost();
-        } catch (MalformedURLException e) {
-            throw new RuntimeCamelException("Unable to determine `host` for definition: " + definition, e);
-        }
-    }
-
-}
diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducerFactory.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducerFactory.java
deleted file mode 100644
index 4415545..0000000
--- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpProducerFactory.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.component.knative.http;
-
-import java.util.Objects;
-
-import io.vertx.core.Vertx;
-import io.vertx.ext.web.client.WebClientOptions;
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Producer;
-import org.apache.camel.component.knative.spi.KnativeProducerFactory;
-import org.apache.camel.component.knative.spi.KnativeResource;
-import org.apache.camel.component.knative.spi.KnativeTransportConfiguration;
-import org.apache.camel.support.service.ServiceSupport;
-
-public class KnativeHttpProducerFactory extends ServiceSupport implements CamelContextAware, KnativeProducerFactory {
-    private Vertx vertx;
-    private WebClientOptions vertxHttpClientOptions;
-    private CamelContext camelContext;
-
-    public Vertx getVertx() {
-        return vertx;
-    }
-
-    public KnativeHttpProducerFactory setVertx(Vertx vertx) {
-        this.vertx = vertx;
-        return this;
-    }
-
-    public WebClientOptions getClientOptions() {
-        return vertxHttpClientOptions;
-    }
-
-    public void setClientOptions(WebClientOptions vertxHttpClientOptions) {
-        this.vertxHttpClientOptions = vertxHttpClientOptions;
-    }
-
-    @Override
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
-    @Override
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public Producer createProducer(Endpoint endpoint, KnativeTransportConfiguration config, KnativeResource service) {
-        Objects.requireNonNull(this.vertx, "vertx");
-
-        return new KnativeHttpProducer(
-            endpoint,
-            service,
-            this.vertx,
-            this.vertxHttpClientOptions);
-    }
-}
diff --git a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java b/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java
deleted file mode 100644
index 7b8d57f..0000000
--- a/components/camel-knative/camel-knative-http/src/main/java/org/apache/camel/component/knative/http/KnativeHttpSupport.java
+++ /dev/null
@@ -1,121 +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.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.Predicate;
-
-import io.vertx.core.http.HttpServerRequest;
-import org.apache.camel.Message;
-import org.apache.camel.component.cloudevents.CloudEvent;
-import org.apache.camel.component.knative.spi.KnativeResource;
-
-public final class KnativeHttpSupport {
-    private KnativeHttpSupport() {
-    }
-
-    @SuppressWarnings("unchecked")
-    public 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);
-    }
-
-    public static Predicate<HttpServerRequest> createFilter(CloudEvent cloudEvent, KnativeResource resource) {
-        final Map<String, String> filters = new HashMap<>();
-
-        for (Map.Entry<String, String> entry: resource.getFilters().entrySet()) {
-            cloudEvent.attribute(entry.getKey())
-                .map(CloudEvent.Attribute::http)
-                .ifPresentOrElse(
-                    k -> filters.put(k, entry.getValue()),
-                    () -> filters.put(entry.getKey(), entry.getValue())
-                );
-        }
-
-        return new Predicate<HttpServerRequest>() {
-            @Override
-            public boolean test(HttpServerRequest request) {
-                if (filters.isEmpty()) {
-                    return true;
-                }
-
-                for (Map.Entry<String, String> entry : filters.entrySet()) {
-                    final List<String> values = request.headers().getAll(entry.getKey());
-                    if (values.isEmpty()) {
-                        return false;
-                    }
-
-                    String val = values.get(values.size() - 1);
-                    int idx = val.lastIndexOf(',');
-
-                    if (values.size() == 1 && idx != -1) {
-                        val = val.substring(idx + 1);
-                        val = val.trim();
-                    }
-
-                    boolean matches = Objects.equals(entry.getValue(), val) || val.matches(entry.getValue());
-                    if (!matches) {
-                        return false;
-                    }
-                }
-
-                return true;
-            }
-        };
-    }
-
-    /**
-     * Removes cloud event headers at the end of the processing.
-     */
-    public static void removeCloudEventHeaders(CloudEvent ce, Message message) {
-        // remove CloudEvent headers
-        for (CloudEvent.Attribute attr : ce.attributes()) {
-            message.removeHeader(attr.http());
-            message.removeHeader(attr.id());
-        }
-    }
-
-    /**
-     * Remap camel headers to cloud event http headers.
-     */
-    public static void remapCloudEventHeaders(CloudEvent ce, Message message) {
-        // remap CloudEvent camel --> http
-        for (CloudEvent.Attribute attr : ce.attributes()) {
-            Object value = message.getHeader(attr.id());
-            if (value != null) {
-                message.setHeader(attr.http(), value);
-            }
-        }
-    }
-
-}
diff --git a/components/camel-knative/camel-knative-http/src/main/resources/META-INF/services/org/apache/camel/knative/transport/http-consumer b/components/camel-knative/camel-knative-http/src/main/resources/META-INF/services/org/apache/camel/knative/transport/http-consumer
deleted file mode 100644
index 431636f..0000000
--- a/components/camel-knative/camel-knative-http/src/main/resources/META-INF/services/org/apache/camel/knative/transport/http-consumer
+++ /dev/null
@@ -1,18 +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.
-#
-
-class = org.apache.camel.component.knative.http.KnativeHttpConsumerFactory
\ No newline at end of file
diff --git a/components/camel-knative/camel-knative-http/src/main/resources/META-INF/services/org/apache/camel/knative/transport/http-producer b/components/camel-knative/camel-knative-http/src/main/resources/META-INF/services/org/apache/camel/knative/transport/http-producer
deleted file mode 100644
index 897220c..0000000
--- a/components/camel-knative/camel-knative-http/src/main/resources/META-INF/services/org/apache/camel/knative/transport/http-producer
+++ /dev/null
@@ -1,18 +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.
-#
-
-class = org.apache.camel.component.knative.http.KnativeHttpProducerFactory
\ No newline at end of file
diff --git a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpServer.java b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpServer.java
deleted file mode 100644
index eecbfe6..0000000
--- a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpServer.java
+++ /dev/null
@@ -1,243 +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.concurrent.BlockingQueue;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-
-import io.vertx.core.Handler;
-import io.vertx.core.Vertx;
-import io.vertx.core.http.HttpServer;
-import io.vertx.core.http.HttpServerRequest;
-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.k.test.AvailablePortFinder;
-import org.apache.camel.support.service.ServiceSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class KnativeHttpServer extends ServiceSupport {
-    private static final Logger LOGGER = LoggerFactory.getLogger(KnativeHttpServer.class);
-
-    private final CamelContext context;
-    private final String host;
-    private final int port;
-    private final String path;
-    private final BlockingQueue<HttpServerRequest> requests;
-    private final Handler<RoutingContext> handler;
-
-    private Vertx vertx;
-    private Router router;
-    private ExecutorService executor;
-    private HttpServer server;
-
-    public KnativeHttpServer(CamelContext context) {
-        this(context, "localhost", AvailablePortFinder.getNextAvailable(), "/", null);
-    }
-
-    public KnativeHttpServer(CamelContext context, int port) {
-        this(context, "localhost", port, "/", null);
-    }
-
-    public KnativeHttpServer(CamelContext context, int port, Handler<RoutingContext> handler) {
-        this(context, "localhost", port, "/", handler);
-    }
-
-    public KnativeHttpServer(CamelContext context, Handler<RoutingContext> handler) {
-        this(context, "localhost", AvailablePortFinder.getNextAvailable(), "/", handler);
-    }
-
-    public KnativeHttpServer(CamelContext context, String host, int port, String path) {
-        this(context, host, port, path, null);
-    }
-
-    public KnativeHttpServer(CamelContext context, String host, String path) {
-        this(context, host, AvailablePortFinder.getNextAvailable(), path, null);
-    }
-
-    public KnativeHttpServer(CamelContext context, String host, String path, Handler<RoutingContext> handler) {
-        this(context, host, AvailablePortFinder.getNextAvailable(), path, handler);
-    }
-
-    public KnativeHttpServer(CamelContext context, String host, int port, String path, Handler<RoutingContext> handler) {
-        this.context = context;
-        this.host = host;
-        this.port = port;
-        this.path = path;
-        this.requests = new LinkedBlockingQueue<>();
-        this.handler = handler != null
-            ? handler
-            : event -> {
-                event.response().setStatusCode(200);
-                event.response().end();
-            };
-    }
-
-    public String getHost() {
-        return host;
-    }
-
-    public int getPort() {
-        return port;
-    }
-
-    public String getPath() {
-        return path;
-    }
-
-    public HttpServerRequest poll(int timeout, TimeUnit unit) throws InterruptedException {
-        return requests.poll(timeout, unit);
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        this.executor = context.getExecutorServiceManager().newSingleThreadExecutor(this, "knative-http-server");
-        this.vertx = Vertx.vertx();
-        this.server = vertx.createHttpServer();
-        this.router = Router.router(vertx);
-        this.router.route(path)
-            .handler(event -> {
-                event.request().resume();
-                BodyHandler.create().handle(event);
-            })
-            .handler(event -> {
-                this.requests.offer(event.request());
-                event.next();
-            })
-            .handler(handler);
-
-        CompletableFuture.runAsync(
-            () -> {
-                CountDownLatch latch = new CountDownLatch(1);
-                server.requestHandler(router).listen(port, host, result -> {
-                    try {
-                        if (result.failed()) {
-                            LOGGER.warn("Failed to start Vert.x HttpServer on {}:{}, reason: {}",
-                                host,
-                                port,
-                                result.cause().getMessage()
-                            );
-
-                            throw new RuntimeException(result.cause());
-                        }
-
-                        LOGGER.info("Vert.x HttpServer started on {}:{}", host, port);
-                    } finally {
-                        latch.countDown();
-                    }
-                });
-
-                try {
-                    latch.await();
-                } catch (InterruptedException e) {
-                    throw new RuntimeException(e);
-                }
-            },
-            executor
-        ).toCompletableFuture().join();
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        try {
-            if (server != null) {
-                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
-                ).toCompletableFuture().join();
-            }
-        } finally {
-            this.server = null;
-        }
-
-        if (vertx != null) {
-            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;
-            }
-        }
-
-        if (executor != null) {
-            context.getExecutorServiceManager().shutdown(executor);
-            executor = null;
-        }
-    }
-}
diff --git a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
deleted file mode 100644
index d4b0cfa..0000000
--- a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
+++ /dev/null
@@ -1,1990 +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.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Map;
-import java.util.Objects;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
-
-import io.restassured.RestAssured;
-import io.restassured.mapper.ObjectMapperType;
-import io.vertx.core.http.HttpServerRequest;
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelException;
-import org.apache.camel.Exchange;
-import org.apache.camel.FailedToStartRouteException;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.cloudevents.CloudEvent;
-import org.apache.camel.component.cloudevents.CloudEvents;
-import org.apache.camel.component.knative.KnativeComponent;
-import org.apache.camel.component.knative.KnativeEndpoint;
-import org.apache.camel.component.knative.spi.Knative;
-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.test.AvailablePortFinder;
-import org.apache.camel.support.service.ServiceHelper;
-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.http.KnativeHttpTestSupport.configurePlatformHttpComponent;
-import static org.apache.camel.component.knative.http.KnativeHttpTestSupport.httpAttribute;
-import static org.apache.camel.component.knative.test.KnativeEnvironmentSupport.channel;
-import static org.apache.camel.component.knative.test.KnativeEnvironmentSupport.endpoint;
-import static org.apache.camel.component.knative.test.KnativeEnvironmentSupport.event;
-import static org.apache.camel.component.knative.test.KnativeEnvironmentSupport.sourceChannel;
-import static org.apache.camel.component.knative.test.KnativeEnvironmentSupport.sourceEndpoint;
-import static org.apache.camel.component.knative.test.KnativeEnvironmentSupport.sourceEvent;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-import static org.hamcrest.Matchers.emptyOrNullString;
-import static org.hamcrest.Matchers.is;
-
-public class KnativeHttpTest {
-
-    private CamelContext context;
-    private ProducerTemplate template;
-    private int platformHttpPort;
-    private String platformHttpHost;
-
-    // **************************
-    //
-    // Setup
-    //
-    // **************************
-
-    @BeforeEach
-    public void before() {
-        this.context = new DefaultCamelContext();
-        this.template = this.context.createProducerTemplate();
-        this.platformHttpHost = "localhost";
-        this.platformHttpPort = AvailablePortFinder.getNextAvailable();
-
-        configurePlatformHttpComponent(context, this.platformHttpPort);
-
-        RestAssured.port = platformHttpPort;
-        RestAssured.config = config().encoderConfig(encoderConfig().appendDefaultContentCharsetToContentTypeIfUndefined(false));
-    }
-
-    @AfterEach
-    public void after() {
-        ServiceHelper.stopService(template);
-
-        if (this.context != null) {
-            this.context.stop();
-        }
-    }
-
-    // **************************
-    //
-    // Tests
-    //
-    // **************************
-
-    @Test
-    void testCreateComponent() {
-        context.start();
-
-        assertThat(context.getComponent("knative")).isInstanceOfSatisfying(KnativeComponent.class, c -> {
-            assertThat(c.getProducerFactory()).isInstanceOf(KnativeHttpProducerFactory.class);
-            assertThat(c.getConsumerFactory()).isInstanceOf(KnativeHttpConsumerFactory.class);
-        });
-    }
-
-    void doTestKnativeSource(CloudEvent ce, String basePath, String path) throws Exception {
-        KnativeComponent component = configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "myEndpoint",
-                Map.of(
-                    Knative.SERVICE_META_PATH, ObjectHelper.supplyIfEmpty(path, () -> "/"),
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        if (ObjectHelper.isNotEmpty(basePath)) {
-            component.getConfiguration().addTransportOptions("basePath", basePath);
-        }
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/myEndpoint")
-                .to("mock:ce");
-        });
-
-        context.start();
-
-        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event");
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "/somewhere");
-        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_ID));
-        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(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "/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
-    @EnumSource(CloudEvents.class)
-    void testInvokeEndpoint(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "myEndpoint",
-                String.format("http://%s:%d/a/path", platformHttpHost, platformHttpPort),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:source")
-                .routeId("my-source")
-                .to("knative:endpoint/myEndpoint");
-            b.from("platform-http:/a/path")
-                .convertBodyTo(String.class)
-                .to("mock:ce");
-        });
-
-        context.start();
-
-        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version());
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event");
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "my-source");
-        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME)));
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID)));
-        mock.expectedBodiesReceived("test");
-        mock.expectedMessageCount(1);
-
-        template.sendBody("direct:source", "test");
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testInvokeEndpointByUrl(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "myEndpoint",
-                null,
-                Map.of(
-                    Knative.SERVICE_META_URL, String.format("http://localhost:%d/a/path", platformHttpPort),
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:source")
-                .routeId("my-source")
-                .to("knative:endpoint/myEndpoint");
-            b.from("platform-http:/a/path")
-                .convertBodyTo(String.class)
-                .to("mock:ce");
-        });
-
-        context.start();
-
-        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version());
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event");
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "my-source");
-        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME)));
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID)));
-        mock.expectedBodiesReceived("test");
-        mock.expectedMessageCount(1);
-
-        template.sendBody("direct:source", "test");
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testInvokeEndpointByUrlAndPath(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "myEndpoint",
-                null,
-                Map.of(
-                    Knative.SERVICE_META_PATH, "/with/subpath",
-                    Knative.SERVICE_META_URL, String.format("http://localhost:%d/a/path", platformHttpPort),
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:source")
-                .routeId("my-source")
-                .to("knative:endpoint/myEndpoint");
-            b.from("platform-http:/a/path/with/subpath")
-                .convertBodyTo(String.class)
-                .to("mock:ce");
-        });
-
-        context.start();
-
-        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version());
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event");
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "my-source");
-        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME)));
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID)));
-        mock.expectedBodiesReceived("test");
-        mock.expectedMessageCount(1);
-
-        template.sendBody("direct:source", "test");
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testConsumeStructuredContent(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "myEndpoint",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/myEndpoint")
-                .to("mock:ce");
-        });
-
-        context.start();
-
-        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event");
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_ID, "myEventID");
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "/somewhere");
-        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock.expectedBodiesReceived("test");
-        mock.expectedMessageCount(1);
-
-        if (Objects.equals(CloudEvents.v0_1.version(), ce.version())) {
-            given()
-                .contentType(Knative.MIME_STRUCTURED_CONTENT_MODE)
-                .body(
-                    Map.of(
-                        "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.v0_2.version(), ce.version())) {
-            given()
-                .contentType(Knative.MIME_STRUCTURED_CONTENT_MODE)
-                .body(
-                    Map.of(
-                        "specversion", ce.version(),
-                        "type", "org.apache.camel.event",
-                        "id", "myEventID",
-                        "time", 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.v0_3.version(), ce.version())) {
-            given()
-                .contentType(Knative.MIME_STRUCTURED_CONTENT_MODE)
-                .body(
-                    Map.of(
-                        "specversion", ce.version(),
-                        "type", "org.apache.camel.event",
-                        "id", "myEventID",
-                        "time", DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()),
-                        "source", "/somewhere",
-                        "datacontenttype", "text/plain",
-                        "data", "test"
-                    ),
-                    ObjectMapperType.JACKSON_2
-                )
-            .when()
-                .post()
-            .then()
-                .statusCode(200);
-        } else if (Objects.equals(CloudEvents.v1_0.version(), ce.version())) {
-            given()
-                .contentType(Knative.MIME_STRUCTURED_CONTENT_MODE)
-                .body(
-                    Map.of(
-                        "specversion", ce.version(),
-                        "type", "org.apache.camel.event",
-                        "id", "myEventID",
-                        "time", DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()),
-                        "source", "/somewhere",
-                        "datacontenttype", "text/plain",
-                        "data", "test"
-                    ),
-                    ObjectMapperType.JACKSON_2
-                )
-            .when()
-                .post()
-            .then()
-                .statusCode(200);
-        } else {
-            throw new IllegalArgumentException("Unknown CloudEvent spec: " + ce.version());
-        }
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testConsumeContent(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "myEndpoint",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/myEndpoint")
-                .to("mock:ce");
-        });
-
-        context.start();
-
-        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event");
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_ID, "myEventID");
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "/somewhere");
-        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock.expectedBodiesReceived("test");
-        mock.expectedMessageCount(1);
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "/somewhere")
-        .when()
-            .post()
-        .then()
-            .statusCode(200);
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testConsumeContentWithFilter(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "ep1",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_FILTER_PREFIX + httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "CE1"
-                )),
-            sourceEndpoint(
-                "ep2",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_FILTER_PREFIX + httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "CE2"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/ep1")
-                .convertBodyTo(String.class)
-                .to("log:ce1?showAll=true&multiline=true")
-                .to("mock:ce1");
-            b.from("knative:endpoint/ep2")
-                .convertBodyTo(String.class)
-                .to("log:ce2?showAll=true&multiline=true")
-                .to("mock:ce2");
-        });
-
-        context.start();
-
-        MockEndpoint mock1 = context.getEndpoint("mock:ce1", MockEndpoint.class);
-        mock1.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event");
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_ID, "myEventID1");
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "CE1");
-        mock1.expectedBodiesReceived("test");
-        mock1.expectedMessageCount(1);
-
-        MockEndpoint mock2 = context.getEndpoint("mock:ce2", MockEndpoint.class);
-        mock2.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event");
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_ID, "myEventID2");
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "CE2");
-        mock2.expectedBodiesReceived("test");
-        mock2.expectedMessageCount(1);
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID1")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "CE1")
-            .when()
-            .post()
-            .then()
-            .statusCode(200);
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID2")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "CE2")
-        .when()
-            .post()
-        .then()
-            .statusCode(200);
-
-        mock1.assertIsSatisfied();
-        mock2.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testConsumeContentWithRegExFilter(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "ep1",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_FILTER_PREFIX + httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "CE[01234]"
-                )),
-            sourceEndpoint(
-                "ep2",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_FILTER_PREFIX + httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "CE[56789]"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/ep1")
-                .convertBodyTo(String.class)
-                .to("log:ce1?showAll=true&multiline=true")
-                .to("mock:ce1");
-            b.from("knative:endpoint/ep2")
-                .convertBodyTo(String.class)
-                .to("log:ce2?showAll=true&multiline=true")
-                .to("mock:ce2");
-        });
-
-        context.start();
-
-        MockEndpoint mock1 = context.getEndpoint("mock:ce1", MockEndpoint.class);
-        mock1.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event");
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_ID, "myEventID1");
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "CE0");
-        mock1.expectedBodiesReceived("test");
-        mock1.expectedMessageCount(1);
-
-        MockEndpoint mock2 = context.getEndpoint("mock:ce2", MockEndpoint.class);
-        mock2.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event");
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_ID, "myEventID2");
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "CE5");
-        mock2.expectedBodiesReceived("test");
-        mock2.expectedMessageCount(1);
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID1")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "CE0")
-        .when()
-            .post()
-        .then()
-            .statusCode(200);
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID2")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "CE5")
-        .when()
-            .post()
-        .then()
-            .statusCode(200);
-
-        mock1.assertIsSatisfied();
-        mock2.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testConsumeEventContent(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEvent("default")
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:event/event1")
-                .convertBodyTo(String.class)
-                .to("log:ce1?showAll=true&multiline=true")
-                .to("mock:ce1");
-            b.from("knative:event/event2")
-                .convertBodyTo(String.class)
-                .to("log:ce2?showAll=true&multiline=true")
-                .to("mock:ce2");
-        });
-
-        context.start();
-
-        MockEndpoint mock1 = context.getEndpoint("mock:ce1", MockEndpoint.class);
-        mock1.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "event1");
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_ID, "myEventID1");
-        mock1.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "CE1");
-        mock1.expectedBodiesReceived("test");
-        mock1.expectedMessageCount(1);
-
-        MockEndpoint mock2 = context.getEndpoint("mock:ce2", MockEndpoint.class);
-        mock2.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "event2");
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_ID, "myEventID2");
-        mock2.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "CE2");
-        mock2.expectedBodiesReceived("test");
-        mock2.expectedMessageCount(1);
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "event1")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID1")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "CE1")
-        .when()
-            .post()
-        .then()
-            .statusCode(200);
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "event2")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID2")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "CE2")
-        .when()
-            .post()
-        .then()
-            .statusCode(200);
-
-        mock1.assertIsSatisfied();
-        mock2.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testReply(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "from",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event.from",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )),
-            endpoint(
-                Knative.EndpointKind.sink,
-                "to",
-                String.format("http://%s:%d", platformHttpHost, platformHttpPort),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event.to",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/from")
-                .convertBodyTo(String.class)
-                .setBody()
-                    .constant("consumer")
-                .setHeader(CloudEvent.CAMEL_CLOUD_EVENT_TYPE)
-                    .constant("custom");
-            b.from("direct:source")
-                .to("knative://endpoint/to")
-                .log("${body}")
-                .to("mock:to");
-        });
-
-        MockEndpoint mock = context.getEndpoint("mock:to", MockEndpoint.class);
-        mock.expectedBodiesReceived("consumer");
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event.to");
-        mock.expectedMessageCount(1);
-
-        context.start();
-        template.sendBody("direct:source", "");
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testReplyCloudEventHeaders(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "from",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )),
-            endpoint(
-                Knative.EndpointKind.sink,
-                "to",
-                String.format("http://%s:%d", platformHttpHost, platformHttpPort),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/from?replyWithCloudEvent=true")
-                .convertBodyTo(String.class)
-                .setBody()
-                    .constant("consumer")
-                .setHeader(CloudEvent.CAMEL_CLOUD_EVENT_TYPE)
-                    .constant("custom");
-            b.from("direct:source")
-                .to("knative://endpoint/to")
-                .log("${body}")
-                .to("mock:to");
-        });
-
-        MockEndpoint mock = context.getEndpoint("mock:to", MockEndpoint.class);
-        mock.expectedBodiesReceived("consumer");
-        mock.expectedHeaderReceived(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "custom");
-        mock.expectedMessageCount(1);
-
-        context.start();
-        template.sendBody("direct:source", "");
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testInvokeServiceWithoutUrl(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "test",
-                null,
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .to("knative:endpoint/test")
-                .to("mock:start");
-        });
-
-        assertThatExceptionOfType(FailedToStartRouteException.class)
-            .isThrownBy(context::start)
-            .withCauseExactlyInstanceOf(RuntimeCamelException.class);
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testInvokeNotExistingEndpoint(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "test",
-                String.format("http://%s:%d", platformHttpHost, platformHttpPort),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .to("knative:endpoint/test")
-                .to("mock:start");
-        });
-
-        context.start();
-
-        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:" + platformHttpPort);
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testRemoveConsumer(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "ep1",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_FILTER_PREFIX + "h", "h1"
-                )
-            ),
-            sourceEndpoint(
-                "ep2",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_FILTER_PREFIX + "h", "h2"
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/ep1")
-                .routeId("r1")
-                .setBody().simple("${routeId}");
-            b.from("knative:endpoint/ep2")
-                .routeId("r2")
-                .setBody().simple("${routeId}");
-        });
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .setHeader("h").body()
-                .toF("http://localhost:%d", platformHttpPort);
-        });
-
-        context.start();
-
-        assertThat(template.requestBody("direct:start", "h1", String.class)).isEqualTo("r1");
-        assertThat(template.requestBody("direct:start", "h2", String.class)).isEqualTo("r2");
-
-        context.getRouteController().stopRoute("r2");
-
-        assertThat(template.request("direct:start", e -> e.getMessage().setBody("h2"))).satisfies(e -> {
-            assertThat(e.isFailed()).isTrue();
-            assertThat(e.getException()).isInstanceOf(HttpOperationFailedException.class);
-        });
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testAddConsumer(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "ep1",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_FILTER_PREFIX + "h", "h1"
-                )
-            ),
-            sourceEndpoint(
-                "ep2",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_FILTER_PREFIX + "h", "h2"
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/ep1")
-                .routeId("r1")
-                .setBody().simple("${routeId}");
-        });
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .setHeader("h").body()
-                .toF("http://localhost:%d", platformHttpPort);
-        });
-
-        context.start();
-
-        assertThat(template.requestBody("direct:start", "h1", String.class)).isEqualTo("r1");
-        assertThat(template.request("direct:start", e -> e.getMessage().setBody("h2"))).satisfies(e -> {
-            assertThat(e.isFailed()).isTrue();
-            assertThat(e.getException()).isInstanceOf(HttpOperationFailedException.class);
-        });
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/ep2")
-                .routeId("r2")
-                .setBody().simple("${routeId}");
-        });
-
-        assertThat(template.requestBody("direct:start", "h1", String.class)).isEqualTo("r1");
-        assertThat(template.requestBody("direct:start", "h2", String.class)).isEqualTo("r2");
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testInvokeEndpointWithError(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "ep",
-                String.format("http://%s:%d", platformHttpHost, platformHttpPort),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .to("knative:endpoint/ep")
-                .to("mock:start");
-            b.fromF("platform-http:/")
-                .routeId("endpoint")
-                .process(e -> {
-                    throw new RuntimeException("endpoint error");
-                });
-        });
-
-        context.start();
-
-        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");
-        assertThat(exchange.getException()).hasMessageContaining("with statusCode: 500, statusMessage: Internal Server Error");
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testEvents(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            event(
-                Knative.EndpointKind.sink,
-                "default",
-                String.format("http://%s:%d", platformHttpHost, platformHttpPort),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )),
-            sourceEvent(
-                "default",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:source")
-                .to("knative:event/myEvent");
-            b.from("knative:event/myEvent")
-                .to("mock:ce");
-        });
-
-        context.start();
-
-        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "myEvent");
-        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_ID));
-        mock.expectedBodiesReceived("test");
-        mock.expectedMessageCount(1);
-
-        template.sendBody("direct:source", "test");
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testEventsNoName(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-                context,
-                ce,
-                event(
-                        Knative.EndpointKind.sink,
-                        "default",
-                        String.format("http://%s:%d", platformHttpHost, platformHttpPort),
-                        Map.of(
-                                Knative.CONTENT_TYPE, "text/plain"
-                        )),
-                sourceEvent(
-                        "default",
-                        Map.of(
-                                Knative.CONTENT_TYPE, "text/plain"
-                        ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:source")
-                    .to("knative:event");
-            b.from("knative:event")
-                    .to("mock:ce");
-        });
-
-        context.start();
-
-        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event");
-        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_ID));
-        mock.expectedBodiesReceived("test");
-        mock.expectedMessageCount(1);
-
-        template.sendBody("direct:source", "test");
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testEventsWithResourceRef(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            event(
-                Knative.EndpointKind.sink,
-                "default",
-                String.format("http://%s:%d", platformHttpHost, platformHttpPort),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_OBJECT_KIND, "MyObject",
-                    Knative.KNATIVE_OBJECT_API_VERSION, "v1",
-                    Knative.KNATIVE_OBJECT_NAME, "myName1"
-                )),
-            sourceEvent(
-                "default",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_OBJECT_KIND, "MyOtherObject",
-                    Knative.KNATIVE_OBJECT_API_VERSION, "v2",
-                    Knative.KNATIVE_OBJECT_NAME, "myName2"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:source")
-                .to("knative:event/myEvent?kind=MyObject&apiVersion=v1&name=myName1");
-            b.from("knative:event/myEvent?kind=MyOtherObject&apiVersion=v2&name=myName2")
-                .to("mock:ce");
-        });
-
-        context.start();
-
-        assertThat(context.getEndpoint("knative:event/myEvent?kind=MyObject&apiVersion=v1&name=myName1", KnativeEndpoint.class)).satisfies(e -> {
-            assertThat(e.getType()).isEqualTo(Knative.Type.event);
-            assertThat(e.getTypeId()).isEqualTo("myEvent");
-            assertThat(e.getConfiguration().getTypeId()).isEqualTo("myEvent");
-            assertThat(e.getConfiguration().getName()).isEqualTo("myName1");
-        });
-        assertThat(context.getEndpoint("knative:event/myEvent?kind=MyOtherObject&apiVersion=v2&name=myName2", KnativeEndpoint.class)).satisfies(e -> {
-            assertThat(e.getType()).isEqualTo(Knative.Type.event);
-            assertThat(e.getTypeId()).isEqualTo("myEvent");
-            assertThat(e.getConfiguration().getTypeId()).isEqualTo("myEvent");
-            assertThat(e.getConfiguration().getName()).isEqualTo("myName2");
-        });
-
-        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "myEvent");
-        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_ID));
-        mock.expectedBodiesReceived("test");
-        mock.expectedMessageCount(1);
-
-        template.sendBody("direct:source", "test");
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testConsumeContentWithResourceRef(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "myEndpoint",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_OBJECT_KIND, "MyObject",
-                    Knative.KNATIVE_OBJECT_API_VERSION, "v1",
-                    Knative.KNATIVE_OBJECT_NAME, "myName1"
-                )),
-            sourceEndpoint(
-                "myEndpoint",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_OBJECT_KIND, "MyObject",
-                    Knative.KNATIVE_OBJECT_API_VERSION, "v2",
-                    Knative.KNATIVE_OBJECT_NAME, "myName2"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/myEndpoint?kind=MyObject&apiVersion=v2&name=myName2")
-                .to("mock:ce");
-        });
-
-        context.start();
-
-        assertThat(context.getEndpoint("knative:endpoint/myEndpoint?kind=MyObject&apiVersion=v2&name=myName2", KnativeEndpoint.class)).satisfies(e -> {
-            assertThat(e.getType()).isEqualTo(Knative.Type.endpoint);
-            assertThat(e.getTypeId()).isEqualTo("myEndpoint");
-            assertThat(e.getConfiguration().getTypeId()).isEqualTo("myEndpoint");
-            assertThat(e.getConfiguration().getName()).isEqualTo("myName2");
-        });
-
-        MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event");
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_ID, "myEventID");
-        mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, "/somewhere");
-        mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, "text/plain");
-        mock.expectedMessagesMatches(e -> e.getMessage().getHeaders().containsKey(CloudEvent.CAMEL_CLOUD_EVENT_TIME));
-        mock.expectedBodiesReceived("test");
-        mock.expectedMessageCount(1);
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "/somewhere")
-        .when()
-            .post()
-        .then()
-            .statusCode(200);
-
-        mock.assertIsSatisfied();
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testWrongMethod(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "myEndpoint",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/myEndpoint")
-                .to("mock:ce");
-        });
-
-        context.start();
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .when()
-            .get()
-            .then()
-            .statusCode(405);
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testNoBody(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "myEndpoint",
-                String.format("http://%s:%d", platformHttpHost, platformHttpPort),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .to("knative:endpoint/myEndpoint");
-        });
-
-        context.start();
-
-        Exchange exchange = template.request("direct:start", e -> e.getMessage().setBody(null));
-        assertThat(exchange.isFailed()).isTrue();
-        assertThat(exchange.getException()).isInstanceOf(IllegalArgumentException.class);
-        assertThat(exchange.getException()).hasMessage("body must not be null");
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testNoContent(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context, event -> {
-            event.response().setStatusCode(204);
-            event.response().end("");
-        });
-
-        configureKnativeComponent(
-            context,
-            ce,
-            channel(
-                Knative.EndpointKind.source,
-                "messages",
-                null,
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )),
-            channel(
-                Knative.EndpointKind.sink,
-                "messages",
-                String.format("http://%s:%d", platformHttpHost, platformHttpPort),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )),
-            channel(
-                Knative.EndpointKind.sink,
-                "words",
-                String.format("http://%s:%d", server.getHost(), server.getPort()),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        try {
-            server.start();
-
-            RouteBuilder.addRoutes(context, b -> {
-                b.from("knative:channel/messages")
-                    .transform().simple("transformed ${body}")
-                    .log("${body}")
-                    .to("knative:channel/words");
-            });
-
-            context.start();
-
-            Exchange exchange = template.request("knative:channel/messages", e -> e.getMessage().setBody("message"));
-            assertThat(exchange.getMessage().getHeaders()).containsEntry(Exchange.HTTP_RESPONSE_CODE, 204);
-            assertThat(exchange.getMessage().getBody()).isNull();
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testNoReply(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceChannel(
-                "channel",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:channel/channel?reply=false")
-                .setBody().constant(Map.of());
-        });
-
-        context.start();
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "/somewhere")
-        .when()
-            .post()
-        .then()
-            .statusCode(204)
-            .body(is(emptyOrNullString()));
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testNoReplyMeta(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceChannel(
-                "channel",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_REPLY, "false"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:channel/channel")
-                .setBody().constant(Map.of());
-        });
-
-        context.start();
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "/somewhere")
-        .when()
-            .post()
-        .then()
-            .statusCode(204)
-            .body(is(emptyOrNullString()));
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testNoReplyMetaOverride(CloudEvent ce) throws Exception {
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceChannel(
-                "channel",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_REPLY, "true"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:channel/channel?reply=false")
-                .setBody().constant(Map.of());
-        });
-
-        context.start();
-
-        given()
-            .body("test")
-            .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID")
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "/somewhere")
-        .when()
-            .post()
-        .then()
-            .statusCode(204)
-            .body(is(emptyOrNullString()));
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testHeaders(CloudEvent ce) throws Exception {
-        final int port = AvailablePortFinder.getNextAvailable();
-        final KnativeHttpServer server = new KnativeHttpServer(context);
-
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "ep",
-                String.format("http://%s:%d", server.getHost(), server.getPort()),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .setHeader("CamelDummyHeader").constant("test")
-                .to("knative:endpoint/ep")
-                .to("direct:mock");
-            b.from("direct:mock")
-                .to("mock:ep");
-        });
-
-        context.start();
-
-        try {
-            MockEndpoint mock = context.getEndpoint("mock:ep", MockEndpoint.class);
-            mock.expectedHeaderReceived("CamelDummyHeader", "test");
-            mock.expectedMessageCount(1);
-
-            server.start();
-
-            template.sendBody("direct:start", "");
-
-            mock.assertIsSatisfied();
-
-            HttpServerRequest request = server.poll(30, TimeUnit.SECONDS);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION))).isEqualTo(ce.version());
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE))).isEqualTo("org.apache.camel.event");
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID))).isNotNull();
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE))).isNotNull();
-            assertThat(request.getHeader(Exchange.CONTENT_TYPE)).isEqualTo("text/plain");
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testHeadersInReply(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context);
-
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "ep",
-                String.format("http://%s:%d", server.getHost(), server.getPort()),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .setHeader("CamelDummyHeader").constant("test")
-                .to("knative:endpoint/ep");
-        });
-
-        context.start();
-
-        try {
-            MockEndpoint mock = context.getEndpoint("mock:ep", MockEndpoint.class);
-            mock.expectedHeaderReceived("CamelDummyHeader", "test");
-            mock.expectedMessageCount(1);
-
-            server.start();
-
-            Exchange exchange = template.request("direct:start", e -> e.getMessage().setBody("test"));
-            assertThat(exchange.getMessage().getHeaders()).containsEntry("CamelDummyHeader", "test");
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testHeadersOverrideFromEnv(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context);
-        final String typeHeaderKey = httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE);
-        final String typeHeaderVal = UUID.randomUUID().toString();
-        final String sourceHeaderKey = httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE);
-        final String sourceHeaderVal = UUID.randomUUID().toString();
-
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "ep",
-                String.format("http://%s:%d", server.getHost(), server.getPort()),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain",
-                    Knative.KNATIVE_CE_OVERRIDE_PREFIX + typeHeaderKey, typeHeaderVal,
-                    Knative.KNATIVE_CE_OVERRIDE_PREFIX + sourceHeaderKey, sourceHeaderVal
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .to("knative:endpoint/ep");
-        });
-
-        context.start();
-        try {
-            server.start();
-            template.sendBody("direct:start", "");
-
-            HttpServerRequest request = server.poll(30, TimeUnit.SECONDS);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION))).isEqualTo(ce.version());
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE))).isEqualTo(typeHeaderVal);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID))).isNotNull();
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE))).isEqualTo(sourceHeaderVal);
-            assertThat(request.getHeader(Exchange.CONTENT_TYPE)).isEqualTo("text/plain");
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testHeadersOverrideFromURI(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context);
-        final String typeHeaderKey = httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE);
-        final String typeHeaderVal = UUID.randomUUID().toString();
-        final String sourceHeaderKey = httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE);
-        final String sourceHeaderVal = UUID.randomUUID().toString();
-
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "ep",
-                String.format("http://%s:%d", server.getHost(), server.getPort()),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .toF("knative:endpoint/ep?%s=%s&%s=%s",
-                    Knative.KNATIVE_CE_OVERRIDE_PREFIX + typeHeaderKey, typeHeaderVal,
-                    Knative.KNATIVE_CE_OVERRIDE_PREFIX + sourceHeaderKey, sourceHeaderVal);
-        });
-
-        context.start();
-        try {
-            server.start();
-            template.sendBody("direct:start", "");
-
-            HttpServerRequest request = server.poll(30, TimeUnit.SECONDS);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION))).isEqualTo(ce.version());
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE))).isEqualTo(typeHeaderVal);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID))).isNotNull();
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE))).isEqualTo(sourceHeaderVal);
-            assertThat(request.getHeader(Exchange.CONTENT_TYPE)).isEqualTo("text/plain");
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testHeadersOverrideFromConf(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context);
-        final String typeHeaderKey = httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE);
-        final String typeHeaderVal = UUID.randomUUID().toString();
-        final String sourceHeaderKey = httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE);
-        final String sourceHeaderVal = UUID.randomUUID().toString();
-
-        KnativeComponent component = configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "ep",
-                String.format("http://%s:%d", server.getHost(), server.getPort()),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )
-            )
-        );
-
-        component.getConfiguration().setCeOverride(Map.of(
-            Knative.KNATIVE_CE_OVERRIDE_PREFIX + typeHeaderKey, typeHeaderVal,
-            Knative.KNATIVE_CE_OVERRIDE_PREFIX + sourceHeaderKey, sourceHeaderVal
-        ));
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .to("knative:endpoint/ep");
-        });
-
-        context.start();
-        try {
-            server.start();
-            template.sendBody("direct:start", "");
-
-            HttpServerRequest request = server.poll(30, TimeUnit.SECONDS);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION))).isEqualTo(ce.version());
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE))).isEqualTo(typeHeaderVal);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID))).isNotNull();
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE))).isEqualTo(sourceHeaderVal);
-            assertThat(request.getHeader(Exchange.CONTENT_TYPE)).isEqualTo("text/plain");
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testHeadersOverrideFromRouteWithCamelHeader(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context);
-
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "ep",
-                String.format("http://%s:%d", server.getHost(), server.getPort()),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .routeId("my-source")
-                .setHeader(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).constant("myType")
-                .to("knative:endpoint/ep");
-        });
-
-        context.start();
-        try {
-            server.start();
-            template.sendBody("direct:start", "");
-
-            HttpServerRequest request = server.poll(30, TimeUnit.SECONDS);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION))).isEqualTo(ce.version());
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE))).isEqualTo("myType");
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID))).isNotNull();
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE))).isEqualTo("my-source");
-            assertThat(request.getHeader(Exchange.CONTENT_TYPE)).isEqualTo("text/plain");
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testHeadersOverrideFromRouteWithCEHeader(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context);
-
-        configureKnativeComponent(
-            context,
-            ce,
-            endpoint(
-                Knative.EndpointKind.sink,
-                "ep",
-                String.format("http://%s:%d", server.getHost(), server.getPort()),
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                )
-            )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                .routeId("my-source-x")
-                .setHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE)).constant("fromCEHeader")
-                .setHeader(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).constant("fromCamelHeader")
-                .to("knative:endpoint/ep");
-        });
-
-        context.start();
-        try {
-            server.start();
-            template.sendBody("direct:start", "");
-
-            HttpServerRequest request = server.poll(30, TimeUnit.SECONDS);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION))).isEqualTo(ce.version());
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE))).isEqualTo("fromCEHeader");
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID))).isNotNull();
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE))).isEqualTo("my-source-x");
-            assertThat(request.getHeader(Exchange.CONTENT_TYPE)).isEqualTo("text/plain");
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testEventBridge(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context);
-
-        configureKnativeComponent(
-            context,
-            ce,
-            event(
-                Knative.EndpointKind.sink,
-                "event.sink",
-                String.format("http://%s:%d", server.getHost(), server.getPort()),
-                Map.of(
-                    Knative.CONTENT_TYPE, "text/plain"
-                )),
-            sourceEvent(
-                "event.source",
-                Map.of(
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:event/event.source")
-                .to("knative:event/event.sink");
-        });
-
-        context.start();
-
-        try {
-            server.start();
-
-            given()
-                .body("test")
-                .header(Exchange.CONTENT_TYPE, "text/plain")
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "event.source")
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID")
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "/somewhere")
-            .when()
-                .post()
-            .then()
-                .statusCode(204);
-
-            HttpServerRequest request = server.poll(30, TimeUnit.SECONDS);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION))).isEqualTo(ce.version());
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE))).isEqualTo("event.sink");
-            assertThat(request.getHeader(Exchange.CONTENT_TYPE)).isEqualTo("text/plain");
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testDynamicEventBridge(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context);
-
-        configureKnativeComponent(
-            context,
-            ce,
-            event(
-                Knative.EndpointKind.sink,
-                "default",
-                String.format("http://%s:%d", server.getHost(), server.getPort()),
-                Map.of(
-                    Knative.CONTENT_TYPE, "text/plain"
-                )),
-            sourceEvent(
-                "event.source",
-                Map.of(
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:event/event.source")
-                .setHeader(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).constant("event.sink")
-                .to("knative:event");
-        });
-
-        context.start();
-
-        try {
-            server.start();
-
-            given()
-                .body("test")
-                .header(Exchange.CONTENT_TYPE, "text/plain")
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "event.source")
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID")
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "/somewhere")
-            .when()
-                .post()
-            .then()
-                .statusCode(204);
-
-            HttpServerRequest request = server.poll(30, TimeUnit.SECONDS);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION))).isEqualTo(ce.version());
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE))).isEqualTo("event.sink");
-            assertThat(request.getHeader(Exchange.CONTENT_TYPE)).isEqualTo("text/plain");
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testEventDefaultType(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context);
-
-        configureKnativeComponent(
-                context,
-                ce,
-                event(
-                        Knative.EndpointKind.sink,
-                        "default",
-                        String.format("http://%s:%d", server.getHost(), server.getPort()),
-                        Map.of(
-                                Knative.CONTENT_TYPE, "text/plain"
-                        )
-                )
-        );
-
-        RouteBuilder.addRoutes(context, b -> {
-            b.from("direct:start")
-                    .to("knative:event");
-        });
-
-        context.start();
-        try {
-            server.start();
-            template.sendBody("direct:start", "");
-
-            HttpServerRequest request = server.poll(30, TimeUnit.SECONDS);
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION))).isEqualTo(ce.version());
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE))).isEqualTo("org.apache.camel.event");
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID))).isNotNull();
-            assertThat(request.getHeader(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE))).isNotNull();
-            assertThat(request.getHeader(Exchange.CONTENT_TYPE)).isEqualTo("text/plain");
-        } finally {
-            server.stop();
-        }
-    }
-
-    @ParameterizedTest
-    @EnumSource(CloudEvents.class)
-    void testSlowConsumer(CloudEvent ce) throws Exception {
-        final KnativeHttpServer server = new KnativeHttpServer(context, event -> {
-            event.vertx().executeBlocking(
-                promise -> {
-                    try {
-                        Thread.sleep(5000);
-                        promise.complete();
-                    } catch (InterruptedException e) {
-                        promise.fail(e);
-                    }
-                },
-                false,
-                result -> {
-                    event.response().setStatusCode(200);
-                    event.response().end("");
-                }
-            );
-        });
-
-        configureKnativeComponent(
-            context,
-            ce,
-            sourceEndpoint(
-                "start",
-                Map.of(
-                    Knative.KNATIVE_CLOUD_EVENT_TYPE, "org.apache.camel.event",
-                    Knative.CONTENT_TYPE, "text/plain"
-                ))
-        );
-
-        try {
-            server.start();
-
-            RouteBuilder.addRoutes(context, b -> {
-                b.from("knative:endpoint/start")
-                    .removeHeaders("Camel*")
-                    .toF("http://%s:%d", server.getHost(), server.getPort());
-            });
-
-            context.start();
-
-            given()
-                .body("test")
-                .header(Exchange.CONTENT_TYPE, "text/plain")
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_VERSION), ce.version())
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID")
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-                .header(httpAttribute(ce, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "/somewhere")
-                .when()
-                    .post()
-                .then()
-                    .statusCode(200);
-        } finally {
-            server.stop();
-        }
-    }
-}
-
diff --git a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTestSupport.java b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTestSupport.java
deleted file mode 100644
index 2ffc2b5..0000000
--- a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTestSupport.java
+++ /dev/null
@@ -1,106 +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.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Consumer;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.component.cloudevents.CloudEvent;
-import org.apache.camel.component.knative.KnativeComponent;
-import org.apache.camel.component.knative.spi.KnativeEnvironment;
-import org.apache.camel.component.knative.spi.KnativeResource;
-import org.apache.camel.component.knative.spi.KnativeTransportConfiguration;
-import org.apache.camel.component.platform.http.PlatformHttpComponent;
-import org.apache.camel.component.platform.http.PlatformHttpConstants;
-import org.apache.camel.component.platform.http.vertx.VertxPlatformHttpEngine;
-import org.apache.camel.component.platform.http.vertx.VertxPlatformHttpRouter;
-import org.apache.camel.component.platform.http.vertx.VertxPlatformHttpServer;
-import org.apache.camel.component.platform.http.vertx.VertxPlatformHttpServerConfiguration;
-
-public final class KnativeHttpTestSupport {
-    private KnativeHttpTestSupport() {
-    }
-
-    public static KnativeComponent configureKnativeComponent(CamelContext context, CloudEvent ce, KnativeResource... definitions) {
-        return configureKnativeComponent(context, ce, Arrays.asList(definitions));
-    }
-
-    public static KnativeComponent configureKnativeComponent(CamelContext context, CloudEvent ce, Map<String, Object> properties) {
-        return configureKnativeComponent(context, ce, KnativeEnvironment.mandatoryLoadFromProperties(context, properties));
-    }
-
-    public static KnativeComponent configureKnativeComponent(CamelContext context, CloudEvent ce, List<KnativeResource> definitions) {
-        return configureKnativeComponent(context, ce, new KnativeEnvironment(definitions));
-    }
-
-    public static KnativeComponent configureKnativeComponent(CamelContext context, CloudEvent ce, KnativeEnvironment environment) {
-        KnativeComponent component = context.getComponent("knative", KnativeComponent.class);
-        component.setCloudEventsSpecVersion(ce.version());
-        component.setEnvironment(environment);
-        component.setConsumerFactory(new KnativeHttpConsumerFactory() {
-            @Override
-            public Consumer createConsumer(Endpoint endpoint, KnativeTransportConfiguration config, KnativeResource service, Processor processor) {
-                this.setRouter(VertxPlatformHttpRouter.lookup(context));
-                return super.createConsumer(endpoint, config, service, processor);
-            }
-        });
-        component.setProducerFactory(new KnativeHttpProducerFactory() {
-            @Override
-            public Producer createProducer(Endpoint endpoint, KnativeTransportConfiguration config, KnativeResource service) {
-                this.setVertx(VertxPlatformHttpRouter.lookup(context).vertx());
-                return super.createProducer(endpoint, config, service);
-            }
-        });
-
-        return component;
-    }
-
-    public static String httpAttribute(CloudEvent ce, String name) {
-        return ce.mandatoryAttribute(name).http();
-    }
-
-    public static void configurePlatformHttpComponent(CamelContext camelContext, int bindPort) {
-        VertxPlatformHttpServerConfiguration configuration = new VertxPlatformHttpServerConfiguration();
-        configuration.setBindPort(bindPort);
-
-        try {
-            camelContext.addService(new VertxPlatformHttpServer(configuration) {
-                @Override
-                protected void doInit() throws Exception {
-                    initializeServer();
-                }
-                @Override
-                protected void doStart() throws Exception {
-                    startServer();
-                }
-            });
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-        PlatformHttpComponent component = new PlatformHttpComponent(camelContext);
-        component.setEngine(new VertxPlatformHttpEngine());
-
-        camelContext.getRegistry().bind(PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME, component);
-    }
-}
diff --git a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/assertions/HttpServerRequestAssert.java b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/assertions/HttpServerRequestAssert.java
deleted file mode 100644
index 3666e5e..0000000
--- a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/assertions/HttpServerRequestAssert.java
+++ /dev/null
@@ -1,64 +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.assertions;
-
-import java.util.Objects;
-
-import io.vertx.core.http.HttpServerRequest;
-import org.assertj.core.api.AbstractAssert;
-import org.assertj.core.api.AbstractStringAssert;
-import org.assertj.core.api.AssertionsForClassTypes;
-
-public class HttpServerRequestAssert extends AbstractAssert<HttpServerRequestAssert, HttpServerRequest> {
-    public HttpServerRequestAssert(HttpServerRequest request) {
-        super(request, HttpServerRequest.class);
-    }
-
-    public static HttpServerRequestAssert assertThat(HttpServerRequest actual) {
-        return new HttpServerRequestAssert(actual);
-    }
-
-    public AbstractStringAssert<?> header(String name) {
-        isNotNull();
-
-        return AssertionsForClassTypes.assertThat(actual.getHeader(name));
-    }
-
-    public HttpServerRequestAssert hasHeader(String name) {
-        isNotNull();
-
-        if (Objects.isNull(actual.getHeader(name))) {
-            failWithMessage("Expected header %s not present", name);
-        }
-
-        return this;
-    }
-
-    public HttpServerRequestAssert hasHeader(String name, String value) {
-        isNotNull();
-
-        if (Objects.isNull(actual.getHeader(name))) {
-            failWithMessage("Expected header %s not present", name);
-        }
-
-        if (Objects.equals(actual.getHeader(name), value)) {
-            failWithMessage("Expected header %s to be <%s> but was <%s>", name, value, actual.getHeader(name));
-        }
-
-        return this;
-    }
-}
diff --git a/components/camel-knative/camel-knative-http/src/test/resources/log4j2-test.xml b/components/camel-knative/camel-knative-http/src/test/resources/log4j2-test.xml
deleted file mode 100644
index 8c95e54..0000000
--- a/components/camel-knative/camel-knative-http/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<Configuration status="INFO">
-  <Appenders>
-    <Console name="STDOUT" target="SYSTEM_OUT">
-      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%t|%c{1} - %msg%n"/>
-    </Console>
-    <Null name="NONE"/>
-  </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="NONE"/>
-    </Root>
-  </Loggers>
-
-</Configuration>
\ No newline at end of file
diff --git a/components/camel-knative/camel-knative-test/pom.xml b/components/camel-knative/camel-knative-test/pom.xml
index c2393a1..e59c61c 100644
--- a/components/camel-knative/camel-knative-test/pom.xml
+++ b/components/camel-knative/camel-knative-test/pom.xml
@@ -30,7 +30,7 @@
     <dependencies>
 
         <dependency>
-            <groupId>org.apache.camel.k</groupId>
+            <groupId>org.apache.camel</groupId>
             <artifactId>camel-knative-api</artifactId>
         </dependency>
 
diff --git a/components/camel-knative/camel-knative/pom.xml b/components/camel-knative/camel-knative/pom.xml
deleted file mode 100644
index 5ee60a0..0000000
--- a/components/camel-knative/camel-knative/pom.xml
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.apache.camel.k</groupId>
-        <artifactId>camel-knative-parent</artifactId>
-        <version>1.13.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>camel-knative</artifactId>
-
-    <dependencies>
-
-        <!-- ****************************** -->
-        <!--                                -->
-        <!-- RUNTIME                        -->
-        <!--                                -->
-        <!-- ****************************** -->
-
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-engine</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-cloud</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-knative-api</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.datatype</groupId>
-            <artifactId>jackson-datatype-jdk8</artifactId>
-        </dependency>
-
-        <!-- ****************************** -->
-        <!--                                -->
-        <!-- TESTS                          -->
-        <!--                                -->
-        <!-- ****************************** -->
-
-        <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-knative-test</artifactId>
-            <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>
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-component-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>generate</id>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <phase>process-classes</phase>
-                    </execution>
-                </executions>
-            </plugin>
-            <!--
-            TODO: re-enable after fix for https://issues.apache.org/jira/browse/CAMEL-15706
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-package-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>update-readme</id>
-                        <goals>
-                            <goal>update-readme</goal>
-                        </goals>
-                        <phase>process-classes</phase>
-                    </execution>
-                </executions>
-            </plugin>
-            -->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                            <goal>add-resource</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>src/generated/java</source>
-                            </sources>
-                            <resources>
-                                <resource>
-                                    <directory>src/generated/resources</directory>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
diff --git a/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeComponentConfigurer.java b/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeComponentConfigurer.java
deleted file mode 100644
index 7834929..0000000
--- a/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeComponentConfigurer.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.knative;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class KnativeComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    private org.apache.camel.component.knative.KnativeConfiguration getOrCreateConfiguration(KnativeComponent target) {
-        if (target.getConfiguration() == null) {
-            target.setConfiguration(new org.apache.camel.component.knative.KnativeConfiguration());
-        }
-        return target.getConfiguration();
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        KnativeComponent target = (KnativeComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "apiversion":
-        case "apiVersion": getOrCreateConfiguration(target).setApiVersion(property(camelContext, java.lang.String.class, value)); return true;
-        case "autowiredenabled":
-        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "ceoverride":
-        case "ceOverride": getOrCreateConfiguration(target).setCeOverride(property(camelContext, java.util.Map.class, value)); return true;
-        case "cloudeventsspecversion":
-        case "cloudEventsSpecVersion": getOrCreateConfiguration(target).setCloudEventsSpecVersion(property(camelContext, java.lang.String.class, value)); return true;
-        case "cloudeventstype":
-        case "cloudEventsType": getOrCreateConfiguration(target).setCloudEventsType(property(camelContext, java.lang.String.class, value)); return true;
-        case "configuration": target.setConfiguration(property(camelContext, org.apache.camel.component.knative.KnativeConfiguration.class, value)); return true;
-        case "consumerfactory":
-        case "consumerFactory": target.setConsumerFactory(property(camelContext, org.apache.camel.component.knative.spi.KnativeConsumerFactory.class, value)); return true;
-        case "environment": getOrCreateConfiguration(target).setEnvironment(property(camelContext, org.apache.camel.component.knative.spi.KnativeEnvironment.class, value)); return true;
-        case "environmentpath":
-        case "environmentPath": target.setEnvironmentPath(property(camelContext, java.lang.String.class, value)); return true;
-        case "filters": getOrCreateConfiguration(target).setFilters(property(camelContext, java.util.Map.class, value)); return true;
-        case "kind": getOrCreateConfiguration(target).setKind(property(camelContext, java.lang.String.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "name": getOrCreateConfiguration(target).setName(property(camelContext, java.lang.String.class, value)); return true;
-        case "producerfactory":
-        case "producerFactory": target.setProducerFactory(property(camelContext, org.apache.camel.component.knative.spi.KnativeProducerFactory.class, value)); return true;
-        case "reply": getOrCreateConfiguration(target).setReply(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "replywithcloudevent":
-        case "replyWithCloudEvent": getOrCreateConfiguration(target).setReplyWithCloudEvent(property(camelContext, boolean.class, value)); return true;
-        case "transportoptions":
-        case "transportOptions": getOrCreateConfiguration(target).setTransportOptions(property(camelContext, java.util.Map.class, value)); return true;
-        case "typeid":
-        case "typeId": getOrCreateConfiguration(target).setTypeId(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "apiversion":
-        case "apiVersion": return java.lang.String.class;
-        case "autowiredenabled":
-        case "autowiredEnabled": return boolean.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "ceoverride":
-        case "ceOverride": return java.util.Map.class;
-        case "cloudeventsspecversion":
-        case "cloudEventsSpecVersion": return java.lang.String.class;
-        case "cloudeventstype":
-        case "cloudEventsType": return java.lang.String.class;
-        case "configuration": return org.apache.camel.component.knative.KnativeConfiguration.class;
-        case "consumerfactory":
-        case "consumerFactory": return org.apache.camel.component.knative.spi.KnativeConsumerFactory.class;
-        case "environment": return org.apache.camel.component.knative.spi.KnativeEnvironment.class;
-        case "environmentpath":
-        case "environmentPath": return java.lang.String.class;
-        case "filters": return java.util.Map.class;
-        case "kind": return java.lang.String.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "name": return java.lang.String.class;
-        case "producerfactory":
-        case "producerFactory": return org.apache.camel.component.knative.spi.KnativeProducerFactory.class;
-        case "reply": return java.lang.Boolean.class;
-        case "replywithcloudevent":
-        case "replyWithCloudEvent": return boolean.class;
-        case "transportoptions":
-        case "transportOptions": return java.util.Map.class;
-        case "typeid":
-        case "typeId": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        KnativeComponent target = (KnativeComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "apiversion":
-        case "apiVersion": return getOrCreateConfiguration(target).getApiVersion();
-        case "autowiredenabled":
-        case "autowiredEnabled": return target.isAutowiredEnabled();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "ceoverride":
-        case "ceOverride": return getOrCreateConfiguration(target).getCeOverride();
-        case "cloudeventsspecversion":
-        case "cloudEventsSpecVersion": return getOrCreateConfiguration(target).getCloudEventsSpecVersion();
-        case "cloudeventstype":
-        case "cloudEventsType": return getOrCreateConfiguration(target).getCloudEventsType();
-        case "configuration": return target.getConfiguration();
-        case "consumerfactory":
-        case "consumerFactory": return target.getConsumerFactory();
-        case "environment": return getOrCreateConfiguration(target).getEnvironment();
-        case "environmentpath":
-        case "environmentPath": return target.getEnvironmentPath();
-        case "filters": return getOrCreateConfiguration(target).getFilters();
-        case "kind": return getOrCreateConfiguration(target).getKind();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "name": return getOrCreateConfiguration(target).getName();
-        case "producerfactory":
-        case "producerFactory": return target.getProducerFactory();
-        case "reply": return getOrCreateConfiguration(target).getReply();
-        case "replywithcloudevent":
-        case "replyWithCloudEvent": return getOrCreateConfiguration(target).isReplyWithCloudEvent();
-        case "transportoptions":
-        case "transportOptions": return getOrCreateConfiguration(target).getTransportOptions();
-        case "typeid":
-        case "typeId": return getOrCreateConfiguration(target).getTypeId();
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "ceoverride":
-        case "ceOverride": return java.lang.String.class;
-        case "filters": return java.lang.String.class;
-        case "transportoptions":
-        case "transportOptions": return java.lang.Object.class;
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeEndpointConfigurer.java b/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeEndpointConfigurer.java
deleted file mode 100644
index 14d0184..0000000
--- a/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeEndpointConfigurer.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.knative;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class KnativeEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        KnativeEndpoint target = (KnativeEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "apiversion":
-        case "apiVersion": target.getConfiguration().setApiVersion(property(camelContext, java.lang.String.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "ceoverride":
-        case "ceOverride": target.getConfiguration().setCeOverride(property(camelContext, java.util.Map.class, value)); return true;
-        case "cloudeventsspecversion":
-        case "cloudEventsSpecVersion": target.getConfiguration().setCloudEventsSpecVersion(property(camelContext, java.lang.String.class, value)); return true;
-        case "cloudeventstype":
-        case "cloudEventsType": target.getConfiguration().setCloudEventsType(property(camelContext, java.lang.String.class, value)); return true;
-        case "environment": target.getConfiguration().setEnvironment(property(camelContext, org.apache.camel.component.knative.spi.KnativeEnvironment.class, value)); return true;
-        case "exceptionhandler":
-        case "exceptionHandler": target.setExceptionHandler(property(camelContext, org.apache.camel.spi.ExceptionHandler.class, value)); return true;
-        case "exchangepattern":
-        case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
-        case "filters": target.getConfiguration().setFilters(property(camelContext, java.util.Map.class, value)); return true;
-        case "kind": target.getConfiguration().setKind(property(camelContext, java.lang.String.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "name": target.getConfiguration().setName(property(camelContext, java.lang.String.class, value)); return true;
-        case "reply": target.getConfiguration().setReply(property(camelContext, java.lang.Boolean.class, value)); return true;
-        case "replywithcloudevent":
-        case "replyWithCloudEvent": target.getConfiguration().setReplyWithCloudEvent(property(camelContext, boolean.class, value)); return true;
-        case "transportoptions":
-        case "transportOptions": target.getConfiguration().setTransportOptions(property(camelContext, java.util.Map.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "apiversion":
-        case "apiVersion": return java.lang.String.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "ceoverride":
-        case "ceOverride": return java.util.Map.class;
-        case "cloudeventsspecversion":
-        case "cloudEventsSpecVersion": return java.lang.String.class;
-        case "cloudeventstype":
-        case "cloudEventsType": return java.lang.String.class;
-        case "environment": return org.apache.camel.component.knative.spi.KnativeEnvironment.class;
-        case "exceptionhandler":
-        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
-        case "exchangepattern":
-        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
-        case "filters": return java.util.Map.class;
-        case "kind": return java.lang.String.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "name": return java.lang.String.class;
-        case "reply": return java.lang.Boolean.class;
-        case "replywithcloudevent":
-        case "replyWithCloudEvent": return boolean.class;
-        case "transportoptions":
-        case "transportOptions": return java.util.Map.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        KnativeEndpoint target = (KnativeEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "apiversion":
-        case "apiVersion": return target.getConfiguration().getApiVersion();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "ceoverride":
-        case "ceOverride": return target.getConfiguration().getCeOverride();
-        case "cloudeventsspecversion":
-        case "cloudEventsSpecVersion": return target.getConfiguration().getCloudEventsSpecVersion();
-        case "cloudeventstype":
-        case "cloudEventsType": return target.getConfiguration().getCloudEventsType();
-        case "environment": return target.getConfiguration().getEnvironment();
-        case "exceptionhandler":
-        case "exceptionHandler": return target.getExceptionHandler();
-        case "exchangepattern":
-        case "exchangePattern": return target.getExchangePattern();
-        case "filters": return target.getConfiguration().getFilters();
-        case "kind": return target.getConfiguration().getKind();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "name": return target.getConfiguration().getName();
-        case "reply": return target.getConfiguration().getReply();
-        case "replywithcloudevent":
-        case "replyWithCloudEvent": return target.getConfiguration().isReplyWithCloudEvent();
-        case "transportoptions":
-        case "transportOptions": return target.getConfiguration().getTransportOptions();
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "ceoverride":
-        case "ceOverride": return java.lang.String.class;
-        case "filters": return java.lang.String.class;
-        case "transportoptions":
-        case "transportOptions": return java.lang.Object.class;
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-knative/camel-knative/src/generated/resources/META-INF/services/org/apache/camel/component/knative b/components/camel-knative/camel-knative/src/generated/resources/META-INF/services/org/apache/camel/component/knative
deleted file mode 100644
index ef9a34e..0000000
--- a/components/camel-knative/camel-knative/src/generated/resources/META-INF/services/org/apache/camel/component/knative
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.knative.KnativeComponent
diff --git a/components/camel-knative/camel-knative/src/generated/resources/META-INF/services/org/apache/camel/configurer/knative-component b/components/camel-knative/camel-knative/src/generated/resources/META-INF/services/org/apache/camel/configurer/knative-component
deleted file mode 100644
index d0fea09..0000000
--- a/components/camel-knative/camel-knative/src/generated/resources/META-INF/services/org/apache/camel/configurer/knative-component
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.knative.KnativeComponentConfigurer
diff --git a/components/camel-knative/camel-knative/src/generated/resources/META-INF/services/org/apache/camel/configurer/knative-endpoint b/components/camel-knative/camel-knative/src/generated/resources/META-INF/services/org/apache/camel/configurer/knative-endpoint
deleted file mode 100644
index 9aac63b..0000000
--- a/components/camel-knative/camel-knative/src/generated/resources/META-INF/services/org/apache/camel/configurer/knative-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.knative.KnativeEndpointConfigurer
diff --git a/components/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json b/components/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
deleted file mode 100644
index 8ed9460..0000000
--- a/components/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "knative",
-    "title": "Knative",
-    "description": "This component allows to interact with Knative.",
-    "deprecated": false,
-    "firstVersion": "3.0.0",
-    "label": "cloud",
-    "javaType": "org.apache.camel.component.knative.KnativeComponent",
-    "supportLevel": "Preview",
-    "groupId": "org.apache.camel.k",
-    "artifactId": "camel-knative",
-    "version": "1.13.0-SNAPSHOT",
-    "scheme": "knative",
-    "extendsScheme": "",
-    "syntax": "knative:type\/typeId",
-    "async": false,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": false,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "ceOverride": { "kind": "property", "displayName": "Ce Override", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.String>", "prefix": "ce.override.", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "CloudEvent headers to override" },
-    "cloudEventsSpecVersion": { "kind": "property", "displayName": "Cloud Events Spec Version", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "0.1", "0.2", "0.3", "1.0" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1.0", "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the version of the cloudevents spec." },
-    "cloudEventsType": { "kind": "property", "displayName": "Cloud Events Type", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.camel.event", "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the event-type information of the produced events." },
-    "configuration": { "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.KnativeConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "Set the configuration." },
-    "consumerFactory": { "kind": "property", "displayName": "Consumer Factory", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.KnativeConsumerFactory", "deprecated": false, "autowired": false, "secret": false, "description": "The protocol consumer factory." },
-    "environment": { "kind": "property", "displayName": "Environment", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.KnativeEnvironment", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The environment" },
-    "environmentPath": { "kind": "property", "displayName": "Environment Path", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The path ot the environment definition" },
-    "filters": { "kind": "property", "displayName": "Filters", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.String>", "prefix": "filter.", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the filters." },
-    "producerFactory": { "kind": "property", "displayName": "Producer Factory", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.KnativeProducerFactory", "deprecated": false, "autowired": false, "secret": false, "description": "The protocol producer factory." },
-    "transportOptions": { "kind": "property", "displayName": "Transport Options", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "transport.", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the transport options." },
-    "typeId": { "kind": "property", "displayName": "Type Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The name of the service to lookup from the KnativeEnvironment." },
-    "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 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 the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored." },
-    "replyWithCloudEvent": { "kind": "property", "displayName": "Reply With Cloud Event", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Transforms the reply into a cloud event that will be processed by the caller. When listening to events from a Knative Broker, if this flag is enabled, replies will be published to the same Broker where the request comes from (beware that if you don't change the type of the received message, you may create a loop and receive your same reply). When this flag is disabled, CloudEvent headers are removed from the reply." },
-    "reply": { "kind": "property", "displayName": "Reply", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "true", "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "If the consumer should construct a full reply to knative request." },
-    "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 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 route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." },
-    "apiVersion": { "kind": "property", "displayName": "Api Version", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The version of the k8s resource referenced by the endpoint." },
-    "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." },
-    "kind": { "kind": "property", "displayName": "Kind", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The type of the k8s resource referenced by the endpoint." },
-    "name": { "kind": "property", "displayName": "Name", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The name of the k8s resource referenced by the endpoint." }
-  },
-  "properties": {
-    "type": { "kind": "path", "displayName": "Type", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.Knative.Type", "enum": [ "endpoint", "channel", "event" ], "deprecated": false, "autowired": false, "secret": false, "description": "The Knative resource type" },
-    "typeId": { "kind": "path", "displayName": "Type Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The identifier of the Knative resource" },
-    "ceOverride": { "kind": "parameter", "displayName": "Ce Override", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.String>", "prefix": "ce.override.", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "CloudEvent headers to override" },
-    "cloudEventsSpecVersion": { "kind": "parameter", "displayName": "Cloud Events Spec Version", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "0.1", "0.2", "0.3", "1.0" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1.0", "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the version of the cloudevents spec." },
-    "cloudEventsType": { "kind": "parameter", "displayName": "Cloud Events Type", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "org.apache.camel.event", "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the event-type information of the produced events." },
-    "environment": { "kind": "parameter", "displayName": "Environment", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.KnativeEnvironment", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The environment" },
-    "filters": { "kind": "parameter", "displayName": "Filters", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.String>", "prefix": "filter.", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the filters." },
-    "transportOptions": { "kind": "parameter", "displayName": "Transport Options", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "transport.", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the transport options." },
-    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 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 the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored." },
-    "replyWithCloudEvent": { "kind": "parameter", "displayName": "Reply With Cloud Event", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Transforms the reply into a cloud event that will be processed by the caller. When listening to events from a Knative Broker, if this flag is enabled, replies will be published to the same Broker where the request comes from (beware that if you don't change the type of the received message, you may create a loop and receive your same reply). When this flag is disabled, CloudEvent headers are removed from the reply." },
-    "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored." },
-    "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
-    "reply": { "kind": "parameter", "displayName": "Reply", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "true", "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "If the consumer should construct a full reply to knative request." },
-    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 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 route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." },
-    "apiVersion": { "kind": "parameter", "displayName": "Api Version", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The version of the k8s resource referenced by the endpoint." },
-    "kind": { "kind": "parameter", "displayName": "Kind", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The type of the k8s resource referenced by the endpoint." },
-    "name": { "kind": "parameter", "displayName": "Name", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The name of the k8s resource referenced by the endpoint." }
-  }
-}
diff --git a/components/camel-knative/camel-knative/src/main/docs/knative-component.adoc b/components/camel-knative/camel-knative/src/main/docs/knative-component.adoc
deleted file mode 100644
index ac63eef..0000000
--- a/components/camel-knative/camel-knative/src/main/docs/knative-component.adoc
+++ /dev/null
@@ -1,235 +0,0 @@
-[[knative-component]]
-= Knative Component
-:docTitle: Knative
-:artifactId: camel-knative
-:description: This component allows to interact with Knative.
-:since: 3.0
-:supportLevel: Preview
-:component-header: Both producer and consumer are supported
-
-*Since Camel {since}*
-
-*{component-header}*
-
-The Knative component provides support for interacting with https://knative.dev/[Knative].
-
-Maven users will need to add the following dependency to their `pom.xml`
-for this component.
-
-[source,xml]
-------------------------------------------------------------
-<dependency>
-    <groupId>org.apache.camel.k</groupId>
-    <artifactId>camel-knative</artifactId>
-    <version>x.x.x</version>
-    <!-- use the same version as your Camel K version -->
-</dependency>
-------------------------------------------------------------
-
-== URI format
-
-[source]
-----
-knative:type/name[?options]
-----
-
-You can append query options to the URI in the following format:
-
-[source]
-------------------------------------------------------------
-?option=value&option=value&...
-------------------------------------------------------------
-
-== Options
-
-// component options: START
-The Knative component supports 18 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *ceOverride* (common) | CloudEvent headers to override |  | Map
-| *cloudEventsSpecVersion* (common) | Set the version of the cloudevents spec. The value can be one of: 0.1, 0.2, 0.3, 1.0 | 1.0 | String
-| *cloudEventsType* (common) | Set the event-type information of the produced events. | org.apache.camel.event | String
-| *configuration* (common) | Set the configuration. |  | KnativeConfiguration
-| *consumerFactory* (common) | The protocol consumer factory. |  | KnativeConsumerFactory
-| *environment* (common) | The environment |  | KnativeEnvironment
-| *environmentPath* (common) | The path ot the environment definition |  | String
-| *filters* (common) | Set the filters. |  | Map
-| *producerFactory* (common) | The protocol producer factory. |  | KnativeProducerFactory
-| *serviceName* (common) | The name of the service to lookup from the KnativeEnvironment. |  | String
-| *transportOptions* (common) | Set the transport options. |  | Map
-| *bridgeErrorHandler* (consumer) | 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 the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *replyWithCloudEvent* (consumer) | Transforms the reply into a cloud event that will be processed by the caller. When listening to events from a Knative Broker, if this flag is enabled, replies will be published to the same Broker where the request comes from (beware that if you don't change the type of the received message, you may create a loop and receive your same reply). When this flag is disabled, CloudEvent headers are removed from the reply. | false | boolean
-| *reply* (consumer) | If the consumer should construct a full reply to knative request. | true | Boolean
-| *lazyStartProducer* (producer) | 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 route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
-| *apiVersion* (advanced) | The version of the k8s resource referenced by the endpoint. |  | String
-| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *kind* (advanced) | The type of the k8s resource referenced by the endpoint. |  | String
-|===
-// component options: END
-
-// endpoint options: START
-The Knative endpoint is configured using URI syntax:
-
-----
-knative:type/name
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (2 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *type* | The Knative resource type. The value can be one of: endpoint, channel, event |  | Type
-| *name* | The name that identifies the Knative resource |  | String
-|===
-
-
-=== Query Parameters (17 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *ceOverride* (common) | CloudEvent headers to override |  | Map
-| *cloudEventsSpecVersion* (common) | Set the version of the cloudevents spec. The value can be one of: 0.1, 0.2, 0.3, 1.0 | 1.0 | String
-| *cloudEventsType* (common) | Set the event-type information of the produced events. | org.apache.camel.event | String
-| *environment* (common) | The environment |  | KnativeEnvironment
-| *filters* (common) | Set the filters. |  | Map
-| *serviceName* (common) | The name of the service to lookup from the KnativeEnvironment. |  | String
-| *transportOptions* (common) | Set the transport options. |  | Map
-| *bridgeErrorHandler* (consumer) | 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 the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *replyWithCloudEvent* (consumer) | Transforms the reply into a cloud event that will be processed by the caller. When listening to events from a Knative Broker, if this flag is enabled, replies will be published to the same Broker where the request comes from (beware that if you don't change the type of the received message, you may create a loop and receive your same reply). When this flag is disabled, CloudEvent headers are removed from the reply. | false | boolean
-| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
-| *reply* (consumer) | If the consumer should construct a full reply to knative request. | true | Boolean
-| *lazyStartProducer* (producer) | 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 route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
-| *apiVersion* (advanced) | The version of the k8s resource referenced by the endpoint. |  | String
-| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
-| *kind* (advanced) | The type of the k8s resource referenced by the endpoint. |  | String
-| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-|===
-// endpoint options: END
-
-
-== Supported Knative resources
-
-The component support the following Knative resources you can target or exposes using the `type` path parameter:
-
-- **channel** allow producing or consuming events to or from a https://knative.dev/docs/eventing/channels/[**Knative Channel**]
-- **endpoint** allow exposing or targeting serverless workloads using https://knative.dev/docs/serving/spec/knative-api-specification-1.0/#service[**Knative Services**]
-- **event** allow producing or consuming events to or from a https://knative.dev/docs/eventing/broker[**Knative Broker**]
-
-== Knative Environment
-
-As the Knative component hides the technical details of how to communicate with Knative services to the user (protocols, addresses, etc.), it needs some metadata that describe the Knative environment to set-up the low level transport details. In order to do so, the component needs a so called `Knative Environment` which is essence is a Json document made by a number of `service` elements which looks like the below example:
-
-[source,json]
-------------------------------------------------------------
-{
-    "services": [
-        {
-             "type": "channel|endpoint|event", <1>
-             "name": "", <2>
-             "metadata": {
-                 "service.url": "http://my-service.svc.cluster.local" <3>
-                 "knative.event.type": "", <4>
-                 "camel.endpoint.kind": "source|sink", <5>
-             }
-        }, {
-            ...
-        }
-    ]
-}
-------------------------------------------------------------
-<1> the type of the Knative resource
-<2> the name of the resource
-<3> the url of the service to invoke (for producer only)
-<4> the Knative event type received or produced by the component
-<5> the type of the Camel Endpoint associated to this Knative resource (source=consumer, sink=producer)
-
-The `metadata` fields has some additional advanced fields:
-
-[width="100%",cols="1,5,3",options="header"]
-|===
-| Name | Description | Example
-| *filter.*
-| The prefix to define filters to be applied to the incoming message headers.
-| ```filter.ce.source=my-source```
-
-| *knative.kind*
-| The type of the k8s resource referenced by the endpoint.
-| ```knative.kind=InMemoryChannel```
-
-| *knative.apiVersion*
-| The version of the k8s resource referenced by the endpoint
-| ```knative.apiVersion=messaging.knative.dev/v1beta1```
-
-| *knative.reply*
-| If the consumer should construct a full reply to knative request.
-| ```knative.reply=false```
-
-| *ce.override.*
-| The prefix to define CloudEvents values that have to be overridden.
-| ```ce.override.ce-type=MyType```
-
-|===
-
-== Knative Transport
-
-As today the component only support `http` as transport as it is the only supported protocol on Knative side but the transport is pluggable by implementing the following interface:
-
-[source,java]
-----
-
-public interface KnativeTransport extends Service {
-    /**
-     * Create a camel {@link org.apache.camel.Producer} in place of the original endpoint for a specific protocol.
-     *
-     * @param endpoint the endpoint for which the producer should be created
-     * @param configuration the general transport configuration
-     * @param service the service definition containing information about how make reach the target service.
-     * @return
-     */
-    Producer createProducer(
-        Endpoint endpoint,
-        KnativeTransportConfiguration configuration,
-        KnativeEnvironment.KnativeServiceDefinition service);
-
-    /**
-     * Create a camel {@link org.apache.camel.Producer} in place of the original endpoint for a specific protocol.
-     *
-     * @param endpoint the endpoint for which the consumer should be created.
-     * @param configuration the general transport configuration
-     * @param service the service definition containing information about how make the route reachable from knative.
-     * @return
-     */
-    Consumer createConsumer(
-        Endpoint endpoint,
-        KnativeTransportConfiguration configuration,
-        KnativeEnvironment.KnativeServiceDefinition service, Processor processor);
-}
-----
-
-== Examples
-
-[source,java]
-----
-CamelContext context = new DefaultCamelContext();
-
-KnativeComponent component = context.getComponent("knative", KnativeComponent.class);
-component.getConfiguration().setEnvironmentPath("classpath:knative.json"); // <1>
-
-RouteBuilder.addRoutes(context, b -> {
-    b.from("knative:endpoint/myEndpoint") // <2>
-        .to("log:info");
-});
-----
-<1> set the location of the `Knative Environment` file
-<2> expose knative service
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
deleted file mode 100644
index 91e20a7..0000000
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
+++ /dev/null
@@ -1,341 +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;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Endpoint;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.component.knative.spi.Knative;
-import org.apache.camel.component.knative.spi.KnativeConsumerFactory;
-import org.apache.camel.component.knative.spi.KnativeEnvironment;
-import org.apache.camel.component.knative.spi.KnativeProducerFactory;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.support.DefaultComponent;
-import org.apache.camel.support.service.ServiceHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.PropertiesHelper;
-import org.apache.camel.util.StringHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Component(KnativeConstants.SCHEME)
-public class KnativeComponent extends DefaultComponent {
-    private static final Logger LOGGER = LoggerFactory.getLogger(KnativeComponent.class);
-
-    @Metadata
-    private KnativeConfiguration configuration;
-
-    @Metadata
-    private String environmentPath;
-
-    @Metadata(defaultValue = "http")
-    private Knative.Protocol protocol = Knative.Protocol.http;
-
-    @Metadata
-    private KnativeProducerFactory producerFactory;
-    @Metadata
-    private KnativeConsumerFactory consumerFactory;
-
-    private boolean managedProducer;
-    private boolean managedConsumer;
-
-    public KnativeComponent() {
-        this(null);
-    }
-
-    public KnativeComponent(CamelContext context) {
-        super(context);
-
-        this.configuration = new KnativeConfiguration();
-        this.configuration.setTransportOptions(new HashMap<>());
-    }
-
-    // ************************
-    //
-    // Properties
-    //
-    // ************************
-
-    public KnativeConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    /**
-     * Set the configuration.
-     */
-    public void setConfiguration(KnativeConfiguration configuration) {
-        this.configuration = ObjectHelper.notNull(configuration, "configuration");
-    }
-
-    public String getEnvironmentPath() {
-        return environmentPath;
-    }
-
-    /**
-     * The path ot the environment definition
-     */
-    public void setEnvironmentPath(String environmentPath) {
-        this.environmentPath = environmentPath;
-    }
-
-    public KnativeEnvironment getEnvironment() {
-        return configuration.getEnvironment();
-    }
-
-    /**
-     * The environment
-     */
-    public void setEnvironment(KnativeEnvironment environment) {
-        configuration.setEnvironment(environment);
-    }
-
-    public String getCloudEventsSpecVersion() {
-        return configuration.getCloudEventsSpecVersion();
-    }
-
-    /**
-     * Set the version of the cloudevents spec.
-     */
-    public void setCloudEventsSpecVersion(String cloudEventSpecVersion) {
-        configuration.setCloudEventsSpecVersion(cloudEventSpecVersion);
-    }
-
-    public Knative.Protocol getProtocol() {
-        return protocol;
-    }
-
-    /**
-     * Protocol.
-     */
-    public KnativeComponent setProtocol(Knative.Protocol protocol) {
-        this.protocol = protocol;
-        return this;
-    }
-
-    public KnativeProducerFactory getProducerFactory() {
-        return producerFactory;
-    }
-
-    /**
-     * The protocol producer factory.
-     */
-    public void setProducerFactory(KnativeProducerFactory producerFactory) {
-        this.producerFactory = producerFactory;
-    }
-
-    public KnativeConsumerFactory getConsumerFactory() {
-        return consumerFactory;
-    }
-
-    /**
-     * The protocol consumer factory.
-     */
-    public void setConsumerFactory(KnativeConsumerFactory consumerFactory) {
-        this.consumerFactory = consumerFactory;
-    }
-
-    public Map<String, Object> getTransportOptions() {
-        return configuration.getTransportOptions();
-    }
-
-    /**
-     * Transport options.
-     */
-    public void setTransportOptions(Map<String, Object> transportOptions) {
-        configuration.setTransportOptions(transportOptions);
-    }
-
-    // ************************
-    //
-    // Lifecycle
-    //
-    // ************************
-
-    @Override
-    protected void doInit() throws Exception {
-        super.doInit();
-
-        setUpProducerFactory();
-        setUpConsumerFactory();
-
-        if (this.producerFactory != null && managedProducer) {
-            ServiceHelper.initService(this.producerFactory);
-        }
-        if (this.consumerFactory != null && managedConsumer) {
-            ServiceHelper.initService(this.consumerFactory);
-        }
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-
-        if (this.producerFactory != null && managedProducer) {
-            ServiceHelper.startService(this.producerFactory);
-        }
-        if (this.consumerFactory != null && managedConsumer) {
-            ServiceHelper.startService(this.consumerFactory);
-        }
-
-        if (this.producerFactory == null && this.consumerFactory == null) {
-            throw new IllegalStateException("No prodcuer or consumer factroy have been configured");
-        }
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-
-        if (this.producerFactory != null && managedProducer) {
-            ServiceHelper.stopService(this.producerFactory);
-        }
-        if (this.consumerFactory != null && managedConsumer) {
-            ServiceHelper.stopService(this.consumerFactory);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    @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 form of: 'knative:type/name', got '" + uri + "'");
-        }
-
-        final String type = ObjectHelper.supplyIfEmpty(StringHelper.before(remaining, "/"), () -> remaining);
-        final String name = StringHelper.after(remaining, "/");
-        final KnativeConfiguration conf = getKnativeConfiguration();
-
-        conf.getFilters().putAll(
-            (Map)PropertiesHelper.extractProperties(parameters, "filter.", true)
-        );
-        conf.getCeOverride().putAll(
-            (Map)PropertiesHelper.extractProperties(parameters, "ce.override.", true)
-        );
-        conf.getTransportOptions().putAll(
-            PropertiesHelper.extractProperties(parameters, "transport.", true)
-        );
-
-        KnativeEndpoint endpoint = new KnativeEndpoint(uri, this, Knative.Type.valueOf(type), name, conf);
-        setProperties(endpoint, parameters);
-
-        return endpoint;
-    }
-
-    // ************************
-    //
-    // Helpers
-    //
-    // ************************
-
-    private KnativeConfiguration getKnativeConfiguration() throws Exception {
-        final String envConfig = System.getenv(KnativeConstants.CONFIGURATION_ENV_VARIABLE);
-        final KnativeConfiguration conf = configuration.copy();
-
-        if (conf.getTransportOptions() == null) {
-            conf.setTransportOptions(new HashMap<>());
-        }
-        if (conf.getFilters() == null) {
-            conf.setFilters(new HashMap<>());
-        }
-        if (conf.getCeOverride() == null) {
-            conf.setCeOverride(new HashMap<>());
-        }
-
-        if (conf.getEnvironment() == null) {
-            KnativeEnvironment env;
-
-            if (environmentPath != null) {
-                env = KnativeEnvironment.mandatoryLoadFromResource(getCamelContext(), this.environmentPath);
-            } else if (envConfig != null) {
-                env = envConfig.startsWith("file:") || envConfig.startsWith("classpath:")
-                    ? KnativeEnvironment.mandatoryLoadFromResource(getCamelContext(), envConfig)
-                    : KnativeEnvironment.mandatoryLoadFromSerializedString(envConfig);
-            } else {
-                env = CamelContextHelper.findByType(getCamelContext(), KnativeEnvironment.class);
-            }
-
-            if (env == null) {
-                throw new IllegalStateException("Cannot load Knative configuration from file or env variable");
-            }
-
-            conf.setEnvironment(env);
-        }
-
-        return conf;
-    }
-
-    private void setUpProducerFactory() throws Exception {
-        if (producerFactory == null) {
-            this.producerFactory = CamelContextHelper.lookup(getCamelContext(), protocol.name(), KnativeProducerFactory.class);
-
-            if (this.producerFactory == null) {
-                this.producerFactory = getCamelContext()
-                    .adapt(ExtendedCamelContext.class)
-                    .getFactoryFinder(Knative.KNATIVE_TRANSPORT_RESOURCE_PATH)
-                    .newInstance(protocol.name() + "-producer", KnativeProducerFactory.class)
-                    .orElse(null);
-
-                if (this.producerFactory == null) {
-                    return;
-                }
-
-                if (configuration.getTransportOptions() != null) {
-                    setProperties(producerFactory, new HashMap<>(configuration.getTransportOptions()));
-                }
-
-                this.managedProducer = true;
-
-                CamelContextAware.trySetCamelContext(this.producerFactory, getCamelContext());
-            }
-
-            LOGGER.info("found knative producer factory: {} for protocol: {}", producerFactory, protocol.name());
-        }
-    }
-
-    private void setUpConsumerFactory() throws Exception {
-        if (consumerFactory == null) {
-            this.consumerFactory = CamelContextHelper.lookup(getCamelContext(), protocol.name(), KnativeConsumerFactory.class);
-
-            if (this.consumerFactory == null) {
-                this.consumerFactory = getCamelContext()
-                    .adapt(ExtendedCamelContext.class)
-                    .getFactoryFinder(Knative.KNATIVE_TRANSPORT_RESOURCE_PATH)
-                    .newInstance(protocol.name() + "-consumer", KnativeConsumerFactory.class)
-                    .orElse(null);
-
-                if (this.consumerFactory == null) {
-                    return;
-                }
-                if (configuration.getTransportOptions() != null) {
-                    setProperties(consumerFactory, new HashMap<>(configuration.getTransportOptions()));
-                }
-
-                this.managedConsumer = true;
-
-                CamelContextAware.trySetCamelContext(this.consumerFactory, getCamelContext());
-            }
-
-            LOGGER.info("found knative consumer factory: {} for protocol: {}", consumerFactory, protocol.name());
-        }
-    }
-}
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java
deleted file mode 100644
index 381ce4e..0000000
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java
+++ /dev/null
@@ -1,223 +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;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.component.cloudevents.CloudEvents;
-import org.apache.camel.component.knative.spi.KnativeEnvironment;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-
-@UriParams
-public class KnativeConfiguration implements Cloneable {
-    @UriParam
-    private KnativeEnvironment environment;
-    @UriParam
-    private String typeId;
-    @UriParam(defaultValue = "1.0", enums = "0.1,0.2,0.3,1.0")
-    private String cloudEventsSpecVersion = CloudEvents.v1_0.version();
-    @UriParam(defaultValue = "org.apache.camel.event")
-    private String cloudEventsType = "org.apache.camel.event";
-    @UriParam(prefix = "transport.")
-    private Map<String, Object> transportOptions;
-    @UriParam(prefix = "filter.")
-    private Map<String, String> filters;
-    @UriParam(prefix = "ce.override.")
-    private Map<String, String> ceOverride;
-    @UriParam(label = "advanced")
-    private String apiVersion;
-    @UriParam(label = "advanced")
-    private String kind;
-    @UriParam(label = "advanced")
-    private String name;
-    @UriParam(label = "consumer", defaultValue = "false")
-    private boolean replyWithCloudEvent;
-    @UriParam(label = "consumer,advanced", defaultValue = "true")
-    private Boolean reply;
-
-    // ************************
-    //
-    // Properties
-    //
-    // ************************
-
-    public KnativeEnvironment getEnvironment() {
-        return environment;
-    }
-
-    /**
-     * The environment
-     */
-    public void setEnvironment(KnativeEnvironment environment) {
-        this.environment = environment;
-    }
-
-    public String getTypeId() {
-        return typeId;
-    }
-
-    /**
-     * The name of the service to lookup from the {@link KnativeEnvironment}.
-     */
-    public void setTypeId(String typeId) {
-        this.typeId = typeId;
-    }
-
-    public boolean isReplyWithCloudEvent() {
-        return replyWithCloudEvent;
-    }
-
-    /**
-     * Transforms the reply into a cloud event that will be processed by the caller.
-     *
-     * When listening to events from a Knative Broker, if this flag is enabled, replies will
-     * be published to the same Broker where the request comes from (beware that if you don't
-     * change the "type" of the received message, you may create a loop and receive your same reply).
-     *
-     * When this flag is disabled, CloudEvent headers are removed from the reply.
-     */
-    public void setReplyWithCloudEvent(boolean replyWithCloudEvent) {
-        this.replyWithCloudEvent = replyWithCloudEvent;
-    }
-
-    public String getCloudEventsSpecVersion() {
-        return cloudEventsSpecVersion;
-    }
-
-    /**
-     * Set the version of the cloudevents spec.
-     */
-    public void setCloudEventsSpecVersion(String cloudEventsSpecVersion) {
-        this.cloudEventsSpecVersion = cloudEventsSpecVersion;
-    }
-
-    public String getCloudEventsType() {
-        return cloudEventsType;
-    }
-
-    /**
-     * Set the event-type information of the produced events.
-     */
-    public void setCloudEventsType(String cloudEventsType) {
-        this.cloudEventsType = cloudEventsType;
-    }
-
-    public Map<String, Object> getTransportOptions() {
-        return transportOptions;
-    }
-
-    /**
-     * Set the transport options.
-     */
-    public void setTransportOptions(Map<String, Object> transportOptions) {
-        this.transportOptions = new HashMap<>(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, String> getFilters() {
-        return filters;
-    }
-
-    /**
-     * Set the filters.
-     */
-    public void setFilters(Map<String, String> filters) {
-        this.filters = new HashMap<>(filters);
-    }
-
-    public Map<String, String> getCeOverride() {
-        return ceOverride;
-    }
-
-    /**
-     * CloudEvent headers to override
-     */
-    public void setCeOverride(Map<String, String> ceOverride) {
-        this.ceOverride = new HashMap<>(ceOverride);
-    }
-
-    public String getApiVersion() {
-        return apiVersion;
-    }
-
-    /**
-     * The version of the k8s resource referenced by the endpoint.
-     */
-    public void setApiVersion(String apiVersion) {
-        this.apiVersion = apiVersion;
-    }
-
-    public String getKind() {
-        return kind;
-    }
-
-    /**
-     * The type of the k8s resource referenced by the endpoint.
-     */
-    public void setKind(String kind) {
-        this.kind = kind;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * The name of the k8s resource referenced by the endpoint.
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Boolean getReply() {
-        return reply;
-    }
-
-    /**
-     * If the consumer should construct a full reply to knative request.
-     */
-    public void setReply(Boolean reply) {
-        this.reply = reply;
-    }
-
-    // ************************
-    //
-    // Cloneable
-    //
-    // ************************
-
-    public KnativeConfiguration copy() {
-        try {
-            return (KnativeConfiguration)super.clone();
-        } catch (CloneNotSupportedException e) {
-            throw new RuntimeCamelException(e);
-        }
-    }
-}
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConstants.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConstants.java
deleted file mode 100644
index 2d5e5ce..0000000
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConstants.java
+++ /dev/null
@@ -1,25 +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;
-
-public final class KnativeConstants {
-    public static final String SCHEME = "knative";
-    public static final String CONFIGURATION_ENV_VARIABLE = "CAMEL_KNATIVE_CONFIGURATION";
-
-    private KnativeConstants() {
-    }
-}
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
deleted file mode 100644
index faa4ab2..0000000
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
+++ /dev/null
@@ -1,245 +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;
-
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import org.apache.camel.Category;
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.component.cloudevents.CloudEvent;
-import org.apache.camel.component.cloudevents.CloudEvents;
-import org.apache.camel.component.knative.ce.CloudEventProcessor;
-import org.apache.camel.component.knative.ce.CloudEventProcessors;
-import org.apache.camel.component.knative.spi.Knative;
-import org.apache.camel.component.knative.spi.KnativeResource;
-import org.apache.camel.component.knative.spi.KnativeTransportConfiguration;
-import org.apache.camel.processor.Pipeline;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.DefaultEndpoint;
-import org.apache.camel.support.PropertyBindingSupport;
-import org.apache.camel.util.ObjectHelper;
-
-/**
- * This component allows to interact with Knative.
- */
-@UriEndpoint(
-    firstVersion = "3.0.0",
-    scheme = "knative",
-    syntax = "knative:type/typeId",
-    title = "Knative",
-    category = Category.CLOUD)
-public class KnativeEndpoint extends DefaultEndpoint {
-    private final CloudEvent cloudEvent;
-    private final CloudEventProcessor cloudEventProcessor;
-
-    @UriPath(description = "The Knative resource type")
-    private final Knative.Type type;
-    @UriPath(description = "The identifier of the Knative resource")
-    private final String typeId;
-    @UriParam
-    private KnativeConfiguration configuration;
-
-    public KnativeEndpoint(String uri, KnativeComponent component, Knative.Type type, String name, KnativeConfiguration configuration) {
-        super(uri, component);
-
-        this.type = type;
-        this.typeId = name;
-        this.configuration = configuration;
-        this.cloudEvent = CloudEvents.fromSpecVersion(configuration.getCloudEventsSpecVersion());
-        this.cloudEventProcessor = CloudEventProcessors.fromSpecVersion(configuration.getCloudEventsSpecVersion());
-    }
-
-    @Override
-    public KnativeComponent getComponent() {
-        return (KnativeComponent) super.getComponent();
-    }
-
-    @Override
-    public Producer createProducer() {
-        final KnativeResource service = lookupServiceDefinition(Knative.EndpointKind.sink);
-        final Processor ceProcessor = cloudEventProcessor.producer(this, service);
-        final Producer producer = getComponent().getProducerFactory().createProducer(this, createTransportConfiguration(service), service);
-
-        PropertyBindingSupport.build()
-            .withCamelContext(getCamelContext())
-            .withProperties(configuration.getTransportOptions())
-            .withRemoveParameters(false)
-            .withMandatory(false)
-            .withTarget(producer)
-            .bind();
-
-        return new KnativeProducer(this, ceProcessor, e -> e.getMessage().removeHeader("Host"), producer);
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        final KnativeResource service = lookupServiceDefinition(Knative.EndpointKind.source);
-        final Processor ceProcessor = cloudEventProcessor.consumer(this, service);
-        final Processor replyProcessor = configuration.isReplyWithCloudEvent() ? cloudEventProcessor.producer(this, service) : null;
-        final Processor pipeline = Pipeline.newInstance(getCamelContext(), ceProcessor, processor, replyProcessor);
-        final Consumer consumer = getComponent().getConsumerFactory().createConsumer(this, createTransportConfiguration(service), service, pipeline);
-
-        PropertyBindingSupport.build()
-            .withCamelContext(getCamelContext())
-            .withProperties(configuration.getTransportOptions())
-            .withRemoveParameters(false)
-            .withMandatory(false)
-            .withTarget(consumer)
-            .bind();
-
-        configureConsumer(consumer);
-
-        return consumer;
-    }
-
-    @Override
-    public boolean isSingleton() {
-        return true;
-    }
-
-    public Knative.Type getType() {
-        return type;
-    }
-
-    public String getTypeId() {
-        return typeId;
-    }
-
-    public CloudEvent getCloudEvent() {
-        return cloudEvent;
-    }
-
-    public KnativeConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    public void setConfiguration(KnativeConfiguration configuration) {
-        this.configuration = configuration;
-    }
-
-    @Override
-    protected void doInit() {
-        if (ObjectHelper.isEmpty(this.configuration.getTypeId())) {
-            this.configuration.setTypeId(this.typeId);
-        }
-    }
-
-    KnativeResource lookupServiceDefinition(Knative.EndpointKind endpointKind) {
-        final String resourceName;
-        if (type == Knative.Type.event && configuration.getName() != null) {
-            resourceName = configuration.getName();
-        } else {
-            resourceName = configuration.getTypeId();
-       }
-
-        KnativeResource resource = lookupServiceDefinition(resourceName, endpointKind)
-            .or(() -> lookupServiceDefinition("default", endpointKind))
-            .orElseThrow(() -> new IllegalArgumentException(
-                String.format("Unable to find a resource definition for %s/%s/%s", type, endpointKind, resourceName))
-            );
-
-        //
-        // We need to create a new resource as we need to inject additional data from the component
-        // configuration.
-        //
-        KnativeResource answer = KnativeResource.from(resource);
-
-        //
-        // Set-up filters from config
-        //
-        for (Map.Entry<String, String> entry : configuration.getFilters().entrySet()) {
-            String key = entry.getKey();
-            String val = entry.getValue();
-
-            if (key.startsWith(Knative.KNATIVE_FILTER_PREFIX)) {
-                key = key.substring(Knative.KNATIVE_FILTER_PREFIX.length());
-            }
-
-            answer.addFilter(key, val);
-        }
-
-        //
-        // Set-up overrides from config
-        //
-        for (Map.Entry<String, String> entry : configuration.getCeOverride().entrySet()) {
-            String key = entry.getKey();
-            String val = entry.getValue();
-
-            if (key.startsWith(Knative.KNATIVE_CE_OVERRIDE_PREFIX)) {
-                key = key.substring(Knative.KNATIVE_CE_OVERRIDE_PREFIX.length());
-            }
-
-            answer.addCeOverride(key, val);
-        }
-
-        //
-        // For event type endpoints se need to add an additional filter to filter out events received
-        // based on the given type.
-        //
-        if (resource.getType() == Knative.Type.event && ObjectHelper.isNotEmpty(configuration.getTypeId())) {
-            answer.setCloudEventType(configuration.getTypeId());
-            answer.addFilter(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, configuration.getTypeId());
-        }
-
-        return answer;
-    }
-
-    Optional<KnativeResource> lookupServiceDefinition(String name, Knative.EndpointKind endpointKind) {
-        return servicesDefinitions()
-            .filter(definition -> definition.matches(this.type, name))
-            .filter(serviceFilter(this.configuration, endpointKind))
-            .findFirst();
-    }
-
-    private KnativeTransportConfiguration createTransportConfiguration(KnativeResource definition) {
-        return new KnativeTransportConfiguration(
-            this.cloudEventProcessor.cloudEvent(),
-            !this.configuration.isReplyWithCloudEvent(),
-            ObjectHelper.supplyIfEmpty(this.configuration.getReply(), definition::getReply)
-        );
-    }
-
-    private Stream<KnativeResource> servicesDefinitions() {
-        return Stream.concat(
-            getCamelContext().getRegistry().findByType(KnativeResource.class).stream(),
-            this.configuration.getEnvironment().stream()
-        );
-    }
-
-    private static Predicate<KnativeResource> serviceFilter(KnativeConfiguration configuration, Knative.EndpointKind endpointKind) {
-        return resource -> {
-            if (!Objects.equals(endpointKind, resource.getEndpointKind())) {
-                return false;
-            }
-            if (configuration.getApiVersion() != null && !Objects.equals(resource.getObjectApiVersion(), configuration.getApiVersion())) {
-                return false;
-            }
-            if (configuration.getKind() != null && !Objects.equals(resource.getObjectKind(), configuration.getKind())) {
-                return false;
-            }
-            return configuration.getName() == null || Objects.equals(resource.getObjectName(), configuration.getName());
-        };
-    }
-}
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeProducer.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeProducer.java
deleted file mode 100644
index 0b7a54f..0000000
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeProducer.java
+++ /dev/null
@@ -1,79 +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;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.AsyncProcessor;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-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;
-
-public class KnativeProducer extends DefaultAsyncProducer {
-    final AsyncProcessor processor;
-
-    public KnativeProducer(Endpoint endpoint, Processor processor, Processor... processors) {
-        super(endpoint);
-
-        List<Processor> elements = new ArrayList<>(1 + processors.length);
-        elements.add(processor);
-
-        for (Processor p : processors) {
-            elements.add(p);
-        }
-
-        Processor pipeline = Pipeline.newInstance(endpoint.getCamelContext(), elements);
-
-        this.processor = AsyncProcessorConverterHelper.convert(pipeline);
-    }
-
-    @Override
-    public boolean process(Exchange exchange, AsyncCallback callback) {
-        return processor.process(exchange, callback);
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        ServiceHelper.startService(processor);
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        ServiceHelper.stopService(processor);
-    }
-
-    @Override
-    protected void doSuspend() throws Exception {
-        ServiceHelper.suspendService(processor);
-    }
-
-    @Override
-    protected void doResume() throws Exception {
-        ServiceHelper.resumeService(processor);
-    }
-
-    @Override
-    protected void doShutdown() throws Exception {
-        ServiceHelper.stopAndShutdownService(processor);
-    }
-}
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java
deleted file mode 100644
index 70cc921..0000000
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java
+++ /dev/null
@@ -1,137 +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.ce;
-
-import java.io.InputStream;
-import java.time.Instant;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.Supplier;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.component.cloudevents.CloudEvent;
-import org.apache.camel.component.knative.KnativeEndpoint;
-import org.apache.camel.component.knative.spi.Knative;
-import org.apache.camel.component.knative.spi.KnativeResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-abstract class AbstractCloudEventProcessor implements CloudEventProcessor {
-    private final CloudEvent cloudEvent;
-
-    protected AbstractCloudEventProcessor(CloudEvent cloudEvent) {
-        this.cloudEvent = cloudEvent;
-    }
-
-    @Override
-    public CloudEvent cloudEvent() {
-        return cloudEvent;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Processor consumer(KnativeEndpoint endpoint, KnativeResource service) {
-        return exchange -> {
-            if (Objects.equals(exchange.getIn().getHeader(Exchange.CONTENT_TYPE), Knative.MIME_BATCH_CONTENT_MODE)) {
-                throw new UnsupportedOperationException("Batched CloudEvents are not yet supported");
-            }
-
-            if (!Objects.equals(exchange.getIn().getHeader(Exchange.CONTENT_TYPE), Knative.MIME_STRUCTURED_CONTENT_MODE)) {
-                final Map<String, Object> headers = exchange.getIn().getHeaders();
-
-                for (CloudEvent.Attribute attribute: cloudEvent.attributes()) {
-                    Object val = headers.remove(attribute.http());
-                    if (val != null) {
-                        headers.put(attribute.id(), val);
-                    }
-                }
-            } else {
-                try (InputStream is = exchange.getIn().getBody(InputStream.class)) {
-                    decodeStructuredContent(exchange, Knative.MAPPER.readValue(is, Map.class));
-                }
-            }
-        };
-    }
-
-    protected abstract void decodeStructuredContent(Exchange exchange, Map<String, Object> content);
-
-    @Override
-    public Processor producer(KnativeEndpoint endpoint, KnativeResource service) {
-        final CloudEvent ce = cloudEvent();
-        final Logger logger = LoggerFactory.getLogger(getClass());
-        final String contentType = service.getContentType();
-
-        return exchange -> {
-            final Map<String, Object> headers = exchange.getMessage().getHeaders();
-
-            for (CloudEvent.Attribute attribute: ce.attributes()) {
-                Object value = headers.get(attribute.id());
-                if (value != null) {
-                    headers.putIfAbsent(attribute.http(), value);
-                }
-            }
-
-            if (contentType != null) {
-                headers.putIfAbsent(Exchange.CONTENT_TYPE, contentType);
-            }
-
-            //
-            // in case of events, if the type of the event is defined as URI param so we need
-            // to override it to avoid the event type be overridden by Messages's headers
-            //
-            if (endpoint.getType() == Knative.Type.event && endpoint.getTypeId() != null) {
-                final Object eventType = headers.get(CloudEvent.CAMEL_CLOUD_EVENT_TYPE);
-                if (eventType != null) {
-                    logger.debug("Detected the presence of {} header with value {}: it will be ignored and replaced by value set as uri parameter {}",
-                        CloudEvent.CAMEL_CLOUD_EVENT_TYPE,
-                        eventType,
-                        endpoint.getTypeId());
-                }
-
-                headers.put(cloudEvent().mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), endpoint.getTypeId());
-            } else {
-                setCloudEventHeader(headers, CloudEvent.CAMEL_CLOUD_EVENT_TYPE, () -> {
-                    String eventType = service.getCloudEventType();
-                    if (eventType == null) {
-                        eventType = endpoint.getConfiguration().getCloudEventsType();
-                    }
-                    return eventType;
-                });
-            }
-
-            setCloudEventHeader(headers, CloudEvent.CAMEL_CLOUD_EVENT_ID, exchange::getExchangeId);
-            setCloudEventHeader(headers, CloudEvent.CAMEL_CLOUD_EVENT_SOURCE, exchange::getFromRouteId);
-            setCloudEventHeader(headers, CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce::version);
-            setCloudEventHeader(headers, CloudEvent.CAMEL_CLOUD_EVENT_TIME, () -> {
-                final ZonedDateTime created = ZonedDateTime.ofInstant(Instant.ofEpochMilli(exchange.getCreated()), ZoneId.systemDefault());
-                final String eventTime = DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(created);
-
-                return eventTime;
-            });
-
-            headers.putAll(service.getCeOverrides());
-        };
-    }
-
-    protected void setCloudEventHeader(Map<String, Object> headers, String id, Supplier<Object> supplier) {
-        headers.putIfAbsent(cloudEvent().mandatoryAttribute(id).http(), supplier.get());
-    }
-}
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessor.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessor.java
deleted file mode 100644
index a837136..0000000
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessor.java
+++ /dev/null
@@ -1,28 +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.ce;
-
-import org.apache.camel.Processor;
-import org.apache.camel.component.cloudevents.CloudEvent;
-import org.apache.camel.component.knative.KnativeEndpoint;
-import org.apache.camel.component.knative.spi.KnativeResource;
-
-public interface CloudEventProcessor {
-    CloudEvent cloudEvent();
-    Processor consumer(KnativeEndpoint endpoint, KnativeResource service);
-    Processor producer(KnativeEndpoint endpoint, KnativeResource service);
-}
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java
deleted file mode 100644
index 22ef777..0000000
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/CloudEventProcessors.java
+++ /dev/null
@@ -1,181 +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.ce;
-
-import java.util.Locale;
-import java.util.Map;
-import java.util.Objects;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.component.cloudevents.CloudEvent;
-import org.apache.camel.component.cloudevents.CloudEvents;
-import org.apache.camel.component.knative.KnativeEndpoint;
-import org.apache.camel.component.knative.spi.KnativeResource;
-
-import static org.apache.camel.util.ObjectHelper.ifNotEmpty;
-
-public enum CloudEventProcessors implements CloudEventProcessor {
-    v0_1(new AbstractCloudEventProcessor(CloudEvents.v0_1) {
-        @SuppressWarnings("unchecked")
-        @Override
-        protected void decodeStructuredContent(Exchange exchange, Map<String, Object> content) {
-            final CloudEvent ce = cloudEvent();
-            final Message message = exchange.getIn();
-
-            // body
-            ifNotEmpty(content.remove("data"), message::setBody);
-
-            ifNotEmpty(content.remove(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_CONTENT_TYPE).json()), val -> {
-                message.setHeader(Exchange.CONTENT_TYPE, val);
-            });
-
-            //
-            // Map extensions to standard camel headers
-            //
-            ifNotEmpty(content.remove(CloudEvent.CAMEL_CLOUD_EVENT_EXTENSIONS), val -> {
-                if (val instanceof Map) {
-                    ((Map<String, Object>) val).forEach(message::setHeader);
-                }
-            });
-
-            for (CloudEvent.Attribute attribute: ce.attributes()) {
-                ifNotEmpty(content.remove(attribute.json()), val -> {
-                    message.setHeader(attribute.id(), val);
-                });
-            }
-        }
-    }),
-    v0_2(new AbstractCloudEventProcessor(CloudEvents.v0_2) {
-        @Override
-        protected void decodeStructuredContent(Exchange exchange, Map<String, Object> content) {
-            final CloudEvent ce = cloudEvent();
-            final Message message = exchange.getIn();
-
-            // body
-            ifNotEmpty(content.remove("data"), message::setBody);
-
-            ifNotEmpty(content.remove(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_CONTENT_TYPE).json()), val -> {
-                message.setHeader(Exchange.CONTENT_TYPE, val);
-            });
-
-            for (CloudEvent.Attribute attribute: ce.attributes()) {
-                ifNotEmpty(content.remove(attribute.json()), val -> {
-                    message.setHeader(attribute.id(), val);
-                });
-            }
-
-            //
-            // Map every remaining field as it is (extensions).
-            //
-            content.forEach((key, val) -> {
-                message.setHeader(key.toLowerCase(Locale.US), val);
-            });
-
-        }
-    }),
-    v0_3(new AbstractCloudEventProcessor(CloudEvents.v0_3) {
-        @Override
-        protected void decodeStructuredContent(Exchange exchange, Map<String, Object> content) {
-            final CloudEvent ce = cloudEvent();
-            final Message message = exchange.getIn();
-
-            // body
-            ifNotEmpty(content.remove("data"), message::setBody);
-
-            ifNotEmpty(content.remove(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_DATA_CONTENT_TYPE).json()), val -> {
-                message.setHeader(Exchange.CONTENT_TYPE, val);
-            });
-            ifNotEmpty(content.remove(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_DATA_CONTENT_ENCODING).json()), val -> {
-                message.setHeader(Exchange.CONTENT_ENCODING, val);
-            });
-
-            for (CloudEvent.Attribute attribute: ce.attributes()) {
-                ifNotEmpty(content.remove(attribute.json()), val -> {
-                    message.setHeader(attribute.id(), val);
-                });
-            }
-
-            //
-            // Map every remaining field as it is (extensions).
-            //
-            content.forEach((key, val) -> {
-                message.setHeader(key.toLowerCase(Locale.US), val);
-            });
-        }
-    }),
-    v1_0(new AbstractCloudEventProcessor(CloudEvents.v1_0) {
-        @Override
-        protected void decodeStructuredContent(Exchange exchange, Map<String, Object> content) {
-            final CloudEvent ce = cloudEvent();
-            final Message message = exchange.getIn();
-
-            // body
-            ifNotEmpty(content.remove("data"), message::setBody);
-
-            ifNotEmpty(content.remove(ce.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_DATA_CONTENT_TYPE).json()), val -> {
-                message.setHeader(Exchange.CONTENT_TYPE, val);
-            });
-
-            for (CloudEvent.Attribute attribute: ce.attributes()) {
-                ifNotEmpty(content.remove(attribute.json()), val -> {
-                    message.setHeader(attribute.id(), val);
-                });
-            }
-
-            //
-            // Map every remaining field as it is (extensions).
-            //
-            content.forEach((key, val) -> {
-                message.setHeader(key.toLowerCase(Locale.US), val);
-            });
-        }
-    });
-
-    private final CloudEventProcessor instance;
-
-    CloudEventProcessors(CloudEventProcessor instance) {
-        this.instance = instance;
-    }
-
-    @Override
-    public CloudEvent cloudEvent() {
-        return instance.cloudEvent();
-    }
-
-    @Override
-    public Processor consumer(KnativeEndpoint endpoint, KnativeResource service) {
-        return instance.consumer(endpoint, service);
-    }
-
-    @Override
-    public Processor producer(KnativeEndpoint endpoint, KnativeResource service) {
-        return instance.producer(endpoint, service);
-    }
-
-    public static CloudEventProcessor fromSpecVersion(String version) {
-        for (CloudEventProcessor processor: CloudEventProcessors.values()) {
-            if (Objects.equals(processor.cloudEvent().version(), version)) {
-                return processor;
-            }
-        }
-
-        throw new IllegalArgumentException("Unable to find an implementation fo CloudEvents spec: " + version);
-    }
-}
-
diff --git a/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java b/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java
deleted file mode 100644
index 0012385..0000000
--- a/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeComponentTest.java
+++ /dev/null
@@ -1,108 +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;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.component.knative.spi.Knative;
-import org.apache.camel.component.knative.spi.KnativeEnvironment;
-import org.apache.camel.component.knative.test.KnativeEnvironmentSupport;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-
-import static org.apache.camel.component.knative.spi.KnativeEnvironment.mandatoryLoadFromResource;
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class KnativeComponentTest {
-
-    private CamelContext context;
-
-    // **************************
-    //
-    // Setup
-    //
-    // **************************
-
-    @BeforeEach
-    public void before() {
-        this.context = new DefaultCamelContext();
-    }
-
-    @AfterEach
-    public void after() throws Exception {
-        if (this.context != null) {
-            this.context.stop();
-        }
-    }
-
-    // **************************
-    //
-    // Common Tests
-    //
-    // **************************
-
-    @ParameterizedTest
-    @ValueSource(strings = { "classpath:/environment.json", "classpath:/environment_classic.json"})
-    void testLoadEnvironment(String resource) throws Exception {
-        KnativeEnvironment env = mandatoryLoadFromResource(context, resource);
-
-        assertThat(env.stream()).hasSize(3);
-        assertThat(env.stream()).anyMatch(s -> s.getType() == Knative.Type.channel);
-        assertThat(env.stream()).anyMatch(s -> s.getType() == Knative.Type.endpoint);
-
-        KnativeComponent component = new KnativeComponent();
-        component.setEnvironment(env);
-        component.setConsumerFactory(new KnativeTransportNoop());
-        component.setProducerFactory(new KnativeTransportNoop());
-
-        context.getRegistry().bind("ereg", KnativeEnvironmentSupport.endpoint(Knative.EndpointKind.source, "ereg", null));
-        context.getRegistry().bind("creg", KnativeEnvironmentSupport.channel(Knative.EndpointKind.source, "creg", null));
-        context.addComponent("knative", component);
-
-        //
-        // Channels
-        //
-        {
-            KnativeEndpoint endpoint = context.getEndpoint("knative:channel/c1", KnativeEndpoint.class);
-            assertThat(endpoint.lookupServiceDefinition("c1", Knative.EndpointKind.source)).isPresent();
-            assertThat(endpoint.lookupServiceDefinition("e1", Knative.EndpointKind.source)).isNotPresent();
-            assertThat(endpoint.lookupServiceDefinition("c1", Knative.EndpointKind.source)).isPresent().get()
-                .hasFieldOrPropertyWithValue("url", "http://localhost:8081");
-        }
-        {
-            KnativeEndpoint endpoint = context.getEndpoint("knative:channel/creg", KnativeEndpoint.class);
-            assertThat(endpoint.lookupServiceDefinition("creg", Knative.EndpointKind.source)).isPresent();
-        }
-
-        //
-        // Endpoints
-        //
-        {
-            KnativeEndpoint endpoint = context.getEndpoint("knative:endpoint/e1", KnativeEndpoint.class);
-            assertThat(endpoint.lookupServiceDefinition("e1", Knative.EndpointKind.source)).isPresent();
-            assertThat(endpoint.lookupServiceDefinition("c1", Knative.EndpointKind.source)).isNotPresent();
-            assertThat(endpoint.lookupServiceDefinition("e1", Knative.EndpointKind.source)).isPresent().get()
-                .hasFieldOrPropertyWithValue("url", "http://localhost:9001");
-        }
-        {
-            KnativeEndpoint endpoint = context.getEndpoint("knative:endpoint/ereg", KnativeEndpoint.class);
-            assertThat(endpoint.lookupServiceDefinition("ereg", Knative.EndpointKind.source)).isPresent();
-        }
-    }
-}
diff --git a/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeTransportNoop.java b/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeTransportNoop.java
deleted file mode 100644
index 64e616e..0000000
--- a/components/camel-knative/camel-knative/src/test/java/org/apache/camel/component/knative/KnativeTransportNoop.java
+++ /dev/null
@@ -1,53 +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;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.component.knative.spi.KnativeConsumerFactory;
-import org.apache.camel.component.knative.spi.KnativeProducerFactory;
-import org.apache.camel.component.knative.spi.KnativeResource;
-import org.apache.camel.component.knative.spi.KnativeTransportConfiguration;
-import org.apache.camel.support.DefaultConsumer;
-import org.apache.camel.support.DefaultProducer;
-
-public class KnativeTransportNoop implements KnativeConsumerFactory, KnativeProducerFactory {
-    @Override
-    public void start() {
-    }
-
-    @Override
-    public void stop() {
-    }
-
-    @Override
-    public Producer createProducer(Endpoint endpoint, KnativeTransportConfiguration configuration, KnativeResource service) {
-        return new DefaultProducer(endpoint) {
-            @Override
-            public void process(Exchange exchange) throws Exception {
-            }
-        };
-    }
-
-    @Override
-    public Consumer createConsumer(Endpoint endpoint, KnativeTransportConfiguration configuration, KnativeResource service, Processor processor) {
-        return new DefaultConsumer(endpoint, processor);
-    }
-}
diff --git a/components/camel-knative/camel-knative/src/test/resources/environment.json b/components/camel-knative/camel-knative/src/test/resources/environment.json
deleted file mode 100644
index 2c634e4..0000000
--- a/components/camel-knative/camel-knative/src/test/resources/environment.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "resources": [
-    {
-      "type": "channel",
-      "name": "c1",
-      "url": "http://localhost:8081",
-      "metadata": {
-        "service.path": "",
-        "knative.event.type": "",
-        "camel.endpoint.kind": "source"
-      }
-    },
-    {
-      "type": "endpoint",
-      "name": "e1",
-      "url": "http://localhost:9001",
-      "metadata": {
-        "service.path": "",
-        "knative.event.type": "",
-        "camel.endpoint.kind": "source"
-      }
-    },
-    {
-      "type": "endpoint",
-      "name": "default",
-      "url": "http://0.0.0.0:8080",
-      "metadata": {
-        "service.path": "",
-        "knative.event.type": "",
-        "camel.endpoint.kind": "source"
-      }
-    }
-  ]
-}
diff --git a/components/camel-knative/camel-knative/src/test/resources/environment_classic.json b/components/camel-knative/camel-knative/src/test/resources/environment_classic.json
deleted file mode 100644
index 683df58..0000000
--- a/components/camel-knative/camel-knative/src/test/resources/environment_classic.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "services": [
-    {
-      "type": "channel",
-      "name": "c1",
-      "url": "http://localhost:8081",
-      "metadata": {
-        "service.path": "",
-        "knative.event.type": "",
-        "camel.endpoint.kind": "source"
-      }
-    },
-    {
-      "type": "endpoint",
-      "name": "e1",
-      "url": "http://localhost:9001",
-      "metadata": {
-        "service.path": "",
-        "knative.event.type": "",
-        "camel.endpoint.kind": "source"
-      }
-    },
-    {
-      "type": "endpoint",
-      "name": "default",
-      "url": "http://0.0.0.0:8080",
-      "metadata": {
-        "service.path": "",
-        "knative.event.type": "",
-        "camel.endpoint.kind": "source"
-      }
-    }
-  ]
-}
diff --git a/components/camel-knative/camel-knative/src/test/resources/log4j2-test.xml b/components/camel-knative/camel-knative/src/test/resources/log4j2-test.xml
deleted file mode 100644
index 82b517b..0000000
--- a/components/camel-knative/camel-knative/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<Configuration status="INFO">
-  <Appenders>
-    <Console name="STDOUT" target="SYSTEM_OUT">
-      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%t|%c{1} - %msg%n"/>
-    </Console>
-    <Null name="NONE"/>
-  </Appenders>
-
-  <Loggers>
-    <Root level="INFO">
-      <!--
-      <AppenderRef ref="STDOUT"/>
-      -->
-      <AppenderRef ref="NONE"/>
-    </Root>
-  </Loggers>
-
-</Configuration>
\ No newline at end of file
diff --git a/components/camel-knative/pom.xml b/components/camel-knative/pom.xml
index 318beaf..4a1a94f 100644
--- a/components/camel-knative/pom.xml
+++ b/components/camel-knative/pom.xml
@@ -30,10 +30,7 @@
 
 
     <modules>
-        <module>camel-knative-api</module>
         <module>camel-knative-test</module>
-        <module>camel-knative</module>
-        <module>camel-knative-http</module>
     </modules>
 
 </project>
diff --git a/components/pom.xml b/components/pom.xml
index 7902611..b527cda 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -29,7 +29,6 @@
     <artifactId>camel-k-components</artifactId>
 
     <modules>
-        <module>camel-cloudevents</module>
         <module>camel-knative</module>
     </modules>
 </project>
diff --git a/itests/camel-k-itests-loader-polyglot/src/test/resources/routes.yaml b/itests/camel-k-itests-loader-polyglot/src/test/resources/routes.yaml
index 45dcb92..be866f3 100644
--- a/itests/camel-k-itests-loader-polyglot/src/test/resources/routes.yaml
+++ b/itests/camel-k-itests-loader-polyglot/src/test/resources/routes.yaml
@@ -19,7 +19,7 @@
     id: yaml
     from:
       uri: 'direct:yaml'
-    steps:
-      - marshal:
-          json: {}
-      - to: 'log:yaml'
\ No newline at end of file
+      steps:
+        - marshal:
+            json: {}
+        - to: 'log:yaml'
diff --git a/itests/camel-k-itests-loader-yaml/src/test/resources/routes.yaml b/itests/camel-k-itests-loader-yaml/src/test/resources/routes.yaml
index d3cc678..0fd83d1 100644
--- a/itests/camel-k-itests-loader-yaml/src/test/resources/routes.yaml
+++ b/itests/camel-k-itests-loader-yaml/src/test/resources/routes.yaml
@@ -19,5 +19,5 @@
     id: yaml
     from:
       uri: 'direct:yaml'
-    steps:
-      - to: 'log:yaml'
\ No newline at end of file
+      steps:
+        - to: 'log:yaml'
diff --git a/itests/camel-k-itests-loader-yaml/src/test/resources/routes_with_endpointdsl.yaml b/itests/camel-k-itests-loader-yaml/src/test/resources/routes_with_endpointdsl.yaml
index 1047184..6a53ac0 100644
--- a/itests/camel-k-itests-loader-yaml/src/test/resources/routes_with_endpointdsl.yaml
+++ b/itests/camel-k-itests-loader-yaml/src/test/resources/routes_with_endpointdsl.yaml
@@ -20,12 +20,12 @@
     from:
       direct:
         name: 'route'
-    steps:
-      - direct:
-          name: "route_result"
+      steps:
+        - direct:
+            name: "route_result"
 - from:
     direct:
       name: "from"
     steps:
       - direct:
-          name: "from_result"
\ No newline at end of file
+          name: "from_result"
diff --git a/itests/camel-k-itests-runtime-yaml/src/test/resources/routes-with-beans.yaml b/itests/camel-k-itests-runtime-yaml/src/test/resources/routes-with-beans.yaml
index 9063b49..568b9a7 100644
--- a/itests/camel-k-itests-runtime-yaml/src/test/resources/routes-with-beans.yaml
+++ b/itests/camel-k-itests-runtime-yaml/src/test/resources/routes-with-beans.yaml
@@ -24,8 +24,8 @@
     id: "my-route"
     from:
       uri: "direct:start"
-    steps:
-      - bean:
-          ref: "my-bean"
-          method: "getName"
-      - to: "log:info"
\ No newline at end of file
+      steps:
+        - bean:
+            ref: "my-bean"
+            method: "getName"
+        - to: "log:info"
diff --git a/pom.xml b/pom.xml
index c41819e..8b25975 100644
--- a/pom.xml
+++ b/pom.xml
@@ -461,24 +461,24 @@
 
             <!-- components -->
             <dependency>
-                <groupId>org.apache.camel.k</groupId>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-cloudevents</artifactId>
-                <version>${project.version}</version>
+                <version>${camel-version}</version>
             </dependency>
             <dependency>
-                <groupId>org.apache.camel.k</groupId>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-knative-api</artifactId>
-                <version>${project.version}</version>
+                <version>${camel-version}</version>
             </dependency>
             <dependency>
-                <groupId>org.apache.camel.k</groupId>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-knative</artifactId>
-                <version>${project.version}</version>
+                <version>${camel-version}</version>
             </dependency>
             <dependency>
-                <groupId>org.apache.camel.k</groupId>
+                <groupId>org.apache.camel</groupId>
                 <artifactId>camel-knative-http</artifactId>
-                <version>${project.version}</version>
+                <version>${camel-version}</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.k</groupId>
diff --git a/support/camel-k-runtime-bom/pom.xml b/support/camel-k-runtime-bom/pom.xml
index 1361530..8158edb 100644
--- a/support/camel-k-runtime-bom/pom.xml
+++ b/support/camel-k-runtime-bom/pom.xml
@@ -133,26 +133,6 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.camel.k</groupId>
-                <artifactId>camel-knative</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.camel.k</groupId>
-                <artifactId>camel-knative-http</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.camel.k</groupId>
-                <artifactId>camel-knative-test</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.camel.k</groupId>
-                <artifactId>camel-cloudevents</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.camel.k</groupId>
                 <artifactId>camel-k-webhook-impl</artifactId>
                 <version>${project.version}</version>
             </dependency>