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

[camel] branch master updated (38a96ae -> 891bf1a)

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

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


    from 38a96ae  Fixed test and allow to configure global influxdb on component level.
     new 37956a2  CAMEL-14715 - Removed camel-test-karaf (camel-karaf migration)
     new 891bf1a  CAMEL-14715 - Removed camel-test-karaf (camel-karaf migration), docs

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


Summary of changes:
 apache-camel/src/main/descriptors/common-bin.xml   |   1 -
 bom/camel-bom/pom.xml                              |   5 -
 components/camel-test-karaf/pom.xml                | 216 ----------
 .../services/org/apache/camel/other.properties     |   7 -
 .../src/generated/resources/test-karaf.json        |  14 -
 .../camel-test-karaf/src/main/docs/test-karaf.adoc |  10 -
 .../camel/test/karaf/AbstractFeatureTest.java      | 479 ---------------------
 .../camel/test/karaf/CamelKarafTestSupport.java    | 390 -----------------
 components/pom.xml                                 |   1 -
 docs/components/modules/ROOT/nav.adoc              |   1 -
 docs/components/modules/ROOT/pages/aws-xray.adoc   |   2 +-
 docs/components/modules/ROOT/pages/index.adoc      |   4 +-
 docs/components/modules/ROOT/pages/test-karaf.adoc |  11 -
 docs/user-manual/modules/ROOT/pages/index.adoc     |   1 -
 parent/pom.xml                                     |   5 -
 15 files changed, 2 insertions(+), 1145 deletions(-)
 delete mode 100644 components/camel-test-karaf/pom.xml
 delete mode 100644 components/camel-test-karaf/src/generated/resources/META-INF/services/org/apache/camel/other.properties
 delete mode 100644 components/camel-test-karaf/src/generated/resources/test-karaf.json
 delete mode 100644 components/camel-test-karaf/src/main/docs/test-karaf.adoc
 delete mode 100644 components/camel-test-karaf/src/main/java/org/apache/camel/test/karaf/AbstractFeatureTest.java
 delete mode 100644 components/camel-test-karaf/src/main/java/org/apache/camel/test/karaf/CamelKarafTestSupport.java
 delete mode 100644 docs/components/modules/ROOT/pages/test-karaf.adoc


[camel] 02/02: CAMEL-14715 - Removed camel-test-karaf (camel-karaf migration), docs

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

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

commit 891bf1a1be7b5b68d6fa9b24231470cd871b219b
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Sun Mar 29 16:22:31 2020 +0200

    CAMEL-14715 - Removed camel-test-karaf (camel-karaf migration), docs
---
 docs/user-manual/modules/ROOT/pages/index.adoc | 1 -
 1 file changed, 1 deletion(-)

diff --git a/docs/user-manual/modules/ROOT/pages/index.adoc b/docs/user-manual/modules/ROOT/pages/index.adoc
index 7af5c4b..5b066b9 100644
--- a/docs/user-manual/modules/ROOT/pages/index.adoc
+++ b/docs/user-manual/modules/ROOT/pages/index.adoc
@@ -442,7 +442,6 @@ camel routes without them knowing
 ** xref:components::swagger-java.adoc[Swagger Java]
 ** xref:components::test.adoc[Test]
 ** xref:components::test-cdi.adoc[Test CDI]
-** xref:components::test-karaf.adoc[Test Karaf]
 ** xref:components::test-spring.adoc[Test Spring]
 ** xref:components::testcontainers.adoc[Testcontainers]
 ** xref:components::testcontainers-spring.adoc[Testcontainers Spring]


[camel] 01/02: CAMEL-14715 - Removed camel-test-karaf (camel-karaf migration)

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

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

commit 37956a246f1c7e7695970135774fd4b8cb0cae5d
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Sun Mar 29 16:21:21 2020 +0200

    CAMEL-14715 - Removed camel-test-karaf (camel-karaf migration)
---
 apache-camel/src/main/descriptors/common-bin.xml   |   1 -
 bom/camel-bom/pom.xml                              |   5 -
 components/camel-test-karaf/pom.xml                | 216 ----------
 .../services/org/apache/camel/other.properties     |   7 -
 .../src/generated/resources/test-karaf.json        |  14 -
 .../camel-test-karaf/src/main/docs/test-karaf.adoc |  10 -
 .../camel/test/karaf/AbstractFeatureTest.java      | 479 ---------------------
 .../camel/test/karaf/CamelKarafTestSupport.java    | 390 -----------------
 components/pom.xml                                 |   1 -
 docs/components/modules/ROOT/nav.adoc              |   1 -
 docs/components/modules/ROOT/pages/aws-xray.adoc   |   2 +-
 docs/components/modules/ROOT/pages/index.adoc      |   4 +-
 docs/components/modules/ROOT/pages/test-karaf.adoc |  11 -
 parent/pom.xml                                     |   5 -
 14 files changed, 2 insertions(+), 1144 deletions(-)

diff --git a/apache-camel/src/main/descriptors/common-bin.xml b/apache-camel/src/main/descriptors/common-bin.xml
index 3e8bff3..cd819b9 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -350,7 +350,6 @@
         <include>org.apache.camel:camel-test</include>
         <include>org.apache.camel:camel-test-cdi</include>
         <include>org.apache.camel:camel-test-junit5</include>
-        <include>org.apache.camel:camel-test-karaf</include>
         <include>org.apache.camel:camel-test-spring</include>
         <include>org.apache.camel:camel-test-spring-junit5</include>
         <include>org.apache.camel:camel-testcontainers</include>
diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 563ef34..ad4b7a113 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1715,11 +1715,6 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
-        <artifactId>camel-test-karaf</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.camel</groupId>
         <artifactId>camel-test-spring</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/components/camel-test-karaf/pom.xml b/components/camel-test-karaf/pom.xml
