You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/01/13 09:36:54 UTC

[camel] branch main updated: CAMEL-18908: Remove camel-jclouds

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 1b6ac134676 CAMEL-18908: Remove camel-jclouds
1b6ac134676 is described below

commit 1b6ac1346766ba3b48bee834eebef3f20d8f67c7
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Jan 13 10:36:29 2023 +0100

    CAMEL-18908: Remove camel-jclouds
---
 bom/camel-bom/pom.xml                              |   5 -
 camel-dependencies/pom.xml                         |   3 -
 catalog/camel-allcomponents/pom.xml                |   5 -
 .../org/apache/camel/catalog/components.properties |   1 -
 .../apache/camel/catalog/components/jclouds.json   |  63 --
 .../org/apache/camel/catalog/CamelCatalogTest.java |  42 --
 components/camel-jclouds/pom.xml                   |  98 ---
 .../jclouds/JcloudsComponentConfigurer.java        |  84 ---
 .../jclouds/JcloudsEndpointConfigurer.java         | 118 ----
 .../jclouds/JcloudsEndpointUriFactory.java         |  85 ---
 .../jclouds/JcloudsPayloadConverterLoader.java     |  71 ---
 .../services/org/apache/camel/TypeConverterLoader  |   2 -
 .../services/org/apache/camel/component.properties |   7 -
 .../services/org/apache/camel/component/jclouds    |   2 -
 .../org/apache/camel/configurer/jclouds-component  |   2 -
 .../org/apache/camel/configurer/jclouds-endpoint   |   2 -
 .../org/apache/camel/urifactory/jclouds-endpoint   |   2 -
 .../apache/camel/component/jclouds/jclouds.json    |  63 --
 .../src/main/docs/jclouds-component.adoc           | 310 ---------
 .../jclouds/JcloudsBlobStoreConsumer.java          | 118 ----
 .../jclouds/JcloudsBlobStoreEndpoint.java          |  45 --
 .../component/jclouds/JcloudsBlobStoreHelper.java  | 148 -----
 .../jclouds/JcloudsBlobStoreProducer.java          | 138 -----
 .../camel/component/jclouds/JcloudsCommand.java    |  23 -
 .../camel/component/jclouds/JcloudsComponent.java  | 160 -----
 .../component/jclouds/JcloudsComputeEndpoint.java  | 132 ----
 .../component/jclouds/JcloudsComputeProducer.java  | 374 -----------
 .../component/jclouds/JcloudsConfiguration.java    | 203 ------
 .../camel/component/jclouds/JcloudsConstants.java  |  90 ---
 .../camel/component/jclouds/JcloudsEndpoint.java   | 149 -----
 .../component/jclouds/JcloudsPayloadConverter.java | 145 -----
 .../camel/component/jclouds/JcloudsProducer.java   |  27 -
 .../jclouds/JcloudsBlobStoreConsumerTest.java      | 112 ----
 .../jclouds/JcloudsBlobStoreProducerTest.java      | 203 ------
 .../JcloudsFileConsumerStreamCachingIssueTest.java |  60 --
 .../jclouds/JcloudsMultipleBlobStoreTest.java      |  79 ---
 .../jclouds/JcloudsSpringBlobstoreTest.java        | 123 ----
 .../jclouds/JcloudsSpringComputeTest.java          | 350 -----------
 .../src/test/resources/blobstore-test.xml          | 126 ----
 .../src/test/resources/compute-test.xml            |  66 --
 .../src/test/resources/log4j2.properties           |  30 -
 components/pom.xml                                 |   1 -
 .../org/apache/camel/main/components.properties    |   1 -
 .../modules/ROOT/examples/json/jclouds.json        |   1 -
 docs/components/modules/ROOT/nav.adoc              |   1 -
 .../modules/ROOT/pages/jclouds-component.adoc      |   1 -
 .../ROOT/pages/camel-4-migration-guide.adoc        |   1 +
 .../component/ComponentsBuilderFactory.java        |  13 -
 .../dsl/JcloudsComponentBuilderFactory.java        | 180 ------
 .../src/generated/resources/metadata.json          |  22 -
 .../builder/endpoint/EndpointBuilderFactory.java   |   1 -
 .../camel/builder/endpoint/EndpointBuilders.java   |   1 -
 .../builder/endpoint/StaticEndpointBuilders.java   |  53 --
 .../dsl/JcloudsEndpointBuilderFactory.java         | 690 ---------------------
 .../camel-component-known-dependencies.properties  |   1 -
 parent/pom.xml                                     |   8 -
 56 files changed, 1 insertion(+), 4840 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 620cf555b39..c424576b70c 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1071,11 +1071,6 @@
         <artifactId>camel-jcache</artifactId>
         <version>${project.version}</version>
       </dependency>
-      <dependency>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>camel-jclouds</artifactId>
-        <version>${project.version}</version>
-      </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
         <artifactId>camel-jcr</artifactId>
diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index d46e56ae90b..c6fd670500c 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -290,9 +290,6 @@
         <jboss-transaction-spi.version>7.5.1.Final</jboss-transaction-spi.version>
         <jboss-xnio-version>3.3.8.Final</jboss-xnio-version>
         <jcache-bundle-version>1.1.1_1</jcache-bundle-version>
-        <jclouds-version>2.5.0</jclouds-version>
-        <!-- jclouds must use this guava version -->
-        <jclouds-google-guava-version>27.1-jre</jclouds-google-guava-version>
         <jcommander-version>1.72</jcommander-version>
         <jcr-version>2.0</jcr-version>
         <jedis-client-version>3.7.1</jedis-client-version>
diff --git a/catalog/camel-allcomponents/pom.xml b/catalog/camel-allcomponents/pom.xml
index 636385c6cad..412a7303879 100644
--- a/catalog/camel-allcomponents/pom.xml
+++ b/catalog/camel-allcomponents/pom.xml
@@ -898,11 +898,6 @@
             <artifactId>camel-jcache</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-jclouds</artifactId>