deleted file mode 100644
index fbb7701..0000000
--- a/components/camel-test-karaf/pom.xml
+++ /dev/null
@@ -1,216 +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">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>components</artifactId>
-        <version>3.2.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>camel-test-karaf</artifactId>
-    <packaging>jar</packaging>
-
-    <name>Camel :: Test :: Karaf</name>
-    <description>Camel integration testing with Apache Karaf</description>
-
-    <properties>
-        <firstVersion>2.18.0</firstVersion>
-        <label>testing,java,osgi</label>
-
-        <karf-test-version>${karaf4-version}</karf-test-version>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.ops4j.pax.exam</groupId>
-            <artifactId>pax-exam-junit4</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.ops4j.pax.exam</groupId>
-            <artifactId>pax-exam</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.ops4j.pax.exam</groupId>
-            <artifactId>pax-exam-container-karaf</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.ops4j.pax.exam</groupId>
-            <artifactId>pax-exam-link-mvn</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>javax.inject</groupId>
-            <artifactId>javax.inject</artifactId>
-            <version>1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.karaf.features</groupId>
-            <artifactId>org.apache.karaf.features.core</artifactId>
-            <version>${karaf4-version}</version>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.karaf</groupId>
-            <artifactId>apache-karaf</artifactId>
-            <version>${karf-test-version}</version>
-            <type>tar.gz</type>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.configadmin</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.gogo.runtime</artifactId>
-            <version>1.1.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-support</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test</artifactId>
-        </dependency>
-
-        <!-- test -->
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <pluginManagement>
-            <plugins>
-                <!-- Eclipse m2e Lifecycle Management -->
-                <plugin>
-                    <groupId>org.eclipse.m2e</groupId>
-                    <artifactId>lifecycle-mapping</artifactId>
-                    <version>${lifecycle-mapping-version}</version>
-                    <configuration>
-                        <lifecycleMappingMetadata>
-                            <pluginExecutions>
-                                <pluginExecution>
-                                    <pluginExecutionFilter>
-                                        <groupId>org.apache.servicemix.tooling</groupId>
-                                        <artifactId>depends-maven-plugin</artifactId>
-                                        <versionRange>${depends-maven-plugin-version}</versionRange>
-                                        <goals>
-                                            <goal>generate-depends-file</goal>
-                                        </goals>
-                                    </pluginExecutionFilter>
-                                    <action>
-                                        <ignore />
-                                    </action>
-                                </pluginExecution>
-                            </pluginExecutions>
-                        </lifecycleMappingMetadata>
-                    </configuration>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-        <plugins>
-            <!-- generate dependencies versions -->
-            <plugin>
-                <groupId>org.apache.servicemix.tooling</groupId>
-                <artifactId>depends-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>generate-depends-file</id>
-                        <goals>
-                            <goal>generate-depends-file</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <!-- do not re-run these tests -->
-                    <rerunFailingTestsCount>0</rerunFailingTestsCount>
-                    <systemPropertyVariables>
-                        <karafVersion>${karaf4-version}</karafVersion>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-bundle-plugin</artifactId>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
-                        <!-- Export-Package>org.apache.camel.test.karaf</Export-Package -->
-                        <DynamicImport-Package>*</DynamicImport-Package>
-                        <Import-Package />
-                        <_removeheaders>Import-Package, Private-Package, Include-Resource, Karaf-Info,
-                            Require-Capability
-                        </_removeheaders>
-                    </instructions>
-                </configuration>
-            </plugin>
-
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>ci-build-profile</id>
-            <activation>
-                <property>
-                    <name>maven.repo.local</name>
-                </property>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
-                            <!--
-                                when the local repo location has been specified, we need to pass
-                                on this information to PAX mvn url
-                            -->
-                            <argLine>-Dorg.ops4j.pax.url.mvn.localRepository=${maven.repo.local}</argLine>
-                            <systemPropertyVariables>
-                                <karafVersion>${karaf4-version}</karafVersion>
-                            </systemPropertyVariables>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-
-    </profiles>
-</project>
diff --git a/components/camel-test-karaf/src/generated/resources/META-INF/services/org/apache/camel/other.properties b/components/camel-test-karaf/src/generated/resources/META-INF/services/org/apache/camel/other.properties
deleted file mode 100644
index ca2a150..0000000
--- a/components/camel-test-karaf/src/generated/resources/META-INF/services/org/apache/camel/other.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-name=test-karaf
-groupId=org.apache.camel
-artifactId=camel-test-karaf
-version=3.2.0-SNAPSHOT
-projectName=Camel :: Test :: Karaf
-projectDescription=Camel integration testing with Apache Karaf
diff --git a/components/camel-test-karaf/src/generated/resources/test-karaf.json b/components/camel-test-karaf/src/generated/resources/test-karaf.json
deleted file mode 100644
index 37d1409..0000000
--- a/components/camel-test-karaf/src/generated/resources/test-karaf.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "other": {
-    "kind": "other",
-    "name": "test-karaf",
-    "title": "Test Karaf",
-    "description": "Camel integration testing with Apache Karaf",
-    "deprecated": false,
-    "firstVersion": "2.18.0",
-    "label": "testing,java,osgi",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-test-karaf",
-    "version": "3.2.0-SNAPSHOT"
-  }
-}
diff --git a/components/camel-test-karaf/src/main/docs/test-karaf.adoc b/components/camel-test-karaf/src/main/docs/test-karaf.adoc
deleted file mode 100644
index 5668522..0000000
--- a/components/camel-test-karaf/src/main/docs/test-karaf.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-= Test Karaf
-
-*Available since Camel 2.18*
-
-Camel testing using Apache Karaf with Pax-Exam.
-
-This component allows to perform integration testing by running Karaf containers using Pax-Exam.
-
-The component is in development and needs some more polish to be ready.
-In addition there is also need for documentation.
diff --git a/components/camel-test-karaf/src/main/java/org/apache/camel/test/karaf/AbstractFeatureTest.java b/components/camel-test-karaf/src/main/java/org/apache/camel/test/karaf/AbstractFeatureTest.java
deleted file mode 100644
index 4297bdb..0000000
--- a/components/camel-test-karaf/src/main/java/org/apache/camel/test/karaf/AbstractFeatureTest.java
+++ /dev/null
@@ -1,479 +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.test.karaf;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Dictionary;
-import java.util.EnumSet;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Locale;
-import java.util.Properties;
-import java.util.function.Consumer;
-
-import javax.inject.Inject;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
-import org.apache.camel.spi.DataFormat;
-import org.apache.camel.spi.Language;
-import org.apache.karaf.features.FeaturesService;
-import org.junit.After;
-import org.junit.Before;
-import org.ops4j.pax.exam.CoreOptions;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.ProbeBuilder;
-import org.ops4j.pax.exam.TestProbeBuilder;
-import org.ops4j.pax.exam.karaf.container.internal.JavaVersionUtil;
-import org.ops4j.pax.exam.karaf.options.KarafDistributionOption;
-import org.ops4j.pax.exam.karaf.options.LogLevelOption;
-import org.ops4j.pax.exam.options.UrlReference;
-import org.ops4j.pax.exam.options.extra.VMOption;
-import org.ops4j.pax.tinybundles.core.TinyBundle;
-import org.ops4j.pax.tinybundles.core.TinyBundles;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-import org.osgi.framework.Filter;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.blueprint.container.BlueprintContainer;
-import org.osgi.service.cm.Configuration;
-import org.osgi.service.cm.ConfigurationAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.Assert.assertNotNull;
-import static org.ops4j.pax.exam.CoreOptions.maven;
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-import static org.ops4j.pax.exam.CoreOptions.systemProperty;
-import static org.ops4j.pax.exam.CoreOptions.vmOption;
-import static org.ops4j.pax.exam.CoreOptions.when;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.configureConsole;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
-
-public abstract class AbstractFeatureTest {
-
-    public static final Long SERVICE_TIMEOUT = 30000L;
-    protected static final Logger LOG = LoggerFactory.getLogger(AbstractFeatureTest.class);
-
-    @Inject
-    protected BundleContext bundleContext;
-
-    @Inject
-    protected BlueprintContainer blueprintContainer;
-
-    @Inject
-    protected FeaturesService featuresService;
-
-    @ProbeBuilder
-    public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
-        // makes sure the generated Test-Bundle contains this import!
-        probe.setHeader(Constants.DYNAMICIMPORT_PACKAGE, "*");
-        return probe;
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        LOG.info("setUp() using BundleContext: {}", bundleContext);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        LOG.info("tearDown()");
-    }
-
-    protected Bundle installBlueprintAsBundle(String name, URL url, boolean start) throws BundleException {
-        return installBlueprintAsBundle(name, url, start, bundle -> { });
-    }
-
-    protected Bundle installBlueprintAsBundle(String name, URL url, boolean start, Consumer<Object> consumer) throws BundleException {
-        // TODO Type Consumer<TinyBundle> cannot be used for this method signature to avoid bundle dependency to pax tinybundles
-        TinyBundle bundle = TinyBundles.bundle();
-        bundle.add("OSGI-INF/blueprint/blueprint-" + name.toLowerCase(Locale.ENGLISH) + ".xml", url);
-        bundle.set("Manifest-Version", "2")
-                .set("Bundle-ManifestVersion", "2")
-                .set("Bundle-SymbolicName", name)
-                .set("Bundle-Version", "1.0.0")
-                .set(Constants.DYNAMICIMPORT_PACKAGE, "*");
-        consumer.accept(bundle);
-        Bundle answer = bundleContext.installBundle(name, bundle.build());
-
-        if (start) {
-            answer.start();
-        }
-        return answer;
-    }
-
-    protected Bundle installSpringAsBundle(String name, URL url, boolean start) throws BundleException {
-        return installSpringAsBundle(name, url, start, bundle -> { });
-    }
-
-    protected Bundle installSpringAsBundle(String name, URL url, boolean start, Consumer<Object> consumer) throws BundleException {
-        // TODO Type Consumer<TinyBundle> cannot be used for this method signature to avoid bundle dependency to pax tinybundles
-        TinyBundle bundle = TinyBundles.bundle();
-        bundle.add("META-INF/spring/spring-" + name.toLowerCase(Locale.ENGLISH) + ".xml", url);
-        bundle.set("Manifest-Version", "2")
-                .set("Bundle-ManifestVersion", "2")
-                .set("Bundle-SymbolicName", name)
-                .set("Bundle-Version", "1.0.0");
-        consumer.accept(bundle);
-        Bundle answer = bundleContext.installBundle(name, bundle.build());
-
-        if (start) {
-            answer.start();
-        }
-        return answer;
-    }
-
-    protected void installCamelFeature(String mainFeature) throws Exception {
-        if (!mainFeature.startsWith("camel-")) {
-            mainFeature = "camel-" + mainFeature;
-        }
-        LOG.info("Install main feature: {}", mainFeature);
-        // do not refresh bundles causing out bundle context to be invalid
-        // TODO: see if we can find a way maybe to install camel.xml as bundle/feature instead of part of unit test (see src/test/resources/OSGI-INF/blueprint)
-        featuresService.installFeature(mainFeature, EnumSet.of(FeaturesService.Option.NoAutoRefreshBundles));
-    }
-
-    protected void overridePropertiesWithConfigAdmin(String pid, Properties props) throws IOException {
-        ConfigurationAdmin configAdmin = getOsgiService(bundleContext, ConfigurationAdmin.class);
-        // passing null as second argument ties the configuration to correct bundle.
-        Configuration config = configAdmin.getConfiguration(pid, null);
-        if (config == null) {
-            throw new IllegalArgumentException("Cannot find configuration with pid " + pid + " in OSGi ConfigurationAdmin service.");
-        }
-
-        // let's merge configurations
-        Dictionary<String, Object> currentProperties = config.getProperties();
-        Dictionary newProps = new Properties();
-        if (currentProperties == null) {
-            currentProperties = newProps;
-        }
-        for (Enumeration<String> ek = currentProperties.keys(); ek.hasMoreElements();) {
-            String k = ek.nextElement();
-            newProps.put(k, currentProperties.get(k));
-        }
-        for (String p : props.stringPropertyNames()) {
-            newProps.put(p, props.getProperty(p));
-        }
-
-        LOG.info("Updating ConfigAdmin {} by overriding properties {}", config, newProps);
-        config.update(newProps);
-    }
-
-    protected void testComponent(String component) throws Exception {
-        testComponent("camel-" + component, component);
-    }
-
-    protected void testComponent(String mainFeature, String component) throws Exception {
-        LOG.info("Looking up CamelContext(myCamel) in OSGi Service Registry");
-
-        installCamelFeature(mainFeature);
-
-        CamelContext camelContext = getOsgiService(bundleContext, CamelContext.class, "(camel.context.name=myCamel)", SERVICE_TIMEOUT);
-        assertNotNull("Cannot find CamelContext with name myCamel", camelContext);
-
-        LOG.info("Getting Camel component: {}", component);
-        // do not auto start the component as it may not have been configured properly and fail in its start method
-        Component comp = camelContext.getComponent(component, true, false);
-        assertNotNull("Cannot get component with name: " + component, comp);
-
-        LOG.info("Found Camel component: {} instance: {} with className: {}", component, comp, comp.getClass());
-    }
-
-    protected void testDataFormat(String dataFormat) throws Exception {
-        testDataFormat("camel-" + dataFormat, dataFormat);
-    }
-
-    protected void testDataFormat(String mainFeature, String dataFormat) throws Exception {
-        LOG.info("Looking up CamelContext(myCamel) in OSGi Service Registry");
-
-        installCamelFeature(mainFeature);
-
-        CamelContext camelContext = getOsgiService(bundleContext, CamelContext.class, "(camel.context.name=myCamel)", SERVICE_TIMEOUT);
-        assertNotNull("Cannot find CamelContext with name myCamel", camelContext);
-
-        LOG.info("Getting Camel dataformat: {}", dataFormat);
-        DataFormat df = camelContext.resolveDataFormat(dataFormat);
-        assertNotNull("Cannot get dataformat with name: " + dataFormat, df);
-
-        LOG.info("Found Camel dataformat: {} instance: {} with className: {}", dataFormat, df, df.getClass());
-    }
-
-    protected void testLanguage(String language) throws Exception {
-        testLanguage("camel-" + language, language);
-    }
-
-    protected void testLanguage(String mainFeature, String language) throws Exception {
-        LOG.info("Looking up CamelContext(myCamel) in OSGi Service Registry");
-
-        installCamelFeature(mainFeature);
-
-        CamelContext camelContext = getOsgiService(bundleContext, CamelContext.class, "(camel.context.name=myCamel)", 20000);
-        assertNotNull("Cannot find CamelContext with name myCamel", camelContext);
-
-        LOG.info("Getting Camel language: {}", language);
-        Language lan = camelContext.resolveLanguage(language);
-        assertNotNull("Cannot get language with name: " + language, lan);
-
-        LOG.info("Found Camel language: {} instance: {} with className: {}", language, lan, lan.getClass());
-    }
-
-    public static String extractName(Class<?> clazz) {
-        String name = clazz.getName();
-        int id0 = name.indexOf("Camel") + "Camel".length();
-        int id1 = name.indexOf("Test");
-        StringBuilder sb = new StringBuilder();
-        for (int i = id0; i < id1; i++) {
-            char c = name.charAt(i);
-            if (Character.isUpperCase(c) && sb.length() > 0) {
-                sb.append("-");
-            }
-            sb.append(Character.toLowerCase(c));
-        }
-        return sb.toString();
-    }
-
-    public static UrlReference getCamelKarafFeatureUrl() {
-        return mavenBundle().
-                groupId("org.apache.camel.karaf").
-                artifactId("apache-camel").
-                version(getCamelKarafFeatureVersion()).
-                type("xml/features");
-    }
-
-    private static String getCamelKarafFeatureVersion() {
-        String camelKarafFeatureVersion = System.getProperty("camelKarafFeatureVersion");
-        if (camelKarafFeatureVersion == null) {
-            throw new RuntimeException("Please specify the maven artifact version to use for org.apache.camel.karaf/apache-camel through the camelKarafFeatureVersion System property");
-        }
-        return camelKarafFeatureVersion;
-    }
-
-    private static void switchPlatformEncodingToUTF8() {
-        try {
-            System.setProperty("file.encoding", "UTF-8");
-            Field charset = Charset.class.getDeclaredField("defaultCharset");
-            charset.setAccessible(true);
-            charset.set(null, null);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private static String getKarafVersion() {
-        InputStream ins = AbstractFeatureTest.class.getResourceAsStream("/META-INF/maven/dependencies.properties");
-        Properties p = new Properties();
-        try {
-            p.load(ins);
-        } catch (Throwable t) {
-            // ignore
-        }
-        String karafVersion = p.getProperty("org.apache.karaf/apache-karaf/version");
-        if (karafVersion == null) {
-            karafVersion = System.getProperty("karafVersion");
-        }
-        if (karafVersion == null) {
-            // setup the default version of it
-            karafVersion = "4.1.0";
-        }
-        return karafVersion;
-    }
-
-    public static Option[] configure(String... extra) {
-
-        List<String> camel = new ArrayList<>();
-        camel.add("camel");
-        if (extra != null && extra.length > 0) {
-            for (String e : extra) {
-                camel.add(e);
-            }
-        }
-        final String[] camelFeatures = camel.toArray(new String[camel.size()]);
-
-        switchPlatformEncodingToUTF8();
-        String karafVersion = getKarafVersion();
-        LOG.info("*** Apache Karaf version is " + karafVersion + " ***");
-
-        Option[] options = new Option[]{
-            // for remote debugging
-//            new VMOption("-Xdebug"),
-//            new VMOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5008"),
-
-            KarafDistributionOption.karafDistributionConfiguration()
-                    .frameworkUrl(maven().groupId("org.apache.karaf").artifactId("apache-karaf").type("tar.gz").versionAsInProject())
-                    .karafVersion(karafVersion)
-                    .name("Apache Karaf")
-                    .useDeployFolder(false).unpackDirectory(new File("target/paxexam/unpack/")),
-            logLevel(LogLevelOption.LogLevel.INFO),
-
-            // keep the folder so we can look inside when something fails
-            keepRuntimeFolder(),
-
-            // Disable the SSH port
-            configureConsole().ignoreRemoteShell(),
-
-            // need to modify the jre.properties to export some com.sun packages that some features rely on
-//            KarafDistributionOption.replaceConfigurationFile("etc/jre.properties", new File("src/test/resources/jre.properties")),
-
-            vmOption("-Dfile.encoding=UTF-8"),
-
-            // Disable the Karaf shutdown port
-            editConfigurationFilePut("etc/custom.properties", "karaf.shutdown.port", "-1"),
-
-            // log config
-            editConfigurationFilePut("etc/custom.properties", "karaf.log", "${karaf.data}/log"),
-
-            // Assign unique ports for Karaf
-//            editConfigurationFilePut("etc/org.ops4j.pax.web.cfg", "org.osgi.service.http.port", Integer.toString(AvailablePortFinder.getNextAvailable())),
-//            editConfigurationFilePut("etc/org.apache.karaf.management.cfg", "rmiRegistryPort", Integer.toString(AvailablePortFinder.getNextAvailable())),
-//            editConfigurationFilePut("etc/org.apache.karaf.management.cfg", "rmiServerPort", Integer.toString(AvailablePortFinder.getNextAvailable())),
-
-            // install junit
-            CoreOptions.junitBundles(),
-
-            // install camel
-            features(getCamelKarafFeatureUrl(), camelFeatures),
-
-            // install camel-test-karaf as bundle (not feature as the feature causes a bundle refresh that invalidates the @Inject bundleContext)
-            mavenBundle().groupId("org.apache.camel").artifactId("camel-test-karaf").versionAsInProject(),
-            when(JavaVersionUtil.getMajorVersion() >= 9)
-                    .useOptions(
-                    systemProperty("pax.exam.osgi.`unresolved.fail").value("true"),
-                    systemProperty("java.awt.headless").value("true"),
-                    new VMOption("--add-reads=java.xml=java.logging"),
-                    new VMOption("--add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED"),
-                    new VMOption("--patch-module"),
-                    new VMOption("java.base=lib/endorsed/org.apache.karaf.specs.locator-"
-                            + System.getProperty("karafVersion", "4.2.4") + ".jar"),
-                    new VMOption("--patch-module"),
-                    new VMOption("java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-"
-                            + System.getProperty("karafVersion", "4.2.4") + ".jar"),
-                    new VMOption("--add-opens"),
-                    new VMOption("java.base/java.security=ALL-UNNAMED"),
-                    new VMOption("--add-opens"),
-                    new VMOption("java.base/java.net=ALL-UNNAMED"),
-                    new VMOption("--add-opens"),
-                    new VMOption("java.base/java.lang=ALL-UNNAMED"),
-                    new VMOption("--add-opens"),
-                    new VMOption("java.base/java.util=ALL-UNNAMED"),
-                    new VMOption("--add-opens"),
-                    new VMOption("java.naming/javax.naming.spi=ALL-UNNAMED"),
-                    new VMOption("--add-opens"),
-                    new VMOption("java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED"),
-                    new VMOption("--add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED"),
-                    new VMOption("--add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED"),
-                    new VMOption("--add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED"),
-                    new VMOption("--add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED"),
-                    new VMOption("-classpath"),
-                    new VMOption("lib/jdk9plus/*" + File.pathSeparator + "lib/boot/*")
-            )
-        };
-
-        return options;
-    }
-
-    protected <T> T getOsgiService(BundleContext bundleContext, Class<T> type) {
-        return getOsgiService(bundleContext, type, null, SERVICE_TIMEOUT);
-    }
-
-    protected <T> T getOsgiService(BundleContext bundleContext, Class<T> type, long timeout) {
-        return getOsgiService(bundleContext, type, null, timeout);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> T getOsgiService(BundleContext bundleContext, Class<T> type, String filter, long timeout) {
-        ServiceTracker tracker;
-        try {
-            String flt;
-            if (filter != null) {
-                if (filter.startsWith("(")) {
-                    flt = "(&(" + Constants.OBJECTCLASS + "=" + type.getName() + ")" + filter + ")";
-                } else {
-                    flt = "(&(" + Constants.OBJECTCLASS + "=" + type.getName() + ")(" + filter + "))";
-                }
-            } else {
-                flt = "(" + Constants.OBJECTCLASS + "=" + type.getName() + ")";
-            }
-            Filter osgiFilter = FrameworkUtil.createFilter(flt);
-            tracker = new ServiceTracker(bundleContext, osgiFilter, null);
-            tracker.open(true);
-            // Note that the tracker is not closed to keep the reference
-            // This is buggy, as the service reference may change i think
-            Object svc = tracker.waitForService(timeout);
-
-            if (svc == null) {
-                Dictionary<?, ?> dic = bundleContext.getBundle().getHeaders();
-                LOG.warn("Test bundle headers: " + explode(dic));
-
-                for (ServiceReference ref : asCollection(bundleContext.getAllServiceReferences(null, null))) {
-                    LOG.warn("ServiceReference: " + ref + ", bundle: " + ref.getBundle() + ", symbolicName: " + ref.getBundle().getSymbolicName());
-                }
-
-                for (ServiceReference ref : asCollection(bundleContext.getAllServiceReferences(null, flt))) {
-                    LOG.warn("Filtered ServiceReference: " + ref + ", bundle: " + ref.getBundle() + ", symbolicName: " + ref.getBundle().getSymbolicName());
-                }
-
-                throw new RuntimeException("Gave up waiting for service " + flt);
-            }
-            return type.cast(svc);
-        } catch (InvalidSyntaxException e) {
-            throw new IllegalArgumentException("Invalid filter", e);
-        } catch (InterruptedException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * Explode the dictionary into a <code>,</code> delimited list of <code>key=value</code> pairs.
-     */
-    private static String explode(Dictionary<?, ?> dictionary) {
-        Enumeration<?> keys = dictionary.keys();
-        StringBuilder result = new StringBuilder();
-        while (keys.hasMoreElements()) {
-            Object key = keys.nextElement();
-            result.append(String.format("%s=%s", key, dictionary.get(key)));
-            if (keys.hasMoreElements()) {
-                result.append(", ");
-            }
-        }
-        return result.toString();
-    }
-
-    /**
-     * Provides an iterable collection of references, even if the original array is <code>null</code>.
-     */
-    private static Collection<ServiceReference> asCollection(ServiceReference[] references) {
-        return references == null ? new ArrayList<>(0) : Arrays.asList(references);
-    }
-
-}
diff --git a/components/camel-test-karaf/src/main/java/org/apache/camel/test/karaf/CamelKarafTestSupport.java b/components/camel-test-karaf/src/main/java/org/apache/camel/test/karaf/CamelKarafTestSupport.java
deleted file mode 100644
index 992af1e..0000000
--- a/components/camel-test-karaf/src/main/java/org/apache/camel/test/karaf/CamelKarafTestSupport.java
+++ /dev/null
@@ -1,390 +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.test.karaf;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.PrintStream;
-import java.net.URL;
-import java.security.Principal;
-import java.security.PrivilegedExceptionAction;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Set;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.FutureTask;
-import java.util.concurrent.TimeUnit;
-
-import javax.inject.Inject;
-import javax.management.remote.JMXConnector;
-import javax.management.remote.JMXConnectorFactory;
-import javax.management.remote.JMXServiceURL;
-import javax.security.auth.Subject;
-
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.apache.felix.service.command.CommandProcessor;
-import org.apache.felix.service.command.CommandSession;
-import org.apache.karaf.features.Feature;
-import org.apache.karaf.features.FeaturesService;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.ProbeBuilder;
-import org.ops4j.pax.exam.TestProbeBuilder;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.framework.Filter;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class CamelKarafTestSupport extends CamelTestSupport {
-
-    static final Long COMMAND_TIMEOUT = 30000L;
-    static final Long SERVICE_TIMEOUT = 30000L;
-
-    protected ExecutorService executor = Executors.newCachedThreadPool();
-
-    @Inject
-    protected BundleContext bundleContext;
-
-    @Inject
-    protected FeaturesService featuresService;
-
-    @ProbeBuilder
-    public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
-        probe.setHeader(Constants.DYNAMICIMPORT_PACKAGE, "*,org.apache.felix.service.*;status=provisional");
-        return probe;
-    }
-
-    public File getConfigFile(String path) {
-        URL res = this.getClass().getResource(path);
-        if (res == null) {
-            throw new RuntimeException("Config resource " + path + " not found");
-        }
-        return new File(res.getFile());
-    }
-
-    public static Option[] configure(String... extra) {
-        return AbstractFeatureTest.configure(extra);
-    }
-
-    /**
-     * Executes a shell command and returns output as a String.
-     * Commands have a default timeout of 10 seconds.
-     *
-     * @param command The command to execute
-     * @param principals The principals (e.g. RolePrincipal objects) to run the command under
-     */
-    protected String executeCommand(final String command, Principal... principals) {
-        return executeCommand(command, COMMAND_TIMEOUT, false, principals);
-    }
-
-    /**
-     * Executes a shell command and returns output as a String.
-     * Commands have a default timeout of 10 seconds.
-     *
-     * @param command    The command to execute.
-     * @param timeout    The amount of time in millis to wait for the command to execute.
-     * @param silent     Specifies if the command should be displayed in the screen.
-     * @param principals The principals (e.g. RolePrincipal objects) to run the command under
-     */
-    protected String executeCommand(final String command, final Long timeout, final Boolean silent, final Principal... principals) {
-
-        waitForCommandService(command);
-        String response;
-        final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        final PrintStream printStream = new PrintStream(byteArrayOutputStream);
-        final Callable<String> commandCallable = new Callable<String>() {
-            @Override
-            public String call() throws Exception {
-                try {
-                    if (!silent) {
-                        System.err.println(command);
-                    }
-                    final CommandProcessor commandProcessor = getOsgiService(CommandProcessor.class);
-                    final CommandSession commandSession = commandProcessor.createSession(System.in, printStream, System.err);
-                    commandSession.execute(command);
-                } catch (Exception e) {
-                    throw new RuntimeException(e.getMessage(), e);
-                }
-                printStream.flush();
-                return byteArrayOutputStream.toString();
-            }
-        };
-
-        FutureTask<String> commandFuture;
-        if (principals.length == 0) {
-            commandFuture = new FutureTask<>(commandCallable);
-        } else {
-            // If principals are defined, run the command callable via Subject.doAs()
-            commandFuture = new FutureTask<>(new Callable<String>() {
-                @Override
-                public String call() throws Exception {
-                    Subject subject = new Subject();
-                    subject.getPrincipals().addAll(Arrays.asList(principals));
-                    return Subject.doAs(subject, new PrivilegedExceptionAction<String>() {
-                        @Override
-                        public String run() throws Exception {
-                            return commandCallable.call();
-                        }
-                    });
-                }
-            });
-        }
-
-
-        try {
-            executor.submit(commandFuture);
-            response = commandFuture.get(timeout, TimeUnit.MILLISECONDS);
-        } catch (Exception e) {
-            e.printStackTrace(System.err);
-            response = "SHELL COMMAND TIMED OUT: ";
-        }
-
-        return response;
-    }
-
-    private void waitForCommandService(String command) {
-        // the commands are represented by services. Due to the asynchronous nature of services they may not be
-        // immediately available. This code waits the services to be available, in their secured form. It
-        // means that the code waits for the command service to appear with the roles defined.
-    
-        if (command == null || command.length() == 0) {
-            return;
-        }
-       
-        int spaceIdx = command.indexOf(' ');
-        if (spaceIdx > 0) {
-            command = command.substring(0, spaceIdx);
-        }
-        int colonIndx = command.indexOf(':');
-        
-        try {
-            if (colonIndx > 0) {
-                String scope = command.substring(0, colonIndx);
-                String function = command.substring(colonIndx + 1);
-                waitForService("(&(osgi.command.scope=" + scope + ")(osgi.command.function=" + function + "))", SERVICE_TIMEOUT);
-            } else {
-                waitForService("(osgi.command.function=" + command + ")", SERVICE_TIMEOUT);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private void waitForService(String filter, long timeout) throws InvalidSyntaxException,
-        InterruptedException {
-        
-        ServiceTracker st = new ServiceTracker(bundleContext,
-                                               bundleContext.createFilter(filter),
-                                               null);
-        try {
-            st.open();
-            st.waitForService(timeout);
-        } finally {
-            st.close();
-        }
-    }
-
-    protected <T> T getOsgiService(Class<T> type, long timeout) {
-        return getOsgiService(type, null, timeout);
-    }
-
-    protected <T> T getOsgiService(Class<T> type) {
-        return getOsgiService(type, null, SERVICE_TIMEOUT);
-    }
-
-    @SuppressWarnings("unchecked")
-    protected <T> T getOsgiService(Class<T> type, String filter, long timeout) {
-        ServiceTracker tracker = null;
-        try {
-            String flt;
-            if (filter != null) {
-                if (filter.startsWith("(")) {
-                    flt = "(&(" + Constants.OBJECTCLASS + "=" + type.getName() + ")" + filter + ")";
-                } else {
-                    flt = "(&(" + Constants.OBJECTCLASS + "=" + type.getName() + ")(" + filter + "))";
-                }
-            } else {
-                flt = "(" + Constants.OBJECTCLASS + "=" + type.getName() + ")";
-            }
-            Filter osgiFilter = FrameworkUtil.createFilter(flt);
-            tracker = new ServiceTracker(bundleContext, osgiFilter, null);
-            tracker.open(true);
-            // Note that the tracker is not closed to keep the reference
-            // This is buggy, as the service reference may change i think
-            Object svc = type.cast(tracker.waitForService(timeout));
-            if (svc == null) {
-                Dictionary dic = bundleContext.getBundle().getHeaders();
-                System.err.println("Test bundle headers: " + explode(dic));
-
-                for (ServiceReference ref : asCollection(bundleContext.getAllServiceReferences(null, null))) {
-                    System.err.println("ServiceReference: " + ref);
-                }
-
-                for (ServiceReference ref : asCollection(bundleContext.getAllServiceReferences(null, flt))) {
-                    System.err.println("Filtered ServiceReference: " + ref);
-                }
-
-                throw new RuntimeException("Gave up waiting for service " + flt);
-            }
-            return type.cast(svc);
-        } catch (InvalidSyntaxException e) {
-            throw new IllegalArgumentException("Invalid filter", e);
-        } catch (InterruptedException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /*
-    * Explode the dictionary into a ,-delimited list of key=value pairs
-    */
-    private static String explode(Dictionary dictionary) {
-        Enumeration keys = dictionary.keys();
-        StringBuilder sb = new StringBuilder();
-        while (keys.hasMoreElements()) {
-            Object key = keys.nextElement();
-            sb.append(String.format("%s=%s", key, dictionary.get(key)));
-            if (keys.hasMoreElements()) {
-                sb.append(", ");
-            }
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Provides an iterable collection of references, even if the original array is null
-     */
-    private static Collection<ServiceReference> asCollection(ServiceReference[] references) {
-        return references != null ? Arrays.asList(references) : Collections.<ServiceReference>emptyList();
-    }
-
-    public JMXConnector getJMXConnector() throws Exception {
-        return getJMXConnector("karaf", "karaf");
-    }
-
-    public JMXConnector getJMXConnector(String userName, String passWord) throws Exception {
-        JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/karaf-root");
-        Hashtable<String, Object> env = new Hashtable<>();
-        String[] credentials = new String[]{userName, passWord};
-        env.put("jmx.remote.credentials", credentials);
-        JMXConnector connector = JMXConnectorFactory.connect(url, env);
-        return connector;
-    }
-
-    public void assertFeatureInstalled(String featureName) {
-        try {
-            Feature[] features = featuresService.listInstalledFeatures();
-            for (Feature feature : features) {
-                if (featureName.equals(feature.getName())) {
-                    return;
-                }
-            }
-            fail("Feature " + featureName + " should be installed but is not");
-        } catch (Exception e) {
-            throw RuntimeCamelException.wrapRuntimeCamelException(e);
-        }
-    }
-
-    public void assertFeatureInstalled(String featureName, String featureVersion) {
-        try {
-            Feature[] features = featuresService.listInstalledFeatures();
-            for (Feature feature : features) {
-                if (featureName.equals(feature.getName()) && featureVersion.equals(feature.getVersion())) {
-                    return;
-                }
-            }
-            fail("Feature " + featureName + "/" + featureVersion + " should be installed but is not");
-        } catch (Exception e) {
-            throw RuntimeCamelException.wrapRuntimeCamelException(e);
-        }
-    }
-    
-    protected void installAndAssertFeature(String feature) throws Exception {
-        featuresService.installFeature(feature);
-        assertFeatureInstalled(feature);
-    }
-
-    protected void installAndAssertFeature(String feature, String version) throws Exception {
-        featuresService.installFeature(feature, version);
-        assertFeatureInstalled(feature, version);
-    }
-
-    protected void installAssertAndUninstallFeature(String feature) throws Exception {
-        Set<Feature> featuresBefore = new HashSet<>(Arrays.asList(featuresService.listInstalledFeatures()));
-        try {
-            featuresService.installFeature(feature);
-            assertFeatureInstalled(feature);
-        } finally {
-            uninstallNewFeatures(featuresBefore);
-        }
-    }
-
-    protected void installAssertAndUninstallFeature(String feature, String version) throws Exception {
-        Set<Feature> featuresBefore = new HashSet<>(Arrays.asList(featuresService.listInstalledFeatures()));
-        try {
-            featuresService.installFeature(feature, version);
-            assertFeatureInstalled(feature, version);
-        } finally {
-            uninstallNewFeatures(featuresBefore);
-        }
-    }
-
-    protected void installAssertAndUninstallFeatures(String... feature) throws Exception {
-        Set<Feature> featuresBefore = new HashSet<>(Arrays.asList(featuresService.listInstalledFeatures()));
-        try {
-            for (String curFeature : feature) {
-                featuresService.installFeature(curFeature);
-                assertFeatureInstalled(curFeature);
-            }
-        } finally {
-            uninstallNewFeatures(featuresBefore);
-        }
-    }
-
-    /**
-     * The feature service does not uninstall feature dependencies when uninstalling a single feature.
-     * So we need to make sure we uninstall all features that were newly installed.
-     */
-    protected void uninstallNewFeatures(Set<Feature> featuresBefore) {
-        try {
-            Feature[] features = featuresService.listInstalledFeatures();
-            for (Feature curFeature : features) {
-                if (!featuresBefore.contains(curFeature)) {
-                    try {
-                        System.out.println("Uninstalling " + curFeature.getName());
-                        featuresService.uninstallFeature(curFeature.getName(), curFeature.getVersion());
-                    } catch (Exception e) {
-                        // ignore
-                    }
-                }
-            }
-        } catch (Exception e) {
-            throw RuntimeCamelException.wrapRuntimeCamelException(e);
-        }
-    }
-
-}
diff --git a/components/pom.xml b/components/pom.xml
index 04f9ae1..70abb2d 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -60,7 +60,6 @@
         <!-- we want to test these modules first to catch any errors early as possible -->
         <module>camel-test</module>
         <module>camel-test-cdi</module>
-        <module>camel-test-karaf</module>
         <module>camel-test-spring</module>
         <module>camel-testcontainers</module>
         <module>camel-testcontainers-spring</module>
diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index 1f6a866..a00ce88 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -333,7 +333,6 @@
 ** xref:stub-component.adoc[Stub Component]
 ** xref:swagger-java.adoc[Swagger Java Component]
 ** xref:telegram-component.adoc[Telegram Component]
-** xref:test-karaf.adoc[Test Karaf]
 ** xref:test-junit5.adoc[Test Module]
 ** xref:test.adoc[Test Module]
 ** xref:test-spring.adoc[Test Spring]
diff --git a/docs/components/modules/ROOT/pages/aws-xray.adoc b/docs/components/modules/ROOT/pages/aws-xray.adoc
index cce689b..4e34a1b 100644
--- a/docs/components/modules/ROOT/pages/aws-xray.adoc
+++ b/docs/components/modules/ROOT/pages/aws-xray.adoc
@@ -21,7 +21,7 @@ To include both, AWS XRay and Camel, dependencies use the following Maven import
       <dependency>
         <groupId>com.amazonaws</groupId>
         <artifactId>aws-xray-recorder-sdk-bom</artifactId>
-        <version>1.3.1</version>
+        <version>2.4.0</version>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
diff --git a/docs/components/modules/ROOT/pages/index.adoc b/docs/components/modules/ROOT/pages/index.adoc
index 1e40650..28e2016 100644
--- a/docs/components/modules/ROOT/pages/index.adoc
+++ b/docs/components/modules/ROOT/pages/index.adoc
@@ -827,7 +827,7 @@ Number of Languages: 17 in 11 JAR artifacts (0 deprecated)
 == Miscellaneous Components
 
 // others: START
-Number of Miscellaneous Components: 34 in 34 JAR artifacts (0 deprecated)
+Number of Miscellaneous Components: 33 in 33 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |===
@@ -885,8 +885,6 @@ Number of Miscellaneous Components: 34 in 34 JAR artifacts (0 deprecated)
 
 | xref:test-junit5.adoc[Test JUnit5] (camel-test-junit5) | 3.0 | Camel unit testing with JUnit 5
 
-| xref:test-karaf.adoc[Test Karaf] (camel-test-karaf) | 2.18 | Camel integration testing with Apache Karaf
-
 | xref:test-spring.adoc[Test Spring] (camel-test-spring) | 2.10 | Camel unit testing with Spring
 
 | xref:test-spring-junit5.adoc[Test Spring JUnit5] (camel-test-spring-junit5) | 3.0 | Camel unit testing with Spring and JUnit 5
diff --git a/docs/components/modules/ROOT/pages/test-karaf.adoc b/docs/components/modules/ROOT/pages/test-karaf.adoc
deleted file mode 100644
index 22cfe4d..0000000
--- a/docs/components/modules/ROOT/pages/test-karaf.adoc
+++ /dev/null
@@ -1,11 +0,0 @@
-= Test Karaf
-:page-source: components/camel-test-karaf/src/main/docs/test-karaf.adoc
-
-*Available since Camel 2.18*
-
-Camel testing using Apache Karaf with Pax-Exam.
-
-This component allows to perform integration testing by running Karaf containers using Pax-Exam.
-
-The component is in development and needs some more polish to be ready.
-In addition there is also need for documentation.
diff --git a/parent/pom.xml b/parent/pom.xml
index dabb498..2f41935 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -2421,11 +2421,6 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
-        <artifactId>camel-test-karaf</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.camel</groupId>
         <artifactId>camel-test-spring</artifactId>
         <version>${project.version}</version>
       </dependency>