-            <version>${project.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-jcr</artifactId>
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
index 3fadd2962d3..5c2daa7a7a3 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
@@ -161,7 +161,6 @@ irc
 ironmq
 jbpm
 jcache
-jclouds
 jcr
 jdbc
 jetty
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jclouds.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jclouds.json
deleted file mode 100644
index d6bb66cca23..00000000000
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jclouds.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "jclouds",
-    "title": "JClouds",
-    "description": "Interact with jclouds compute and blobstore service.",
-    "deprecated": false,
-    "firstVersion": "2.9.0",
-    "label": "api,cloud,compute",
-    "javaType": "org.apache.camel.component.jclouds.JcloudsComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-jclouds",
-    "version": "4.0.0-SNAPSHOT",
-    "scheme": "jclouds",
-    "extendsScheme": "",
-    "syntax": "jclouds:command:providerId",
-    "async": false,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": false,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "blobStores": { "kind": "property", "displayName": "Blob Stores", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.jclouds.blobstore.BlobStore>", "deprecated": false, "autowired": false, "secret": false, "description": "To use the given BlobStore which must be configured when using blobstore." },
-    "computeServices": { "kind": "property", "displayName": "Compute Services", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.jclouds.compute.ComputeService>", "deprecated": false, "autowired": false, "secret": false, "description": "To use the given ComputeService which must be configured when use compute." },
-    "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 me [...]
-    "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 star [...]
-    "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 t [...]
-  },
-  "headers": {
-    "CamelJcloudsBlobName": { "kind": "header", "displayName": "", "group": "producer blobstore", "label": "producer blobstore", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the blob.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#BLOB_NAME" },
-    "CamelJcloudsContainerName": { "kind": "header", "displayName": "", "group": "producer blobstore", "label": "producer blobstore", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the blob container.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#CONTAINER_NAME" },
-    "CamelJcloudsBlobNameList": { "kind": "header", "displayName": "", "group": "producer blobstore", "label": "producer blobstore", "required": false, "javaType": "List", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The blob name list.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#BLOB_NAME_LIST" },
-    "CamelJcloudsNodeState": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The node state", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#NODE_STATE" },
-    "CamelJcloudsOperation": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to be performed on the blob. The valid options are: PUT GET", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#OPERATION" },
-    "CamelJcloudsImageId": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The imageId that will be used for creating a node. Values depend on the actual cloud provider.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#IMAGE_ID" },
-    "CamelJcloudsLocationId": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The location that will be used for creating a node. Values depend on the actual cloud provider.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#LOCATION_ID" },
-    "CamelJcloudsHardwareId": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The hardware that will be used for creating a node. Values depend on the actual cloud provider.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#HARDWARE_ID" },
-    "CamelJcloudsGroup": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The group that will be assigned to the newly created node. Values depend on the actual cloud provider.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#GROUP" },
-    "CamelJcloudsNodeId": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the node that will run the script or destroyed.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#NODE_ID" },
-    "CamelJcloudsUser": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The user on the target node that will run the script.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#USER" }
-  },
-  "properties": {
-    "command": { "kind": "path", "displayName": "Command", "group": "common", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.jclouds.JcloudsCommand", "enum": [ "blobstore", "compute" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "What command to execute such as blobstore or co [...]
-    "providerId": { "kind": "path", "displayName": "Provider Id", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The name of the cloud provider that provides the target service (e.g. aws-s3 or aws_ec2)." },
-    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "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 [...]
-    "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 con [...]
-    "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." },
-    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 other [...]
-    "blobName": { "kind": "parameter", "displayName": "Blob Name", "group": "blobstore", "label": "producer,blobstore", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The name of the blob." },
-    "container": { "kind": "parameter", "displayName": "Container", "group": "blobstore", "label": "blobstore", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The name of the blob container." },
-    "directory": { "kind": "parameter", "displayName": "Directory", "group": "blobstore", "label": "consumer,blobstore", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "An optional directory name to use" },
-    "group": { "kind": "parameter", "displayName": "Group", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The group that will be assigned to the newly created node. Values depend on the actual cloud provider." },
-    "hardwareId": { "kind": "parameter", "displayName": "Hardware Id", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The hardware that will be used for creating a node. Values depend on the actual cloud provider." },
-    "imageId": { "kind": "parameter", "displayName": "Image Id", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The imageId that will be used for creating a node. Values depend on the actual cloud provider." },
-    "locationId": { "kind": "parameter", "displayName": "Location Id", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The location that will be used for creating a node. Values depend on the actual cloud provider." },
-    "nodeId": { "kind": "parameter", "displayName": "Node Id", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The id of the node that will run the script or destroyed." },
-    "nodeState": { "kind": "parameter", "displayName": "Node State", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "PENDING", "TERMINATED", "SUSPENDED", "RUNNING", "ERROR", "UNRECOGNIZED" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "To filter by node status  [...]
-    "operation": { "kind": "parameter", "displayName": "Operation", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "Specifies the type of operation that will be performed to the blobstore." },
-    "user": { "kind": "parameter", "displayName": "User", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The user on the target node that will run the script." }
-  }
-}
diff --git a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index cbd72ebba87..efed7c1c2d1 100644
--- a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -1393,48 +1393,6 @@ public class CamelCatalogTest {
         assertTrue(result.isSuccess());
     }
 
-    @Test
-    public void testValidateConfigurationPropertyComponentJClouds() {
-        String text = "camel.component.jclouds.autowiredEnabled=true";
-        ConfigurationPropertiesValidationResult result = catalog.validateConfigurationProperty(text);
-        assertTrue(result.isSuccess());
-
-        text = "camel.component.jclouds.blobStores=#myStores";
-        result = catalog.validateConfigurationProperty(text);
-        assertTrue(result.isSuccess());
-
-        text = "camel.component.jclouds.blobStores=foo";
-        result = catalog.validateConfigurationProperty(text);
-        assertFalse(result.isSuccess());
-        assertTrue(result.getInvalidArray().containsKey("camel.component.jclouds.blobStores"));
-
-        text = "camel.component.jclouds.blobStores[0]=foo";
-        result = catalog.validateConfigurationProperty(text);
-        assertTrue(result.isSuccess());
-
-        text = "camel.component.jclouds.blobStores[1]=bar";
-        result = catalog.validateConfigurationProperty(text);
-        assertTrue(result.isSuccess());
-
-        text = "camel.component.jclouds.blobStores[foo]=123";
-        result = catalog.validateConfigurationProperty(text);
-        assertFalse(result.isSuccess());
-        assertEquals("foo", result.getInvalidInteger().get("camel.component.jclouds.blobStores[foo]"));
-
-        text = "camel.component.jclouds.blobStores[0].beer=yes";
-        result = catalog.validateConfigurationProperty(text);
-        assertTrue(result.isSuccess());
-
-        text = "camel.component.jclouds.blobStores[1].drink=no";
-        result = catalog.validateConfigurationProperty(text);
-        assertTrue(result.isSuccess());
-
-        text = "camel.component.jclouds.blobStores[foo].beer=yes";
-        result = catalog.validateConfigurationProperty(text);
-        assertFalse(result.isSuccess());
-        assertEquals("foo", result.getInvalidInteger().get("camel.component.jclouds.blobStores[foo].beer"));
-    }
-
     @Test
     public void testValidateConfigurationPropertyMain() {
         String text = "camel.main.allow-use-original-message=true";
diff --git a/components/camel-jclouds/pom.xml b/components/camel-jclouds/pom.xml
deleted file mode 100644
index 60b07e2c4e5..00000000000
--- a/components/camel-jclouds/pom.xml
+++ /dev/null
@@ -1,98 +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/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>components</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>camel-jclouds</artifactId>
-    <packaging>jar</packaging>
-    <name>Camel :: JClouds</name>
-    <description>Camel JClouds support</description>
-
-    <properties>
-
-
-        <!-- jclouds requires guice 3 -->
-        <google-guava-version>${jclouds-google-guava-version}</google-guava-version>
-        <guice-version>${guice3-version}</guice-version>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-support</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-xml-jaxp</artifactId>
-        </dependency>
-
-        <!-- jclouds -->
-        <dependency>
-            <groupId>org.apache.jclouds</groupId>
-            <artifactId>jclouds-blobstore</artifactId>
-            <version>${jclouds-version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.jclouds</groupId>
-            <artifactId>jclouds-compute</artifactId>
-            <version>${jclouds-version}</version>
-        </dependency>
-
-        <!-- test -->
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test-spring-junit5</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-    <profiles>
-        <profile>
-            <id>jdk17-build</id>
-            <activation>
-                <jdk>[17,)</jdk>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <argLine>--add-opens java.base/java.lang=ALL-UNNAMED</argLine>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-</project>
diff --git a/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsComponentConfigurer.java b/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsComponentConfigurer.java
deleted file mode 100644
index b7b19f12086..00000000000
--- a/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsComponentConfigurer.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.jclouds;
-
-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 JcloudsComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        JcloudsComponent target = (JcloudsComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
-        case "blobstores":
-        case "blobStores": target.setBlobStores(property(camelContext, java.util.List.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "computeservices":
-        case "computeServices": target.setComputeServices(property(camelContext, java.util.List.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": return boolean.class;
-        case "blobstores":
-        case "blobStores": return java.util.List.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "computeservices":
-        case "computeServices": return java.util.List.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        JcloudsComponent target = (JcloudsComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": return target.isAutowiredEnabled();
-        case "blobstores":
-        case "blobStores": return target.getBlobStores();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "computeservices":
-        case "computeServices": return target.getComputeServices();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "blobstores":
-        case "blobStores": return org.jclouds.blobstore.BlobStore.class;
-        case "computeservices":
-        case "computeServices": return org.jclouds.compute.ComputeService.class;
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsEndpointConfigurer.java b/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsEndpointConfigurer.java
deleted file mode 100644
index 0ec38027905..00000000000
--- a/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsEndpointConfigurer.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.jclouds;
-
-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 JcloudsEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        JcloudsEndpoint target = (JcloudsEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "blobname":
-        case "blobName": target.getConfiguration().setBlobName(property(camelContext, java.lang.String.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "container": target.getConfiguration().setContainer(property(camelContext, java.lang.String.class, value)); return true;
-        case "directory": target.getConfiguration().setDirectory(property(camelContext, java.lang.String.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 "group": target.getConfiguration().setGroup(property(camelContext, java.lang.String.class, value)); return true;
-        case "hardwareid":
-        case "hardwareId": target.getConfiguration().setHardwareId(property(camelContext, java.lang.String.class, value)); return true;
-        case "imageid":
-        case "imageId": target.getConfiguration().setImageId(property(camelContext, java.lang.String.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "locationid":
-        case "locationId": target.getConfiguration().setLocationId(property(camelContext, java.lang.String.class, value)); return true;
-        case "nodeid":
-        case "nodeId": target.getConfiguration().setNodeId(property(camelContext, java.lang.String.class, value)); return true;
-        case "nodestate":
-        case "nodeState": target.getConfiguration().setNodeState(property(camelContext, java.lang.String.class, value)); return true;
-        case "operation": target.getConfiguration().setOperation(property(camelContext, java.lang.String.class, value)); return true;
-        case "user": target.getConfiguration().setUser(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 "blobname":
-        case "blobName": return java.lang.String.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "container": return java.lang.String.class;
-        case "directory": return java.lang.String.class;
-        case "exceptionhandler":
-        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
-        case "exchangepattern":
-        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
-        case "group": return java.lang.String.class;
-        case "hardwareid":
-        case "hardwareId": return java.lang.String.class;
-        case "imageid":
-        case "imageId": return java.lang.String.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "locationid":
-        case "locationId": return java.lang.String.class;
-        case "nodeid":
-        case "nodeId": return java.lang.String.class;
-        case "nodestate":
-        case "nodeState": return java.lang.String.class;
-        case "operation": return java.lang.String.class;
-        case "user": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        JcloudsEndpoint target = (JcloudsEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "blobname":
-        case "blobName": return target.getConfiguration().getBlobName();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "container": return target.getConfiguration().getContainer();
-        case "directory": return target.getConfiguration().getDirectory();
-        case "exceptionhandler":
-        case "exceptionHandler": return target.getExceptionHandler();
-        case "exchangepattern":
-        case "exchangePattern": return target.getExchangePattern();
-        case "group": return target.getConfiguration().getGroup();
-        case "hardwareid":
-        case "hardwareId": return target.getConfiguration().getHardwareId();
-        case "imageid":
-        case "imageId": return target.getConfiguration().getImageId();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "locationid":
-        case "locationId": return target.getConfiguration().getLocationId();
-        case "nodeid":
-        case "nodeId": return target.getConfiguration().getNodeId();
-        case "nodestate":
-        case "nodeState": return target.getConfiguration().getNodeState();
-        case "operation": return target.getConfiguration().getOperation();
-        case "user": return target.getConfiguration().getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsEndpointUriFactory.java b/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsEndpointUriFactory.java
deleted file mode 100644
index d15d1c6e0be..00000000000
--- a/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsEndpointUriFactory.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.jclouds;
-
-import java.net.URISyntaxException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.camel.spi.EndpointUriFactory;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-public class JcloudsEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
-
-    private static final String BASE = ":command:providerId";
-
-    private static final Set<String> PROPERTY_NAMES;
-    private static final Set<String> SECRET_PROPERTY_NAMES;
-    private static final Set<String> MULTI_VALUE_PREFIXES;
-    static {
-        Set<String> props = new HashSet<>(17);
-        props.add("blobName");
-        props.add("bridgeErrorHandler");
-        props.add("command");
-        props.add("container");
-        props.add("directory");
-        props.add("exceptionHandler");
-        props.add("exchangePattern");
-        props.add("group");
-        props.add("hardwareId");
-        props.add("imageId");
-        props.add("lazyStartProducer");
-        props.add("locationId");
-        props.add("nodeId");
-        props.add("nodeState");
-        props.add("operation");
-        props.add("providerId");
-        props.add("user");
-        PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        SECRET_PROPERTY_NAMES = Collections.emptySet();
-        MULTI_VALUE_PREFIXES = Collections.emptySet();
-    }
-
-    @Override
-    public boolean isEnabled(String scheme) {
-        return "jclouds".equals(scheme);
-    }
-
-    @Override
-    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
-        String syntax = scheme + BASE;
-        String uri = syntax;
-
-        Map<String, Object> copy = new HashMap<>(properties);
-
-        uri = buildPathParameter(syntax, uri, "command", null, true, copy);
-        uri = buildPathParameter(syntax, uri, "providerId", null, true, copy);
-        uri = buildQueryParameters(uri, copy, encode);
-        return uri;
-    }
-
-    @Override
-    public Set<String> propertyNames() {
-        return PROPERTY_NAMES;
-    }
-
-    @Override
-    public Set<String> secretPropertyNames() {
-        return SECRET_PROPERTY_NAMES;
-    }
-
-    @Override
-    public Set<String> multiValuePrefixes() {
-        return MULTI_VALUE_PREFIXES;
-    }
-
-    @Override
-    public boolean isLenientProperties() {
-        return false;
-    }
-}
-
diff --git a/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsPayloadConverterLoader.java b/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsPayloadConverterLoader.java
deleted file mode 100644
index f782cbc6164..00000000000
--- a/components/camel-jclouds/src/generated/java/org/apache/camel/component/jclouds/JcloudsPayloadConverterLoader.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.jclouds;
-
-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 JcloudsPayloadConverterLoader implements TypeConverterLoader, CamelContextAware {
-
-    private CamelContext camelContext;
-
-    public JcloudsPayloadConverterLoader() {
-    }
-
-    @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);
-        registerFallbackConverters(registry);
-    }
-
-    private void registerConverters(TypeConverterRegistry registry) {
-        addTypeConverter(registry, org.jclouds.io.Payload.class, byte[].class, false,
-            (type, exchange, value) -> org.apache.camel.component.jclouds.JcloudsPayloadConverter.toPayload((byte[]) value));
-        addTypeConverter(registry, org.jclouds.io.Payload.class, java.io.File.class, false,
-            (type, exchange, value) -> org.apache.camel.component.jclouds.JcloudsPayloadConverter.toPayload((java.io.File) value));
-        addTypeConverter(registry, org.jclouds.io.Payload.class, java.io.InputStream.class, false,
-            (type, exchange, value) -> org.apache.camel.component.jclouds.JcloudsPayloadConverter.toPayload((java.io.InputStream) value, exchange));
-        addTypeConverter(registry, org.jclouds.io.Payload.class, java.lang.String.class, false,
-            (type, exchange, value) -> org.apache.camel.component.jclouds.JcloudsPayloadConverter.toPayload((java.lang.String) value, exchange));
-        addTypeConverter(registry, org.jclouds.io.Payload.class, javax.xml.transform.stream.StreamSource.class, false,
-            (type, exchange, value) -> org.apache.camel.component.jclouds.JcloudsPayloadConverter.toPayload((javax.xml.transform.stream.StreamSource) value, exchange));
-        addTypeConverter(registry, org.jclouds.io.Payload.class, org.apache.camel.util.xml.StreamSourceCache.class, false,
-            (type, exchange, value) -> org.apache.camel.component.jclouds.JcloudsPayloadConverter.toPayload((org.apache.camel.util.xml.StreamSourceCache) value, exchange));
-    }
-
-    private static void addTypeConverter(TypeConverterRegistry registry, Class<?> toType, Class<?> fromType, boolean allowNull, SimpleTypeConverter.ConversionMethod method) { 
-        registry.addTypeConverter(toType, fromType, new SimpleTypeConverter(allowNull, method));
-    }
-
-    private void registerFallbackConverters(TypeConverterRegistry registry) {
-        addFallbackTypeConverter(registry, false, false, (type, exchange, value) -> org.apache.camel.component.jclouds.JcloudsPayloadConverter.convertTo(type, exchange, value, registry));
-    }
-
-    private static void addFallbackTypeConverter(TypeConverterRegistry registry, boolean allowNull, boolean canPromote, SimpleTypeConverter.ConversionMethod method) { 
-        registry.addFallbackTypeConverter(new SimpleTypeConverter(allowNull, method), canPromote);
-    }
-
-}
diff --git a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader b/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader
deleted file mode 100644
index 749655f5ddc..00000000000
--- a/components/camel-jclouds/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.jclouds.JcloudsPayloadConverterLoader
diff --git a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/component.properties
deleted file mode 100644
index 2510279a9c6..00000000000
--- a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/component.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-components=jclouds
-groupId=org.apache.camel
-artifactId=camel-jclouds
-version=4.0.0-SNAPSHOT
-projectName=Camel :: JClouds
-projectDescription=Camel JClouds support
diff --git a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/component/jclouds b/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/component/jclouds
deleted file mode 100644
index 252a3ad92df..00000000000
--- a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/component/jclouds
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.jclouds.JcloudsComponent
diff --git a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/configurer/jclouds-component b/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/configurer/jclouds-component
deleted file mode 100644
index 551bc8665ac..00000000000
--- a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/configurer/jclouds-component
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.jclouds.JcloudsComponentConfigurer
diff --git a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/configurer/jclouds-endpoint b/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/configurer/jclouds-endpoint
deleted file mode 100644
index 36bf784771f..00000000000
--- a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/configurer/jclouds-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.jclouds.JcloudsEndpointConfigurer
diff --git a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/urifactory/jclouds-endpoint b/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/urifactory/jclouds-endpoint
deleted file mode 100644
index ba0f3f6ca61..00000000000
--- a/components/camel-jclouds/src/generated/resources/META-INF/services/org/apache/camel/urifactory/jclouds-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.jclouds.JcloudsEndpointUriFactory
diff --git a/components/camel-jclouds/src/generated/resources/org/apache/camel/component/jclouds/jclouds.json b/components/camel-jclouds/src/generated/resources/org/apache/camel/component/jclouds/jclouds.json
deleted file mode 100644
index d6bb66cca23..00000000000
--- a/components/camel-jclouds/src/generated/resources/org/apache/camel/component/jclouds/jclouds.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "jclouds",
-    "title": "JClouds",
-    "description": "Interact with jclouds compute and blobstore service.",
-    "deprecated": false,
-    "firstVersion": "2.9.0",
-    "label": "api,cloud,compute",
-    "javaType": "org.apache.camel.component.jclouds.JcloudsComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-jclouds",
-    "version": "4.0.0-SNAPSHOT",
-    "scheme": "jclouds",
-    "extendsScheme": "",
-    "syntax": "jclouds:command:providerId",
-    "async": false,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": false,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "blobStores": { "kind": "property", "displayName": "Blob Stores", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.jclouds.blobstore.BlobStore>", "deprecated": false, "autowired": false, "secret": false, "description": "To use the given BlobStore which must be configured when using blobstore." },
-    "computeServices": { "kind": "property", "displayName": "Compute Services", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<org.jclouds.compute.ComputeService>", "deprecated": false, "autowired": false, "secret": false, "description": "To use the given ComputeService which must be configured when use compute." },
-    "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 me [...]
-    "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 star [...]
-    "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 t [...]
-  },
-  "headers": {
-    "CamelJcloudsBlobName": { "kind": "header", "displayName": "", "group": "producer blobstore", "label": "producer blobstore", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the blob.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#BLOB_NAME" },
-    "CamelJcloudsContainerName": { "kind": "header", "displayName": "", "group": "producer blobstore", "label": "producer blobstore", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the blob container.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#CONTAINER_NAME" },
-    "CamelJcloudsBlobNameList": { "kind": "header", "displayName": "", "group": "producer blobstore", "label": "producer blobstore", "required": false, "javaType": "List", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The blob name list.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#BLOB_NAME_LIST" },
-    "CamelJcloudsNodeState": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The node state", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#NODE_STATE" },
-    "CamelJcloudsOperation": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to be performed on the blob. The valid options are: PUT GET", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#OPERATION" },
-    "CamelJcloudsImageId": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The imageId that will be used for creating a node. Values depend on the actual cloud provider.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#IMAGE_ID" },
-    "CamelJcloudsLocationId": { "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The location that will be used for creating a node. Values depend on the actual cloud provider.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#LOCATION_ID" },
-    "CamelJcloudsHardwareId": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The hardware that will be used for creating a node. Values depend on the actual cloud provider.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#HARDWARE_ID" },
-    "CamelJcloudsGroup": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The group that will be assigned to the newly created node. Values depend on the actual cloud provider.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#GROUP" },
-    "CamelJcloudsNodeId": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the node that will run the script or destroyed.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#NODE_ID" },
-    "CamelJcloudsUser": { "kind": "header", "displayName": "", "group": "producer compute", "label": "producer compute", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The user on the target node that will run the script.", "constantName": "org.apache.camel.component.jclouds.JcloudsConstants#USER" }
-  },
-  "properties": {
-    "command": { "kind": "path", "displayName": "Command", "group": "common", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.jclouds.JcloudsCommand", "enum": [ "blobstore", "compute" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "What command to execute such as blobstore or co [...]
-    "providerId": { "kind": "path", "displayName": "Provider Id", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The name of the cloud provider that provides the target service (e.g. aws-s3 or aws_ec2)." },
-    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "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 [...]
-    "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 con [...]
-    "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." },
-    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 other [...]
-    "blobName": { "kind": "parameter", "displayName": "Blob Name", "group": "blobstore", "label": "producer,blobstore", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The name of the blob." },
-    "container": { "kind": "parameter", "displayName": "Container", "group": "blobstore", "label": "blobstore", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The name of the blob container." },
-    "directory": { "kind": "parameter", "displayName": "Directory", "group": "blobstore", "label": "consumer,blobstore", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "An optional directory name to use" },
-    "group": { "kind": "parameter", "displayName": "Group", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The group that will be assigned to the newly created node. Values depend on the actual cloud provider." },
-    "hardwareId": { "kind": "parameter", "displayName": "Hardware Id", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The hardware that will be used for creating a node. Values depend on the actual cloud provider." },
-    "imageId": { "kind": "parameter", "displayName": "Image Id", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The imageId that will be used for creating a node. Values depend on the actual cloud provider." },
-    "locationId": { "kind": "parameter", "displayName": "Location Id", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The location that will be used for creating a node. Values depend on the actual cloud provider." },
-    "nodeId": { "kind": "parameter", "displayName": "Node Id", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The id of the node that will run the script or destroyed." },
-    "nodeState": { "kind": "parameter", "displayName": "Node State", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "PENDING", "TERMINATED", "SUSPENDED", "RUNNING", "ERROR", "UNRECOGNIZED" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "To filter by node status  [...]
-    "operation": { "kind": "parameter", "displayName": "Operation", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "Specifies the type of operation that will be performed to the blobstore." },
-    "user": { "kind": "parameter", "displayName": "User", "group": "compute", "label": "producer,compute", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.jclouds.JcloudsConfiguration", "configurationField": "configuration", "description": "The user on the target node that will run the script." }
-  }
-}
diff --git a/components/camel-jclouds/src/main/docs/jclouds-component.adoc b/components/camel-jclouds/src/main/docs/jclouds-component.adoc
deleted file mode 100644
index b8bb5475f9f..00000000000
--- a/components/camel-jclouds/src/main/docs/jclouds-component.adoc
+++ /dev/null
@@ -1,310 +0,0 @@
-= JClouds Component
-:doctitle: JClouds
-:shortname: jclouds
-:artifactid: camel-jclouds
-:description: Interact with jclouds compute and blobstore service.
-:since: 2.9
-:supportlevel: Stable
-:component-header: Both producer and consumer are supported
-//Manually maintained attributes
-:camel-spring-boot-name: jclouds
-
-*Since Camel {since}*
-
-*{component-header}*
-
-This component allows interaction with cloud provider key-value engines
-(blobstores) and compute services. The component uses
-https://jclouds.apache.org/[jclouds] which is +
- a library that provides abstractions for blobstores and compute
-services.
-
-*ComputeService* simplifies the task of managing machines in the cloud.
-For example, you can use ComputeService to start 5 machines and install
-your software on them. +
- *BlobStore* simplifies dealing with key-value providers such as Amazon
-S3. For example, BlobStore can give you a simple Map view of a
-container.
-
-The camel jclouds component allows you to use both abstractions, as it
-specifies two types of endpoint the JcloudsBlobStoreEndpoint and the
-JcloudsComputeEndpoint. You can have both producers and consumers on a
-blobstore endpoint but you can only have producers on compute endpoints.
-
-Maven users will need to add the following dependency to their `pom.xml`
-for this component:
-
-[source,xml]
-------------------------------------------------------------
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-jclouds</artifactId>
-    <version>x.x.x</version>
-    <!-- use the same version as your Camel core version -->
-</dependency>
-------------------------------------------------------------
-
-== Configuring the component
-
-The camel jclouds component will make use of multiple jclouds blobstores
-and compute services as long as they are passed to the component during
-initialization. The component accepts a list blobstores and compute
-services. Here is how it can be configured.
-
-[source,xml]
-----------------------------------------------------------------------------------------------------------------
-    <bean id="jclouds" class="org.apache.camel.component.jclouds.JcloudsComponent">
-        <property name="computeServices">
-            <list>
-                <ref bean="computeService"/>
-            </list>
-        </property>
-        <property name="blobStores">
-            <list>
-                <ref bean="blobStore"/>
-            </list>
-        </property>
-    </bean>
-
-    <!-- Creating a blobstore from spring / blueprint xml -->
-    <bean id="blobStoreContextFactory" class="org.jclouds.blobstore.BlobStoreContextFactory"/>
-
-    <bean id="blobStoreContext" factory-bean="blobStoreContextFactory" factory-method="createContext">
-        <constructor-arg name="provider" value="PROVIDER_NAME"/>
-        <constructor-arg name="identity"  value="IDENTITY"/>
-        <constructor-arg name="credential" value="CREDENTIAL"/>
-    </bean>
-
-    <bean id="blobStore" factory-bean="blobStoreContext" factory-method="getBlobStore"/>
-
-    <!-- Creating a compute service from spring / blueprint xml -->
-    <bean id="computeServiceContextFactory" class="org.jclouds.compute.ComputeServiceContextFactory"/>
-
-    <bean id="computeServiceContext" factory-bean="computeServiceContextFactory" factory-method="createContext">
-        <constructor-arg name="provider" value="PROVIDER_NAME"/>
-        <constructor-arg name="identity"  value="IDENTITY"/>
-        <constructor-arg name="credential" value="CREDENTIAL"/>
-    </bean>
-
-    <bean id="computeService" factory-bean="computeServiceContext" factory-method="getComputeService"/>
-----------------------------------------------------------------------------------------------------------------
-
-As you can see the component is capable of handling multiple blobstores
-and compute services. The actual implementation that will be used by
-each endpoint is specified by passing the provider inside the URI.
-
-== Jclouds Options
-
------------------------------------------
-jclouds:blobstore:[provider id][?options]
-jclouds:compute:[provider id][?options]
------------------------------------------
-
-The *provider id* is the name of the cloud provider that provides the
-target service (_e.g. aws-s3 or aws_ec2_).
-
-You can append query options to the URI in the following format,
-`?option=value&option=value&...`
-
-
-// component-configure options: START
-
-// component-configure options: END
-
-// component options: START
-include::partial$component-configure-options.adoc[]
-include::partial$component-endpoint-options.adoc[]
-// component options: END
-
-// endpoint options: START
-
-// endpoint options: END
-
-== Usage
-
-You can have as many of these options as you like.
-
-[source,java]
-------------------------------------------------------------------------------------------
-jclouds:blobstore:aws-s3?operation=CamelJcloudsGet&container=mycontainer&blobName=someblob
-------------------------------------------------------------------------------------------
-
-For producer endpoint you can override all of the above URI options by
-passing the appropriate headers to the message.
-
-// component headers: START
-include::partial$component-endpoint-headers.adoc[]
-// component headers: END
-
-== Blobstore Usage Samples
-
-=== Example 1: Putting to the blob
-
-This example will show you how you can store any message inside a blob
-using the jclouds component.
-
-[source,java]
-------------------------------------
-from("direct:start")
-    .to("jclouds:blobstore:aws-s3" +
-        "?operation=PUT" +
-        "&container=mycontainer" +
-        "&blobName=myblob");
-------------------------------------
-
-In the above example you can override any of the URI parameters with
-headers on the message. 
-Here is how the above example would look like using xml to define our
-route.
-
-[source,xml]
---------------------------------------------------------------------------------------------
-<route>
-    <from uri="direct:start"/>
-    <to uri="jclouds:blobstore:aws-s3?operation=PUT&container=mycontainer&blobName=myblob"/>
-</route>
---------------------------------------------------------------------------------------------
-
-=== Example 2: Getting/Reading from a blob
-
-This example will show you how you can read the content of a blob using
-the jclouds component.
-
-[source,java]
-------------------------------------
-from("direct:start")
-    .to("jclouds:blobstore:aws-s3" +
-        "?operation=GET" +
-        "&container=mycontainer" +
-        "&blobName=myblob");
-------------------------------------
-
-In the above example you can override any of the URI parameters with
-headers on the message. 
- Here is how the above example would look like using xml to define our
-route.
-
-[source,xml]
---------------------------------------------------------------------------------------------
-<route>
-    <from uri="direct:start"/>
-    <to uri="jclouds:blobstore:aws-s3?operation=PUT&container=mycontainer&blobName=myblob"/>
-</route>
---------------------------------------------------------------------------------------------
-
-=== Example 3: Consuming a blob
-
-This example will consume all blob that are under the specified
-container. The generated exchange will contain the payload of the blob
-as body.
-
-[source,java]
--------------------------------------
-    from("jclouds:blobstore:aws-s3" +
-        "?container=mycontainer")
-        .to("direct:next");
--------------------------------------
-
-You can achieve the same goal by using xml, as you can see below.
-
-[source,xml]
-----------------------------------------------------------------------------------------------
-<route>
-    <from uri="jclouds:blobstore:aws-s3?operation=GET&container=mycontainer&blobName=myblob"/>
-    <to uri="direct:next"/>
-</route>
-----------------------------------------------------------------------------------------------
-
-
-
-[source,java]
--------------------------------------------------------------------------------------------------------------
-jclouds:compute:aws-ec2?operation=CamelJcloudsCreateNode&imageId=AMI_XXXXX&locationId=eu-west-1&group=mygroup
--------------------------------------------------------------------------------------------------------------
-
-== Compute Usage Samples
-
-Below are some examples that demonstrate the use of jclouds compute
-producer in java dsl and spring/blueprint xml.
-
-=== Example 1: Listing the available images.
-
-[source,java]
---------------------------------------------
-    from("jclouds:compute:aws-ec2" +
-        "&operation=CamelJCloudsListImages")
-        .to("direct:next");
---------------------------------------------
-
-This will create a message that will contain the list of images inside
-its body. You can also do the same using xml.
-
-[source,xml]
---------------------------------------------------------------------------
-<route>
-    <from uri="jclouds:compute:aws-ec2?operation=CamelJCloudsListImages"/>
-    <to uri="direct:next"/>
-</route>
---------------------------------------------------------------------------
-
-=== Example 2: Create a new node.
-
-[source,java]
----------------------------------------------
-    from("direct:start").
-    to("jclouds:compute:aws-ec2" +
-        "?operation=CamelJcloudsCreateNode" +
-        "&imageId=AMI_XXXXX" +
-        "&locationId=XXXXX" +
-        "&group=myGroup");
----------------------------------------------
-
-This will create a new node on the cloud provider. The out message in
-this case will be a set of metadata that contains information about the
-newly created node (e.g. the ip, hostname etc). Here is the same using
-spring xml.
-
-[source,xml]
--------------------------------------------------------------------------------------------------------------------------
-<route>
-    <from uri="direct:start"/>
-    <to uri="jclouds:compute:aws-ec2?operation=CamelJcloudsCreateNode&imageId=AMI_XXXXX&locationId=XXXXX&group=myGroup"/>
-</route>
--------------------------------------------------------------------------------------------------------------------------
-
-=== Example 3: Run a shell script on running node.
-
-[source,java]
---------------------------------------------
-    from("direct:start").
-    to("jclouds:compute:aws-ec2" +
-        "?operation=CamelJcloudsRunScript" +
-        "?nodeId=10" +
-        "&user=ubuntu");
---------------------------------------------
-
-The sample above will retrieve the body of the in message, which is
-expected to contain the shell script to be executed. Once the script is
-retrieved, it will be sent to the node for execution under the specified
-user (_in order case ubuntu_). The target node is specified using its
-nodeId. The nodeId can be retrieved either upon the creation of the
-node, it will be part of the resulting metadata or by a executing a
-LIST_NODES operation.
-
-*Note* This will require that the compute service that will be passed to
-the component, to be initialized with the appropriate jclouds ssh
-capable module (_e.g. jsch or sshj_).
-
-Here is the same using spring xml.
-
-[source,xml]
-----------------------------------------------------------------------------------------------
-<route>
-    <from uri="direct:start"/>
-    <to uri="jclouds:compute:aws-ec2?operation=CamelJcloudsListNodes&?nodeId=10&user=ubuntu"/>
-</route>
-----------------------------------------------------------------------------------------------
-
-
-
-include::spring-boot:partial$starter.adoc[]
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumer.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumer.java
deleted file mode 100644
index 674ce788a9d..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumer.java
+++ /dev/null
@@ -1,118 +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.jclouds;
-
-import java.io.InputStream;
-import java.util.LinkedList;
-import java.util.Queue;
-
-import com.google.common.base.Strings;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePropertyKey;
-import org.apache.camel.Processor;
-import org.apache.camel.converter.stream.CachedOutputStream;
-import org.apache.camel.support.ScheduledBatchPollingConsumer;
-import org.apache.camel.util.CastUtils;
-import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.domain.StorageMetadata;
-import org.jclouds.blobstore.domain.StorageType;
-import org.jclouds.blobstore.options.ListContainerOptions;
-
-public class JcloudsBlobStoreConsumer extends ScheduledBatchPollingConsumer {
-
-    private final JcloudsBlobStoreEndpoint endpoint;
-    private final String container;
-    private final BlobStore blobStore;
-    private int maxMessagesPerPoll = 10;
-
-    public JcloudsBlobStoreConsumer(JcloudsBlobStoreEndpoint endpoint, Processor processor, BlobStore blobStore) {
-        super(endpoint, processor);
-        this.blobStore = blobStore;
-        this.endpoint = endpoint;
-        this.container = endpoint.getContainer();
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        String container = endpoint.getContainer();
-        String locationId = endpoint.getLocationId();
-        JcloudsBlobStoreHelper.ensureContainerExists(blobStore, container, locationId);
-    }
-
-    @Override
-    protected int poll() throws Exception {
-        shutdownRunningTask = null;
-        pendingExchanges = 0;
-
-        Queue<Exchange> queue = new LinkedList<>();
-        String directory = endpoint.getDirectory();
-
-        ListContainerOptions opt = new ListContainerOptions();
-
-        if (!Strings.isNullOrEmpty(directory)) {
-            opt = opt.inDirectory(directory);
-        }
-
-        for (StorageMetadata md : blobStore.list(container, opt.maxResults(maxMessagesPerPoll).recursive())) {
-            String blobName = md.getName();
-            if (md.getType().equals(StorageType.BLOB)) {
-                if (!Strings.isNullOrEmpty(blobName)) {
-                    InputStream body = JcloudsBlobStoreHelper.readBlob(blobStore, container, blobName);
-                    if (body != null) {
-                        Exchange exchange = createExchange(true);
-                        CachedOutputStream cos = new CachedOutputStream(exchange);
-                        IOHelper.copy(body, cos);
-                        exchange.getIn().setBody(cos.newStreamCache());
-                        exchange.setProperty(JcloudsConstants.BLOB_NAME, blobName);
-                        queue.add(exchange);
-                    }
-                }
-            }
-        }
-        return queue.isEmpty() ? 0 : processBatch(CastUtils.cast(queue));
-    }
-
-    @Override
-    public int processBatch(Queue<Object> exchanges) throws Exception {
-        int total = exchanges.size();
-
-        for (int index = 0; index < total && isBatchAllowed(); index++) {
-            // only loop if we are started (allowed to run)
-            Exchange exchange = ObjectHelper.cast(Exchange.class, exchanges.poll());
-            // add current index and total as properties
-            exchange.setProperty(ExchangePropertyKey.BATCH_INDEX, index);
-            exchange.setProperty(ExchangePropertyKey.BATCH_SIZE, total);
-            exchange.setProperty(ExchangePropertyKey.BATCH_COMPLETE, index == total - 1);
-
-            // update pending number of exchanges
-            pendingExchanges = total - index - 1;
-
-            getProcessor().process(exchange);
-            if (exchange.getException() != null) {
-                // if we failed then throw exception
-                throw exchange.getException();
-            }
-
-            blobStore.removeBlob(container, exchange.getProperty(JcloudsConstants.BLOB_NAME, String.class));
-        }
-
-        return total;
-    }
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreEndpoint.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreEndpoint.java
deleted file mode 100644
index 8d56ec0451a..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreEndpoint.java
+++ /dev/null
@@ -1,45 +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.jclouds;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.jclouds.blobstore.BlobStore;
-
-public class JcloudsBlobStoreEndpoint extends JcloudsEndpoint {
-
-    private BlobStore blobStore;
-
-    public JcloudsBlobStoreEndpoint(String uri, JcloudsComponent component, BlobStore blobStore) {
-        super(uri, component);
-        this.blobStore = blobStore;
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        return new JcloudsBlobStoreProducer(this, blobStore);
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        JcloudsBlobStoreConsumer answer = new JcloudsBlobStoreConsumer(this, processor, blobStore);
-        configureConsumer(answer);
-        return answer;
-    }
-
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreHelper.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreHelper.java
deleted file mode 100644
index 7f294b97a74..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreHelper.java
+++ /dev/null
@@ -1,148 +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.jclouds;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-
-import com.google.common.base.Strings;
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.domain.Blob;
-import org.jclouds.blobstore.util.BlobStoreUtils;
-import org.jclouds.domain.Location;
-import org.jclouds.io.Payload;
-
-import static org.jclouds.blobstore.options.PutOptions.Builder.multipart;
-
-public final class JcloudsBlobStoreHelper {
-
-    private static final String APPLICATION_OCTET_STREAM = "application/octet-stream";
-
-    private JcloudsBlobStoreHelper() {
-        //Utility Class
-    }
-
-    /**
-     * Creates all directories that are part of the blobName.
-     */
-    public static void mkDirs(BlobStore blobStore, String container, String blobName) {
-        if (blobStore != null && !Strings.isNullOrEmpty(blobName) && blobName.contains("/")) {
-            String directory = BlobStoreUtils.parseDirectoryFromPath(blobName);
-            blobStore.createDirectory(container, directory);
-        }
-    }
-
-    /**
-     * Checks if container exists and creates one if not.
-     *
-     * @param blobStore  The {@link BlobStore} to use.
-     * @param container  The container name to check against.
-     * @param locationId The locationId to create the container if not found.
-     */
-    public static void ensureContainerExists(BlobStore blobStore, String container, String locationId) {
-        if (blobStore != null && !Strings.isNullOrEmpty(container) && !blobStore.containerExists(container)) {
-            blobStore.createContainerInLocation(getLocationById(blobStore, locationId), container);
-        }
-    }
-
-    /**
-     * Returns the {@link Location} that matches the locationId.
-     */
-    public static Location getLocationById(BlobStore blobStore, String locationId) {
-        if (blobStore != null && !Strings.isNullOrEmpty(locationId)) {
-            for (Location location : blobStore.listAssignableLocations()) {
-                if (locationId.equals(location.getId())) {
-                    return location;
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Writes {@link Payload} to the {@link BlobStore}.
-     */
-    public static void writeBlob(BlobStore blobStore, String container, String blobName, Payload payload) {
-        if (blobName != null && payload != null) {
-            mkDirs(blobStore, container, blobName);
-            Blob blob = blobStore.blobBuilder(blobName).payload(payload).contentType(APPLICATION_OCTET_STREAM)
-                    .contentDisposition(blobName).build();
-            blobStore.putBlob(container, blob, multipart());
-        }
-    }
-
-    /**
-     * Reads from a {@link BlobStore}. It returns an Object.
-     */
-    public static InputStream readBlob(BlobStore blobStore, String container, String blobName) throws IOException {
-        InputStream is = null;
-        if (!Strings.isNullOrEmpty(blobName)) {
-            Blob blob = blobStore.getBlob(container, blobName);
-            if (blob != null && blob.getPayload() != null) {
-                is = blobStore.getBlob(container, blobName).getPayload().openStream();
-            }
-        }
-        return is;
-    }
-
-    /**
-     * Return the count of all the blobs in the container
-     */
-    public static long countBlob(BlobStore blobStore, String container) {
-        long blobsCount = blobStore.countBlobs(container);
-        return blobsCount;
-    }
-
-    /**
-     * Remove a specific blob from a {@link BlobStore}
-     */
-    public static void removeBlob(BlobStore blobStore, String container, String blobName) {
-        if (!Strings.isNullOrEmpty(blobName)) {
-            blobStore.removeBlob(container, blobName);
-        }
-    }
-
-    /**
-     * Clear a {@link BlobStore} specific container
-     */
-    public static void clearContainer(BlobStore blobStore, String container) {
-        blobStore.clearContainer(container);
-    }
-
-    /**
-     * Delete a {@link BlobStore} specific container
-     */
-    public static void deleteContainer(BlobStore blobStore, String container) {
-        blobStore.deleteContainer(container);
-    }
-
-    /**
-     * Check if a {@link BlobStore} specific container exists or not
-     */
-    public static boolean containerExists(BlobStore blobStore, String container) {
-        boolean result = blobStore.containerExists(container);
-        return result;
-    }
-
-    /**
-     * Delete a list of {@link BlobStore} blob
-     */
-    public static void removeBlobs(BlobStore blobStore, String container, List blobNames) {
-        blobStore.removeBlobs(container, blobNames);
-    }
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreProducer.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreProducer.java
deleted file mode 100644
index a02f61a8c43..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsBlobStoreProducer.java
+++ /dev/null
@@ -1,138 +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.jclouds;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.util.ObjectHelper;
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.io.Payload;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class JcloudsBlobStoreProducer extends JcloudsProducer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(JcloudsBlobStoreProducer.class);
-
-    private final JcloudsBlobStoreEndpoint endpoint;
-    private BlobStore blobStore;
-
-    public JcloudsBlobStoreProducer(JcloudsBlobStoreEndpoint endpoint, BlobStore blobStore) {
-        super(endpoint);
-        this.blobStore = blobStore;
-        this.endpoint = endpoint;
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        String container = endpoint.getContainer();
-        String locationId = endpoint.getLocationId();
-        JcloudsBlobStoreHelper.ensureContainerExists(blobStore, container, locationId);
-    }
-
-    @Override
-    public void process(Exchange exchange) throws Exception {
-        String container = getContainerName(exchange);
-        String blobName = getBlobName(exchange);
-        String operation = getOperation(exchange);
-        List blobNames = getBlobNameList(exchange);
-
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Processing {} operation on '{}'", operation, container + "/" + blobName);
-        }
-        if (JcloudsConstants.GET.equals(operation)) {
-            exchange.getMessage().setBody(JcloudsBlobStoreHelper.readBlob(blobStore, container, blobName));
-        } else if (JcloudsConstants.COUNT_BLOBS.equals(operation)) {
-            exchange.getMessage().setBody(JcloudsBlobStoreHelper.countBlob(blobStore, container));
-        } else if (JcloudsConstants.REMOVE_BLOB.equals(operation)) {
-            JcloudsBlobStoreHelper.removeBlob(blobStore, container, blobName);
-        } else if (JcloudsConstants.CLEAR_CONTAINER.equals(operation)) {
-            JcloudsBlobStoreHelper.clearContainer(blobStore, container);
-        } else if (JcloudsConstants.DELETE_CONTAINER.equals(operation)) {
-            JcloudsBlobStoreHelper.deleteContainer(blobStore, container);
-        } else if (JcloudsConstants.CONTAINER_EXISTS.equals(operation)) {
-            exchange.getMessage().setBody(JcloudsBlobStoreHelper.containerExists(blobStore, container));
-        } else if (JcloudsConstants.REMOVE_BLOBS.equals(operation)) {
-            JcloudsBlobStoreHelper.removeBlobs(blobStore, container, blobNames);
-        } else {
-            Payload body = exchange.getIn().getBody(Payload.class);
-            JcloudsBlobStoreHelper.writeBlob(blobStore, container, blobName, body);
-        }
-    }
-
-    /**
-     * Retrieves the blobName from the URI or from the exchange headers. The header will take precedence over the URI.
-     */
-    protected String getBlobName(Exchange exchange) {
-        String blobName = ((JcloudsBlobStoreEndpoint) getEndpoint()).getBlobName();
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.BLOB_NAME))) {
-            blobName = exchange.getIn().getHeader(JcloudsConstants.BLOB_NAME, String.class);
-        }
-        return blobName;
-    }
-
-    /**
-     * Retrieves the containerName from the URI or from the exchange headers. The header will take precedence over the
-     * URI.
-     */
-    protected String getContainerName(Exchange exchange) {
-        String containerName = ((JcloudsBlobStoreEndpoint) getEndpoint()).getContainer();
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.CONTAINER_NAME))) {
-            containerName = exchange.getIn().getHeader(JcloudsConstants.CONTAINER_NAME, String.class);
-        }
-        return containerName;
-    }
-
-    /**
-     * Retrieves the operation from the URI or from the exchange headers. The header will take precedence over the URI.
-     */
-    public String getOperation(Exchange exchange) {
-        String operation = ((JcloudsBlobStoreEndpoint) getEndpoint()).getOperation();
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.OPERATION))) {
-            operation = exchange.getIn().getHeader(JcloudsConstants.OPERATION, String.class);
-        }
-        return operation;
-    }
-
-    /**
-     * Retrieves the locationId from the URI or from the exchange headers. The header will take precedence over the URI.
-     */
-    public String getLocationId(Exchange exchange) {
-        String operation = ((JcloudsBlobStoreEndpoint) getEndpoint()).getLocationId();
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.LOCATION_ID))) {
-            operation = exchange.getIn().getHeader(JcloudsConstants.LOCATION_ID, String.class);
-        }
-        return operation;
-    }
-
-    /**
-     * Retrieves the Blob name list from the exchange headers.
-     */
-    public List getBlobNameList(Exchange exchange) {
-        List blobNames = new ArrayList<>();
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.BLOB_NAME_LIST))) {
-            blobNames = exchange.getIn().getHeader(JcloudsConstants.BLOB_NAME_LIST, List.class);
-        }
-        return blobNames;
-    }
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsCommand.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsCommand.java
deleted file mode 100644
index 7c1155fb9cf..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsCommand.java
+++ /dev/null
@@ -1,23 +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.jclouds;
-
-public enum JcloudsCommand {
-
-    blobstore,
-    compute
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComponent.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComponent.java
deleted file mode 100644
index f3076202468..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComponent.java
+++ /dev/null
@@ -1,160 +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.jclouds;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.support.DefaultComponent;
-import org.jclouds.Context;
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.compute.ComputeService;
-
-/**
- * Represents the component that manages {@link JcloudsEndpoint}.
- */
-@Component("jclouds")
-public class JcloudsComponent extends DefaultComponent {
-
-    private List<BlobStore> blobStores;
-    private List<ComputeService> computeServices;
-
-    public JcloudsComponent() {
-    }
-
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        String[] uriParts = remaining.split(JcloudsConstants.DELIMETER);
-        if (uriParts.length != 2) {
-            throw new IllegalArgumentException(
-                    "Invalid Endpoint URI: " + uri + ". It should contains a valid command and providerId");
-        }
-        String endpointType = uriParts[0];
-        String providerId = uriParts[1];
-
-        JcloudsCommand command = JcloudsCommand.valueOf(endpointType);
-
-        JcloudsConfiguration configuration = new JcloudsConfiguration();
-        configuration.setCommand(command);
-        configuration.setProviderId(providerId);
-
-        JcloudsEndpoint endpoint;
-        if (JcloudsCommand.blobstore == command) {
-            endpoint = new JcloudsBlobStoreEndpoint(uri, this, getBlobStore(providerId));
-        } else {
-            endpoint = new JcloudsComputeEndpoint(uri, this, getComputeService(providerId));
-        }
-        endpoint.setConfiguration(configuration);
-        setProperties(endpoint, parameters);
-        return endpoint;
-    }
-
-    /**
-     * Returns the {@link BlobStore} that matches the given providerOrApi.
-     * 
-     * @param  predicate The blobstore context name, provider or api.
-     * @return           The matching {@link BlobStore}
-     */
-    protected BlobStore getBlobStore(String predicate) throws IllegalArgumentException {
-        if (blobStores != null && !blobStores.isEmpty()) {
-
-            //First try using name and then fallback to the provider or api.
-            if (isNameSupportedByContext()) {
-                for (BlobStore blobStore : blobStores) {
-                    if (blobStore.getContext().unwrap().getName().equals(predicate)) {
-                        return blobStore;
-                    }
-                }
-            }
-
-            for (BlobStore blobStore : blobStores) {
-                if (blobStore.getContext().unwrap().getId().equals(predicate)) {
-                    return blobStore;
-                }
-            }
-            throw new IllegalArgumentException(String.format("No blobstore found for:%s", predicate));
-        } else {
-            throw new IllegalArgumentException("No blobstore available.");
-        }
-    }
-
-    /**
-     * Returns the {@link ComputeService} that matches the given predicate.
-     * 
-     * @param  predicate The compute context name, provider or api.
-     * @return           The matching {@link ComputeService}
-     */
-    protected ComputeService getComputeService(String predicate) throws IllegalArgumentException {
-        if (computeServices != null && !computeServices.isEmpty()) {
-            //First try using name and then fallback to the provider or api.
-            if (isNameSupportedByContext()) {
-                for (ComputeService computeService : computeServices) {
-                    if (computeService.getContext().unwrap().getName().equals(predicate)) {
-                        return computeService;
-                    }
-                }
-            }
-
-            for (ComputeService computeService : computeServices) {
-                if (computeService.getContext().unwrap().getId().equals(predicate)) {
-                    return computeService;
-                }
-            }
-            throw new IllegalArgumentException(String.format("No compute service found for :%s", predicate));
-        } else {
-            throw new IllegalArgumentException("No compute service available.");
-        }
-    }
-
-    /**
-     * Checks if jclouds {@link Context} supports the name. We need this method as getName is not supported in earlier
-     * micro version of 1.5.x. So we use this check to fallback to traditional means of looking up contexts and
-     * services, if name is not present.
-     */
-    private boolean isNameSupportedByContext() {
-        try {
-            Context.class.getMethod("getName");
-            return true;
-        } catch (NoSuchMethodException ex) {
-            return false;
-        }
-    }
-
-    public List<BlobStore> getBlobStores() {
-        return blobStores;
-    }
-
-    /**
-     * To use the given BlobStore which must be configured when using blobstore.
-     */
-    public void setBlobStores(List<BlobStore> blobStores) {
-        this.blobStores = blobStores;
-    }
-
-    public List<ComputeService> getComputeServices() {
-        return computeServices;
-    }
-
-    /**
-     * To use the given ComputeService which must be configured when use compute.
-     */
-    public void setComputeServices(List<ComputeService> computeServices) {
-        this.computeServices = computeServices;
-    }
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeEndpoint.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeEndpoint.java
deleted file mode 100644
index 10867d9345b..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeEndpoint.java
+++ /dev/null
@@ -1,132 +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.jclouds;
-
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.jclouds.compute.ComputeService;
-
-public class JcloudsComputeEndpoint extends JcloudsEndpoint {
-
-    private ComputeService computeService;
-
-    private String imageId;
-    private String locationId;
-    private String hardwareId;
-
-    private String operation;
-    private String nodeState;
-    private String nodeId;
-    private String group;
-    private String user;
-
-    public JcloudsComputeEndpoint(String uri, JcloudsComponent component, ComputeService computeService) {
-        super(uri, component);
-        this.computeService = computeService;
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        return new JcloudsComputeProducer(this, computeService);
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) {
-        throw new UnsupportedOperationException("Consumer not supported for JcloudsComputeEndpoint!");
-    }
-
-    @Override
-    public String getImageId() {
-        return imageId;
-    }
-
-    @Override
-    public void setImageId(String imageId) {
-        this.imageId = imageId;
-    }
-
-    @Override
-    public String getLocationId() {
-        return locationId;
-    }
-
-    @Override
-    public void setLocationId(String locationId) {
-        this.locationId = locationId;
-    }
-
-    @Override
-    public String getHardwareId() {
-        return hardwareId;
-    }
-
-    @Override
-    public void setHardwareId(String hardwareId) {
-        this.hardwareId = hardwareId;
-    }
-
-    @Override
-    public String getOperation() {
-        return operation;
-    }
-
-    @Override
-    public void setOperation(String operation) {
-        this.operation = operation;
-    }
-
-    @Override
-    public String getNodeState() {
-        return nodeState;
-    }
-
-    @Override
-    public void setNodeState(String nodeState) {
-        this.nodeState = nodeState;
-    }
-
-    @Override
-    public String getNodeId() {
-        return nodeId;
-    }
-
-    @Override
-    public void setNodeId(String nodeId) {
-        this.nodeId = nodeId;
-    }
-
-    @Override
-    public String getGroup() {
-        return group;
-    }
-
-    @Override
-    public void setGroup(String group) {
-        this.group = group;
-    }
-
-    @Override
-    public String getUser() {
-        return user;
-    }
-
-    @Override
-    public void setUser(String user) {
-        this.user = user;
-    }
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java
deleted file mode 100644
index 7f631b1ae0f..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsComputeProducer.java
+++ /dev/null
@@ -1,374 +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.jclouds;
-
-import java.util.Set;
-
-import com.google.common.base.Predicate;
-import org.apache.camel.CamelException;
-import org.apache.camel.CamelExchangeException;
-import org.apache.camel.Exchange;
-import org.apache.camel.util.ObjectHelper;
-import org.jclouds.compute.ComputeService;
-import org.jclouds.compute.RunNodesException;
-import org.jclouds.compute.domain.ComputeMetadata;
-import org.jclouds.compute.domain.ExecResponse;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.TemplateBuilder;
-import org.jclouds.compute.domain.internal.NodeMetadataImpl;
-import org.jclouds.compute.options.RunScriptOptions;
-import org.jclouds.domain.LoginCredentials;
-
-public class JcloudsComputeProducer extends JcloudsProducer {
-
-    private final ComputeService computeService;
-
-    public JcloudsComputeProducer(JcloudsEndpoint endpoint, ComputeService computeService) {
-        super(endpoint);
-        this.computeService = computeService;
-    }
-
-    @Override
-    public JcloudsComputeEndpoint getEndpoint() {
-        return (JcloudsComputeEndpoint) super.getEndpoint();
-    }
-
-    @Override
-    public void process(Exchange exchange) throws Exception {
-        String operation = getOperation(exchange);
-
-        if (operation == null) {
-            throw new CamelExchangeException(
-                    "Operation must be specified in the endpoint URI or as a property on the exchange.", exchange);
-        }
-
-        if (JcloudsConstants.LIST_NODES.equals(operation)) {
-            listNodes(exchange);
-        } else if (JcloudsConstants.LIST_IMAGES.equals(operation)) {
-            listImages(exchange);
-        } else if (JcloudsConstants.LIST_HARDWARE.equals(operation)) {
-            listHardware(exchange);
-        } else if (JcloudsConstants.RUN_SCRIPT.equals(operation)) {
-            runScriptOnNode(exchange);
-        } else if (JcloudsConstants.CREATE_NODE.equals(operation)) {
-            createNode(exchange);
-        } else if (JcloudsConstants.DESTROY_NODE.equals(operation)) {
-            destroyNode(exchange);
-        } else if (JcloudsConstants.REBOOT_NODE.equals(operation)) {
-            rebootNode(exchange);
-        } else if (JcloudsConstants.SUSPEND_NODE.equals(operation)) {
-            suspendNode(exchange);
-        } else if (JcloudsConstants.RESUME_NODE.equals(operation)) {
-            resumeNode(exchange);
-        }
-    }
-
-    /**
-     * Create a node with the specified group.
-     */
-    protected void createNode(Exchange exchange) throws CamelException {
-        String group = getGroup(exchange);
-        String imageId = getImageId(exchange);
-        String locationId = getLocationId(exchange);
-        String hardwareId = getHardwareId(exchange);
-
-        if (ObjectHelper.isEmpty(group)) {
-            throw new CamelExchangeException(
-                    "Group must be specific in the URI or as exchange property for the destroy node operation.", exchange);
-        }
-        TemplateBuilder builder = computeService.templateBuilder();
-        builder.any();
-
-        if (ObjectHelper.isNotEmpty(locationId)) {
-            builder.locationId(locationId);
-        }
-        if (ObjectHelper.isNotEmpty(imageId)) {
-            builder.imageId(imageId);
-        }
-        if (ObjectHelper.isNotEmpty(hardwareId)) {
-            builder.hardwareId(hardwareId);
-        }
-
-        try {
-            Set<? extends NodeMetadata> nodeMetadatas = computeService.createNodesInGroup(group, 1, builder.build());
-            exchange.getMessage().setBody(nodeMetadatas);
-            exchange.getMessage().setHeaders(exchange.getIn().getHeaders());
-        } catch (RunNodesException e) {
-            throw new CamelExchangeException("Error creating jclouds node.", exchange, e);
-        }
-    }
-
-    /**
-     * Runs a script on the target node.
-     */
-    protected void runScriptOnNode(Exchange exchange) throws CamelException {
-        String script = exchange.getIn().getBody(String.class);
-        String nodeId = getNodeId(exchange);
-        String user = getUser(exchange);
-
-        LoginCredentials credentials = null;
-
-        if (ObjectHelper.isNotEmpty(user)) {
-            credentials = LoginCredentials.builder().user(user).build();
-        }
-        ExecResponse execResponse = null;
-
-        if (credentials == null) {
-            execResponse = computeService.runScriptOnNode(nodeId, script);
-        } else {
-            execResponse = computeService.runScriptOnNode(nodeId, script,
-                    RunScriptOptions.Builder.overrideLoginCredentials(credentials).runAsRoot(false));
-        }
-
-        if (execResponse == null) {
-            throw new CamelExchangeException(
-                    "Failed to receive response for run script operation on node: " + nodeId + " using script: " + script,
-                    exchange);
-        }
-
-        exchange.setProperty(JcloudsConstants.RUN_SCRIPT_ERROR, execResponse.getError());
-        exchange.setProperty(JcloudsConstants.RUN_SCRIPT_EXIT_CODE, execResponse.getExitStatus());
-        exchange.getMessage().setBody(execResponse.getOutput());
-    }
-
-    /**
-     * Destroys the node with the specified nodeId.
-     */
-    protected void destroyNode(Exchange exchange) {
-        Predicate<NodeMetadata> predicate = getNodePredicate(exchange);
-        computeService.destroyNodesMatching(predicate);
-    }
-
-    /**
-     * Sets the metadata of the available nodes to the out message.
-     */
-    protected void listNodes(Exchange exchange) {
-        Predicate<ComputeMetadata> predicate = getComputePredicate(exchange);
-        Set<? extends ComputeMetadata> computeMetadatas = computeService.listNodesDetailsMatching(predicate);
-        exchange.getMessage().setBody(computeMetadatas);
-    }
-
-    /**
-     * Sets the available images to the out message.
-     */
-    protected void listImages(Exchange exchange) {
-        Set<? extends Image> images = computeService.listImages();
-        exchange.getMessage().setBody(images);
-    }
-
-    /**
-     * Sets the available hardware profiles to the out message.
-     */
-    protected void listHardware(Exchange exchange) {
-        Set<? extends Hardware> hardwareProfiles = computeService.listHardwareProfiles();
-        exchange.getMessage().setBody(hardwareProfiles);
-    }
-
-    /**
-     * Reboot the node with the specified nodeId.
-     */
-    protected void rebootNode(Exchange exchange) {
-        Predicate<NodeMetadata> predicate = getNodePredicate(exchange);
-        computeService.rebootNodesMatching(predicate);
-    }
-
-    /**
-     * Suspend the node with the specified nodeId.
-     */
-    protected void suspendNode(Exchange exchange) {
-        Predicate<NodeMetadata> predicate = getNodePredicate(exchange);
-        computeService.suspendNodesMatching(predicate);
-    }
-
-    /**
-     * Suspend the node with the specified nodeId.
-     */
-    protected void resumeNode(Exchange exchange) {
-        Predicate<NodeMetadata> predicate = getNodePredicate(exchange);
-        computeService.resumeNodesMatching(predicate);
-    }
-
-    /**
-     * Returns the required {@ComputeMetadata} {@link Predicate} for the Exhcnage. The predicate can be used for
-     * filtering.
-     */
-    public Predicate<ComputeMetadata> getComputePredicate(final Exchange exchange) {
-        final String nodeId = getNodeId(exchange);
-
-        Predicate<ComputeMetadata> predicate = new Predicate<ComputeMetadata>() {
-            public boolean apply(ComputeMetadata metadata) {
-                if (nodeId != null && !nodeId.equals(metadata.getId())) {
-                    return false;
-                }
-
-                //If NodeMetadata also delegate to Node predicate.
-                if (metadata instanceof NodeMetadataImpl) {
-                    Predicate<NodeMetadata> nodeMetadataPredicate = getNodePredicate(exchange);
-                    if (!nodeMetadataPredicate.apply((NodeMetadataImpl) metadata)) {
-                        return false;
-                    }
-                }
-                return true;
-            }
-        };
-
-        return predicate;
-    }
-
-    /**
-     * Returns the required {@ComputeMetadata} {@link Predicate} for the Exhcnage. The predicate can be used for
-     * filtering.
-     */
-    public Predicate<NodeMetadata> getNodePredicate(Exchange exchange) {
-        final String nodeId = getNodeId(exchange);
-        final String imageId = getImageId(exchange);
-        final String group = getGroup(exchange);
-        final NodeMetadata.Status queryState = getNodeState(exchange);
-
-        Predicate<NodeMetadata> predicate = new Predicate<NodeMetadata>() {
-            public boolean apply(NodeMetadata metadata) {
-                if (nodeId != null && !nodeId.equals(metadata.getId())) {
-                    return false;
-                }
-                if (imageId != null && !imageId.equals(metadata.getImageId())) {
-                    return false;
-                }
-                if (queryState != null && !queryState.equals(metadata.getStatus())) {
-                    return false;
-                }
-                if (group != null && !group.equals(metadata.getGroup())) {
-                    return false;
-                }
-                return true;
-            }
-        };
-        return predicate;
-    }
-
-    /**
-     * Retrieves the operation from the URI or from the exchange headers. The header will take precedence over the URI.
-     */
-    public String getOperation(Exchange exchange) {
-        String operation = getEndpoint().getOperation();
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.OPERATION))) {
-            operation = exchange.getIn().getHeader(JcloudsConstants.OPERATION, String.class);
-        }
-        return operation;
-    }
-
-    /**
-     * Retrieves the node state from the URI or from the exchange headers. The header will take precedence over the URI.
-     */
-    public NodeMetadata.Status getNodeState(Exchange exchange) {
-        NodeMetadata.Status nodeState = null;
-        String state = getEndpoint().getNodeState();
-        if (ObjectHelper.isNotEmpty(state)) {
-            nodeState = NodeMetadata.Status.valueOf(state);
-        }
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.NODE_STATE))) {
-            Object stateHeader = exchange.getIn().getHeader(JcloudsConstants.NODE_STATE);
-            if (stateHeader == null) {
-                nodeState = null;
-            } else if (stateHeader instanceof NodeMetadata.Status) {
-                nodeState = (NodeMetadata.Status) stateHeader;
-            } else {
-                nodeState = NodeMetadata.Status.valueOf(String.valueOf(stateHeader));
-            }
-        }
-        return nodeState;
-    }
-
-    /**
-     * Retrieves the image id from the URI or from the exchange properties. The property will take precedence over the
-     * URI.
-     */
-    protected String getImageId(Exchange exchange) {
-        String imageId = getEndpoint().getImageId();
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.IMAGE_ID))) {
-            imageId = exchange.getIn().getHeader(JcloudsConstants.IMAGE_ID, String.class);
-        }
-        return imageId;
-    }
-
-    /**
-     * Retrieves the hardware id from the URI or from the exchange headers. The header will take precedence over the
-     * URI.
-     */
-    protected String getHardwareId(Exchange exchange) {
-        String hardwareId = getEndpoint().getHardwareId();
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.HARDWARE_ID))) {
-            hardwareId = exchange.getIn().getHeader(JcloudsConstants.HARDWARE_ID, String.class);
-        }
-        return hardwareId;
-    }
-
-    /**
-     * Retrieves the location id from the URI or from the exchange headers. The header will take precedence over the
-     * URI.
-     */
-    protected String getLocationId(Exchange exchange) {
-        String locationId = getEndpoint().getLocationId();
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.LOCATION_ID))) {
-            locationId = exchange.getIn().getHeader(JcloudsConstants.LOCATION_ID, String.class);
-        }
-        return locationId;
-    }
-
-    /**
-     * Retrieves the node id from the URI or from the exchange headers. The header will take precedence over the URI.
-     */
-    protected String getNodeId(Exchange exchange) {
-        String nodeId = getEndpoint().getNodeId();
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.NODE_ID))) {
-            nodeId = exchange.getIn().getHeader(JcloudsConstants.NODE_ID, String.class);
-        }
-        return nodeId;
-    }
-
-    /**
-     * Retrieves the group from the URI or from the exchange headers. The header will take precedence over the URI.
-     */
-    protected String getGroup(Exchange exchange) {
-        String group = getEndpoint().getGroup();
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.GROUP))) {
-            group = exchange.getIn().getHeader(JcloudsConstants.GROUP, String.class);
-        }
-        return group;
-    }
-
-    /**
-     * Retrieves the user from the URI or from the exchange headers. The header will take precedence over the URI.
-     */
-    protected String getUser(Exchange exchange) {
-        String user = getEndpoint().getUser();
-
-        if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(JcloudsConstants.USER))) {
-            user = exchange.getIn().getHeader(JcloudsConstants.USER, String.class);
-        }
-        return user;
-    }
-
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConfiguration.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConfiguration.java
deleted file mode 100644
index 6c77dda5b6b..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConfiguration.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.jclouds;
-
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-import org.apache.camel.spi.UriPath;
-
-@UriParams
-public class JcloudsConfiguration {
-
-    @UriPath
-    @Metadata(required = true)
-    private JcloudsCommand command;
-    @UriPath
-    @Metadata(required = true)
-    private String providerId;
-
-    // compute options
-    @UriParam(label = "producer,compute")
-    private String imageId;
-    @UriParam(label = "producer,compute")
-    private String locationId;
-    @UriParam(label = "producer,compute")
-    private String hardwareId;
-    @UriParam(label = "producer,compute")
-    private String operation;
-    @UriParam(label = "producer,compute", enums = "PENDING,TERMINATED,SUSPENDED,RUNNING,ERROR,UNRECOGNIZED")
-    private String nodeState;
-    @UriParam(label = "producer,compute")
-    private String nodeId;
-    @UriParam(label = "producer,compute")
-    private String group;
-    @UriParam(label = "producer,compute")
-    private String user;
-
-    // blob options
-    @UriParam(label = "blobstore")
-    private String container;
-    @UriParam(label = "consumer,blobstore")
-    private String directory;
-    @UriParam(label = "producer,blobstore")
-    private String blobName;
-
-    public JcloudsCommand getCommand() {
-        return command;
-    }
-
-    /**
-     * What command to execute such as blobstore or compute.
-     */
-    public void setCommand(JcloudsCommand command) {
-        this.command = command;
-    }
-
-    public String getProviderId() {
-        return providerId;
-    }
-
-    /**
-     * The name of the cloud provider that provides the target service (e.g. aws-s3 or aws_ec2).
-     */
-    public void setProviderId(String providerId) {
-        this.providerId = providerId;
-    }
-
-    public String getImageId() {
-        return imageId;
-    }
-
-    /**
-     * The imageId that will be used for creating a node. Values depend on the actual cloud provider.
-     */
-    public void setImageId(String imageId) {
-        this.imageId = imageId;
-    }
-
-    public String getLocationId() {
-        return locationId;
-    }
-
-    /**
-     * The location that will be used for creating a node. Values depend on the actual cloud provider.
-     */
-    public void setLocationId(String locationId) {
-        this.locationId = locationId;
-    }
-
-    public String getHardwareId() {
-        return hardwareId;
-    }
-
-    /**
-     * The hardware that will be used for creating a node. Values depend on the actual cloud provider.
-     */
-    public void setHardwareId(String hardwareId) {
-        this.hardwareId = hardwareId;
-    }
-
-    public String getOperation() {
-        return operation;
-    }
-
-    /**
-     * Specifies the type of operation that will be performed to the blobstore.
-     */
-    public void setOperation(String operation) {
-        this.operation = operation;
-    }
-
-    public String getNodeState() {
-        return nodeState;
-    }
-
-    /**
-     * To filter by node status to only select running nodes etc.
-     */
-    public void setNodeState(String nodeState) {
-        this.nodeState = nodeState;
-    }
-
-    public String getNodeId() {
-        return nodeId;
-    }
-
-    /**
-     * The id of the node that will run the script or destroyed.
-     */
-    public void setNodeId(String nodeId) {
-        this.nodeId = nodeId;
-    }
-
-    public String getGroup() {
-        return group;
-    }
-
-    /**
-     * The group that will be assigned to the newly created node. Values depend on the actual cloud provider.
-     */
-    public void setGroup(String group) {
-        this.group = group;
-    }
-
-    public String getUser() {
-        return user;
-    }
-
-    /**
-     * The user on the target node that will run the script.
-     */
-    public void setUser(String user) {
-        this.user = user;
-    }
-
-    public String getContainer() {
-        return container;
-    }
-
-    /**
-     * The name of the blob container.
-     */
-    public void setContainer(String container) {
-        this.container = container;
-    }
-
-    public String getDirectory() {
-        return directory;
-    }
-
-    /**
-     * An optional directory name to use
-     */
-    public void setDirectory(String directory) {
-        this.directory = directory;
-    }
-
-    public String getBlobName() {
-        return blobName;
-    }
-
-    /**
-     * The name of the blob.
-     */
-    public void setBlobName(String blobName) {
-        this.blobName = blobName;
-    }
-
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConstants.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConstants.java
deleted file mode 100644
index df663ef2c0f..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConstants.java
+++ /dev/null
@@ -1,90 +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.jclouds;
-
-import org.apache.camel.spi.Metadata;
-
-public final class JcloudsConstants {
-    public static final String DELIMETER = ":";
-    public static final String BLOBSTORE = "blobstore";
-    public static final String COMPUTE = "compute";
-    @Metadata(label = "producer blobstore", description = "The name of the blob.", javaType = "String")
-    public static final String BLOB_NAME = "CamelJcloudsBlobName";
-    @Metadata(label = "producer blobstore", description = "The name of the blob container.", javaType = "String")
-    public static final String CONTAINER_NAME = "CamelJcloudsContainerName";
-    @Metadata(label = "producer blobstore", description = "The blob name list.", javaType = "List")
-    public static final String BLOB_NAME_LIST = "CamelJcloudsBlobNameList";
-
-    @Metadata(label = "producer compute", description = "The node state", javaType = "Object")
-    public static final String NODE_STATE = "CamelJcloudsNodeState";
-
-    @Metadata(label = "producer",
-              description = "The operation to be performed on the blob.\n\nThe valid options are:\n\n* PUT\n* GET",
-              javaType = "String")
-    public static final String OPERATION = "CamelJcloudsOperation";
-    public static final String PUT = "CamelJcloudsPut";
-    public static final String GET = "CamelJcloudsGet";
-    public static final String COUNT_BLOBS = "CamelJcloudsCountBlobs";
-    public static final String REMOVE_BLOB = "CamelJcloudsRemoveBlob";
-    public static final String REMOVE_BLOBS = "CamelJcloudsRemoveBlobs";
-    public static final String CLEAR_CONTAINER = "CamelJcloudsClearContainer";
-    public static final String DELETE_CONTAINER = "CamelJcloudsDeleteContainer";
-    public static final String CONTAINER_EXISTS = "CamelJcloudsExistsContainer";
-    public static final String LIST_IMAGES = "CamelJcloudsListImages";
-    public static final String LIST_HARDWARE = "CamelJcloudsListHardware";
-    public static final String LIST_NODES = "CamelJcloudsListNodes";
-    public static final String CREATE_NODE = "CamelJcloudsCreateNode";
-    public static final String DESTROY_NODE = "CamelJcloudsDestroyNode";
-    public static final String REBOOT_NODE = "CamelJcloudsRebootNode";
-    public static final String SUSPEND_NODE = "CamelJcloudsSuspendNode";
-    public static final String RESUME_NODE = "CamelJcloudsResumeNode";
-    public static final String RUN_SCRIPT = "CamelJcloudsRunScript";
-
-    public static final String CONTENT_LANGUAGE = "CamelJcloudsContentLanguage";
-    public static final String CONTENT_DISPOSITION = "CamelJcloudsContentDisposition";
-    public static final String PAYLOAD_EXPIRES = "CamelJcloudsPayloadExpires";
-
-    @Metadata(label = "producer compute",
-              description = "The imageId that will be used for creating a node. Values depend on the actual cloud provider.",
-              javaType = "String")
-    public static final String IMAGE_ID = "CamelJcloudsImageId";
-    @Metadata(label = "producer",
-              description = "The location that will be used for creating a node. Values depend on the actual cloud provider.",
-              javaType = "String")
-    public static final String LOCATION_ID = "CamelJcloudsLocationId";
-    @Metadata(label = "producer compute",
-              description = "The hardware that will be used for creating a node. Values depend on the actual cloud provider.",
-              javaType = "String")
-    public static final String HARDWARE_ID = "CamelJcloudsHardwareId";
-    @Metadata(label = "producer compute",
-              description = "The group that will be assigned to the newly created node. Values depend on the actual cloud provider.",
-              javaType = "String")
-    public static final String GROUP = "CamelJcloudsGroup";
-    @Metadata(label = "producer compute", description = "The id of the node that will run the script or destroyed.",
-              javaType = "String")
-    public static final String NODE_ID = "CamelJcloudsNodeId";
-    @Metadata(label = "producer compute", description = "The user on the target node that will run the script.",
-              javaType = "String")
-    public static final String USER = "CamelJcloudsUser";
-
-    public static final String RUN_SCRIPT_ERROR = "CamelJcloudsRunScriptError";
-    public static final String RUN_SCRIPT_EXIT_CODE = "CamelJcloudsRunScriptErrorCode";
-
-    private JcloudsConstants() {
-        // utility class
-    }
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsEndpoint.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsEndpoint.java
deleted file mode 100644
index daf7c50f7bd..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsEndpoint.java
+++ /dev/null
@@ -1,149 +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.jclouds;
-
-import org.apache.camel.Category;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.support.DefaultEndpoint;
-
-/**
- * Interact with jclouds compute and blobstore service.
- */
-@UriEndpoint(firstVersion = "2.9.0", scheme = "jclouds", title = "JClouds", syntax = "jclouds:command:providerId",
-             category = { Category.API, Category.CLOUD, Category.COMPUTE }, headersClass = JcloudsConstants.class)
-public abstract class JcloudsEndpoint extends DefaultEndpoint {
-
-    @UriParam
-    private JcloudsConfiguration configuration = new JcloudsConfiguration();
-
-    public JcloudsEndpoint(String uri, JcloudsComponent component) {
-        super(uri, component);
-    }
-
-    public JcloudsConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    public void setConfiguration(JcloudsConfiguration configuration) {
-        this.configuration = configuration;
-    }
-
-    public JcloudsCommand getCommand() {
-        return configuration.getCommand();
-    }
-
-    public void setCommand(JcloudsCommand command) {
-        configuration.setCommand(command);
-    }
-
-    public String getProviderId() {
-        return configuration.getProviderId();
-    }
-
-    public void setProviderId(String providerId) {
-        configuration.setProviderId(providerId);
-    }
-
-    public String getImageId() {
-        return configuration.getImageId();
-    }
-
-    public void setImageId(String imageId) {
-        configuration.setImageId(imageId);
-    }
-
-    public String getLocationId() {
-        return configuration.getLocationId();
-    }
-
-    public void setLocationId(String locationId) {
-        configuration.setLocationId(locationId);
-    }
-
-    public String getHardwareId() {
-        return configuration.getHardwareId();
-    }
-
-    public void setHardwareId(String hardwareId) {
-        configuration.setHardwareId(hardwareId);
-    }
-
-    public String getOperation() {
-        return configuration.getOperation();
-    }
-
-    public void setOperation(String operation) {
-        configuration.setOperation(operation);
-    }
-
-    public String getNodeState() {
-        return configuration.getNodeState();
-    }
-
-    public void setNodeState(String nodeState) {
-        configuration.setNodeState(nodeState);
-    }
-
-    public String getNodeId() {
-        return configuration.getNodeId();
-    }
-
-    public void setNodeId(String nodeId) {
-        configuration.setNodeId(nodeId);
-    }
-
-    public String getGroup() {
-        return configuration.getGroup();
-    }
-
-    public void setGroup(String group) {
-        configuration.setGroup(group);
-    }
-
-    public String getUser() {
-        return configuration.getUser();
-    }
-
-    public void setUser(String user) {
-        configuration.setUser(user);
-    }
-
-    public String getContainer() {
-        return configuration.getContainer();
-    }
-
-    public void setContainer(String container) {
-        configuration.setContainer(container);
-    }
-
-    public String getDirectory() {
-        return configuration.getDirectory();
-    }
-
-    public void setDirectory(String directory) {
-        configuration.setDirectory(directory);
-    }
-
-    public String getBlobName() {
-        return configuration.getBlobName();
-    }
-
-    public void setBlobName(String blobName) {
-        configuration.setBlobName(blobName);
-    }
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsPayloadConverter.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsPayloadConverter.java
deleted file mode 100644
index 2731ff6b933..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsPayloadConverter.java
+++ /dev/null
@@ -1,145 +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.jclouds;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.Date;
-
-import javax.xml.transform.stream.StreamSource;
-
-import com.google.common.io.ByteSource;
-import com.google.common.io.ByteStreams;
-import com.google.common.io.Files;
-import org.apache.camel.Converter;
-import org.apache.camel.Exchange;
-import org.apache.camel.TypeConverter;
-import org.apache.camel.WrappedFile;
-import org.apache.camel.spi.TypeConverterRegistry;
-import org.apache.camel.support.ExchangeHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.xml.StreamSourceCache;
-import org.jclouds.io.Payload;
-import org.jclouds.io.payloads.ByteSourcePayload;
-import org.jclouds.io.payloads.InputStreamPayload;
-
-@Converter(generateLoader = true)
-public final class JcloudsPayloadConverter {
-
-    private JcloudsPayloadConverter() {
-        //Utility Class
-    }
-
-    @Converter
-    public static Payload toPayload(byte[] bytes) {
-        return new ByteSourcePayload(ByteSource.wrap(bytes));
-    }
-
-    @Converter
-    public static Payload toPayload(String str, Exchange ex) throws UnsupportedEncodingException {
-        return toPayload(str.getBytes(ExchangeHelper.getCharsetName(ex)));
-    }
-
-    public static Payload toPayload(String str) throws UnsupportedEncodingException {
-        return toPayload(str, null);
-    }
-
-    @Converter
-    public static Payload toPayload(File file) {
-        return new ByteSourcePayload(Files.asByteSource(file));
-    }
-
-    protected static Payload setContentMetadata(Payload payload, Exchange exchange) {
-        // Just add an NPE check on the payload
-        if (exchange == null) {
-            return payload;
-        }
-
-        String contentType = exchange.getIn().getHeader(Exchange.CONTENT_TYPE, String.class);
-        String contentEncoding = exchange.getIn().getHeader(Exchange.CONTENT_ENCODING, String.class);
-        String contentDisposition = exchange.getIn().getHeader(JcloudsConstants.CONTENT_DISPOSITION, String.class);
-        String contentLanguage = exchange.getIn().getHeader(JcloudsConstants.CONTENT_LANGUAGE, String.class);
-        Date payloadExpires = exchange.getIn().getHeader(JcloudsConstants.PAYLOAD_EXPIRES, Date.class);
-
-        if (ObjectHelper.isNotEmpty(contentType)) {
-            payload.getContentMetadata().setContentType(contentType);
-        }
-
-        if (ObjectHelper.isNotEmpty(contentEncoding)) {
-            payload.getContentMetadata().setContentEncoding(contentEncoding);
-        }
-
-        if (ObjectHelper.isNotEmpty(contentDisposition)) {
-            payload.getContentMetadata().setContentDisposition(contentDisposition);
-        }
-
-        if (ObjectHelper.isNotEmpty(contentLanguage)) {
-            payload.getContentMetadata().setContentLanguage(contentLanguage);
-        }
-
-        if (ObjectHelper.isNotEmpty(payloadExpires)) {
-            payload.getContentMetadata().setExpires(payloadExpires);
-        }
-        return payload;
-    }
-
-    @Converter
-    public static Payload toPayload(final InputStream is, Exchange exchange) throws IOException {
-        InputStreamPayload payload = new InputStreamPayload(is);
-        // only set the contentlength if possible
-        if (is.markSupported()) {
-            long contentLength = ByteStreams.toByteArray(is).length;
-            is.reset();
-            payload.getContentMetadata().setContentLength(contentLength);
-        }
-        return payload;
-    }
-
-    @Converter
-    public static Payload toPayload(StreamSource source, Exchange exchange) throws IOException {
-        return toPayload(new StreamSourceCache(source, exchange), exchange);
-    }
-
-    @Converter
-    public static Payload toPayload(final StreamSourceCache cache, Exchange exchange) throws IOException {
-        long contentLength = ByteStreams.toByteArray(cache.getInputStream()).length;
-        cache.reset();
-        InputStreamPayload payload = new InputStreamPayload(cache.getInputStream());
-        payload.getContentMetadata().setContentLength(contentLength);
-        setContentMetadata(payload, exchange);
-        return payload;
-    }
-
-    @Converter(fallback = true)
-    @SuppressWarnings("unchecked")
-    public static <T> T convertTo(Class<T> type, Exchange exchange, Object value, TypeConverterRegistry registry) {
-        Class<?> sourceType = value.getClass();
-        if (type == Payload.class && WrappedFile.class.isAssignableFrom(sourceType)) {
-            // attempt to convert to JClouds Payload from a file
-            WrappedFile wf = (WrappedFile) value;
-            if (wf.getFile() != null) {
-                TypeConverter converter = registry.lookup(Payload.class, wf.getFile().getClass());
-                if (converter != null) {
-                    return (T) converter.tryConvertTo(Payload.class, wf.getFile());
-                }
-            }
-        }
-        return null;
-    }
-}
diff --git a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsProducer.java b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsProducer.java
deleted file mode 100644
index 882c7e6a777..00000000000
--- a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsProducer.java
+++ /dev/null
@@ -1,27 +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.jclouds;
-
-import org.apache.camel.support.DefaultProducer;
-
-public abstract class JcloudsProducer extends DefaultProducer {
-
-    public JcloudsProducer(JcloudsEndpoint endpoint) {
-        super(endpoint);
-    }
-
-}
diff --git a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumerTest.java b/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumerTest.java
deleted file mode 100644
index 1ef15a0a695..00000000000
--- a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsBlobStoreConsumerTest.java
+++ /dev/null
@@ -1,112 +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.jclouds;
-
-import com.google.common.collect.Lists;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.jclouds.ContextBuilder;
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.io.payloads.StringPayload;
-import org.junit.jupiter.api.Test;
-
-public class JcloudsBlobStoreConsumerTest extends CamelTestSupport {
-
-    private static final String TEST_CONTAINER = "testContainer";
-    private static final String TEST_BLOB1 = "testBlob1";
-    private static final String TEST_BLOB2 = "testBlob2";
-
-    private static final String TEST_CONTAINER_WITH_DIR = "testContainerWithDirectories";
-    private static final String TEST_BLOB_IN_DIR = "dir/testBlob";
-    private static final String TEST_BLOB_IN_OTHER = "other/testBlob";
-
-    BlobStore blobStore = ContextBuilder.newBuilder("transient").credentials("id", "credential")
-            .buildView(BlobStoreContext.class).getBlobStore();
-
-    @Test
-    public void testBlobStoreGetOneBlob() throws InterruptedException {
-        String message = "Some message";
-
-        MockEndpoint mockEndpoint = resolveMandatoryEndpoint("mock:results", MockEndpoint.class);
-        mockEndpoint.expectedBodiesReceived(message);
-
-        JcloudsBlobStoreHelper.writeBlob(blobStore, TEST_CONTAINER, TEST_BLOB1, new StringPayload(message));
-
-        mockEndpoint.assertIsSatisfied();
-    }
-
-    @Test
-    public void testBlobStoreGetTwoBlobs() throws InterruptedException {
-        String message1 = "Blob 1";
-        String message2 = "Blob 2";
-
-        MockEndpoint mockEndpoint = resolveMandatoryEndpoint("mock:results", MockEndpoint.class);
-        mockEndpoint.expectedBodiesReceived(message1, message2);
-
-        JcloudsBlobStoreHelper.writeBlob(blobStore, TEST_CONTAINER, TEST_BLOB1, new StringPayload(message1));
-        JcloudsBlobStoreHelper.writeBlob(blobStore, TEST_CONTAINER, TEST_BLOB2, new StringPayload(message2));
-
-        mockEndpoint.assertIsSatisfied();
-    }
-
-    @Test
-    public void testBlobStoreWithDirectory() throws InterruptedException {
-        String message1 = "Blob in directory";
-
-        MockEndpoint mockEndpoint = resolveMandatoryEndpoint("mock:results-in-dir", MockEndpoint.class);
-        mockEndpoint.expectedBodiesReceived(message1);
-
-        JcloudsBlobStoreHelper.writeBlob(blobStore, TEST_CONTAINER_WITH_DIR, TEST_BLOB_IN_DIR, new StringPayload(message1));
-
-        mockEndpoint.assertIsSatisfied();
-    }
-
-    @Test
-    public void testBlobStoreWithMultipleDirectories() throws InterruptedException {
-        String message1 = "Blob in directory";
-        String message2 = "Blob in other directory";
-
-        MockEndpoint mockEndpoint = resolveMandatoryEndpoint("mock:results-in-dir", MockEndpoint.class);
-        mockEndpoint.expectedBodiesReceived(message1);
-
-        JcloudsBlobStoreHelper.writeBlob(blobStore, TEST_CONTAINER_WITH_DIR, TEST_BLOB_IN_DIR, new StringPayload(message1));
-        JcloudsBlobStoreHelper.writeBlob(blobStore, TEST_CONTAINER_WITH_DIR, TEST_BLOB_IN_OTHER, new StringPayload(message2));
-
-        mockEndpoint.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        blobStore.createContainerInLocation(null, TEST_CONTAINER);
-        blobStore.createContainerInLocation(null, TEST_CONTAINER_WITH_DIR);
-        ((JcloudsComponent) context.getComponent("jclouds")).setBlobStores(Lists.newArrayList(blobStore));
-
-        return new RouteBuilder() {
-            public void configure() {
-                from("jclouds:blobstore:transient?container=" + TEST_CONTAINER)
-                        .convertBodyTo(String.class)
-                        .to("mock:results");
-
-                from("jclouds:blobstore:transient?container=" + TEST_CONTAINER_WITH_DIR + "&directory=dir")
-                        .convertBodyTo(String.class)
-                        .to("mock:results-in-dir");
-            }
-        };
-    }
-}
diff --git a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsBlobStoreProducerTest.java b/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsBlobStoreProducerTest.java
deleted file mode 100644
index 7b79d0c0cb2..00000000000
--- a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsBlobStoreProducerTest.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.jclouds;
-
-import java.io.ByteArrayInputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.sax.SAXSource;
-
-import org.xml.sax.InputSource;
-
-import com.google.common.collect.Lists;
-import org.apache.camel.Exchange;
-import org.apache.camel.StreamCache;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.DefaultExchange;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.apache.camel.util.xml.StreamSourceConverter;
-import org.jclouds.ContextBuilder;
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class JcloudsBlobStoreProducerTest extends CamelTestSupport {
-
-    private static final String TEST_CONTAINER = "testContainer";
-    private static final String TEST_BLOB_IN_DIR = "/dir/testBlob";
-    private static final String MESSAGE = "<test>This is a test</test>";
-
-    BlobStoreContext blobStoreContext
-            = ContextBuilder.newBuilder("transient").credentials("identity", "credential").build(BlobStoreContext.class);
-    BlobStore blobStore = blobStoreContext.getBlobStore();
-
-    @Test
-    public void testBlobStorePut() throws InterruptedException {
-        MockEndpoint mockEndpoint = resolveMandatoryEndpoint("mock:results", MockEndpoint.class);
-        mockEndpoint.expectedMessageCount(1);
-        template.sendBody("direct:put", "Some message");
-        mockEndpoint.assertIsSatisfied();
-    }
-
-    @Test
-    public void testBlobStorePutAndGet() {
-        String message = "Some message";
-        template.sendBody("direct:put-and-get", message);
-        Object result = template.requestBodyAndHeader("direct:put-and-get", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.GET, String.class);
-        assertEquals(message, result);
-    }
-
-    @Test
-    public void testBlobStorePutWithStreamAndGet() throws TransformerException {
-        ByteArrayInputStream inputStream = new ByteArrayInputStream(MESSAGE.getBytes());
-        Exchange exchange = new DefaultExchange(context);
-        StreamCache streamCache
-                = StreamSourceConverter.convertToStreamCache(new SAXSource(new InputSource(inputStream)), exchange);
-        template.sendBody("direct:put-and-get", streamCache);
-        Object result = template.requestBodyAndHeader("direct:put-and-get", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.GET, String.class);
-        assertEquals(MESSAGE, result);
-    }
-
-    @Test
-    public void testBlobStorePutAndCount() {
-        String message = "Some message";
-        template.sendBody("direct:put-and-count", message);
-        Object result = template.requestBodyAndHeader("direct:put-and-count", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.COUNT_BLOBS, Long.class);
-        assertEquals(Long.valueOf(1), result);
-    }
-
-    @Test
-    public void testBlobStorePutAndRemove() {
-        String message = "Some message";
-        template.sendBody("direct:put-and-remove", message);
-        template.requestBodyAndHeader("direct:put-and-remove", null, JcloudsConstants.OPERATION, JcloudsConstants.REMOVE_BLOB);
-        Object result = template.requestBodyAndHeader("direct:put-and-remove", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.COUNT_BLOBS, Long.class);
-        assertEquals(Long.valueOf(0), result);
-    }
-
-    @Test
-    public void testBlobStorePutAndClear() {
-        String message = "Some message";
-        template.sendBody("direct:put-and-clear", message);
-        Object result = template.requestBodyAndHeader("direct:put-and-count", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.COUNT_BLOBS, Long.class);
-        assertEquals(Long.valueOf(1), result);
-        template.requestBodyAndHeader("direct:put-and-clear", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.CLEAR_CONTAINER);
-        result = template.requestBodyAndHeader("direct:put-and-count", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.COUNT_BLOBS, Long.class);
-        assertEquals(Long.valueOf(0), result);
-    }
-
-    @Test
-    public void testBlobStorePutAndDeleteContainer() {
-        String message = "Some message";
-        template.sendBody("direct:put-and-delete-container", message);
-        Object result = template.requestBodyAndHeader("direct:put-and-count", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.COUNT_BLOBS, Long.class);
-        assertEquals(Long.valueOf(1), result);
-        template.requestBodyAndHeader("direct:put-and-delete-container", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.DELETE_CONTAINER);
-    }
-
-    @Test
-    public void testCheckContainerExists() {
-        Object result = template.requestBodyAndHeader("direct:put-and-count", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.CONTAINER_EXISTS, Boolean.class);
-        assertEquals(true, result);
-        Map<String, Object> headers = new HashMap<>();
-        headers.put(JcloudsConstants.OPERATION, JcloudsConstants.CONTAINER_EXISTS);
-        headers.put(JcloudsConstants.CONTAINER_NAME, "otherTest");
-        result = template.requestBodyAndHeaders("direct:container-exists", null, headers, Boolean.class);
-        assertEquals(false, result);
-    }
-
-    @Test
-    public void testRemoveBlobs() {
-        template.sendBody("direct:put", "test message");
-        Object result = template.requestBodyAndHeader("direct:put-and-count", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.COUNT_BLOBS, Long.class);
-        assertEquals(Long.valueOf(1), result);
-        List blobsToRemove = new ArrayList<>();
-        blobsToRemove.add(TEST_BLOB_IN_DIR);
-        Map<String, Object> headers = new HashMap<>();
-        headers.put(JcloudsConstants.OPERATION, JcloudsConstants.REMOVE_BLOBS);
-        headers.put(JcloudsConstants.CONTAINER_NAME, TEST_CONTAINER);
-        headers.put(JcloudsConstants.BLOB_NAME_LIST, blobsToRemove);
-        template.sendBodyAndHeaders("direct:remove-blobs", null, headers);
-        result = template.requestBodyAndHeader("direct:put-and-count", null, JcloudsConstants.OPERATION,
-                JcloudsConstants.COUNT_BLOBS, Long.class);
-        assertEquals(Long.valueOf(0), result);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        blobStore.createContainerInLocation(null, TEST_CONTAINER);
-        ((JcloudsComponent) context.getComponent("jclouds")).setBlobStores(Lists.newArrayList(blobStore));
-
-        return new RouteBuilder() {
-            public void configure() {
-                from("direct:put")
-                        .setHeader(JcloudsConstants.BLOB_NAME, constant(TEST_BLOB_IN_DIR))
-                        .setHeader(JcloudsConstants.CONTAINER_NAME, constant(TEST_CONTAINER))
-                        .to("jclouds:blobstore:transient").to("mock:results");
-
-                from("direct:put-and-get")
-                        .setHeader(JcloudsConstants.BLOB_NAME, constant(TEST_BLOB_IN_DIR))
-                        .setHeader(JcloudsConstants.CONTAINER_NAME, constant(TEST_CONTAINER))
-                        .to("jclouds:blobstore:transient");
-
-                from("direct:put-and-count")
-                        .setHeader(JcloudsConstants.BLOB_NAME, constant(TEST_BLOB_IN_DIR))
-                        .setHeader(JcloudsConstants.CONTAINER_NAME, constant(TEST_CONTAINER))
-                        .to("jclouds:blobstore:transient");
-
-                from("direct:put-and-remove")
-                        .setHeader(JcloudsConstants.BLOB_NAME, constant(TEST_BLOB_IN_DIR))
-                        .setHeader(JcloudsConstants.CONTAINER_NAME, constant(TEST_CONTAINER))
-                        .to("jclouds:blobstore:transient");
-
-                from("direct:put-and-clear")
-                        .setHeader(JcloudsConstants.BLOB_NAME, constant(TEST_BLOB_IN_DIR))
-                        .setHeader(JcloudsConstants.CONTAINER_NAME, constant(TEST_CONTAINER))
-                        .to("jclouds:blobstore:transient");
-
-                from("direct:put-and-delete-container")
-                        .setHeader(JcloudsConstants.BLOB_NAME, constant(TEST_BLOB_IN_DIR))
-                        .setHeader(JcloudsConstants.CONTAINER_NAME, constant(TEST_CONTAINER))
-                        .to("jclouds:blobstore:transient");
-
-                from("direct:container-exists")
-                        .to("jclouds:blobstore:transient");
-
-                from("direct:remove-blobs")
-                        .to("jclouds:blobstore:transient");
-            }
-        };
-    }
-}
diff --git a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsFileConsumerStreamCachingIssueTest.java b/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsFileConsumerStreamCachingIssueTest.java
deleted file mode 100644
index c7be7fbc73b..00000000000
--- a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsFileConsumerStreamCachingIssueTest.java
+++ /dev/null
@@ -1,60 +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.jclouds;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.apache.camel.test.junit5.TestSupport.deleteDirectory;
-
-/**
- * There is a jclouds fallback type-converter that may cause issue when stream caching is enabled.
- */
-public class JcloudsFileConsumerStreamCachingIssueTest extends CamelTestSupport {
-
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        deleteDirectory("target/foo");
-        super.setUp();
-    }
-
-    @Test
-    public void testFromFile() throws Exception {
-        getMockEndpoint("mock:foo").expectedMessageCount(1);
-
-        template.sendBodyAndHeader("file:target/foo", "Hello World", Exchange.FILE_NAME, "foo.txt");
-
-        MockEndpoint.assertIsSatisfied(context);
-    }
-
-    @Override
-    protected RoutesBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("file:target/foo").streamCaching()
-                        .to("mock:foo");
-            }
-        };
-    }
-}
diff --git a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsMultipleBlobStoreTest.java b/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsMultipleBlobStoreTest.java
deleted file mode 100644
index ac74f52bc8f..00000000000
--- a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsMultipleBlobStoreTest.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.jclouds;
-
-import com.google.common.collect.Lists;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.jclouds.ContextBuilder;
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.jclouds.io.payloads.StringPayload;
-import org.junit.jupiter.api.Test;
-
-public class JcloudsMultipleBlobStoreTest extends CamelTestSupport {
-
-    private static final String TEST_CONTAINER = "testContainer";
-    private static final String TEST_BLOB1 = "testBlob1";
-    private static final String TEST_BLOB2 = "testBlob2";
-
-    BlobStoreContext blobStoreContext1 = ContextBuilder.newBuilder("transient").name("b1").credentials("identity", "credential")
-            .build(BlobStoreContext.class);
-    BlobStore blobStore1 = blobStoreContext1.getBlobStore();
-
-    BlobStoreContext blobStoreContext2 = ContextBuilder.newBuilder("transient").name("b2").credentials("identity", "credential")
-            .build(BlobStoreContext.class);
-    BlobStore blobStore2 = blobStoreContext2.getBlobStore();
-
-    @Test
-    public void testWithMultipleServices() throws InterruptedException {
-        String message1 = "Blob 1";
-        String message2 = "Blob 2";
-
-        MockEndpoint mockEndpoint1 = resolveMandatoryEndpoint("mock:results1", MockEndpoint.class);
-        mockEndpoint1.expectedBodiesReceived(message1);
-
-        MockEndpoint mockEndpoint2 = resolveMandatoryEndpoint("mock:results2", MockEndpoint.class);
-        mockEndpoint2.expectedBodiesReceived(message2);
-
-        JcloudsBlobStoreHelper.writeBlob(blobStore1, TEST_CONTAINER, TEST_BLOB1, new StringPayload(message1));
-        JcloudsBlobStoreHelper.writeBlob(blobStore2, TEST_CONTAINER, TEST_BLOB2, new StringPayload(message2));
-
-        mockEndpoint1.assertIsSatisfied();
-        mockEndpoint2.assertIsSatisfied();
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        blobStore1.createContainerInLocation(null, TEST_CONTAINER);
-        blobStore2.createContainerInLocation(null, TEST_CONTAINER);
-        ((JcloudsComponent) context.getComponent("jclouds")).setBlobStores(Lists.newArrayList(blobStore1, blobStore2));
-
-        return new RouteBuilder() {
-            public void configure() {
-                from("jclouds:blobstore:b1?container=" + TEST_CONTAINER)
-                        .convertBodyTo(String.class)
-                        .to("mock:results1");
-
-                from("jclouds:blobstore:b2?container=" + TEST_CONTAINER)
-                        .convertBodyTo(String.class)
-                        .to("mock:results2");
-            }
-        };
-    }
-}
diff --git a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringBlobstoreTest.java b/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringBlobstoreTest.java
deleted file mode 100644
index fda674632fe..00000000000
--- a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringBlobstoreTest.java
+++ /dev/null
@@ -1,123 +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.jclouds;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
-import org.jclouds.ContextBuilder;
-import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.BlobStoreContext;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.support.AbstractApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class JcloudsSpringBlobstoreTest extends CamelSpringTestSupport {
-
-    @EndpointInject("mock:result-foo")
-    protected MockEndpoint resultFoo;
-
-    @EndpointInject("mock:result-bar")
-    protected MockEndpoint resultBar;
-
-    @BeforeAll
-    public static void setUpClass() {
-        BlobStore blobStore = ContextBuilder.newBuilder("transient").credentials("id", "credential")
-                .buildView(BlobStoreContext.class).getBlobStore();
-        blobStore.createContainerInLocation(null, "foo");
-        blobStore.createContainerInLocation(null, "bar");
-    }
-
-    @Override
-    protected AbstractApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("classpath:blobstore-test.xml");
-    }
-
-    @Test
-    public void testBlobStorePut() throws InterruptedException {
-        resultFoo.expectedMessageCount(1);
-        template.sendBody("direct:start", "Some message");
-        resultFoo.assertIsSatisfied();
-    }
-
-    @Test
-    public void testBlobStoreGet() throws InterruptedException {
-        resultFoo.expectedMessageCount(1);
-        template.sendBody("direct:start", "Some message");
-        resultFoo.assertIsSatisfied();
-    }
-
-    @Test
-    public void testProduceWithUrlParametes() throws InterruptedException {
-        resultBar.expectedMessageCount(1);
-        template.sendBody("direct:start-with-url-parameters", "Some message");
-        resultBar.assertIsSatisfied();
-    }
-
-    @Test
-    public void testBlobStoreCount() {
-        Long count = template.requestBody("direct:count", "Some message", Long.class);
-        assertEquals(Long.valueOf(1), count);
-    }
-
-    @Test
-    public void testBlobStoreRemove() {
-        Long count = template.requestBody("direct:remove", "Some message", Long.class);
-        assertEquals(Long.valueOf(0), count);
-    }
-
-    @Test
-    public void testBlobStoreClear() {
-        Long count = template.requestBody("direct:clear", "Some message", Long.class);
-        assertEquals(Long.valueOf(0), count);
-    }
-
-    @Test
-    public void testBlobStoreDelete() {
-        Boolean result = template.requestBody("direct:delete", "Some message", Boolean.class);
-        assertEquals(false, result);
-    }
-
-    @Test
-    public void testBlobStoreContainerExists() {
-        Boolean result = template.requestBody("direct:exists", "Some message", Boolean.class);
-        assertEquals(true, result);
-    }
-
-    @Test
-    public void testBlobStoreRemoveBlobs() {
-        Boolean result = template.requestBody("direct:exists", "Some message", Boolean.class);
-        assertEquals(true, result);
-        List blobsToRemove = new ArrayList<>();
-        blobsToRemove.add("testName");
-        Map<String, Object> headers = new HashMap<>();
-        headers.put(JcloudsConstants.OPERATION, JcloudsConstants.REMOVE_BLOBS);
-        headers.put(JcloudsConstants.CONTAINER_NAME, "foo");
-        headers.put(JcloudsConstants.BLOB_NAME_LIST, blobsToRemove);
-        template.sendBodyAndHeaders("direct:remove-blobs", null, headers);
-        Long count = template.requestBody("direct:count-after-remove-blobs", null, Long.class);
-        assertEquals(Long.valueOf(0), count);
-    }
-}
diff --git a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringComputeTest.java b/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringComputeTest.java
deleted file mode 100644
index 9372f4bc7fc..00000000000
--- a/components/camel-jclouds/src/test/java/org/apache/camel/component/jclouds/JcloudsSpringComputeTest.java
+++ /dev/null
@@ -1,350 +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.jclouds;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.support.AbstractApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class JcloudsSpringComputeTest extends CamelSpringTestSupport {
-
-    @EndpointInject("mock:result")
-    protected MockEndpoint result;
-
-    @EndpointInject("mock:resultlist")
-    protected MockEndpoint resultlist;
-
-    @Override
-    @AfterEach
-    public void tearDown() {
-        template.sendBodyAndHeaders("direct:start", null, destroyHeaders(null, null));
-    }
-
-    @Override
-    protected AbstractApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("classpath:compute-test.xml");
-    }
-
-    @Test
-    public void testListImages() throws InterruptedException {
-        result.expectedMessageCount(1);
-        template.sendBodyAndHeader("direct:start", null, JcloudsConstants.OPERATION, JcloudsConstants.LIST_IMAGES);
-        result.assertIsSatisfied();
-
-        List<Exchange> exchanges = result.getExchanges();
-        if (exchanges != null && !exchanges.isEmpty()) {
-            for (Exchange exchange : exchanges) {
-                Set<?> images = exchange.getIn().getBody(Set.class);
-                assertTrue(images.size() > 0);
-                for (Object obj : images) {
-                    assertTrue(obj instanceof Image);
-                }
-            }
-        }
-    }
-
-    @Test
-    public void testListHardware() throws InterruptedException {
-        result.expectedMessageCount(1);
-        template.sendBodyAndHeader("direct:start", null, JcloudsConstants.OPERATION, JcloudsConstants.LIST_HARDWARE);
-        result.assertIsSatisfied();
-
-        List<Exchange> exchanges = result.getExchanges();
-        if (exchanges != null && !exchanges.isEmpty()) {
-            for (Exchange exchange : exchanges) {
-                Set<?> hardwares = exchange.getIn().getBody(Set.class);
-                assertTrue(hardwares.size() > 0);
-                for (Object obj : hardwares) {
-                    assertTrue(obj instanceof Hardware);
-                }
-            }
-        }
-    }
-
-    @Test
-    public void testListNodes() throws InterruptedException {
-        result.expectedMessageCount(1);
-        template.sendBodyAndHeader("direct:start", null, JcloudsConstants.OPERATION, JcloudsConstants.LIST_NODES);
-        result.assertIsSatisfied();
-
-        List<Exchange> exchanges = result.getExchanges();
-        if (exchanges != null && !exchanges.isEmpty()) {
-            for (Exchange exchange : exchanges) {
-                Set<?> nodeMetadatas = exchange.getIn().getBody(Set.class);
-                assertEquals(0, nodeMetadatas.size(), "Nodes should be 0");
-            }
-        }
-    }
-
-    @Test
-    public void testCreateAndListNodes() throws InterruptedException {
-        result.expectedMessageCount(2);
-        template.sendBodyAndHeaders("direct:start", null, createHeaders("1", "default"));
-        template.sendBodyAndHeader("direct:start", null, JcloudsConstants.OPERATION, JcloudsConstants.LIST_NODES);
-        result.assertIsSatisfied();
-
-        List<Exchange> exchanges = result.getExchanges();
-        if (exchanges != null && !exchanges.isEmpty()) {
-            for (Exchange exchange : exchanges) {
-                Set<?> nodeMetadatas = exchange.getIn().getBody(Set.class);
-                assertEquals(1, nodeMetadatas.size(), "Nodes should be 1");
-            }
-        }
-    }
-
-    @Test
-    public void testCreateAndListWithPredicates() throws InterruptedException {
-        result.expectedMessageCount(6);
-
-        //Create a node for the default group
-        template.sendBodyAndHeaders("direct:start", null, createHeaders("1", "default"));
-
-        //Create a node for the group 'other'
-        template.sendBodyAndHeaders("direct:start", null, createHeaders("1", "other"));
-        template.sendBodyAndHeaders("direct:start", null, createHeaders("2", "other"));
-
-        template.sendBodyAndHeaders("direct:start", null, listNodeHeaders(null, "other", null));
-        template.sendBodyAndHeaders("direct:start", null, listNodeHeaders("3", "other", null));
-        template.sendBodyAndHeaders("direct:start", null, listNodeHeaders("3", "other", "RUNNING"));
-
-        result.assertIsSatisfied();
-    }
-
-    @Test
-    public void testCreateAndDestroyNode() throws InterruptedException {
-        result.expectedMessageCount(1);
-        template.sendBodyAndHeaders("direct:start", null, createHeaders("1", "default"));
-        result.assertIsSatisfied();
-
-        List<Exchange> exchanges = result.getExchanges();
-        if (exchanges != null && !exchanges.isEmpty()) {
-            for (Exchange exchange : exchanges) {
-                Set<?> nodeMetadatas = exchange.getIn().getBody(Set.class);
-                assertEquals(1, nodeMetadatas.size(), "There should be no node running");
-
-                for (Object obj : nodeMetadatas) {
-                    NodeMetadata nodeMetadata = (NodeMetadata) obj;
-                    template.sendBodyAndHeaders("direct:start", null, destroyHeaders(nodeMetadata.getId(), null));
-                }
-            }
-        }
-    }
-
-    @Test
-    public void testCreateAndRebootNode() throws InterruptedException {
-        result.expectedMessageCount(1);
-        template.sendBodyAndHeaders("direct:start", null, createHeaders("1", "default"));
-        result.assertIsSatisfied();
-
-        List<Exchange> exchanges = result.getExchanges();
-        if (exchanges != null && !exchanges.isEmpty()) {
-            for (Exchange exchange : exchanges) {
-                Set<?> nodeMetadatas = exchange.getIn().getBody(Set.class);
-                assertEquals(1, nodeMetadatas.size(), "There should be one node running");
-
-                for (Object obj : nodeMetadatas) {
-                    NodeMetadata nodeMetadata = (NodeMetadata) obj;
-                    template.sendBodyAndHeaders("direct:start", null, rebootHeaders(nodeMetadata.getId(), null));
-                }
-            }
-        }
-    }
-
-    @Test
-    public void testCreateAndSuspendNode() throws InterruptedException {
-        result.expectedMessageCount(1);
-        template.sendBodyAndHeaders("direct:start", null, createHeaders("1", "default"));
-        result.assertIsSatisfied();
-
-        List<Exchange> exchanges = result.getExchanges();
-        if (exchanges != null && !exchanges.isEmpty()) {
-            for (Exchange exchange : exchanges) {
-                Set<?> nodeMetadatas = exchange.getIn().getBody(Set.class);
-                assertEquals(1, nodeMetadatas.size(), "There should be one node running");
-
-                for (Object obj : nodeMetadatas) {
-                    NodeMetadata nodeMetadata = (NodeMetadata) obj;
-                    template.sendBodyAndHeaders("direct:start", null, suspendHeaders(nodeMetadata.getId(), null));
-                }
-            }
-        }
-    }
-
-    @Test
-    public void testCreateSuspendAndResumeNode() throws InterruptedException {
-        result.expectedMessageCount(1);
-        template.sendBodyAndHeaders("direct:start", null, createHeaders("1", "default"));
-        result.assertIsSatisfied();
-
-        List<Exchange> exchanges = result.getExchanges();
-        if (exchanges != null && !exchanges.isEmpty()) {
-            for (Exchange exchange : exchanges) {
-                Set<?> nodeMetadatas = exchange.getIn().getBody(Set.class);
-                assertEquals(1, nodeMetadatas.size(), "There should be one node running");
-
-                for (Object obj : nodeMetadatas) {
-                    NodeMetadata nodeMetadata = (NodeMetadata) obj;
-                    template.sendBodyAndHeaders("direct:start", null, resumeHeaders(nodeMetadata.getId(), null));
-                }
-            }
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    @Disabled("For now not possible to combine stub provider with ssh module, required for runScript")
-    @Test
-    public void testRunScript() {
-        Map<String, Object> runScriptHeaders = new HashMap<>();
-        runScriptHeaders.put(JcloudsConstants.OPERATION, JcloudsConstants.RUN_SCRIPT);
-
-        Set<? extends NodeMetadata> nodeMetadatas = (Set<? extends NodeMetadata>) template
-                .requestBodyAndHeaders("direct:in-out", null, createHeaders("1", "default"));
-        assertEquals(1, nodeMetadatas.size(), "There should be a node running");
-        for (NodeMetadata nodeMetadata : nodeMetadatas) {
-            runScriptHeaders.put(JcloudsConstants.NODE_ID, nodeMetadata.getId());
-            template.requestBodyAndHeaders("direct:in-out", null, runScriptHeaders);
-            template.sendBodyAndHeaders("direct:in-out", null, destroyHeaders(nodeMetadata.getId(), null));
-        }
-    }
-
-    /**
-     * Returns a {@Map} with the create headers.
-     *
-     * @param imageId The imageId to use for creating the node.
-     * @param group   The group to be assigned to the node.
-     */
-    protected Map<String, Object> createHeaders(String imageId, String group) {
-        Map<String, Object> createHeaders = new HashMap<>();
-        createHeaders.put(JcloudsConstants.OPERATION, JcloudsConstants.CREATE_NODE);
-        createHeaders.put(JcloudsConstants.IMAGE_ID, imageId);
-        createHeaders.put(JcloudsConstants.GROUP, group);
-        return createHeaders;
-    }
-
-    /**
-     * Returns a {@Map} with the destroy headers.
-     *
-     * @param nodeId The id of the node to destroy.
-     * @param group  The group of the node to destroy.
-     */
-    protected Map<String, Object> destroyHeaders(String nodeId, String group) {
-        Map<String, Object> destroyHeaders = new HashMap<>();
-        destroyHeaders.put(JcloudsConstants.OPERATION, JcloudsConstants.DESTROY_NODE);
-        if (nodeId != null) {
-            destroyHeaders.put(JcloudsConstants.NODE_ID, nodeId);
-        }
-        if (group != null) {
-            destroyHeaders.put(JcloudsConstants.GROUP, group);
-        }
-        return destroyHeaders;
-    }
-
-    /**
-     * Returns a {@Map} with the destroy headers.
-     *
-     * @param nodeId The id of the node to destroy.
-     * @param group  The group of the node to destroy.
-     */
-    protected Map<String, Object> listNodeHeaders(String nodeId, String group, Object state) {
-        Map<String, Object> listHeaders = new HashMap<>();
-        listHeaders.put(JcloudsConstants.OPERATION, JcloudsConstants.LIST_NODES);
-        if (nodeId != null) {
-            listHeaders.put(JcloudsConstants.NODE_ID, nodeId);
-        }
-
-        if (group != null) {
-            listHeaders.put(JcloudsConstants.GROUP, group);
-        }
-
-        if (state != null) {
-            listHeaders.put(JcloudsConstants.NODE_STATE, state);
-        }
-
-        return listHeaders;
-    }
-
-    /**
-     * Returns a {@Map} with the reboot headers.
-     *
-     * @param nodeId The id of the node to reboot.
-     * @param group  The group of the node to reboot.
-     */
-    protected Map<String, Object> rebootHeaders(String nodeId, String group) {
-        Map<String, Object> rebootHeaders = new HashMap<>();
-        rebootHeaders.put(JcloudsConstants.OPERATION, JcloudsConstants.REBOOT_NODE);
-        if (nodeId != null) {
-            rebootHeaders.put(JcloudsConstants.NODE_ID, nodeId);
-        }
-        if (group != null) {
-            rebootHeaders.put(JcloudsConstants.GROUP, group);
-        }
-        return rebootHeaders;
-    }
-
-    /**
-     * Returns a {@Map} with the suspend headers.
-     *
-     * @param nodeId The id of the node to suspend.
-     * @param group  The group of the node to suspend.
-     */
-    protected Map<String, Object> suspendHeaders(String nodeId, String group) {
-        Map<String, Object> rebootHeaders = new HashMap<>();
-        rebootHeaders.put(JcloudsConstants.OPERATION, JcloudsConstants.SUSPEND_NODE);
-        if (nodeId != null) {
-            rebootHeaders.put(JcloudsConstants.NODE_ID, nodeId);
-        }
-        if (group != null) {
-            rebootHeaders.put(JcloudsConstants.GROUP, group);
-        }
-        return rebootHeaders;
-    }
-
-    /**
-     * Returns a {@Map} with the suspend headers.
-     *
-     * @param nodeId The id of the node to resume.
-     * @param group  The group of the node to resume.
-     */
-    protected Map<String, Object> resumeHeaders(String nodeId, String group) {
-        Map<String, Object> rebootHeaders = new HashMap<>();
-        rebootHeaders.put(JcloudsConstants.OPERATION, JcloudsConstants.RESUME_NODE);
-        if (nodeId != null) {
-            rebootHeaders.put(JcloudsConstants.NODE_ID, nodeId);
-        }
-        if (group != null) {
-            rebootHeaders.put(JcloudsConstants.GROUP, group);
-        }
-        return rebootHeaders;
-    }
-}
diff --git a/components/camel-jclouds/src/test/resources/blobstore-test.xml b/components/camel-jclouds/src/test/resources/blobstore-test.xml
deleted file mode 100644
index 8db929f054a..00000000000
--- a/components/camel-jclouds/src/test/resources/blobstore-test.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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
-
-    <camelContext xmlns="http://camel.apache.org/schema/spring">
-
-        <route>
-            <from uri="direct:start"/>
-            <setHeader name="CamelJcloudsBlobName">
-                <constant>testName</constant>
-            </setHeader>
-            <setHeader name="CamelJcloudsContainerName">
-                <constant>foo</constant>
-            </setHeader>
-            <to uri="jclouds:blobstore:transient"/>
-        </route>
-
-        <route>
-            <from uri="jclouds:blobstore:transient?container=foo"/>
-            <to uri="mock:result-foo"/>
-        </route>
-
-        <route>
-            <from uri="direct:start-with-url-parameters"/>
-            <to uri="jclouds:blobstore:transient?container=bar&amp;blobName=testName"/>
-        </route>
-
-        <route>
-            <from uri="jclouds:blobstore:transient?container=bar"/>
-            <to uri="mock:result-bar"/>
-        </route>
-        
-        <route>
-            <from uri="direct:count"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsCountBlobs"/>
-        </route>
-        
-        <route>
-            <from uri="direct:remove"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsRemoveBlob"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsCountBlobs"/>
-        </route>
-        
-        <route>
-            <from uri="direct:clear"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsClearContainer"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsCountBlobs"/>
-        </route>
-        
-        <route>
-            <from uri="direct:delete"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsCountBlobs"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsDeleteContainer"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsExistsContainer"/>
-        </route>
-        
-        <route>
-            <from uri="direct:exists"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsExistsContainer"/>
-        </route>
-        
-        <route>
-            <from uri="direct:remove-blobs"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsExistsContainer"/>
-        </route>
-        
-        <route>
-            <from uri="direct:count-after-remove-blobs"/>
-            <to uri="jclouds:blobstore:transient?container=foo&amp;blobName=testName&amp;operation=CamelJcloudsCountBlobs"/>
-        </route>
-
-    </camelContext>
-
-    <bean id="jclouds" class="org.apache.camel.component.jclouds.JcloudsComponent">
-        <property name="blobStores">
-            <list>
-                <ref bean="blobStore"/>
-            </list>
-        </property>
-    </bean>           
-
-
-    <!-- BlobStore Service -->
-    <bean id="contextBuilder" class="org.jclouds.ContextBuilder" factory-method="newBuilder">
-        <constructor-arg value="transient"/>
-    </bean>
-
-    <bean id="contextBuilderWithCreds" factory-bean="contextBuilder" factory-method="credentials">
-        <constructor-arg  value="identity"/>
-        <constructor-arg  value="credential"/>
-    </bean>
-
-    <bean id="blobStoreContext" factory-bean="contextBuilderWithCreds" factory-method="buildView">
-        <constructor-arg>
-            <value>org.jclouds.blobstore.BlobStoreContext</value>
-        </constructor-arg>
-    </bean>
-
-    <bean id="blobStore" factory-bean="blobStoreContext" factory-method="getBlobStore"/>
-
-</beans>
\ No newline at end of file
diff --git a/components/camel-jclouds/src/test/resources/compute-test.xml b/components/camel-jclouds/src/test/resources/compute-test.xml
deleted file mode 100644
index ebc1a2aba49..00000000000
--- a/components/camel-jclouds/src/test/resources/compute-test.xml
+++ /dev/null
@@ -1,66 +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.
-
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
-
-    <camelContext xmlns="http://camel.apache.org/schema/spring">
-
-        <route>
-            <from uri="direct:start"/>
-            <to uri="jclouds:compute:stub?operation=CamelJcloudsListImages&amp;nodeState=RUNNING"/>
-            <to uri="mock:result"/>
-        </route>
-
-        <route>
-            <from uri="direct:in-out"/>
-            <to uri="jclouds:compute:stub?operation=CamelJcloudsListImages&amp;nodeState=RUNNING"/>
-        </route>
-
-    </camelContext>
-
-    <bean id="jclouds" class="org.apache.camel.component.jclouds.JcloudsComponent">
-        <property name="computeServices">
-            <list>
-                <ref bean="computeService"/>
-            </list>
-        </property>
-    </bean>           
-
-     <!-- Compute Service -->
-    <bean id="contextBuilder" class="org.jclouds.ContextBuilder" factory-method="newBuilder">
-        <constructor-arg value="stub"/>
-    </bean>
-
-    <bean id="contextBuilderWithCreds" factory-bean="contextBuilder" factory-method="credentials">
-        <constructor-arg  value="identity"/>
-        <constructor-arg  value="credential"/>
-    </bean>
-
-    <bean id="computeCtx" factory-bean="contextBuilderWithCreds" factory-method="buildView">
-        <constructor-arg>
-            <value>org.jclouds.compute.ComputeServiceContext</value>
-        </constructor-arg>
-    </bean>
-
-    <bean id="computeService" factory-bean="computeCtx" factory-method="getComputeService"/>
-
-</beans>
\ No newline at end of file
diff --git a/components/camel-jclouds/src/test/resources/log4j2.properties b/components/camel-jclouds/src/test/resources/log4j2.properties
deleted file mode 100644
index 05a8de12011..00000000000
--- a/components/camel-jclouds/src/test/resources/log4j2.properties
+++ /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.
-## ---------------------------------------------------------------------------
-
-appender.file.type = File
-appender.file.name = file
-appender.file.fileName = target/camel-jclouds-test.log
-appender.file.layout.type = PatternLayout
-appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-appender.stdout.type = Console
-appender.stdout.name = stdout
-appender.stdout.layout.type = PatternLayout
-appender.stdout.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-logger.springframework.name = org.springframework
-logger.springframework.level = WARN
-rootLogger.level = INFO
-rootLogger.appenderRef.file.ref = file
diff --git a/components/pom.xml b/components/pom.xml
index c7071d94f3e..c1ec2607d83 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -173,7 +173,6 @@
         <module>camel-jaxb</module>
         <module>camel-jbpm</module>
         <module>camel-jcache</module>
-        <module>camel-jclouds</module>
         <module>camel-tracing</module>
         <module>camel-jcr</module>
         <module>camel-jdbc</module>
diff --git a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
index 3fadd2962d3..5c2daa7a7a3 100644
--- a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
+++ b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
@@ -161,7 +161,6 @@ irc
 ironmq
 jbpm
 jcache
-jclouds
 jcr
 jdbc
 jetty
diff --git a/docs/components/modules/ROOT/examples/json/jclouds.json b/docs/components/modules/ROOT/examples/json/jclouds.json
deleted file mode 120000
index 3c6d860830f..00000000000
--- a/docs/components/modules/ROOT/examples/json/jclouds.json
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../../components/camel-jclouds/src/generated/resources/org/apache/camel/component/jclouds/jclouds.json
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index f7b05f48ba8..bdbd8e132fe 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -167,7 +167,6 @@
 ** xref:websocket-jsr356-component.adoc[Javax Websocket]
 ** xref:jbpm-component.adoc[JBPM]
 ** xref:jcache-component.adoc[JCache]
-** xref:jclouds-component.adoc[JClouds]
 ** xref:jcr-component.adoc[JCR]
 ** xref:jdbc-component.adoc[JDBC]
 ** xref:jetty-component.adoc[Jetty]
diff --git a/docs/components/modules/ROOT/pages/jclouds-component.adoc b/docs/components/modules/ROOT/pages/jclouds-component.adoc
deleted file mode 120000
index aea0ba36578..00000000000
--- a/docs/components/modules/ROOT/pages/jclouds-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-jclouds/src/main/docs/jclouds-component.adoc
\ No newline at end of file
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc b/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
index 45f4b6839a9..0f092edcdf5 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
@@ -21,6 +21,7 @@ The following components has been removed:
 - camel-hbase
 - camel-iota
 - camel-ipfs
+- camel-jclouds
 - camel-microprofile-metrics
 - camel-opentracing
 - camel-rabbitmq
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index 07a2b23d2f0..2d42921d8dc 100644
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -2208,19 +2208,6 @@ public interface ComponentsBuilderFactory {
     static org.apache.camel.builder.component.dsl.JcacheComponentBuilderFactory.JcacheComponentBuilder jcache() {
         return org.apache.camel.builder.component.dsl.JcacheComponentBuilderFactory.jcache();
     }
-    /**
-     * JClouds (camel-jclouds)
-     * Interact with jclouds compute and blobstore service.
-     * 
-     * Category: api,cloud,compute
-     * Since: 2.9
-     * Maven coordinates: org.apache.camel:camel-jclouds
-     * 
-     * @return the dsl builder
-     */
-    static org.apache.camel.builder.component.dsl.JcloudsComponentBuilderFactory.JcloudsComponentBuilder jclouds() {
-        return org.apache.camel.builder.component.dsl.JcloudsComponentBuilderFactory.jclouds();
-    }
     /**
      * JCR (camel-jcr)
      * Read and write nodes to/from a JCR compliant content repository.
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JcloudsComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JcloudsComponentBuilderFactory.java
deleted file mode 100644
index 71dd3540466..00000000000
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JcloudsComponentBuilderFactory.java
+++ /dev/null
@@ -1,180 +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.builder.component.dsl;
-
-import javax.annotation.processing.Generated;
-import org.apache.camel.Component;
-import org.apache.camel.builder.component.AbstractComponentBuilder;
-import org.apache.camel.builder.component.ComponentBuilder;
-import org.apache.camel.component.jclouds.JcloudsComponent;
-
-/**
- * Interact with jclouds compute and blobstore service.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.ComponentDslMojo")
-public interface JcloudsComponentBuilderFactory {
-
-    /**
-     * JClouds (camel-jclouds)
-     * Interact with jclouds compute and blobstore service.
-     * 
-     * Category: api,cloud,compute
-     * Since: 2.9
-     * Maven coordinates: org.apache.camel:camel-jclouds
-     * 
-     * @return the dsl builder
-     */
-    static JcloudsComponentBuilder jclouds() {
-        return new JcloudsComponentBuilderImpl();
-    }
-
-    /**
-     * Builder for the JClouds component.
-     */
-    interface JcloudsComponentBuilder
-            extends
-                ComponentBuilder<JcloudsComponent> {
-        /**
-         * To use the given BlobStore which must be configured when using
-         * blobstore.
-         * 
-         * The option is a:
-         * &lt;code&gt;java.util.List&amp;lt;org.jclouds.blobstore.BlobStore&amp;gt;&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param blobStores the value to set
-         * @return the dsl builder
-         */
-        default JcloudsComponentBuilder blobStores(
-                java.util.List<org.jclouds.blobstore.BlobStore> blobStores) {
-            doSetProperty("blobStores", blobStores);
-            return this;
-        }
-        /**
-         * To use the given ComputeService which must be configured when use
-         * compute.
-         * 
-         * The option is a:
-         * &lt;code&gt;java.util.List&amp;lt;org.jclouds.compute.ComputeService&amp;gt;&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param computeServices the value to set
-         * @return the dsl builder
-         */
-        default JcloudsComponentBuilder computeServices(
-                java.util.List<org.jclouds.compute.ComputeService> computeServices) {
-            doSetProperty("computeServices", computeServices);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: consumer
-         * 
-         * @param bridgeErrorHandler the value to set
-         * @return the dsl builder
-         */
-        default JcloudsComponentBuilder bridgeErrorHandler(
-                boolean bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param lazyStartProducer the value to set
-         * @return the dsl builder
-         */
-        default JcloudsComponentBuilder lazyStartProducer(
-                boolean lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: advanced
-         * 
-         * @param autowiredEnabled the value to set
-         * @return the dsl builder
-         */
-        default JcloudsComponentBuilder autowiredEnabled(
-                boolean autowiredEnabled) {
-            doSetProperty("autowiredEnabled", autowiredEnabled);
-            return this;
-        }
-    }
-
-    class JcloudsComponentBuilderImpl
-            extends
-                AbstractComponentBuilder<JcloudsComponent>
-            implements
-                JcloudsComponentBuilder {
-        @Override
-        protected JcloudsComponent buildConcreteComponent() {
-            return new JcloudsComponent();
-        }
-        @Override
-        protected boolean setPropertyOnComponent(
-                Component component,
-                String name,
-                Object value) {
-            switch (name) {
-            case "blobStores": ((JcloudsComponent) component).setBlobStores((java.util.List) value); return true;
-            case "computeServices": ((JcloudsComponent) component).setComputeServices((java.util.List) value); return true;
-            case "bridgeErrorHandler": ((JcloudsComponent) component).setBridgeErrorHandler((boolean) value); return true;
-            case "lazyStartProducer": ((JcloudsComponent) component).setLazyStartProducer((boolean) value); return true;
-            case "autowiredEnabled": ((JcloudsComponent) component).setAutowiredEnabled((boolean) value); return true;
-            default: return false;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/dsl/camel-componentdsl/src/generated/resources/metadata.json b/dsl/camel-componentdsl/src/generated/resources/metadata.json
index 2ff12589f9d..3e6e54855c5 100644
--- a/dsl/camel-componentdsl/src/generated/resources/metadata.json
+++ b/dsl/camel-componentdsl/src/generated/resources/metadata.json
@@ -3618,28 +3618,6 @@
     "producerOnly": false,
     "lenientProperties": false
   },
-  "JcloudsComponentBuilderFactory": {
-    "kind": "component",
-    "name": "jclouds",
-    "title": "JClouds",
-    "description": "Interact with jclouds compute and blobstore service.",
-    "deprecated": false,
-    "firstVersion": "2.9.0",
-    "label": "api,cloud,compute",
-    "javaType": "org.apache.camel.component.jclouds.JcloudsComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-jclouds",
-    "version": "4.0.0-SNAPSHOT",
-    "scheme": "jclouds",
-    "extendsScheme": "",
-    "syntax": "jclouds:command:providerId",
-    "async": false,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": false,
-    "lenientProperties": false
-  },
   "JcrComponentBuilderFactory": {
     "kind": "component",
     "name": "jcr",
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index b8685730f97..5da7cee96c6 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -174,7 +174,6 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.JGroupsRaftEndpointBuilderFactory.JGroupsRaftBuilders,
             org.apache.camel.builder.endpoint.dsl.JMXEndpointBuilderFactory.JMXBuilders,
             org.apache.camel.builder.endpoint.dsl.JSR356WebSocketEndpointBuilderFactory.JSR356WebSocketBuilders,
-            org.apache.camel.builder.endpoint.dsl.JcloudsEndpointBuilderFactory.JcloudsBuilders,
             org.apache.camel.builder.endpoint.dsl.JcrEndpointBuilderFactory.JcrBuilders,
             org.apache.camel.builder.endpoint.dsl.JdbcEndpointBuilderFactory.JdbcBuilders,
             org.apache.camel.builder.endpoint.dsl.JettyHttp11EndpointBuilderFactory.JettyHttp11Builders,
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index 55139dc09bc..2ce5c9c8777 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -171,7 +171,6 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.JGroupsRaftEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JMXEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JSR356WebSocketEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JcloudsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JcrEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JdbcEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JettyHttp11EndpointBuilderFactory,
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 4bd4f50fd67..b5893e3c90d 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -7462,59 +7462,6 @@ public class StaticEndpointBuilders {
             String path) {
         return org.apache.camel.builder.endpoint.dsl.JCacheEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
-    /**
-     * JClouds (camel-jclouds)
-     * Interact with jclouds compute and blobstore service.
-     * 
-     * Category: api,cloud,compute
-     * Since: 2.9
-     * Maven coordinates: org.apache.camel:camel-jclouds
-     * 
-     * Syntax: <code>jclouds:command:providerId</code>
-     * 
-     * Path parameter: command (required)
-     * What command to execute such as blobstore or compute.
-     * There are 2 enums and the value can be one of: blobstore, compute
-     * 
-     * Path parameter: providerId (required)
-     * The name of the cloud provider that provides the target service (e.g.
-     * aws-s3 or aws_ec2).
-     * 
-     * @param path command:providerId
-     * @return the dsl builder
-     */
-    public static org.apache.camel.builder.endpoint.dsl.JcloudsEndpointBuilderFactory.JcloudsEndpointBuilder jclouds(
-            String path) {
-        return org.apache.camel.builder.endpoint.dsl.JcloudsEndpointBuilderFactory.endpointBuilder("jclouds", path);
-    }
-    /**
-     * JClouds (camel-jclouds)
-     * Interact with jclouds compute and blobstore service.
-     * 
-     * Category: api,cloud,compute
-     * Since: 2.9
-     * Maven coordinates: org.apache.camel:camel-jclouds
-     * 
-     * Syntax: <code>jclouds:command:providerId</code>
-     * 
-     * Path parameter: command (required)
-     * What command to execute such as blobstore or compute.
-     * There are 2 enums and the value can be one of: blobstore, compute
-     * 
-     * Path parameter: providerId (required)
-     * The name of the cloud provider that provides the target service (e.g.
-     * aws-s3 or aws_ec2).
-     * 
-     * @param componentName to use a custom component name for the endpoint
-     * instead of the default name
-     * @param path command:providerId
-     * @return the dsl builder
-     */
-    public static org.apache.camel.builder.endpoint.dsl.JcloudsEndpointBuilderFactory.JcloudsEndpointBuilder jclouds(
-            String componentName,
-            String path) {
-        return org.apache.camel.builder.endpoint.dsl.JcloudsEndpointBuilderFactory.endpointBuilder(componentName, path);
-    }
     /**
      * JCR (camel-jcr)
      * Read and write nodes to/from a JCR compliant content repository.
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JcloudsEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JcloudsEndpointBuilderFactory.java
deleted file mode 100644
index ce04fbef506..00000000000
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JcloudsEndpointBuilderFactory.java
+++ /dev/null
@@ -1,690 +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.builder.endpoint.dsl;
-
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.function.*;
-import java.util.stream.*;
-import javax.annotation.processing.Generated;
-import org.apache.camel.builder.EndpointConsumerBuilder;
-import org.apache.camel.builder.EndpointProducerBuilder;
-import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
-
-/**
- * Interact with jclouds compute and blobstore service.
- * 
- * Generated by camel build tools - do NOT edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
-public interface JcloudsEndpointBuilderFactory {
-
-
-    /**
-     * Builder for endpoint consumers for the JClouds component.
-     */
-    public interface JcloudsEndpointConsumerBuilder
-            extends
-                EndpointConsumerBuilder {
-        default AdvancedJcloudsEndpointConsumerBuilder advanced() {
-            return (AdvancedJcloudsEndpointConsumerBuilder) this;
-        }
-        /**
-         * The name of the blob container.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: blobstore
-         * 
-         * @param container the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointConsumerBuilder container(String container) {
-            doSetProperty("container", container);
-            return this;
-        }
-        /**
-         * An optional directory name to use.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: blobstore
-         * 
-         * @param directory the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointConsumerBuilder directory(String directory) {
-            doSetProperty("directory", directory);
-            return this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint consumers for the JClouds component.
-     */
-    public interface AdvancedJcloudsEndpointConsumerBuilder
-            extends
-                EndpointConsumerBuilder {
-        default JcloudsEndpointConsumerBuilder basic() {
-            return (JcloudsEndpointConsumerBuilder) this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: consumer (advanced)
-         * 
-         * @param bridgeErrorHandler the value to set
-         * @return the dsl builder
-         */
-        default AdvancedJcloudsEndpointConsumerBuilder bridgeErrorHandler(
-                boolean bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: consumer (advanced)
-         * 
-         * @param bridgeErrorHandler the value to set
-         * @return the dsl builder
-         */
-        default AdvancedJcloudsEndpointConsumerBuilder bridgeErrorHandler(
-                String bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exceptionHandler the value to set
-         * @return the dsl builder
-         */
-        default AdvancedJcloudsEndpointConsumerBuilder exceptionHandler(
-                org.apache.camel.spi.ExceptionHandler exceptionHandler) {
-            doSetProperty("exceptionHandler", exceptionHandler);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exceptionHandler the value to set
-         * @return the dsl builder
-         */
-        default AdvancedJcloudsEndpointConsumerBuilder exceptionHandler(
-                String exceptionHandler) {
-            doSetProperty("exceptionHandler", exceptionHandler);
-            return this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exchangePattern the value to set
-         * @return the dsl builder
-         */
-        default AdvancedJcloudsEndpointConsumerBuilder exchangePattern(
-                org.apache.camel.ExchangePattern exchangePattern) {
-            doSetProperty("exchangePattern", exchangePattern);
-            return this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exchangePattern the value to set
-         * @return the dsl builder
-         */
-        default AdvancedJcloudsEndpointConsumerBuilder exchangePattern(
-                String exchangePattern) {
-            doSetProperty("exchangePattern", exchangePattern);
-            return this;
-        }
-    }
-
-    /**
-     * Builder for endpoint producers for the JClouds component.
-     */
-    public interface JcloudsEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default AdvancedJcloudsEndpointProducerBuilder advanced() {
-            return (AdvancedJcloudsEndpointProducerBuilder) this;
-        }
-        /**
-         * The name of the blob.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: blobstore
-         * 
-         * @param blobName the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointProducerBuilder blobName(String blobName) {
-            doSetProperty("blobName", blobName);
-            return this;
-        }
-        /**
-         * The name of the blob container.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: blobstore
-         * 
-         * @param container the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointProducerBuilder container(String container) {
-            doSetProperty("container", container);
-            return this;
-        }
-        /**
-         * The group that will be assigned to the newly created node. Values
-         * depend on the actual cloud provider.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: compute
-         * 
-         * @param group the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointProducerBuilder group(String group) {
-            doSetProperty("group", group);
-            return this;
-        }
-        /**
-         * The hardware that will be used for creating a node. Values depend on
-         * the actual cloud provider.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: compute
-         * 
-         * @param hardwareId the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointProducerBuilder hardwareId(String hardwareId) {
-            doSetProperty("hardwareId", hardwareId);
-            return this;
-        }
-        /**
-         * The imageId that will be used for creating a node. Values depend on
-         * the actual cloud provider.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: compute
-         * 
-         * @param imageId the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointProducerBuilder imageId(String imageId) {
-            doSetProperty("imageId", imageId);
-            return this;
-        }
-        /**
-         * The location that will be used for creating a node. Values depend on
-         * the actual cloud provider.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: compute
-         * 
-         * @param locationId the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointProducerBuilder locationId(String locationId) {
-            doSetProperty("locationId", locationId);
-            return this;
-        }
-        /**
-         * The id of the node that will run the script or destroyed.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: compute
-         * 
-         * @param nodeId the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointProducerBuilder nodeId(String nodeId) {
-            doSetProperty("nodeId", nodeId);
-            return this;
-        }
-        /**
-         * To filter by node status to only select running nodes etc.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: compute
-         * 
-         * @param nodeState the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointProducerBuilder nodeState(String nodeState) {
-            doSetProperty("nodeState", nodeState);
-            return this;
-        }
-        /**
-         * Specifies the type of operation that will be performed to the
-         * blobstore.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: compute
-         * 
-         * @param operation the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointProducerBuilder operation(String operation) {
-            doSetProperty("operation", operation);
-            return this;
-        }
-        /**
-         * The user on the target node that will run the script.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: compute
-         * 
-         * @param user the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointProducerBuilder user(String user) {
-            doSetProperty("user", user);
-            return this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint producers for the JClouds component.
-     */
-    public interface AdvancedJcloudsEndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default JcloudsEndpointProducerBuilder basic() {
-            return (JcloudsEndpointProducerBuilder) this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer (advanced)
-         * 
-         * @param lazyStartProducer the value to set
-         * @return the dsl builder
-         */
-        default AdvancedJcloudsEndpointProducerBuilder lazyStartProducer(
-                boolean lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: producer (advanced)
-         * 
-         * @param lazyStartProducer the value to set
-         * @return the dsl builder
-         */
-        default AdvancedJcloudsEndpointProducerBuilder lazyStartProducer(
-                String lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-    }
-
-    /**
-     * Builder for endpoint for the JClouds component.
-     */
-    public interface JcloudsEndpointBuilder
-            extends
-                JcloudsEndpointConsumerBuilder,
-                JcloudsEndpointProducerBuilder {
-        default AdvancedJcloudsEndpointBuilder advanced() {
-            return (AdvancedJcloudsEndpointBuilder) this;
-        }
-        /**
-         * The name of the blob container.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: blobstore
-         * 
-         * @param container the value to set
-         * @return the dsl builder
-         */
-        default JcloudsEndpointBuilder container(String container) {
-            doSetProperty("container", container);
-            return this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint for the JClouds component.
-     */
-    public interface AdvancedJcloudsEndpointBuilder
-            extends
-                AdvancedJcloudsEndpointConsumerBuilder,
-                AdvancedJcloudsEndpointProducerBuilder {
-        default JcloudsEndpointBuilder basic() {
-            return (JcloudsEndpointBuilder) this;
-        }
-    }
-
-    public interface JcloudsBuilders {
-        /**
-         * JClouds (camel-jclouds)
-         * Interact with jclouds compute and blobstore service.
-         * 
-         * Category: api,cloud,compute
-         * Since: 2.9
-         * Maven coordinates: org.apache.camel:camel-jclouds
-         * 
-         * @return the dsl builder for the headers' name.
-         */
-        default JcloudsHeaderNameBuilder jclouds() {
-            return JcloudsHeaderNameBuilder.INSTANCE;
-        }
-        /**
-         * JClouds (camel-jclouds)
-         * Interact with jclouds compute and blobstore service.
-         * 
-         * Category: api,cloud,compute
-         * Since: 2.9
-         * Maven coordinates: org.apache.camel:camel-jclouds
-         * 
-         * Syntax: <code>jclouds:command:providerId</code>
-         * 
-         * Path parameter: command (required)
-         * What command to execute such as blobstore or compute.
-         * There are 2 enums and the value can be one of: blobstore, compute
-         * 
-         * Path parameter: providerId (required)
-         * The name of the cloud provider that provides the target service (e.g.
-         * aws-s3 or aws_ec2).
-         * 
-         * @param path command:providerId
-         * @return the dsl builder
-         */
-        default JcloudsEndpointBuilder jclouds(String path) {
-            return JcloudsEndpointBuilderFactory.endpointBuilder("jclouds", path);
-        }
-        /**
-         * JClouds (camel-jclouds)
-         * Interact with jclouds compute and blobstore service.
-         * 
-         * Category: api,cloud,compute
-         * Since: 2.9
-         * Maven coordinates: org.apache.camel:camel-jclouds
-         * 
-         * Syntax: <code>jclouds:command:providerId</code>
-         * 
-         * Path parameter: command (required)
-         * What command to execute such as blobstore or compute.
-         * There are 2 enums and the value can be one of: blobstore, compute
-         * 
-         * Path parameter: providerId (required)
-         * The name of the cloud provider that provides the target service (e.g.
-         * aws-s3 or aws_ec2).
-         * 
-         * @param componentName to use a custom component name for the endpoint
-         * instead of the default name
-         * @param path command:providerId
-         * @return the dsl builder
-         */
-        default JcloudsEndpointBuilder jclouds(String componentName, String path) {
-            return JcloudsEndpointBuilderFactory.endpointBuilder(componentName, path);
-        }
-    }
-
-    /**
-     * The builder of headers' name for the JClouds component.
-     */
-    public static class JcloudsHeaderNameBuilder {
-        /**
-         * The internal instance of the builder used to access to all the
-         * methods representing the name of headers.
-         */
-        private static final JcloudsHeaderNameBuilder INSTANCE = new JcloudsHeaderNameBuilder();
-
-        /**
-         * The name of the blob.
-         * 
-         * The option is a: {@code String} type.
-         * 
-         * Group: producer blobstore
-         * 
-         * @return the name of the header {@code JcloudsBlobName}.
-         */
-        public String jcloudsBlobName() {
-            return "JcloudsBlobName";
-        }
-
-        /**
-         * The name of the blob container.
-         * 
-         * The option is a: {@code String} type.
-         * 
-         * Group: producer blobstore
-         * 
-         * @return the name of the header {@code JcloudsContainerName}.
-         */
-        public String jcloudsContainerName() {
-            return "JcloudsContainerName";
-        }
-
-        /**
-         * The blob name list.
-         * 
-         * The option is a: {@code List} type.
-         * 
-         * Group: producer blobstore
-         * 
-         * @return the name of the header {@code JcloudsBlobNameList}.
-         */
-        public String jcloudsBlobNameList() {
-            return "JcloudsBlobNameList";
-        }
-
-        /**
-         * The node state.
-         * 
-         * The option is a: {@code Object} type.
-         * 
-         * Group: producer compute
-         * 
-         * @return the name of the header {@code JcloudsNodeState}.
-         */
-        public String jcloudsNodeState() {
-            return "JcloudsNodeState";
-        }
-
-        /**
-         * The operation to be performed on the blob. The valid options are: PUT
-         * GET.
-         * 
-         * The option is a: {@code String} type.
-         * 
-         * Group: producer
-         * 
-         * @return the name of the header {@code JcloudsOperation}.
-         */
-        public String jcloudsOperation() {
-            return "JcloudsOperation";
-        }
-
-        /**
-         * The imageId that will be used for creating a node. Values depend on
-         * the actual cloud provider.
-         * 
-         * The option is a: {@code String} type.
-         * 
-         * Group: producer compute
-         * 
-         * @return the name of the header {@code JcloudsImageId}.
-         */
-        public String jcloudsImageId() {
-            return "JcloudsImageId";
-        }
-
-        /**
-         * The location that will be used for creating a node. Values depend on
-         * the actual cloud provider.
-         * 
-         * The option is a: {@code String} type.
-         * 
-         * Group: producer
-         * 
-         * @return the name of the header {@code JcloudsLocationId}.
-         */
-        public String jcloudsLocationId() {
-            return "JcloudsLocationId";
-        }
-
-        /**
-         * The hardware that will be used for creating a node. Values depend on
-         * the actual cloud provider.
-         * 
-         * The option is a: {@code String} type.
-         * 
-         * Group: producer compute
-         * 
-         * @return the name of the header {@code JcloudsHardwareId}.
-         */
-        public String jcloudsHardwareId() {
-            return "JcloudsHardwareId";
-        }
-
-        /**
-         * The group that will be assigned to the newly created node. Values
-         * depend on the actual cloud provider.
-         * 
-         * The option is a: {@code String} type.
-         * 
-         * Group: producer compute
-         * 
-         * @return the name of the header {@code JcloudsGroup}.
-         */
-        public String jcloudsGroup() {
-            return "JcloudsGroup";
-        }
-
-        /**
-         * The id of the node that will run the script or destroyed.
-         * 
-         * The option is a: {@code String} type.
-         * 
-         * Group: producer compute
-         * 
-         * @return the name of the header {@code JcloudsNodeId}.
-         */
-        public String jcloudsNodeId() {
-            return "JcloudsNodeId";
-        }
-
-        /**
-         * The user on the target node that will run the script.
-         * 
-         * The option is a: {@code String} type.
-         * 
-         * Group: producer compute
-         * 
-         * @return the name of the header {@code JcloudsUser}.
-         */
-        public String jcloudsUser() {
-            return "JcloudsUser";
-        }
-    }
-    static JcloudsEndpointBuilder endpointBuilder(
-            String componentName,
-            String path) {
-        class JcloudsEndpointBuilderImpl extends AbstractEndpointBuilder implements JcloudsEndpointBuilder, AdvancedJcloudsEndpointBuilder {
-            public JcloudsEndpointBuilderImpl(String path) {
-                super(componentName, path);
-            }
-        }
-        return new JcloudsEndpointBuilderImpl(path);
-    }
-}
\ No newline at end of file
diff --git a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
index daf9d6bd67d..867f3d2a6ea 100644
--- a/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
+++ b/dsl/camel-kamelet-main/src/generated/resources/camel-component-known-dependencies.properties
@@ -173,7 +173,6 @@ org.apache.camel.component.irc.IrcComponent=camel:irc
 org.apache.camel.component.ironmq.IronMQComponent=camel:ironmq
 org.apache.camel.component.jbpm.JBPMComponent=camel:jbpm
 org.apache.camel.component.jcache.JCacheComponent=camel:jcache
-org.apache.camel.component.jclouds.JcloudsComponent=camel:jclouds
 org.apache.camel.component.jcr.JcrComponent=camel:jcr
 org.apache.camel.component.jdbc.JdbcComponent=camel:jdbc
 org.apache.camel.component.jetty11.JettyHttpComponent11=camel:jetty
diff --git a/parent/pom.xml b/parent/pom.xml
index 9a6ed7161cb..cc8a3a50996 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -285,9 +285,6 @@
         <jboss-transaction-spi.version>7.5.1.Final</jboss-transaction-spi.version>
         <jboss-xnio-version>3.3.8.Final</jboss-xnio-version>
         <jcache-bundle-version>1.1.1_1</jcache-bundle-version>
-        <jclouds-version>2.5.0</jclouds-version>
-        <!-- jclouds must use this guava version -->
-        <jclouds-google-guava-version>27.1-jre</jclouds-google-guava-version>
         <jcommander-version>1.72</jcommander-version>
         <jcr-version>2.0</jcr-version>
         <jedis-client-version>3.7.1</jedis-client-version>
@@ -1551,11 +1548,6 @@
                 <artifactId>camel-jcache</artifactId>
                 <version>${project.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-jclouds</artifactId>
-                <version>${project.version}</version>
-            </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
                 <artifactId>camel-jcr</artifactId>