You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/02/25 09:40:18 UTC

[camel] 01/06: CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3

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

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

commit 1d0580a2039417e73cebe21a68c33bf5e1906740
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Feb 25 07:58:06 2021 +0100

    CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
---
 components/camel-aws-s3/pom.xml                    |  82 ---
 .../component/aws/s3/S3ComponentConfigurer.java    | 272 ----------
 .../component/aws/s3/S3EndpointConfigurer.java     | 376 -------------
 .../component/aws/s3/S3EndpointUriFactory.java     | 122 -----
 .../services/org/apache/camel/component.properties |   7 -
 .../services/org/apache/camel/component/aws-s3     |   2 -
 .../org/apache/camel/configurer/aws-s3-component   |   2 -
 .../org/apache/camel/configurer/aws-s3-endpoint    |   2 -
 .../org/apache/camel/urifactory/aws-s3-endpoint    |   2 -
 .../org/apache/camel/component/aws/s3/aws-s3.json  | 128 -----
 .../src/main/docs/aws-s3-component.adoc            | 553 --------------------
 .../apache/camel/component/aws/s3/S3Component.java |  87 ----
 .../aws/s3/S3ComponentVerifierExtension.java       |  91 ----
 .../camel/component/aws/s3/S3Configuration.java    | 546 -------------------
 .../apache/camel/component/aws/s3/S3Constants.java |  50 --
 .../apache/camel/component/aws/s3/S3Consumer.java  | 268 ----------
 .../apache/camel/component/aws/s3/S3Endpoint.java  | 248 ---------
 .../camel/component/aws/s3/S3Operations.java       |  29 --
 .../apache/camel/component/aws/s3/S3Producer.java  | 580 ---------------------
 .../camel/component/aws/s3/client/S3Client.java    |  32 --
 .../component/aws/s3/client/S3ClientFactory.java   |  46 --
 .../s3/client/impl/S3ClientIAMOptimizedImpl.java   | 110 ----
 .../aws/s3/client/impl/S3ClientStandardImpl.java   | 140 -----
 .../component/aws/s3/AWSS3ClientFactoryTest.java   |  52 --
 .../camel/component/aws/s3/AmazonS3ClientMock.java | 521 ------------------
 .../aws/s3/AmazonS3EncryptionClientMock.java       | 502 ------------------
 .../s3/S3BatchConsumerMaxMessagesPerPollTest.java  | 101 ----
 .../component/aws/s3/S3BatchConsumerTest.java      |  72 ---
 .../aws/s3/S3ComponentClientRegistryTest.java      |  74 ---
 .../aws/s3/S3ComponentConfigurationTest.java       | 280 ----------
 .../aws/s3/S3ComponentContentLengthFileTest.java   | 183 -------
 .../s3/S3ComponentCopyObjectEncryptionTest.java    |  86 ---
 .../aws/s3/S3ComponentCopyObjectSpringTest.java    |  74 ---
 .../aws/s3/S3ComponentCopyObjectTest.java          |  86 ---
 .../aws/s3/S3ComponentDeleteObjectSpringTest.java  |  63 ---
 .../aws/s3/S3ComponentDeleteObjectTest.java        |  75 ---
 .../aws/s3/S3ComponentDownloadLinkSpringTest.java  |  63 ---
 .../aws/s3/S3ComponentDownloadLinkTest.java        |  74 ---
 .../aws/s3/S3ComponentExistingBucketTest.java      | 184 -------
 .../aws/s3/S3ComponentFileDeleteTest.java          |  59 ---
 .../component/aws/s3/S3ComponentFileTest.java      | 158 ------
 .../aws/s3/S3ComponentGetObjectRangeTest.java      |  70 ---
 .../component/aws/s3/S3ComponentGetObjectTest.java |  68 ---
 .../aws/s3/S3ComponentKeyNameFileTest.java         | 156 ------
 .../aws/s3/S3ComponentListBucketsSpringTest.java   |  63 ---
 .../aws/s3/S3ComponentListBucketsTest.java         |  75 ---
 .../aws/s3/S3ComponentListObjectTest.java          |  73 ---
 .../aws/s3/S3ComponentListObjectsSpringTest.java   |  61 ---
 .../aws/s3/S3ComponentNonExistingBucketTest.java   | 178 -------
 .../component/aws/s3/S3ComponentSpringTest.java    | 109 ----
 .../component/aws/s3/S3ComponentStringTest.java    |  96 ----
 .../aws/s3/S3ComponentVerifierExtensionTest.java   |  74 ---
 .../camel/component/aws/s3/S3ConsumerCronTest.java |  55 --
 .../component/aws/s3/S3ConsumerDelimiterTest.java  | 119 -----
 .../aws/s3/S3ConsumerIdleMessageTest.java          |  60 ---
 .../component/aws/s3/S3ConsumerPrefixTest.java     | 119 -----
 .../camel/component/aws/s3/S3IncludeBodyTest.java  | 119 -----
 .../impl/IAMOptimizedAWSS3ClientImplTest.java      |  97 ----
 .../client/impl/StandardAWSS3ClientImplTest.java   |  94 ----
 .../s3/integration/S3ComponentIntegrationTest.java | 135 -----
 .../S3ObjectRangeOperationIntegrationTest.java     | 107 ----
 .../src/test/resources/log4j2.properties           |  28 -
 .../aws/s3/S3ComponentSpringTest-context.xml       |  63 ---
 components/pom.xml                                 |   1 -
 64 files changed, 8502 deletions(-)

diff --git a/components/camel-aws-s3/pom.xml b/components/camel-aws-s3/pom.xml
deleted file mode 100644
index 5153949..0000000
--- a/components/camel-aws-s3/pom.xml
+++ /dev/null
@@ -1,82 +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>3.9.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>camel-aws-s3</artifactId>
-    <packaging>jar</packaging>
-
-    <name>Camel :: AWS S3 (deprecated)</name>
-    <description>A Camel Amazon S3 Web Service Component</description>
-
-    <properties>
-        <deprecatedSince>3.8.0</deprecatedSince>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-support</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.amazonaws</groupId>
-            <artifactId>aws-java-sdk-s3</artifactId>
-            <version>${aws-java-sdk-version}</version>
-        </dependency>
-
-        <!-- for testing -->
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test-spring-junit5</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core-catalog</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-junit-jupiter</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.awaitility</groupId>
-            <artifactId>awaitility</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-</project>
diff --git a/components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3ComponentConfigurer.java b/components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3ComponentConfigurer.java
deleted file mode 100644
index 3601b42..0000000
--- a/components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3ComponentConfigurer.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.aws.s3;
-
-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 S3ComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    private org.apache.camel.component.aws.s3.S3Configuration getOrCreateConfiguration(S3Component target) {
-        if (target.getConfiguration() == null) {
-            target.setConfiguration(new org.apache.camel.component.aws.s3.S3Configuration());
-        }
-        return target.getConfiguration();
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        S3Component target = (S3Component) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "acceleratemodeenabled":
-        case "accelerateModeEnabled": getOrCreateConfiguration(target).setAccelerateModeEnabled(property(camelContext, boolean.class, value)); return true;
-        case "accesskey":
-        case "accessKey": getOrCreateConfiguration(target).setAccessKey(property(camelContext, java.lang.String.class, value)); return true;
-        case "amazons3client":
-        case "amazonS3Client": getOrCreateConfiguration(target).setAmazonS3Client(property(camelContext, com.amazonaws.services.s3.AmazonS3.class, value)); return true;
-        case "autocreatebucket":
-        case "autoCreateBucket": getOrCreateConfiguration(target).setAutoCreateBucket(property(camelContext, boolean.class, value)); return true;
-        case "autodiscoverclient":
-        case "autoDiscoverClient": getOrCreateConfiguration(target).setAutoDiscoverClient(property(camelContext, boolean.class, value)); return true;
-        case "autoclosebody":
-        case "autocloseBody": getOrCreateConfiguration(target).setAutocloseBody(property(camelContext, boolean.class, value)); return true;
-        case "autowiredenabled":
-        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
-        case "awskmskeyid":
-        case "awsKMSKeyId": getOrCreateConfiguration(target).setAwsKMSKeyId(property(camelContext, java.lang.String.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "chunkedencodingdisabled":
-        case "chunkedEncodingDisabled": getOrCreateConfiguration(target).setChunkedEncodingDisabled(property(camelContext, boolean.class, value)); return true;
-        case "configuration": target.setConfiguration(property(camelContext, org.apache.camel.component.aws.s3.S3Configuration.class, value)); return true;
-        case "deleteafterread":
-        case "deleteAfterRead": getOrCreateConfiguration(target).setDeleteAfterRead(property(camelContext, boolean.class, value)); return true;
-        case "deleteafterwrite":
-        case "deleteAfterWrite": getOrCreateConfiguration(target).setDeleteAfterWrite(property(camelContext, boolean.class, value)); return true;
-        case "delimiter": getOrCreateConfiguration(target).setDelimiter(property(camelContext, java.lang.String.class, value)); return true;
-        case "donefilename":
-        case "doneFileName": getOrCreateConfiguration(target).setDoneFileName(property(camelContext, java.lang.String.class, value)); return true;
-        case "dualstackenabled":
-        case "dualstackEnabled": getOrCreateConfiguration(target).setDualstackEnabled(property(camelContext, boolean.class, value)); return true;
-        case "encryptionmaterials":
-        case "encryptionMaterials": getOrCreateConfiguration(target).setEncryptionMaterials(property(camelContext, com.amazonaws.services.s3.model.EncryptionMaterials.class, value)); return true;
-        case "endpointconfiguration":
-        case "endpointConfiguration": getOrCreateConfiguration(target).setEndpointConfiguration(property(camelContext, com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration.class, value)); return true;
-        case "filename":
-        case "fileName": getOrCreateConfiguration(target).setFileName(property(camelContext, java.lang.String.class, value)); return true;
-        case "forceglobalbucketaccessenabled":
-        case "forceGlobalBucketAccessEnabled": getOrCreateConfiguration(target).setForceGlobalBucketAccessEnabled(property(camelContext, boolean.class, value)); return true;
-        case "includebody":
-        case "includeBody": getOrCreateConfiguration(target).setIncludeBody(property(camelContext, boolean.class, value)); return true;
-        case "keyname":
-        case "keyName": getOrCreateConfiguration(target).setKeyName(property(camelContext, java.lang.String.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "multipartupload":
-        case "multiPartUpload": getOrCreateConfiguration(target).setMultiPartUpload(property(camelContext, boolean.class, value)); return true;
-        case "operation": getOrCreateConfiguration(target).setOperation(property(camelContext, org.apache.camel.component.aws.s3.S3Operations.class, value)); return true;
-        case "partsize":
-        case "partSize": getOrCreateConfiguration(target).setPartSize(property(camelContext, long.class, value)); return true;
-        case "pathstyleaccess":
-        case "pathStyleAccess": getOrCreateConfiguration(target).setPathStyleAccess(property(camelContext, boolean.class, value)); return true;
-        case "payloadsigningenabled":
-        case "payloadSigningEnabled": getOrCreateConfiguration(target).setPayloadSigningEnabled(property(camelContext, boolean.class, value)); return true;
-        case "policy": getOrCreateConfiguration(target).setPolicy(property(camelContext, java.lang.String.class, value)); return true;
-        case "prefix": getOrCreateConfiguration(target).setPrefix(property(camelContext, java.lang.String.class, value)); return true;
-        case "proxyhost":
-        case "proxyHost": getOrCreateConfiguration(target).setProxyHost(property(camelContext, java.lang.String.class, value)); return true;
-        case "proxyport":
-        case "proxyPort": getOrCreateConfiguration(target).setProxyPort(property(camelContext, java.lang.Integer.class, value)); return true;
-        case "proxyprotocol":
-        case "proxyProtocol": getOrCreateConfiguration(target).setProxyProtocol(property(camelContext, com.amazonaws.Protocol.class, value)); return true;
-        case "region": getOrCreateConfiguration(target).setRegion(property(camelContext, java.lang.String.class, value)); return true;
-        case "secretkey":
-        case "secretKey": getOrCreateConfiguration(target).setSecretKey(property(camelContext, java.lang.String.class, value)); return true;
-        case "serversideencryption":
-        case "serverSideEncryption": getOrCreateConfiguration(target).setServerSideEncryption(property(camelContext, java.lang.String.class, value)); return true;
-        case "storageclass":
-        case "storageClass": getOrCreateConfiguration(target).setStorageClass(property(camelContext, java.lang.String.class, value)); return true;
-        case "useawskms":
-        case "useAwsKMS": getOrCreateConfiguration(target).setUseAwsKMS(property(camelContext, boolean.class, value)); return true;
-        case "useencryption":
-        case "useEncryption": getOrCreateConfiguration(target).setUseEncryption(property(camelContext, boolean.class, value)); return true;
-        case "useiamcredentials":
-        case "useIAMCredentials": getOrCreateConfiguration(target).setUseIAMCredentials(property(camelContext, boolean.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "acceleratemodeenabled":
-        case "accelerateModeEnabled": return boolean.class;
-        case "accesskey":
-        case "accessKey": return java.lang.String.class;
-        case "amazons3client":
-        case "amazonS3Client": return com.amazonaws.services.s3.AmazonS3.class;
-        case "autocreatebucket":
-        case "autoCreateBucket": return boolean.class;
-        case "autodiscoverclient":
-        case "autoDiscoverClient": return boolean.class;
-        case "autoclosebody":
-        case "autocloseBody": return boolean.class;
-        case "autowiredenabled":
-        case "autowiredEnabled": return boolean.class;
-        case "awskmskeyid":
-        case "awsKMSKeyId": return java.lang.String.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "chunkedencodingdisabled":
-        case "chunkedEncodingDisabled": return boolean.class;
-        case "configuration": return org.apache.camel.component.aws.s3.S3Configuration.class;
-        case "deleteafterread":
-        case "deleteAfterRead": return boolean.class;
-        case "deleteafterwrite":
-        case "deleteAfterWrite": return boolean.class;
-        case "delimiter": return java.lang.String.class;
-        case "donefilename":
-        case "doneFileName": return java.lang.String.class;
-        case "dualstackenabled":
-        case "dualstackEnabled": return boolean.class;
-        case "encryptionmaterials":
-        case "encryptionMaterials": return com.amazonaws.services.s3.model.EncryptionMaterials.class;
-        case "endpointconfiguration":
-        case "endpointConfiguration": return com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration.class;
-        case "filename":
-        case "fileName": return java.lang.String.class;
-        case "forceglobalbucketaccessenabled":
-        case "forceGlobalBucketAccessEnabled": return boolean.class;
-        case "includebody":
-        case "includeBody": return boolean.class;
-        case "keyname":
-        case "keyName": return java.lang.String.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "multipartupload":
-        case "multiPartUpload": return boolean.class;
-        case "operation": return org.apache.camel.component.aws.s3.S3Operations.class;
-        case "partsize":
-        case "partSize": return long.class;
-        case "pathstyleaccess":
-        case "pathStyleAccess": return boolean.class;
-        case "payloadsigningenabled":
-        case "payloadSigningEnabled": return boolean.class;
-        case "policy": return java.lang.String.class;
-        case "prefix": return java.lang.String.class;
-        case "proxyhost":
-        case "proxyHost": return java.lang.String.class;
-        case "proxyport":
-        case "proxyPort": return java.lang.Integer.class;
-        case "proxyprotocol":
-        case "proxyProtocol": return com.amazonaws.Protocol.class;
-        case "region": return java.lang.String.class;
-        case "secretkey":
-        case "secretKey": return java.lang.String.class;
-        case "serversideencryption":
-        case "serverSideEncryption": return java.lang.String.class;
-        case "storageclass":
-        case "storageClass": return java.lang.String.class;
-        case "useawskms":
-        case "useAwsKMS": return boolean.class;
-        case "useencryption":
-        case "useEncryption": return boolean.class;
-        case "useiamcredentials":
-        case "useIAMCredentials": return boolean.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        S3Component target = (S3Component) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "acceleratemodeenabled":
-        case "accelerateModeEnabled": return getOrCreateConfiguration(target).isAccelerateModeEnabled();
-        case "accesskey":
-        case "accessKey": return getOrCreateConfiguration(target).getAccessKey();
-        case "amazons3client":
-        case "amazonS3Client": return getOrCreateConfiguration(target).getAmazonS3Client();
-        case "autocreatebucket":
-        case "autoCreateBucket": return getOrCreateConfiguration(target).isAutoCreateBucket();
-        case "autodiscoverclient":
-        case "autoDiscoverClient": return getOrCreateConfiguration(target).isAutoDiscoverClient();
-        case "autoclosebody":
-        case "autocloseBody": return getOrCreateConfiguration(target).isAutocloseBody();
-        case "autowiredenabled":
-        case "autowiredEnabled": return target.isAutowiredEnabled();
-        case "awskmskeyid":
-        case "awsKMSKeyId": return getOrCreateConfiguration(target).getAwsKMSKeyId();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "chunkedencodingdisabled":
-        case "chunkedEncodingDisabled": return getOrCreateConfiguration(target).isChunkedEncodingDisabled();
-        case "configuration": return target.getConfiguration();
-        case "deleteafterread":
-        case "deleteAfterRead": return getOrCreateConfiguration(target).isDeleteAfterRead();
-        case "deleteafterwrite":
-        case "deleteAfterWrite": return getOrCreateConfiguration(target).isDeleteAfterWrite();
-        case "delimiter": return getOrCreateConfiguration(target).getDelimiter();
-        case "donefilename":
-        case "doneFileName": return getOrCreateConfiguration(target).getDoneFileName();
-        case "dualstackenabled":
-        case "dualstackEnabled": return getOrCreateConfiguration(target).isDualstackEnabled();
-        case "encryptionmaterials":
-        case "encryptionMaterials": return getOrCreateConfiguration(target).getEncryptionMaterials();
-        case "endpointconfiguration":
-        case "endpointConfiguration": return getOrCreateConfiguration(target).getEndpointConfiguration();
-        case "filename":
-        case "fileName": return getOrCreateConfiguration(target).getFileName();
-        case "forceglobalbucketaccessenabled":
-        case "forceGlobalBucketAccessEnabled": return getOrCreateConfiguration(target).isForceGlobalBucketAccessEnabled();
-        case "includebody":
-        case "includeBody": return getOrCreateConfiguration(target).isIncludeBody();
-        case "keyname":
-        case "keyName": return getOrCreateConfiguration(target).getKeyName();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "multipartupload":
-        case "multiPartUpload": return getOrCreateConfiguration(target).isMultiPartUpload();
-        case "operation": return getOrCreateConfiguration(target).getOperation();
-        case "partsize":
-        case "partSize": return getOrCreateConfiguration(target).getPartSize();
-        case "pathstyleaccess":
-        case "pathStyleAccess": return getOrCreateConfiguration(target).isPathStyleAccess();
-        case "payloadsigningenabled":
-        case "payloadSigningEnabled": return getOrCreateConfiguration(target).isPayloadSigningEnabled();
-        case "policy": return getOrCreateConfiguration(target).getPolicy();
-        case "prefix": return getOrCreateConfiguration(target).getPrefix();
-        case "proxyhost":
-        case "proxyHost": return getOrCreateConfiguration(target).getProxyHost();
-        case "proxyport":
-        case "proxyPort": return getOrCreateConfiguration(target).getProxyPort();
-        case "proxyprotocol":
-        case "proxyProtocol": return getOrCreateConfiguration(target).getProxyProtocol();
-        case "region": return getOrCreateConfiguration(target).getRegion();
-        case "secretkey":
-        case "secretKey": return getOrCreateConfiguration(target).getSecretKey();
-        case "serversideencryption":
-        case "serverSideEncryption": return getOrCreateConfiguration(target).getServerSideEncryption();
-        case "storageclass":
-        case "storageClass": return getOrCreateConfiguration(target).getStorageClass();
-        case "useawskms":
-        case "useAwsKMS": return getOrCreateConfiguration(target).isUseAwsKMS();
-        case "useencryption":
-        case "useEncryption": return getOrCreateConfiguration(target).isUseEncryption();
-        case "useiamcredentials":
-        case "useIAMCredentials": return getOrCreateConfiguration(target).isUseIAMCredentials();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3EndpointConfigurer.java b/components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3EndpointConfigurer.java
deleted file mode 100644
index fb8d660..0000000
--- a/components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3EndpointConfigurer.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.aws.s3;
-
-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 S3EndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        S3Endpoint target = (S3Endpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "acceleratemodeenabled":
-        case "accelerateModeEnabled": target.getConfiguration().setAccelerateModeEnabled(property(camelContext, boolean.class, value)); return true;
-        case "accesskey":
-        case "accessKey": target.getConfiguration().setAccessKey(property(camelContext, java.lang.String.class, value)); return true;
-        case "amazons3client":
-        case "amazonS3Client": target.getConfiguration().setAmazonS3Client(property(camelContext, com.amazonaws.services.s3.AmazonS3.class, value)); return true;
-        case "autocreatebucket":
-        case "autoCreateBucket": target.getConfiguration().setAutoCreateBucket(property(camelContext, boolean.class, value)); return true;
-        case "autodiscoverclient":
-        case "autoDiscoverClient": target.getConfiguration().setAutoDiscoverClient(property(camelContext, boolean.class, value)); return true;
-        case "autoclosebody":
-        case "autocloseBody": target.getConfiguration().setAutocloseBody(property(camelContext, boolean.class, value)); return true;
-        case "awskmskeyid":
-        case "awsKMSKeyId": target.getConfiguration().setAwsKMSKeyId(property(camelContext, java.lang.String.class, value)); return true;
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": target.setBackoffErrorThreshold(property(camelContext, int.class, value)); return true;
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": target.setBackoffIdleThreshold(property(camelContext, int.class, value)); return true;
-        case "backoffmultiplier":
-        case "backoffMultiplier": target.setBackoffMultiplier(property(camelContext, int.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "chunkedencodingdisabled":
-        case "chunkedEncodingDisabled": target.getConfiguration().setChunkedEncodingDisabled(property(camelContext, boolean.class, value)); return true;
-        case "delay": target.setDelay(property(camelContext, long.class, value)); return true;
-        case "deleteafterread":
-        case "deleteAfterRead": target.getConfiguration().setDeleteAfterRead(property(camelContext, boolean.class, value)); return true;
-        case "deleteafterwrite":
-        case "deleteAfterWrite": target.getConfiguration().setDeleteAfterWrite(property(camelContext, boolean.class, value)); return true;
-        case "delimiter": target.getConfiguration().setDelimiter(property(camelContext, java.lang.String.class, value)); return true;
-        case "donefilename":
-        case "doneFileName": target.getConfiguration().setDoneFileName(property(camelContext, java.lang.String.class, value)); return true;
-        case "dualstackenabled":
-        case "dualstackEnabled": target.getConfiguration().setDualstackEnabled(property(camelContext, boolean.class, value)); return true;
-        case "encryptionmaterials":
-        case "encryptionMaterials": target.getConfiguration().setEncryptionMaterials(property(camelContext, com.amazonaws.services.s3.model.EncryptionMaterials.class, value)); return true;
-        case "endpointconfiguration":
-        case "endpointConfiguration": target.getConfiguration().setEndpointConfiguration(property(camelContext, com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration.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 "filename":
-        case "fileName": target.getConfiguration().setFileName(property(camelContext, java.lang.String.class, value)); return true;
-        case "forceglobalbucketaccessenabled":
-        case "forceGlobalBucketAccessEnabled": target.getConfiguration().setForceGlobalBucketAccessEnabled(property(camelContext, boolean.class, value)); return true;
-        case "greedy": target.setGreedy(property(camelContext, boolean.class, value)); return true;
-        case "includebody":
-        case "includeBody": target.getConfiguration().setIncludeBody(property(camelContext, boolean.class, value)); return true;
-        case "initialdelay":
-        case "initialDelay": target.setInitialDelay(property(camelContext, long.class, value)); return true;
-        case "keyname":
-        case "keyName": target.getConfiguration().setKeyName(property(camelContext, java.lang.String.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "maxconnections":
-        case "maxConnections": target.setMaxConnections(property(camelContext, int.class, value)); return true;
-        case "maxmessagesperpoll":
-        case "maxMessagesPerPoll": target.setMaxMessagesPerPoll(property(camelContext, int.class, value)); return true;
-        case "multipartupload":
-        case "multiPartUpload": target.getConfiguration().setMultiPartUpload(property(camelContext, boolean.class, value)); return true;
-        case "operation": target.getConfiguration().setOperation(property(camelContext, org.apache.camel.component.aws.s3.S3Operations.class, value)); return true;
-        case "partsize":
-        case "partSize": target.getConfiguration().setPartSize(property(camelContext, long.class, value)); return true;
-        case "pathstyleaccess":
-        case "pathStyleAccess": target.getConfiguration().setPathStyleAccess(property(camelContext, boolean.class, value)); return true;
-        case "payloadsigningenabled":
-        case "payloadSigningEnabled": target.getConfiguration().setPayloadSigningEnabled(property(camelContext, boolean.class, value)); return true;
-        case "policy": target.getConfiguration().setPolicy(property(camelContext, java.lang.String.class, value)); return true;
-        case "pollstrategy":
-        case "pollStrategy": target.setPollStrategy(property(camelContext, org.apache.camel.spi.PollingConsumerPollStrategy.class, value)); return true;
-        case "prefix": target.getConfiguration().setPrefix(property(camelContext, java.lang.String.class, value)); return true;
-        case "proxyhost":
-        case "proxyHost": target.getConfiguration().setProxyHost(property(camelContext, java.lang.String.class, value)); return true;
-        case "proxyport":
-        case "proxyPort": target.getConfiguration().setProxyPort(property(camelContext, java.lang.Integer.class, value)); return true;
-        case "proxyprotocol":
-        case "proxyProtocol": target.getConfiguration().setProxyProtocol(property(camelContext, com.amazonaws.Protocol.class, value)); return true;
-        case "region": target.getConfiguration().setRegion(property(camelContext, java.lang.String.class, value)); return true;
-        case "repeatcount":
-        case "repeatCount": target.setRepeatCount(property(camelContext, long.class, value)); return true;
-        case "runlogginglevel":
-        case "runLoggingLevel": target.setRunLoggingLevel(property(camelContext, org.apache.camel.LoggingLevel.class, value)); return true;
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": target.setScheduledExecutorService(property(camelContext, java.util.concurrent.ScheduledExecutorService.class, value)); return true;
-        case "scheduler": target.setScheduler(property(camelContext, java.lang.Object.class, value)); return true;
-        case "schedulerproperties":
-        case "schedulerProperties": target.setSchedulerProperties(property(camelContext, java.util.Map.class, value)); return true;
-        case "secretkey":
-        case "secretKey": target.getConfiguration().setSecretKey(property(camelContext, java.lang.String.class, value)); return true;
-        case "sendemptymessagewhenidle":
-        case "sendEmptyMessageWhenIdle": target.setSendEmptyMessageWhenIdle(property(camelContext, boolean.class, value)); return true;
-        case "serversideencryption":
-        case "serverSideEncryption": target.getConfiguration().setServerSideEncryption(property(camelContext, java.lang.String.class, value)); return true;
-        case "startscheduler":
-        case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true;
-        case "storageclass":
-        case "storageClass": target.getConfiguration().setStorageClass(property(camelContext, java.lang.String.class, value)); return true;
-        case "timeunit":
-        case "timeUnit": target.setTimeUnit(property(camelContext, java.util.concurrent.TimeUnit.class, value)); return true;
-        case "useawskms":
-        case "useAwsKMS": target.getConfiguration().setUseAwsKMS(property(camelContext, boolean.class, value)); return true;
-        case "useencryption":
-        case "useEncryption": target.getConfiguration().setUseEncryption(property(camelContext, boolean.class, value)); return true;
-        case "usefixeddelay":
-        case "useFixedDelay": target.setUseFixedDelay(property(camelContext, boolean.class, value)); return true;
-        case "useiamcredentials":
-        case "useIAMCredentials": target.getConfiguration().setUseIAMCredentials(property(camelContext, boolean.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "acceleratemodeenabled":
-        case "accelerateModeEnabled": return boolean.class;
-        case "accesskey":
-        case "accessKey": return java.lang.String.class;
-        case "amazons3client":
-        case "amazonS3Client": return com.amazonaws.services.s3.AmazonS3.class;
-        case "autocreatebucket":
-        case "autoCreateBucket": return boolean.class;
-        case "autodiscoverclient":
-        case "autoDiscoverClient": return boolean.class;
-        case "autoclosebody":
-        case "autocloseBody": return boolean.class;
-        case "awskmskeyid":
-        case "awsKMSKeyId": return java.lang.String.class;
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": return int.class;
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": return int.class;
-        case "backoffmultiplier":
-        case "backoffMultiplier": return int.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "chunkedencodingdisabled":
-        case "chunkedEncodingDisabled": return boolean.class;
-        case "delay": return long.class;
-        case "deleteafterread":
-        case "deleteAfterRead": return boolean.class;
-        case "deleteafterwrite":
-        case "deleteAfterWrite": return boolean.class;
-        case "delimiter": return java.lang.String.class;
-        case "donefilename":
-        case "doneFileName": return java.lang.String.class;
-        case "dualstackenabled":
-        case "dualstackEnabled": return boolean.class;
-        case "encryptionmaterials":
-        case "encryptionMaterials": return com.amazonaws.services.s3.model.EncryptionMaterials.class;
-        case "endpointconfiguration":
-        case "endpointConfiguration": return com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration.class;
-        case "exceptionhandler":
-        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
-        case "exchangepattern":
-        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
-        case "filename":
-        case "fileName": return java.lang.String.class;
-        case "forceglobalbucketaccessenabled":
-        case "forceGlobalBucketAccessEnabled": return boolean.class;
-        case "greedy": return boolean.class;
-        case "includebody":
-        case "includeBody": return boolean.class;
-        case "initialdelay":
-        case "initialDelay": return long.class;
-        case "keyname":
-        case "keyName": return java.lang.String.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "maxconnections":
-        case "maxConnections": return int.class;
-        case "maxmessagesperpoll":
-        case "maxMessagesPerPoll": return int.class;
-        case "multipartupload":
-        case "multiPartUpload": return boolean.class;
-        case "operation": return org.apache.camel.component.aws.s3.S3Operations.class;
-        case "partsize":
-        case "partSize": return long.class;
-        case "pathstyleaccess":
-        case "pathStyleAccess": return boolean.class;
-        case "payloadsigningenabled":
-        case "payloadSigningEnabled": return boolean.class;
-        case "policy": return java.lang.String.class;
-        case "pollstrategy":
-        case "pollStrategy": return org.apache.camel.spi.PollingConsumerPollStrategy.class;
-        case "prefix": return java.lang.String.class;
-        case "proxyhost":
-        case "proxyHost": return java.lang.String.class;
-        case "proxyport":
-        case "proxyPort": return java.lang.Integer.class;
-        case "proxyprotocol":
-        case "proxyProtocol": return com.amazonaws.Protocol.class;
-        case "region": return java.lang.String.class;
-        case "repeatcount":
-        case "repeatCount": return long.class;
-        case "runlogginglevel":
-        case "runLoggingLevel": return org.apache.camel.LoggingLevel.class;
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": return java.util.concurrent.ScheduledExecutorService.class;
-        case "scheduler": return java.lang.Object.class;
-        case "schedulerproperties":
-        case "schedulerProperties": return java.util.Map.class;
-        case "secretkey":
-        case "secretKey": return java.lang.String.class;
-        case "sendemptymessagewhenidle":
-        case "sendEmptyMessageWhenIdle": return boolean.class;
-        case "serversideencryption":
-        case "serverSideEncryption": return java.lang.String.class;
-        case "startscheduler":
-        case "startScheduler": return boolean.class;
-        case "storageclass":
-        case "storageClass": return java.lang.String.class;
-        case "timeunit":
-        case "timeUnit": return java.util.concurrent.TimeUnit.class;
-        case "useawskms":
-        case "useAwsKMS": return boolean.class;
-        case "useencryption":
-        case "useEncryption": return boolean.class;
-        case "usefixeddelay":
-        case "useFixedDelay": return boolean.class;
-        case "useiamcredentials":
-        case "useIAMCredentials": return boolean.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        S3Endpoint target = (S3Endpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "acceleratemodeenabled":
-        case "accelerateModeEnabled": return target.getConfiguration().isAccelerateModeEnabled();
-        case "accesskey":
-        case "accessKey": return target.getConfiguration().getAccessKey();
-        case "amazons3client":
-        case "amazonS3Client": return target.getConfiguration().getAmazonS3Client();
-        case "autocreatebucket":
-        case "autoCreateBucket": return target.getConfiguration().isAutoCreateBucket();
-        case "autodiscoverclient":
-        case "autoDiscoverClient": return target.getConfiguration().isAutoDiscoverClient();
-        case "autoclosebody":
-        case "autocloseBody": return target.getConfiguration().isAutocloseBody();
-        case "awskmskeyid":
-        case "awsKMSKeyId": return target.getConfiguration().getAwsKMSKeyId();
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": return target.getBackoffErrorThreshold();
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": return target.getBackoffIdleThreshold();
-        case "backoffmultiplier":
-        case "backoffMultiplier": return target.getBackoffMultiplier();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "chunkedencodingdisabled":
-        case "chunkedEncodingDisabled": return target.getConfiguration().isChunkedEncodingDisabled();
-        case "delay": return target.getDelay();
-        case "deleteafterread":
-        case "deleteAfterRead": return target.getConfiguration().isDeleteAfterRead();
-        case "deleteafterwrite":
-        case "deleteAfterWrite": return target.getConfiguration().isDeleteAfterWrite();
-        case "delimiter": return target.getConfiguration().getDelimiter();
-        case "donefilename":
-        case "doneFileName": return target.getConfiguration().getDoneFileName();
-        case "dualstackenabled":
-        case "dualstackEnabled": return target.getConfiguration().isDualstackEnabled();
-        case "encryptionmaterials":
-        case "encryptionMaterials": return target.getConfiguration().getEncryptionMaterials();
-        case "endpointconfiguration":
-        case "endpointConfiguration": return target.getConfiguration().getEndpointConfiguration();
-        case "exceptionhandler":
-        case "exceptionHandler": return target.getExceptionHandler();
-        case "exchangepattern":
-        case "exchangePattern": return target.getExchangePattern();
-        case "filename":
-        case "fileName": return target.getConfiguration().getFileName();
-        case "forceglobalbucketaccessenabled":
-        case "forceGlobalBucketAccessEnabled": return target.getConfiguration().isForceGlobalBucketAccessEnabled();
-        case "greedy": return target.isGreedy();
-        case "includebody":
-        case "includeBody": return target.getConfiguration().isIncludeBody();
-        case "initialdelay":
-        case "initialDelay": return target.getInitialDelay();
-        case "keyname":
-        case "keyName": return target.getConfiguration().getKeyName();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "maxconnections":
-        case "maxConnections": return target.getMaxConnections();
-        case "maxmessagesperpoll":
-        case "maxMessagesPerPoll": return target.getMaxMessagesPerPoll();
-        case "multipartupload":
-        case "multiPartUpload": return target.getConfiguration().isMultiPartUpload();
-        case "operation": return target.getConfiguration().getOperation();
-        case "partsize":
-        case "partSize": return target.getConfiguration().getPartSize();
-        case "pathstyleaccess":
-        case "pathStyleAccess": return target.getConfiguration().isPathStyleAccess();
-        case "payloadsigningenabled":
-        case "payloadSigningEnabled": return target.getConfiguration().isPayloadSigningEnabled();
-        case "policy": return target.getConfiguration().getPolicy();
-        case "pollstrategy":
-        case "pollStrategy": return target.getPollStrategy();
-        case "prefix": return target.getConfiguration().getPrefix();
-        case "proxyhost":
-        case "proxyHost": return target.getConfiguration().getProxyHost();
-        case "proxyport":
-        case "proxyPort": return target.getConfiguration().getProxyPort();
-        case "proxyprotocol":
-        case "proxyProtocol": return target.getConfiguration().getProxyProtocol();
-        case "region": return target.getConfiguration().getRegion();
-        case "repeatcount":
-        case "repeatCount": return target.getRepeatCount();
-        case "runlogginglevel":
-        case "runLoggingLevel": return target.getRunLoggingLevel();
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": return target.getScheduledExecutorService();
-        case "scheduler": return target.getScheduler();
-        case "schedulerproperties":
-        case "schedulerProperties": return target.getSchedulerProperties();
-        case "secretkey":
-        case "secretKey": return target.getConfiguration().getSecretKey();
-        case "sendemptymessagewhenidle":
-        case "sendEmptyMessageWhenIdle": return target.isSendEmptyMessageWhenIdle();
-        case "serversideencryption":
-        case "serverSideEncryption": return target.getConfiguration().getServerSideEncryption();
-        case "startscheduler":
-        case "startScheduler": return target.isStartScheduler();
-        case "storageclass":
-        case "storageClass": return target.getConfiguration().getStorageClass();
-        case "timeunit":
-        case "timeUnit": return target.getTimeUnit();
-        case "useawskms":
-        case "useAwsKMS": return target.getConfiguration().isUseAwsKMS();
-        case "useencryption":
-        case "useEncryption": return target.getConfiguration().isUseEncryption();
-        case "usefixeddelay":
-        case "useFixedDelay": return target.isUseFixedDelay();
-        case "useiamcredentials":
-        case "useIAMCredentials": return target.getConfiguration().isUseIAMCredentials();
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "schedulerproperties":
-        case "schedulerProperties": return java.lang.Object.class;
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3EndpointUriFactory.java b/components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3EndpointUriFactory.java
deleted file mode 100644
index 6e735c7..0000000
--- a/components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3EndpointUriFactory.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.aws.s3;
-
-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 S3EndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
-
-    private static final String BASE = "://bucketNameOrArn";
-
-    private static final Set<String> PROPERTY_NAMES;
-    private static final Set<String> SECRET_PROPERTY_NAMES;
-    static {
-        Set<String> props = new HashSet<>(59);
-        props.add("useIAMCredentials");
-        props.add("fileName");
-        props.add("serverSideEncryption");
-        props.add("bucketNameOrArn");
-        props.add("prefix");
-        props.add("useAwsKMS");
-        props.add("initialDelay");
-        props.add("proxyPort");
-        props.add("bridgeErrorHandler");
-        props.add("awsKMSKeyId");
-        props.add("payloadSigningEnabled");
-        props.add("delimiter");
-        props.add("amazonS3Client");
-        props.add("greedy");
-        props.add("maxMessagesPerPoll");
-        props.add("scheduledExecutorService");
-        props.add("repeatCount");
-        props.add("encryptionMaterials");
-        props.add("dualstackEnabled");
-        props.add("sendEmptyMessageWhenIdle");
-        props.add("schedulerProperties");
-        props.add("pathStyleAccess");
-        props.add("proxyHost");
-        props.add("backoffIdleThreshold");
-        props.add("lazyStartProducer");
-        props.add("delay");
-        props.add("includeBody");
-        props.add("startScheduler");
-        props.add("accessKey");
-        props.add("endpointConfiguration");
-        props.add("deleteAfterWrite");
-        props.add("region");
-        props.add("exceptionHandler");
-        props.add("backoffMultiplier");
-        props.add("partSize");
-        props.add("chunkedEncodingDisabled");
-        props.add("scheduler");
-        props.add("multiPartUpload");
-        props.add("storageClass");
-        props.add("useFixedDelay");
-        props.add("doneFileName");
-        props.add("runLoggingLevel");
-        props.add("backoffErrorThreshold");
-        props.add("policy");
-        props.add("maxConnections");
-        props.add("forceGlobalBucketAccessEnabled");
-        props.add("timeUnit");
-        props.add("autoDiscoverClient");
-        props.add("accelerateModeEnabled");
-        props.add("autoCreateBucket");
-        props.add("proxyProtocol");
-        props.add("secretKey");
-        props.add("exchangePattern");
-        props.add("keyName");
-        props.add("autocloseBody");
-        props.add("pollStrategy");
-        props.add("useEncryption");
-        props.add("deleteAfterRead");
-        props.add("operation");
-        PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        Set<String> secretProps = new HashSet<>(2);
-        secretProps.add("secretKey");
-        secretProps.add("accessKey");
-        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
-    }
-
-    @Override
-    public boolean isEnabled(String scheme) {
-        return "aws-s3".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, "bucketNameOrArn", 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 boolean isLenientProperties() {
-        return false;
-    }
-}
-
diff --git a/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/component.properties
deleted file mode 100644
index 17d2377..0000000
--- a/components/camel-aws-s3/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=aws-s3
-groupId=org.apache.camel
-artifactId=camel-aws-s3
-version=3.9.0-SNAPSHOT
-projectName=Camel :: AWS S3 (deprecated)
-projectDescription=A Camel Amazon S3 Web Service Component
diff --git a/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/component/aws-s3 b/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/component/aws-s3
deleted file mode 100644
index 14bf76d..0000000
--- a/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/component/aws-s3
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.aws.s3.S3Component
diff --git a/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws-s3-component b/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws-s3-component
deleted file mode 100644
index ef69011..0000000
--- a/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws-s3-component
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.aws.s3.S3ComponentConfigurer
diff --git a/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws-s3-endpoint b/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws-s3-endpoint
deleted file mode 100644
index fc08e5f..0000000
--- a/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws-s3-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.aws.s3.S3EndpointConfigurer
diff --git a/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/urifactory/aws-s3-endpoint b/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/urifactory/aws-s3-endpoint
deleted file mode 100644
index 459577f..0000000
--- a/components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/urifactory/aws-s3-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.aws.s3.S3EndpointUriFactory
diff --git a/components/camel-aws-s3/src/generated/resources/org/apache/camel/component/aws/s3/aws-s3.json b/components/camel-aws-s3/src/generated/resources/org/apache/camel/component/aws/s3/aws-s3.json
deleted file mode 100644
index f919a34..0000000
--- a/components/camel-aws-s3/src/generated/resources/org/apache/camel/component/aws/s3/aws-s3.json
+++ /dev/null
@@ -1,128 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "aws-s3",
-    "title": "AWS S3 Storage Service",
-    "description": "Store and retrieve objects from AWS S3 Storage Service.",
-    "deprecated": true,
-    "deprecatedSince": "3.8.0",
-    "firstVersion": "2.8.0",
-    "label": "cloud,file",
-    "javaType": "org.apache.camel.component.aws.s3.S3Component",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-aws-s3",
-    "version": "3.9.0-SNAPSHOT",
-    "scheme": "aws-s3",
-    "extendsScheme": "",
-    "syntax": "aws-s3:\/\/bucketNameOrArn",
-    "async": false,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": false,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "amazonS3Client": { "kind": "property", "displayName": "Amazon S3 Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.amazonaws.services.s3.AmazonS3", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Reference to a com.amazonaws.services.s3.AmazonS3 in the registry." },
-    "autoCreateBucket": { "kind": "property", "displayName": "Auto Create Bucket", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Setting the autocreation of the bucket" },
-    "autoDiscoverClient": { "kind": "property", "displayName": "Auto Discover Client", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Setting the autoDiscoverClient mechanism, if true, the component will look for a client instance [...]
-    "configuration": { "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws.s3.S3Configuration", "deprecated": false, "autowired": false, "secret": false, "description": "The component configuration" },
-    "endpointConfiguration": { "kind": "property", "displayName": "Endpoint Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Amazon AWS Endpoint Configuration" },
-    "pathStyleAccess": { "kind": "property", "displayName": "Path Style Access", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Whether or not the S3 client should use path style access" },
-    "policy": { "kind": "property", "displayName": "Policy", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method." },
-    "proxyHost": { "kind": "property", "displayName": "Proxy Host", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the S3 client" },
-    "proxyPort": { "kind": "property", "displayName": "Proxy Port", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Specify a proxy port to be used inside the client definition." },
-    "proxyProtocol": { "kind": "property", "displayName": "Proxy Protocol", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.amazonaws.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "To define a proxy protocol when instantiating the S3 client" },
-    "region": { "kind": "property", "displayName": "Region", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The region in which S3 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for  [...]
-    "useIAMCredentials": { "kind": "property", "displayName": "Use IAMCredentials", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static crede [...]
-    "encryptionMaterials": { "kind": "property", "displayName": "Encryption Materials", "group": "common (advanced)", "label": "common,advanced", "required": false, "type": "object", "javaType": "com.amazonaws.services.s3.model.EncryptionMaterials", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The encryption materials to use in case of Symmetric\/ [...]
-    "useEncryption": { "kind": "property", "displayName": "Use Encryption", "group": "common (advanced)", "label": "common,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if encryption must be used or not" },
-    "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 [...]
-    "deleteAfterRead": { "kind": "property", "displayName": "Delete After Read", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Delete objects from S3 after they have been retrieved. The delete is only performed if the Exchang [...]
-    "delimiter": { "kind": "property", "displayName": "Delimiter", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The delimiter which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are intereste [...]
-    "doneFileName": { "kind": "property", "displayName": "Done File Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "If provided, Camel will only consume files if a done file exists." },
-    "fileName": { "kind": "property", "displayName": "File Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "To get the object from the bucket with the given file name" },
-    "includeBody": { "kind": "property", "displayName": "Include Body", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "If it is true, the exchange body will be set to a stream to the contents of the file. If false, the headers [...]
-    "prefix": { "kind": "property", "displayName": "Prefix", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in." },
-    "autocloseBody": { "kind": "property", "displayName": "Autoclose Body", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "If this option is true and includeBody is true, then the S3Object.close() method wi [...]
-    "deleteAfterWrite": { "kind": "property", "displayName": "Delete After Write", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Delete file object after the S3 file has been uploaded" },
-    "keyName": { "kind": "property", "displayName": "Key Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Setting the key name for an element in the bucket through endpoint parameter" },
-    "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 [...]
-    "multiPartUpload": { "kind": "property", "displayName": "Multi Part Upload", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "If it is true, camel will upload the file with multi part format, the part size is decided by the [...]
-    "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws.s3.S3Operations", "enum": [ "copyObject", "deleteBucket", "listBuckets", "downloadLink" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The operation to do in  [...]
-    "partSize": { "kind": "property", "displayName": "Part Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 26214400, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Setup the partSize which is used in multi part upload, the default size is 25M." },
-    "serverSideEncryption": { "kind": "property", "displayName": "Server Side Encryption", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For examp [...]
-    "storageClass": { "kind": "property", "displayName": "Storage Class", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request." },
-    "awsKMSKeyId": { "kind": "property", "displayName": "Aws KMSKey Id", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define the id of KMS key to use in case KMS is enabled" },
-    "useAwsKMS": { "kind": "property", "displayName": "Use Aws KMS", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if KMS must be used or not" },
-    "accelerateModeEnabled": { "kind": "property", "displayName": "Accelerate Mode Enabled", "group": " advanced", "label": "common, advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if Accelerate Mode enabled is true or false" },
-    "chunkedEncodingDisabled": { "kind": "property", "displayName": "Chunked Encoding Disabled", "group": " advanced", "label": "common, advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if disabled Chunked Encoding is true or false" },
-    "dualstackEnabled": { "kind": "property", "displayName": "Dualstack Enabled", "group": " advanced", "label": "common, advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if Dualstack enabled is true or false" },
-    "forceGlobalBucketAccessEnabled": { "kind": "property", "displayName": "Force Global Bucket Access Enabled", "group": " advanced", "label": "common, advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if Force Global Bucket Access enabled is true or  [...]
-    "payloadSigningEnabled": { "kind": "property", "displayName": "Payload Signing Enabled", "group": " advanced", "label": "common, advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if Payload Signing enabled is true or false" },
-    "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 [...]
-    "accessKey": { "kind": "property", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
-    "secretKey": { "kind": "property", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
-  },
-  "properties": {
-    "bucketNameOrArn": { "kind": "path", "displayName": "Bucket Name Or Arn", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Bucket name or ARN" },
-    "amazonS3Client": { "kind": "parameter", "displayName": "Amazon S3 Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.amazonaws.services.s3.AmazonS3", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Reference to a com.amazonaws.services.s3.AmazonS3 in the registry." },
-    "autoCreateBucket": { "kind": "parameter", "displayName": "Auto Create Bucket", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Setting the autocreation of the bucket" },
-    "autoDiscoverClient": { "kind": "parameter", "displayName": "Auto Discover Client", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Setting the autoDiscoverClient mechanism, if true, the component will look for a client instanc [...]
-    "endpointConfiguration": { "kind": "parameter", "displayName": "Endpoint Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Amazon AWS Endpoint Configuration" },
-    "pathStyleAccess": { "kind": "parameter", "displayName": "Path Style Access", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Whether or not the S3 client should use path style access" },
-    "policy": { "kind": "parameter", "displayName": "Policy", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method." },
-    "proxyHost": { "kind": "parameter", "displayName": "Proxy Host", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "To define a proxy host when instantiating the S3 client" },
-    "proxyPort": { "kind": "parameter", "displayName": "Proxy Port", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Specify a proxy port to be used inside the client definition." },
-    "proxyProtocol": { "kind": "parameter", "displayName": "Proxy Protocol", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.amazonaws.Protocol", "enum": [ "HTTP", "HTTPS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HTTPS", "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "To define a proxy protocol when instantiating the S3 client" },
-    "region": { "kind": "parameter", "displayName": "Region", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The region in which S3 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for [...]
-    "useIAMCredentials": { "kind": "parameter", "displayName": "Use IAMCredentials", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static cred [...]
-    "encryptionMaterials": { "kind": "parameter", "displayName": "Encryption Materials", "group": "common (advanced)", "label": "common,advanced", "required": false, "type": "object", "javaType": "com.amazonaws.services.s3.model.EncryptionMaterials", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The encryption materials to use in case of Symmetric\ [...]
-    "useEncryption": { "kind": "parameter", "displayName": "Use Encryption", "group": "common (advanced)", "label": "common,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if encryption must be used or not" },
-    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a m [...]
-    "deleteAfterRead": { "kind": "parameter", "displayName": "Delete After Read", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Delete objects from S3 after they have been retrieved. The delete is only performed if the Exchan [...]
-    "delimiter": { "kind": "parameter", "displayName": "Delimiter", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The delimiter which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interest [...]
-    "doneFileName": { "kind": "parameter", "displayName": "Done File Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "If provided, Camel will only consume files if a done file exists." },
-    "fileName": { "kind": "parameter", "displayName": "File Name", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "To get the object from the bucket with the given file name" },
-    "includeBody": { "kind": "parameter", "displayName": "Include Body", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "If it is true, the exchange body will be set to a stream to the contents of the file. If false, the header [...]
-    "maxConnections": { "kind": "parameter", "displayName": "Max Connections", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 60, "description": "Set the maxConnections parameter in the S3 client configuration" },
-    "maxMessagesPerPoll": { "kind": "parameter", "displayName": "Max Messages Per Poll", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "description": "Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as u [...]
-    "prefix": { "kind": "parameter", "displayName": "Prefix", "group": "consumer", "label": "consumer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in." },
-    "sendEmptyMessageWhenIdle": { "kind": "parameter", "displayName": "Send Empty Message When Idle", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead." },
-    "autocloseBody": { "kind": "parameter", "displayName": "Autoclose Body", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "If this option is true and includeBody is true, then the S3Object.close() method w [...]
-    "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." },
-    "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation  [...]
-    "deleteAfterWrite": { "kind": "parameter", "displayName": "Delete After Write", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Delete file object after the S3 file has been uploaded" },
-    "keyName": { "kind": "parameter", "displayName": "Key Name", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Setting the key name for an element in the bucket through endpoint parameter" },
-    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during sta [...]
-    "multiPartUpload": { "kind": "parameter", "displayName": "Multi Part Upload", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "If it is true, camel will upload the file with multi part format, the part size is decided by th [...]
-    "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws.s3.S3Operations", "enum": [ "copyObject", "deleteBucket", "listBuckets", "downloadLink" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The operation to do in [...]
-    "partSize": { "kind": "parameter", "displayName": "Part Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 26214400, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Setup the partSize which is used in multi part upload, the default size is 25M." },
-    "serverSideEncryption": { "kind": "parameter", "displayName": "Server Side Encryption", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For exam [...]
-    "storageClass": { "kind": "parameter", "displayName": "Storage Class", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request." },
-    "awsKMSKeyId": { "kind": "parameter", "displayName": "Aws KMSKey Id", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define the id of KMS key to use in case KMS is enabled" },
-    "useAwsKMS": { "kind": "parameter", "displayName": "Use Aws KMS", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if KMS must be used or not" },
-    "accelerateModeEnabled": { "kind": "parameter", "displayName": "Accelerate Mode Enabled", "group": " advanced", "label": "common, advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if Accelerate Mode enabled is true or false" },
-    "chunkedEncodingDisabled": { "kind": "parameter", "displayName": "Chunked Encoding Disabled", "group": " advanced", "label": "common, advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if disabled Chunked Encoding is true or false" },
-    "dualstackEnabled": { "kind": "parameter", "displayName": "Dualstack Enabled", "group": " advanced", "label": "common, advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if Dualstack enabled is true or false" },
-    "forceGlobalBucketAccessEnabled": { "kind": "parameter", "displayName": "Force Global Bucket Access Enabled", "group": " advanced", "label": "common, advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if Force Global Bucket Access enabled is true or [...]
-    "payloadSigningEnabled": { "kind": "parameter", "displayName": "Payload Signing Enabled", "group": " advanced", "label": "common, advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Define if Payload Signing enabled is true or false" },
-    "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening agai [...]
-    "delay": { "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." },
-    "greedy": { "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." },
-    "initialDelay": { "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." },
-    "repeatCount": { "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." },
-    "runLoggingLevel": { "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level  [...]
-    "scheduledExecutorService": { "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." },
-    "scheduler": { "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." },
-    "useFixedDelay": { "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." },
-    "accessKey": { "kind": "parameter", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key" },
-    "secretKey": { "kind": "parameter", "displayName": "Secret Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws.s3.S3Configuration", "configurationField": "configuration", "description": "Amazon AWS Secret Key" }
-  }
-}
diff --git a/components/camel-aws-s3/src/main/docs/aws-s3-component.adoc b/components/camel-aws-s3/src/main/docs/aws-s3-component.adoc
deleted file mode 100644
index 738a334..0000000
--- a/components/camel-aws-s3/src/main/docs/aws-s3-component.adoc
+++ /dev/null
@@ -1,553 +0,0 @@
-[[aws-s3-component]]
-= AWS S3 Storage Service Component (deprecated)
-:docTitle: AWS S3 Storage Service
-:artifactId: camel-aws-s3
-:description: Store and retrieve objects from AWS S3 Storage Service.
-:since: 2.8
-:supportLevel: Stable-deprecated
-:deprecated: *deprecated*
-:component-header: Both producer and consumer are supported
-include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/aws-s3.adoc[opts=optional]
-//Manually maintained attributes
-:group: AWS
-
-*Since Camel {since}*
-
-*{component-header}*
-
-The S3 component supports storing and retrieving objects from/to
-https://aws.amazon.com/s3[Amazon's S3] service.
-
-Prerequisites
-
-You must have a valid Amazon Web Services developer account, and be
-signed up to use Amazon S3. More information is available at
-https://aws.amazon.com/s3[Amazon S3].
-
-== URI Format
-
-[source,java]
-------------------------------
-aws-s3://[bucketName|arn][?options]
-------------------------------
-
-The bucket will be created if it don't already exists. +
- You can append query options to the URI in the following format,
-?options=value&option2=value&...
-
-For example in order to read file `hello.txt` from bucket `helloBucket`, use the following snippet:
-
-[source,java]
---------------------------------------------------------------------------------
-from("aws-s3://helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&prefix=hello.txt")
-  .to("file:/var/downloaded");
---------------------------------------------------------------------------------
-
-
-== URI Options
-
-
-// component options: START
-The AWS S3 Storage Service component supports 40 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *amazonS3Client* (common) | Reference to a com.amazonaws.services.s3.AmazonS3 in the registry. |  | AmazonS3
-| *autoCreateBucket* (common) | Setting the autocreation of the bucket | true | boolean
-| *autoDiscoverClient* (common) | Setting the autoDiscoverClient mechanism, if true, the component will look for a client instance in the registry automatically otherwise it will skip that checking. | true | boolean
-| *configuration* (common) | The component configuration |  | S3Configuration
-| *endpointConfiguration* (common) | Amazon AWS Endpoint Configuration |  | EndpointConfiguration
-| *pathStyleAccess* (common) | Whether or not the S3 client should use path style access | false | boolean
-| *policy* (common) | The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method. |  | String
-| *proxyHost* (common) | To define a proxy host when instantiating the S3 client |  | String
-| *proxyPort* (common) | Specify a proxy port to be used inside the client definition. |  | Integer
-| *proxyProtocol* (common) | To define a proxy protocol when instantiating the S3 client. There are 2 enums and the value can be one of: HTTP, HTTPS | HTTPS | Protocol
-| *region* (common) | The region in which S3 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() |  | String
-| *useIAMCredentials* (common) | Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static credentials to be passed in. | false | boolean
-| *encryptionMaterials* (common) | The encryption materials to use in case of Symmetric/Asymmetric client usage |  | EncryptionMaterials
-| *useEncryption* (common) | Define if encryption must be used or not | false | boolean
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *deleteAfterRead* (consumer) | Delete objects from S3 after they have been retrieved. The delete is only performed if the Exchange is committed. If a rollback occurs, the object is not deleted. If this option is false, then the same objects will be retrieve over and over again on the polls. Therefore you need to use the Idempotent Consumer EIP in the route to filter out duplicates. You can filter using the S3Constants#BUCKET_NAME and S3Constants#KEY headers, or only the S3Constants#KEY [...]
-| *delimiter* (consumer) | The delimiter which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. |  | String
-| *doneFileName* (consumer) | If provided, Camel will only consume files if a done file exists. |  | String
-| *fileName* (consumer) | To get the object from the bucket with the given file name |  | String
-| *includeBody* (consumer) | If it is true, the exchange body will be set to a stream to the contents of the file. If false, the headers will be set with the S3 object metadata, but the body will be null. This option is strongly related to autocloseBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | boolean
-| *prefix* (consumer) | The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. |  | String
-| *autocloseBody* (consumer) | If this option is true and includeBody is true, then the S3Object.close() method will be called on exchange completion. This option is strongly related to includeBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | boolean
-| *deleteAfterWrite* (producer) | Delete file object after the S3 file has been uploaded | false | boolean
-| *keyName* (producer) | Setting the key name for an element in the bucket through endpoint parameter |  | String
-| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *multiPartUpload* (producer) | If it is true, camel will upload the file with multi part format, the part size is decided by the option of partSize | false | boolean
-| *operation* (producer) | The operation to do in case the user don't want to do only an upload. There are 4 enums and the value can be one of: copyObject, deleteBucket, listBuckets, downloadLink |  | S3Operations
-| *partSize* (producer) | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400 | long
-| *serverSideEncryption* (producer) | Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256. |  | String
-| *storageClass* (producer) | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. |  | String
-| *awsKMSKeyId* (producer) | Define the id of KMS key to use in case KMS is enabled |  | String
-| *useAwsKMS* (producer) | Define if KMS must be used or not | false | boolean
-| *accelerateModeEnabled* ( advanced) | Define if Accelerate Mode enabled is true or false | false | boolean
-| *chunkedEncodingDisabled* ( advanced) | Define if disabled Chunked Encoding is true or false | false | boolean
-| *dualstackEnabled* ( advanced) | Define if Dualstack enabled is true or false | false | boolean
-| *forceGlobalBucketAccessEnabled* ( advanced) | Define if Force Global Bucket Access enabled is true or false | false | boolean
-| *payloadSigningEnabled* ( advanced) | Define if Payload Signing enabled is true or false | false | boolean
-| *autowiredEnabled* (advanced) | 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. | true | boolean
-| *accessKey* (security) | Amazon AWS Access Key |  | String
-| *secretKey* (security) | Amazon AWS Secret Key |  | String
-|===
-// component options: END
-
-
-
-
-
-
-
-
-
-
-
-// endpoint options: START
-The AWS S3 Storage Service endpoint is configured using URI syntax:
-
-----
-aws-s3://bucketNameOrArn
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (1 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *bucketNameOrArn* | *Required* Bucket name or ARN |  | String
-|===
-
-
-=== Query Parameters (58 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *amazonS3Client* (common) | Reference to a com.amazonaws.services.s3.AmazonS3 in the registry. |  | AmazonS3
-| *autoCreateBucket* (common) | Setting the autocreation of the bucket | true | boolean
-| *autoDiscoverClient* (common) | Setting the autoDiscoverClient mechanism, if true, the component will look for a client instance in the registry automatically otherwise it will skip that checking. | true | boolean
-| *endpointConfiguration* (common) | Amazon AWS Endpoint Configuration |  | EndpointConfiguration
-| *pathStyleAccess* (common) | Whether or not the S3 client should use path style access | false | boolean
-| *policy* (common) | The policy for this queue to set in the com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method. |  | String
-| *proxyHost* (common) | To define a proxy host when instantiating the S3 client |  | String
-| *proxyPort* (common) | Specify a proxy port to be used inside the client definition. |  | Integer
-| *proxyProtocol* (common) | To define a proxy protocol when instantiating the S3 client. There are 2 enums and the value can be one of: HTTP, HTTPS | HTTPS | Protocol
-| *region* (common) | The region in which S3 client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() |  | String
-| *useIAMCredentials* (common) | Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static credentials to be passed in. | false | boolean
-| *encryptionMaterials* (common) | The encryption materials to use in case of Symmetric/Asymmetric client usage |  | EncryptionMaterials
-| *useEncryption* (common) | Define if encryption must be used or not | false | boolean
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *deleteAfterRead* (consumer) | Delete objects from S3 after they have been retrieved. The delete is only performed if the Exchange is committed. If a rollback occurs, the object is not deleted. If this option is false, then the same objects will be retrieve over and over again on the polls. Therefore you need to use the Idempotent Consumer EIP in the route to filter out duplicates. You can filter using the S3Constants#BUCKET_NAME and S3Constants#KEY headers, or only the S3Constants#KEY [...]
-| *delimiter* (consumer) | The delimiter which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. |  | String
-| *doneFileName* (consumer) | If provided, Camel will only consume files if a done file exists. |  | String
-| *fileName* (consumer) | To get the object from the bucket with the given file name |  | String
-| *includeBody* (consumer) | If it is true, the exchange body will be set to a stream to the contents of the file. If false, the headers will be set with the S3 object metadata, but the body will be null. This option is strongly related to autocloseBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | boolean
-| *maxConnections* (consumer) | Set the maxConnections parameter in the S3 client configuration | 60 | int
-| *maxMessagesPerPoll* (consumer) | Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited. | 10 | int
-| *prefix* (consumer) | The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are interested in. |  | String
-| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
-| *autocloseBody* (consumer) | If this option is true and includeBody is true, then the S3Object.close() method will be called on exchange completion. This option is strongly related to includeBody option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically. | true | boolean
-| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. There are 3 enums and the value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
-| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPollStrategy
-| *deleteAfterWrite* (producer) | Delete file object after the S3 file has been uploaded | false | boolean
-| *keyName* (producer) | Setting the key name for an element in the bucket through endpoint parameter |  | String
-| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *multiPartUpload* (producer) | If it is true, camel will upload the file with multi part format, the part size is decided by the option of partSize | false | boolean
-| *operation* (producer) | The operation to do in case the user don't want to do only an upload. There are 4 enums and the value can be one of: copyObject, deleteBucket, listBuckets, downloadLink |  | S3Operations
-| *partSize* (producer) | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400 | long
-| *serverSideEncryption* (producer) | Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use AES256. |  | String
-| *storageClass* (producer) | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. |  | String
-| *awsKMSKeyId* (producer) | Define the id of KMS key to use in case KMS is enabled |  | String
-| *useAwsKMS* (producer) | Define if KMS must be used or not | false | boolean
-| *accelerateModeEnabled* ( advanced) | Define if Accelerate Mode enabled is true or false | false | boolean
-| *chunkedEncodingDisabled* ( advanced) | Define if disabled Chunked Encoding is true or false | false | boolean
-| *dualstackEnabled* ( advanced) | Define if Dualstack enabled is true or false | false | boolean
-| *forceGlobalBucketAccessEnabled* ( advanced) | Define if Force Global Bucket Access enabled is true or false | false | boolean
-| *payloadSigningEnabled* ( advanced) | Define if Payload Signing enabled is true or false | false | boolean
-| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
-| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
-| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
-| *delay* (scheduler) | Milliseconds before the next poll. | 500 | long
-| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
-| *initialDelay* (scheduler) | Milliseconds before the first poll starts. | 1000 | long
-| *repeatCount* (scheduler) | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0 | long
-| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. There are 6 enums and the value can be one of: TRACE, DEBUG, INFO, WARN, ERROR, OFF | TRACE | LoggingLevel
-| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutorService
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler | none | Object
-| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
-| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
-| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. There are 7 enums and the value can be one of: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS | MILLISECONDS | TimeUnit
-| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
-| *accessKey* (security) | Amazon AWS Access Key |  | String
-| *secretKey* (security) | Amazon AWS Secret Key |  | String
-|===
-// endpoint options: END
-
-
-
-
-
-
-
-
-
-
-Required S3 component options
-
-You have to provide the amazonS3Client in the
-Registry or your accessKey and secretKey to access
-the https://aws.amazon.com/s3[Amazon's S3].
-
-== Batch Consumer
-
-This component implements the Batch Consumer.
-
-This allows you for instance to know how many messages exists in this
-batch and for instance let the Aggregator
-aggregate this number of messages.
-
-== Usage
-
-=== Message headers evaluated by the S3 producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Header |Type |Description
-
-|`CamelAwsS3BucketName` |`String` |The bucket Name which this object will be stored or which will be used for the current operation
-
-|`CamelAwsS3BucketDestinationName` |`String` |The bucket Destination Name which will be used for the current operation
-
-|`CamelAwsS3ContentLength` |`Long` |The content length of this object.
-
-|`CamelAwsS3ContentType` |`String` |The content type of this object.
-
-|`CamelAwsS3ContentControl` |`String` |The content control of this object.
-
-|`CamelAwsS3ContentDisposition` |`String` |The content disposition of this object.
-
-|`CamelAwsS3ContentEncoding` |`String` |The content encoding of this object.
-
-|`CamelAwsS3ContentMD5` |`String` |The md5 checksum of this object.
-
-|`CamelAwsS3DestinationKey` |`String` |The Destination key which will be used for the current operation
-
-|`CamelAwsS3Key` |`String` |The key under which this object will be stored or which will be used for the current operation
-
-|`CamelAwsS3LastModified` |`java.util.Date` |The last modified timestamp of this object.
-
-|`CamelAwsS3Operation` |`String` |The operation to perform. Permitted values are copyObject, deleteObject, listBuckets, deleteBucket, downloadLink, listObjects
-
-|`CamelAwsS3StorageClass` |`String` |The storage class of this object.
-
-|`CamelAwsS3CannedAcl` |`String` |The canned acl that will be applied to the object. see
-`com.amazonaws.services.s3.model.CannedAccessControlList` for allowed
-values.
-
-|`CamelAwsS3Acl` |`com.amazonaws.services.s3.model.AccessControlList` |A well constructed Amazon S3 Access Control List object.
-see `com.amazonaws.services.s3.model.AccessControlList` for more details
-
-|`CamelAwsS3Headers` |`Map<String,String>` |Support to get or set custom objectMetadata headers.
-
-|`CamelAwsS3ServerSideEncryption` |String |Sets the server-side encryption algorithm when encrypting
-the object using AWS-managed keys. For example use AES256.
-
-|`CamelAwsS3VersionId` |`String` |The version Id of the object to be stored or returned from the current operation
-|=======================================================================
-
-=== Message headers set by the S3 producer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Header |Type |Description
-|`CamelAwsS3ETag` |`String` |The ETag value for the newly uploaded object.
-
-|`CamelAwsS3VersionId` |`String` |The *optional* version ID of the newly uploaded object.
-
-|`CamelAwsS3DownloadLinkExpiration` | `String` | The expiration (millis) of URL download link. The link will be stored into *CamelAwsS3DownloadLink* response header.
-
-|=======================================================================
-
-=== Message headers set by the S3 consumer
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Header |Type |Description
-
-|`CamelAwsS3Key` |`String` |The key under which this object is stored.
-
-|`CamelAwsS3BucketName` |`String` |The name of the bucket in which this object is contained.
-
-|`CamelAwsS3ETag` |`String` |The hex encoded 128-bit MD5 digest of the associated object according to
-RFC 1864. This data is used as an integrity check to verify that the
-data received by the caller is the same data that was sent by Amazon S3.
-
-|`CamelAwsS3LastModified` |`Date` |The value of the Last-Modified header, indicating the date and time at
-which Amazon S3 last recorded a modification to the associated object.
-
-|`CamelAwsS3VersionId` |`String` |The version ID of the associated Amazon S3 object if available. Version
-IDs are only assigned to objects when an object is uploaded to an Amazon
-S3 bucket that has object versioning enabled.
-
-|`CamelAwsS3ContentType` |`String` |The Content-Type HTTP header, which indicates the type of content stored
-in the associated object. The value of this header is a standard MIME
-type.
-
-|`CamelAwsS3ContentMD5` |`String` |The base64 encoded 128-bit MD5 digest of the associated object (content
-- not including headers) according to RFC 1864. This data is used as a
-message integrity check to verify that the data received by Amazon S3 is
-the same data that the caller sent.
-
-|`CamelAwsS3ContentLength` |`Long` |The Content-Length HTTP header indicating the size of the associated
-object in bytes.
-
-|`CamelAwsS3ContentEncoding` |`String` |The *optional* Content-Encoding HTTP header specifying what content
-encodings have been applied to the object and what decoding mechanisms
-must be applied in order to obtain the media-type referenced by the
-Content-Type field.
-
-|`CamelAwsS3ContentDisposition` |`String` |The *optional* Content-Disposition HTTP header, which specifies
-presentational information such as the recommended filename for the
-object to be saved as.
-
-|`CamelAwsS3ContentControl` |`String` |The *optional* Cache-Control HTTP header which allows the user to
-specify caching behavior along the HTTP request/reply chain.
-
-|`CamelAwsS3ServerSideEncryption` |String |The server-side encryption algorithm when encrypting the
-object using AWS-managed keys.
-|=======================================================================
-
-=== S3 Producer operations
-
-Camel-AWS s3 component provides the following operation on the producer side:
-
-- copyObject
-- deleteObject
-- listBuckets
-- deleteBucket
-- downloadLink
-- listObjects
-- getObject (this will return an S3Object instance)
-- getObjectRange (this will return an S3Object instance)
-
-=== Advanced AmazonS3 configuration
-
-If your Camel Application is running behind a firewall or if you need to
-have more control over the `AmazonS3` instance configuration, you can
-create your own instance:
-
-[source,java]
---------------------------------------------------------------------------------------
-AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
-
-ClientConfiguration clientConfiguration = new ClientConfiguration();
-clientConfiguration.setProxyHost("http://myProxyHost");
-clientConfiguration.setProxyPort(8080);
-
-AmazonS3 client = new AmazonS3Client(awsCredentials, clientConfiguration);
-
-registry.bind("client", client);
---------------------------------------------------------------------------------------
-
-and refer to it in your Camel aws-s3 component configuration:
-
-[source,java]
---------------------------------------------------------------------------------
-from("aws-s3://MyBucket?amazonS3Client=#client&delay=5000&maxMessagesPerPoll=5")
-.to("mock:result");
---------------------------------------------------------------------------------
-
-=== Use KMS with the S3 component
-
-To use AWS KMS to encrypt/decrypt data by using AWS infrastructure you can use the options introduced in 2.21.x like in the following example
-
-[source,java]
---------------------------------------------------------------------------------
-from("file:tmp/test?fileName=test.txt")
-     .setHeader(S3Constants.KEY, constant("testFile"))
-     .to("aws-s3://mybucket?amazonS3Client=#client&useAwsKMS=true&awsKMSKeyId=3f0637ad-296a-3dfe-a796-e60654fb128c");
---------------------------------------------------------------------------------
-
-In this way you'll ask to S3, to use the KMS key 3f0637ad-296a-3dfe-a796-e60654fb128c, to encrypt the file test.txt. When you'll ask to download this file, the decryption will be done directly before the download.
-
-=== Use "useIAMCredentials" with the s3 component
-
-To use AWS IAM credentials, you must first verify that the EC2 in which you are launching the Camel application on has an IAM role associated with it containing the appropriate policies attached to run effectively.
-Keep in mind that this feature should only be set to "true" on remote instances. To clarify even further, you must still use static credentials locally since IAM is an AWS specific component,
-but AWS environments should now be easier to manage. After this is implemented and understood, you can set the query parameter "useIAMCredentials" to "true" for AWS environments! To effectively toggle this
-on and off based on local and remote environments, you can consider enabling this query parameter with system environment variables. For example, your code could set the "useIAMCredentials" query parameter to "true",
-when the system environment variable called "isRemote" is set to true (there are many other ways to do this and this should act as a simple example). Although it doesn't take away the need for static credentials completely,
-using IAM credentials on AWS environments takes away the need to refresh on remote environments and adds a major security boost (IAM credentials are refreshed automatically every 6 hours and update when their
-policies are updated). This is the AWS recommended way to manage credentials and therefore should be used as often as possible.
-
-=== S3 Producer Operation examples
-
-- CopyObject: this operation copy an object from one bucket to a different one
-
-[source,java]
---------------------------------------------------------------------------------
-  from("direct:start").process(new Processor() {
-                    
-      @Override
-      public void process(Exchange exchange) throws Exception {
-          exchange.getIn().setHeader(S3Constants.BUCKET_DESTINATION_NAME, "camelDestinationBucket");
-          exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
-          exchange.getIn().setHeader(S3Constants.DESTINATION_KEY, "camelDestinationKey");   
-      }
-  })
-  .to("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=copyObject")
-  .to("mock:result");
---------------------------------------------------------------------------------
-
-This operation will copy the object with the name expressed in the header camelDestinationKey to the camelDestinationBucket bucket, from the bucket mycamelbucket.
-
-- DeleteObject: this operation deletes an object from a bucket
-
-[source,java]
---------------------------------------------------------------------------------
-  from("direct:start").process(new Processor() {
-                    
-      @Override
-      public void process(Exchange exchange) throws Exception {
-          exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); 
-      }
-  })
-  .to("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteObject")
-  .to("mock:result");
---------------------------------------------------------------------------------
-
-This operation will delete the object camelKey from the bucket mycamelbucket.
-
-- ListBuckets: this operation list the buckets for this account in this region
-
-[source,java]
---------------------------------------------------------------------------------
-  from("direct:start")
-  .to("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listBuckets")
-  .to("mock:result");
---------------------------------------------------------------------------------
-
-This operation will list the buckets for this account
-
-- DeleteBucket: this operation delete the bucket specified as URI parameter or header
-
-[source,java]
---------------------------------------------------------------------------------
-  from("direct:start")
-  .to("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteBucket")
-  .to("mock:result");
---------------------------------------------------------------------------------
-
-This operation will delete the bucket mycamelbucket
-
-- DownloadLink: this operation create a download link for the file specified in the key header
-
-[source,java]
---------------------------------------------------------------------------------
-  from("direct:start").process(new Processor() {
-                    
-      @Override
-      public void process(Exchange exchange) throws Exception {
-          exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); 
-      }
-  })
-  .to("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=downloadLink")
-  .to("mock:result");
---------------------------------------------------------------------------------
-
-This operation will create a downloadLink for the file camelKey in the bucket mycamelbucket
-
-- ListObjects: this operation list object in a specific bucket
-
-[source,java]
---------------------------------------------------------------------------------
-  from("direct:start")
-  .to("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listObjects")
-  .to("mock:result");
---------------------------------------------------------------------------------
-
-This operation will list the objects in the mycamelbucket bucket
-
-- GetObject: this operation get a single object in a specific bucket
-
-[source,java]
---------------------------------------------------------------------------------
-  from("direct:start").process(new Processor() {
-                    
-      @Override
-      public void process(Exchange exchange) throws Exception {
-          exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); 
-      }
-  })
-  .to("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObject")
-  .to("mock:result");
---------------------------------------------------------------------------------
-
-This operation will return an S3Object instance related to the camelKey object in mycamelbucket bucket.
-
-- GetObjectRange: this operation get a single object range in a specific bucket
-
-[source,java]
---------------------------------------------------------------------------------
-  from("direct:start").process(new Processor() {
-                    
-      @Override
-      public void process(Exchange exchange) throws Exception {
-          exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
-          exchange.getIn().setHeader(S3Constants.RANGE_START, "0");
-          exchange.getIn().setHeader(S3Constants.RANGE_END, "9");
-      }
-  })
-  .to("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObjectRange")
-  .to("mock:result");
---------------------------------------------------------------------------------
-
-This operation will return an S3Object instance related to the camelKey object in mycamelbucket bucket, containing a the bytes from 0 to 9.
-
-== Bucket Autocreation
-
-With the option `autoCreateBucket` users are able to avoid the autocreation of an S3 Bucket in case it doesn't exist. The default for this option is `true`.
-If set to false any operation on a not-existent bucket in AWS won't be successful and an error will be returned.
-
-== Automatic detection of AmazonS3 client in registry
-
-The component is capable of detecting the presence of an AmazonS3 bean into the registry.
-If it's the only instance of that type it will be used as client and you won't have to define it as uri parameter, like the example above.
-This may be really useful for smarter configuration of the endpoint.
-
-== Moving stuff between a bucket and another bucket
-
-Some users like to consume stuff from a bucket and move the content in a different one without using the copyObject feature of this component.
-If this is case for you, don't forget to remove the bucketName header from the incoming exchange of the consumer, otherwise the file will be always overwritten on the same 
-original bucket.
-
-== Dependencies
-
-Maven users will need to add the following dependency to their pom.xml.
-
-*pom.xml*
-
-[source,xml]
----------------------------------------
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-aws-s3</artifactId>
-    <version>${camel-version}</version>
-</dependency>
----------------------------------------
-
-where `$\{camel-version}` must be replaced by the actual version of Camel.
-
-
-include::camel-spring-boot::page$aws-s3-starter.adoc[]
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Component.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Component.java
deleted file mode 100644
index 78216ee..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Component.java
+++ /dev/null
@@ -1,87 +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.aws.s3;
-
-import java.util.Map;
-import java.util.Set;
-
-import com.amazonaws.services.s3.AmazonS3;
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.support.DefaultComponent;
-
-@Component("aws-s3")
-public class S3Component extends DefaultComponent {
-
-    @Metadata
-    private S3Configuration configuration = new S3Configuration();
-
-    public S3Component() {
-        this(null);
-    }
-
-    public S3Component(CamelContext context) {
-        super(context);
-
-        registerExtension(new S3ComponentVerifierExtension());
-    }
-
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-
-        if (remaining == null || remaining.trim().length() == 0) {
-            throw new IllegalArgumentException("Bucket name must be specified.");
-        }
-        if (remaining.startsWith("arn:")) {
-            remaining = remaining.substring(remaining.lastIndexOf(':') + 1, remaining.length());
-        }
-        final S3Configuration configuration = this.configuration != null ? this.configuration.copy() : new S3Configuration();
-        configuration.setBucketName(remaining);
-        S3Endpoint endpoint = new S3Endpoint(uri, this, configuration);
-        setProperties(endpoint, parameters);
-        if (endpoint.getConfiguration().isAutoDiscoverClient()) {
-            checkAndSetRegistryClient(configuration);
-        }
-        if (Boolean.FALSE.equals(configuration.isUseIAMCredentials()) && configuration.getAmazonS3Client() == null
-                && (configuration.getAccessKey() == null || configuration.getSecretKey() == null)) {
-            throw new IllegalArgumentException(
-                    "useIAMCredentials is set to false, AmazonS3Client or accessKey and secretKey must be specified");
-        }
-
-        return endpoint;
-    }
-
-    public S3Configuration getConfiguration() {
-        return configuration;
-    }
-
-    /**
-     * The component configuration
-     */
-    public void setConfiguration(S3Configuration configuration) {
-        this.configuration = configuration;
-    }
-
-    private void checkAndSetRegistryClient(S3Configuration configuration) {
-        Set<AmazonS3> clients = getCamelContext().getRegistry().findByType(AmazonS3.class);
-        if (clients.size() == 1) {
-            configuration.setAmazonS3Client(clients.stream().findFirst().get());
-        }
-    }
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3ComponentVerifierExtension.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3ComponentVerifierExtension.java
deleted file mode 100644
index 0b7b062..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3ComponentVerifierExtension.java
+++ /dev/null
@@ -1,91 +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.aws.s3;
-
-import java.util.Map;
-
-import com.amazonaws.SdkClientException;
-import com.amazonaws.auth.AWSCredentials;
-import com.amazonaws.auth.AWSCredentialsProvider;
-import com.amazonaws.auth.AWSStaticCredentialsProvider;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.regions.Regions;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3ClientBuilder;
-import org.apache.camel.component.extension.verifier.DefaultComponentVerifierExtension;
-import org.apache.camel.component.extension.verifier.ResultBuilder;
-import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
-import org.apache.camel.component.extension.verifier.ResultErrorHelper;
-
-public class S3ComponentVerifierExtension extends DefaultComponentVerifierExtension {
-
-    public S3ComponentVerifierExtension() {
-        this("aws-s3");
-    }
-
-    public S3ComponentVerifierExtension(String scheme) {
-        super(scheme);
-    }
-
-    // *********************************
-    // Parameters validation
-    // *********************************
-
-    @Override
-    protected Result verifyParameters(Map<String, Object> parameters) {
-
-        ResultBuilder builder = ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.PARAMETERS)
-                .error(ResultErrorHelper.requiresOption("accessKey", parameters))
-                .error(ResultErrorHelper.requiresOption("secretKey", parameters))
-                .error(ResultErrorHelper.requiresOption("region", parameters));
-
-        // Validate using the catalog
-
-        super.verifyParametersAgainstCatalog(builder, parameters);
-
-        return builder.build();
-    }
-
-    // *********************************
-    // Connectivity validation
-    // *********************************
-
-    @Override
-    protected Result verifyConnectivity(Map<String, Object> parameters) {
-        ResultBuilder builder = ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.CONNECTIVITY);
-
-        try {
-            S3Configuration configuration = setProperties(new S3Configuration(), parameters);
-            AWSCredentials credentials = new BasicAWSCredentials(configuration.getAccessKey(), configuration.getSecretKey());
-            AWSCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials);
-            AmazonS3 client = AmazonS3ClientBuilder.standard().withCredentials(credentialsProvider)
-                    .withRegion(Regions.valueOf(configuration.getRegion())).build();
-            client.listBuckets();
-        } catch (SdkClientException e) {
-            ResultErrorBuilder errorBuilder
-                    = ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, e.getMessage())
-                            .detail("aws_s3_exception_message", e.getMessage())
-                            .detail(VerificationError.ExceptionAttribute.EXCEPTION_CLASS, e.getClass().getName())
-                            .detail(VerificationError.ExceptionAttribute.EXCEPTION_INSTANCE, e);
-
-            builder.error(errorBuilder.build());
-        } catch (Exception e) {
-            builder.error(ResultErrorBuilder.withException(e).build());
-        }
-        return builder.build();
-    }
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Configuration.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Configuration.java
deleted file mode 100644
index 1f1329f..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Configuration.java
+++ /dev/null
@@ -1,546 +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.aws.s3;
-
-import com.amazonaws.Protocol;
-import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.model.EncryptionMaterials;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-import org.apache.camel.util.ObjectHelper;
-
-@UriParams
-public class S3Configuration implements Cloneable {
-
-    private String bucketName;
-    @UriParam
-    private AmazonS3 amazonS3Client;
-    @UriParam(label = "security", secret = true)
-    private String accessKey;
-    @UriParam(label = "security", secret = true)
-    private String secretKey;
-    @UriParam
-    private EndpointConfiguration endpointConfiguration;
-    @UriParam(label = "consumer")
-    private String fileName;
-    @UriParam(label = "consumer")
-    private String prefix;
-    @UriParam(label = "consumer")
-    private String delimiter;
-    @UriParam(label = "consumer")
-    private String doneFileName;
-    @UriParam
-    private String region;
-    @UriParam(label = "consumer", defaultValue = "true")
-    private boolean deleteAfterRead = true;
-    @UriParam(label = "producer")
-    private boolean deleteAfterWrite;
-    @UriParam(label = "producer")
-    private boolean multiPartUpload;
-    @UriParam(label = "producer", defaultValue = "" + 25 * 1024 * 1024)
-    private long partSize = 25 * 1024 * 1024;
-    @UriParam
-    private String policy;
-    @UriParam(label = "producer")
-    private String storageClass;
-    @UriParam(label = "producer")
-    private String serverSideEncryption;
-
-    @UriParam(enums = "HTTP,HTTPS", defaultValue = "HTTPS")
-    private Protocol proxyProtocol = Protocol.HTTPS;
-    @UriParam
-    private String proxyHost;
-    @UriParam
-    private Integer proxyPort;
-    @UriParam(label = "consumer", defaultValue = "true")
-    private boolean includeBody = true;
-    @UriParam
-    private boolean pathStyleAccess;
-    @UriParam(label = "producer", enums = "copyObject,deleteBucket,listBuckets,downloadLink")
-    private S3Operations operation;
-    @UriParam(label = "consumer,advanced", defaultValue = "true")
-    private boolean autocloseBody = true;
-    @UriParam(label = "common,advanced")
-    private EncryptionMaterials encryptionMaterials;
-    @UriParam(label = "common,advanced", defaultValue = "false")
-    private boolean useEncryption;
-    @UriParam(label = "common, advanced", defaultValue = "false")
-    private boolean chunkedEncodingDisabled;
-    @UriParam(label = "common, advanced", defaultValue = "false")
-    private boolean accelerateModeEnabled;
-    @UriParam(label = "common, advanced", defaultValue = "false")
-    private boolean dualstackEnabled;
-    @UriParam(label = "common, advanced", defaultValue = "false")
-    private boolean payloadSigningEnabled;
-    @UriParam(label = "common, advanced", defaultValue = "false")
-    private boolean forceGlobalBucketAccessEnabled;
-    @UriParam(label = "common", defaultValue = "true")
-    private boolean autoCreateBucket = true;
-    @UriParam(label = "producer,advanced", defaultValue = "false")
-    private boolean useAwsKMS;
-    @UriParam(label = "producer,advanced")
-    private String awsKMSKeyId;
-    @UriParam(defaultValue = "false")
-    private boolean useIAMCredentials;
-    @UriParam(label = "producer")
-    private String keyName;
-    @UriParam(label = "common", defaultValue = "true")
-    private boolean autoDiscoverClient = true;
-
-    public long getPartSize() {
-        return partSize;
-    }
-
-    /**
-     * Setup the partSize which is used in multi part upload, the default size is 25M.
-     */
-    public void setPartSize(long partSize) {
-        this.partSize = partSize;
-    }
-
-    public boolean isMultiPartUpload() {
-        return multiPartUpload;
-    }
-
-    /**
-     * If it is true, camel will upload the file with multi part format, the part size is decided by the option of
-     * `partSize`
-     */
-    public void setMultiPartUpload(boolean multiPartUpload) {
-        this.multiPartUpload = multiPartUpload;
-    }
-
-    public String getAccessKey() {
-        return accessKey;
-    }
-
-    /**
-     * Amazon AWS Access Key
-     */
-    public void setAccessKey(String accessKey) {
-        this.accessKey = accessKey;
-    }
-
-    public String getSecretKey() {
-        return secretKey;
-    }
-
-    /**
-     * Amazon AWS Secret Key
-     */
-    public void setSecretKey(String secretKey) {
-        this.secretKey = secretKey;
-    }
-
-    public EndpointConfiguration getEndpointConfiguration() {
-        return endpointConfiguration;
-    }
-
-    /**
-     * Amazon AWS Endpoint Configuration
-     */
-    public void setEndpointConfiguration(EndpointConfiguration endpointConfiguration) {
-        this.endpointConfiguration = endpointConfiguration;
-    }
-
-    public AmazonS3 getAmazonS3Client() {
-        return amazonS3Client;
-    }
-
-    /**
-     * Reference to a `com.amazonaws.services.s3.AmazonS3` in the registry.
-     */
-    public void setAmazonS3Client(AmazonS3 amazonS3Client) {
-        this.amazonS3Client = amazonS3Client;
-    }
-
-    public String getPrefix() {
-        return prefix;
-    }
-
-    /**
-     * The prefix which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we are
-     * interested in.
-     */
-    public void setPrefix(String prefix) {
-        this.prefix = prefix;
-    }
-
-    public String getDelimiter() {
-        return delimiter;
-    }
-
-    /**
-     * The delimiter which is used in the com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we
-     * are interested in.
-     */
-    public void setDelimiter(String delimiter) {
-        this.delimiter = delimiter;
-    }
-
-    public String getDoneFileName() {
-        return doneFileName;
-    }
-
-    /**
-     * If provided, Camel will only consume files if a done file exists.
-     */
-    public void setDoneFileName(String doneFileName) {
-        this.doneFileName = doneFileName;
-    }
-
-    public String getBucketName() {
-        return bucketName;
-    }
-
-    /**
-     * Name of the bucket. The bucket will be created if it doesn't already exists.
-     */
-    public void setBucketName(String bucketName) {
-        this.bucketName = bucketName;
-    }
-
-    public String getFileName() {
-        return fileName;
-    }
-
-    /**
-     * To get the object from the bucket with the given file name
-     */
-    public void setFileName(String fileName) {
-        this.fileName = fileName;
-    }
-
-    public String getRegion() {
-        return region;
-    }
-
-    /**
-     * The region in which S3 client needs to work. When using this parameter, the configuration will expect the
-     * capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name()
-     */
-    public void setRegion(String region) {
-        this.region = region;
-    }
-
-    /**
-     * If it is true, the exchange body will be set to a stream to the contents of the file. If false, the headers will
-     * be set with the S3 object metadata, but the body will be null. This option is strongly related to autocloseBody
-     * option. In case of setting includeBody to true and autocloseBody to false, it will be up to the caller to close
-     * the S3Object stream. Setting autocloseBody to true, will close the S3Object stream automatically.
-     */
-    public void setIncludeBody(boolean includeBody) {
-        this.includeBody = includeBody;
-    }
-
-    public boolean isIncludeBody() {
-        return includeBody;
-    }
-
-    public boolean isDeleteAfterRead() {
-        return deleteAfterRead;
-    }
-
-    /**
-     * Delete objects from S3 after they have been retrieved. The delete is only performed if the Exchange is committed.
-     * If a rollback occurs, the object is not deleted.
-     * <p/>
-     * If this option is false, then the same objects will be retrieve over and over again on the polls. Therefore you
-     * need to use the Idempotent Consumer EIP in the route to filter out duplicates. You can filter using the
-     * {@link S3Constants#BUCKET_NAME} and {@link S3Constants#KEY} headers, or only the {@link S3Constants#KEY} header.
-     */
-    public void setDeleteAfterRead(boolean deleteAfterRead) {
-        this.deleteAfterRead = deleteAfterRead;
-    }
-
-    public boolean isDeleteAfterWrite() {
-        return deleteAfterWrite;
-    }
-
-    /**
-     * Delete file object after the S3 file has been uploaded
-     */
-    public void setDeleteAfterWrite(boolean deleteAfterWrite) {
-        this.deleteAfterWrite = deleteAfterWrite;
-    }
-
-    public String getPolicy() {
-        return policy;
-    }
-
-    /**
-     * The policy for this queue to set in the `com.amazonaws.services.s3.AmazonS3#setBucketPolicy()` method.
-     */
-    public void setPolicy(String policy) {
-        this.policy = policy;
-    }
-
-    public String getStorageClass() {
-        return storageClass;
-    }
-
-    /**
-     * The storage class to set in the `com.amazonaws.services.s3.model.PutObjectRequest` request.
-     */
-    public void setStorageClass(String storageClass) {
-        this.storageClass = storageClass;
-    }
-
-    public String getServerSideEncryption() {
-        return serverSideEncryption;
-    }
-
-    /**
-     * Sets the server-side encryption algorithm when encrypting the object using AWS-managed keys. For example use
-     * <tt>AES256</tt>.
-     */
-    public void setServerSideEncryption(String serverSideEncryption) {
-        this.serverSideEncryption = serverSideEncryption;
-    }
-
-    public Protocol getProxyProtocol() {
-        return proxyProtocol;
-    }
-
-    /**
-     * To define a proxy protocol when instantiating the S3 client
-     */
-    public void setProxyProtocol(Protocol proxyProtocol) {
-        this.proxyProtocol = proxyProtocol;
-    }
-
-    public String getProxyHost() {
-        return proxyHost;
-    }
-
-    /**
-     * To define a proxy host when instantiating the S3 client
-     */
-    public void setProxyHost(String proxyHost) {
-        this.proxyHost = proxyHost;
-    }
-
-    public Integer getProxyPort() {
-        return proxyPort;
-    }
-
-    /**
-     * Specify a proxy port to be used inside the client definition.
-     */
-    public void setProxyPort(Integer proxyPort) {
-        this.proxyPort = proxyPort;
-    }
-
-    /**
-     * Whether or not the S3 client should use path style access
-     */
-    public void setPathStyleAccess(final boolean pathStyleAccess) {
-        this.pathStyleAccess = pathStyleAccess;
-    }
-
-    public boolean isPathStyleAccess() {
-        return pathStyleAccess;
-    }
-
-    public S3Operations getOperation() {
-        return operation;
-    }
-
-    /**
-     * The operation to do in case the user don't want to do only an upload
-     */
-    public void setOperation(S3Operations operation) {
-        this.operation = operation;
-    }
-
-    public boolean isAutocloseBody() {
-        return autocloseBody;
-    }
-
-    /**
-     * If this option is true and includeBody is true, then the S3Object.close() method will be called on exchange
-     * completion. This option is strongly related to includeBody option. In case of setting includeBody to true and
-     * autocloseBody to false, it will be up to the caller to close the S3Object stream. Setting autocloseBody to true,
-     * will close the S3Object stream automatically.
-     */
-    public void setAutocloseBody(boolean autocloseBody) {
-        this.autocloseBody = autocloseBody;
-    }
-
-    public EncryptionMaterials getEncryptionMaterials() {
-        return encryptionMaterials;
-    }
-
-    /**
-     * The encryption materials to use in case of Symmetric/Asymmetric client usage
-     */
-    public void setEncryptionMaterials(EncryptionMaterials encryptionMaterials) {
-        this.encryptionMaterials = encryptionMaterials;
-    }
-
-    public boolean isUseEncryption() {
-        return useEncryption;
-    }
-
-    /**
-     * Define if encryption must be used or not
-     */
-    public void setUseEncryption(boolean useEncryption) {
-        this.useEncryption = useEncryption;
-    }
-
-    public boolean isUseAwsKMS() {
-        return useAwsKMS;
-    }
-
-    /**
-     * Define if KMS must be used or not
-     */
-    public void setUseAwsKMS(boolean useAwsKMS) {
-        this.useAwsKMS = useAwsKMS;
-    }
-
-    public String getAwsKMSKeyId() {
-        return awsKMSKeyId;
-    }
-
-    /**
-     * Define the id of KMS key to use in case KMS is enabled
-     */
-    public void setAwsKMSKeyId(String awsKMSKeyId) {
-        this.awsKMSKeyId = awsKMSKeyId;
-    }
-
-    public boolean isChunkedEncodingDisabled() {
-        return chunkedEncodingDisabled;
-    }
-
-    /**
-     * Define if disabled Chunked Encoding is true or false
-     */
-    public void setChunkedEncodingDisabled(boolean chunkedEncodingDisabled) {
-        this.chunkedEncodingDisabled = chunkedEncodingDisabled;
-    }
-
-    public boolean isAccelerateModeEnabled() {
-        return accelerateModeEnabled;
-    }
-
-    /**
-     * Define if Accelerate Mode enabled is true or false
-     */
-    public void setAccelerateModeEnabled(boolean accelerateModeEnabled) {
-        this.accelerateModeEnabled = accelerateModeEnabled;
-    }
-
-    public boolean isDualstackEnabled() {
-        return dualstackEnabled;
-    }
-
-    /**
-     * Define if Dualstack enabled is true or false
-     */
-    public void setDualstackEnabled(boolean dualstackEnabled) {
-        this.dualstackEnabled = dualstackEnabled;
-    }
-
-    public boolean isPayloadSigningEnabled() {
-        return payloadSigningEnabled;
-    }
-
-    /**
-     * Define if Payload Signing enabled is true or false
-     */
-    public void setPayloadSigningEnabled(boolean payloadSigningEnabled) {
-        this.payloadSigningEnabled = payloadSigningEnabled;
-    }
-
-    public boolean isForceGlobalBucketAccessEnabled() {
-        return forceGlobalBucketAccessEnabled;
-    }
-
-    /**
-     * Define if Force Global Bucket Access enabled is true or false
-     */
-    public void setForceGlobalBucketAccessEnabled(boolean forceGlobalBucketAccessEnabled) {
-        this.forceGlobalBucketAccessEnabled = forceGlobalBucketAccessEnabled;
-    }
-
-    /**
-     * Set whether the S3 client should expect to load credentials on an EC2 instance or to expect static credentials to
-     * be passed in.
-     */
-    public void setUseIAMCredentials(Boolean useIAMCredentials) {
-        this.useIAMCredentials = useIAMCredentials;
-    }
-
-    public Boolean isUseIAMCredentials() {
-        return useIAMCredentials;
-    }
-
-    public boolean isAutoCreateBucket() {
-        return autoCreateBucket;
-    }
-
-    /**
-     * Setting the autocreation of the bucket
-     */
-    public void setAutoCreateBucket(boolean autoCreateBucket) {
-        this.autoCreateBucket = autoCreateBucket;
-    }
-
-    public String getKeyName() {
-        return keyName;
-    }
-
-    /**
-     * Setting the key name for an element in the bucket through endpoint parameter
-     */
-    public void setKeyName(String keyName) {
-        this.keyName = keyName;
-    }
-
-    public boolean isAutoDiscoverClient() {
-        return autoDiscoverClient;
-    }
-
-    /**
-     * Setting the autoDiscoverClient mechanism, if true, the component will look for a client instance in the registry
-     * automatically otherwise it will skip that checking.
-     */
-    public void setAutoDiscoverClient(boolean autoDiscoverClient) {
-        this.autoDiscoverClient = autoDiscoverClient;
-    }
-
-    public boolean hasProxyConfiguration() {
-        return ObjectHelper.isNotEmpty(getProxyHost()) && ObjectHelper.isNotEmpty(getProxyPort());
-    }
-
-    // *************************************************
-    //
-    // *************************************************
-
-    public S3Configuration copy() {
-        try {
-            return (S3Configuration) super.clone();
-        } catch (CloneNotSupportedException e) {
-            throw new RuntimeCamelException(e);
-        }
-    }
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Constants.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Constants.java
deleted file mode 100644
index 5f38259..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Constants.java
+++ /dev/null
@@ -1,50 +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.aws.s3;
-
-/**
- * Constants used in Camel AWS S3 module
- */
-public interface S3Constants {
-
-    String BUCKET_NAME = "CamelAwsS3BucketName";
-    String BUCKET_DESTINATION_NAME = "CamelAwsS3BucketDestinationName";
-    String CACHE_CONTROL = "CamelAwsS3ContentControl";
-    String CONTENT_DISPOSITION = "CamelAwsS3ContentDisposition";
-    String CONTENT_ENCODING = "CamelAwsS3ContentEncoding";
-    String CONTENT_LENGTH = "CamelAwsS3ContentLength";
-    String CONTENT_MD5 = "CamelAwsS3ContentMD5";
-    String CONTENT_TYPE = "CamelAwsS3ContentType";
-    String DOWNLOAD_LINK_EXPIRATION = "CamelAwsS3DownloadLinkExpiration";
-    String DOWNLOAD_LINK = "CamelAwsS3DownloadLink";
-    String E_TAG = "CamelAwsS3ETag";
-    String KEY = "CamelAwsS3Key";
-    String DESTINATION_KEY = "CamelAwsS3DestinationKey";
-    String LAST_MODIFIED = "CamelAwsS3LastModified";
-    String STORAGE_CLASS = "CamelAwsS3StorageClass";
-    String VERSION_ID = "CamelAwsS3VersionId";
-    String CANNED_ACL = "CamelAwsS3CannedAcl";
-    String ACL = "CamelAwsS3Acl";
-    String USER_METADATA = "CamelAwsS3UserMetadata";
-    String S3_HEADERS = "CamelAwsS3Headers";
-    String S3_OPERATION = "CamelAwsS3Operation";
-    String SERVER_SIDE_ENCRYPTION = "CamelAwsS3ServerSideEncryption";
-    String EXPIRATION_TIME = "CamelAwsS3ExpirationTime";
-    String REPLICATION_STATUS = "CamelAwsS3ReplicationStatus";
-    String RANGE_START = "CamelAwsS3RangeStart";
-    String RANGE_END = "CamelAwsS3RangeEnd";
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java
deleted file mode 100644
index fbbefd5..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java
+++ /dev/null
@@ -1,268 +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.aws.s3;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Queue;
-
-import com.amazonaws.AmazonClientException;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.model.AmazonS3Exception;
-import com.amazonaws.services.s3.model.GetObjectRequest;
-import com.amazonaws.services.s3.model.ListObjectsRequest;
-import com.amazonaws.services.s3.model.ObjectListing;
-import com.amazonaws.services.s3.model.S3Object;
-import com.amazonaws.services.s3.model.S3ObjectSummary;
-import org.apache.camel.AsyncCallback;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExtendedExchange;
-import org.apache.camel.NoFactoryAvailableException;
-import org.apache.camel.Processor;
-import org.apache.camel.spi.Synchronization;
-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.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A Consumer of messages from the Amazon Web Service Simple Storage Service <a href="http://aws.amazon.com/s3/">AWS
- * S3</a>
- */
-public class S3Consumer extends ScheduledBatchPollingConsumer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(S3Consumer.class);
-
-    private String marker;
-    private transient String s3ConsumerToString;
-
-    public S3Consumer(S3Endpoint endpoint, Processor processor) throws NoFactoryAvailableException {
-        super(endpoint, processor);
-    }
-
-    @Override
-    protected int poll() throws Exception {
-        // must reset for each poll
-        shutdownRunningTask = null;
-        pendingExchanges = 0;
-
-        String fileName = getConfiguration().getFileName();
-        String bucketName = getConfiguration().getBucketName();
-        String doneFileName = getConfiguration().getDoneFileName();
-        Queue<Exchange> exchanges;
-
-        if (!doneFileCheckPasses(bucketName, doneFileName)) {
-            exchanges = new LinkedList<>();
-        } else if (fileName != null) {
-            LOG.trace("Getting object in bucket [{}] with file name [{}]...", bucketName, fileName);
-
-            S3Object s3Object = getAmazonS3Client().getObject(new GetObjectRequest(bucketName, fileName));
-            exchanges = createExchanges(s3Object);
-        } else {
-            LOG.trace("Queueing objects in bucket [{}]...", bucketName);
-
-            ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
-            listObjectsRequest.setBucketName(bucketName);
-            listObjectsRequest.setPrefix(getConfiguration().getPrefix());
-            listObjectsRequest.setDelimiter(getConfiguration().getDelimiter());
-
-            if (maxMessagesPerPoll > 0) {
-                listObjectsRequest.setMaxKeys(maxMessagesPerPoll);
-            }
-            // if there was a marker from previous poll then use that to
-            // continue from where we left last time
-            if (marker != null) {
-                LOG.trace("Resuming from marker: {}", marker);
-                listObjectsRequest.setMarker(marker);
-            }
-
-            ObjectListing listObjects = getAmazonS3Client().listObjects(listObjectsRequest);
-            if (listObjects.isTruncated()) {
-                marker = listObjects.getNextMarker();
-                LOG.trace("Returned list is truncated, so setting next marker: {}", marker);
-            } else {
-                // no more data so clear marker
-                marker = null;
-            }
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Found {} objects in bucket [{}]...", listObjects.getObjectSummaries().size(), bucketName);
-            }
-
-            exchanges = createExchanges(listObjects.getObjectSummaries());
-        }
-        return processBatch(CastUtils.cast(exchanges));
-    }
-
-    private boolean doneFileCheckPasses(String bucketName, String doneFileName) {
-        if (doneFileName == null) {
-            return true;
-        } else {
-            return checkFileExists(bucketName, doneFileName);
-        }
-    }
-
-    private boolean checkFileExists(String bucketName, String doneFileName) {
-        try {
-            getAmazonS3Client().getObjectMetadata(bucketName, doneFileName);
-            return true;
-        } catch (AmazonS3Exception e) {
-            if (e.getStatusCode() == 404) {
-                return false;
-            }
-            throw e;
-        }
-    }
-
-    protected Queue<Exchange> createExchanges(S3Object s3Object) {
-        Queue<Exchange> answer = new LinkedList<>();
-        Exchange exchange = getEndpoint().createExchange(s3Object);
-        answer.add(exchange);
-        return answer;
-    }
-
-    protected Queue<Exchange> createExchanges(List<S3ObjectSummary> s3ObjectSummaries) {
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Received {} messages in this poll", s3ObjectSummaries.size());
-        }
-
-        Collection<S3Object> s3Objects = new ArrayList<>();
-        Queue<Exchange> answer = new LinkedList<>();
-        try {
-            for (S3ObjectSummary s3ObjectSummary : s3ObjectSummaries) {
-                S3Object s3Object = getAmazonS3Client().getObject(s3ObjectSummary.getBucketName(), s3ObjectSummary.getKey());
-                s3Objects.add(s3Object);
-
-                Exchange exchange = getEndpoint().createExchange(s3Object);
-                answer.add(exchange);
-            }
-        } catch (Exception e) {
-            LOG.warn("Error getting S3Object due: {}", e.getMessage(), e);
-            // ensure all previous gathered s3 objects are closed
-            // if there was an exception creating the exchanges in this batch
-            s3Objects.forEach(IOHelper::close);
-            throw e;
-        }
-
-        return answer;
-    }
-
-    @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)
-            final Exchange exchange = ObjectHelper.cast(Exchange.class, exchanges.poll());
-            // add current index and total as properties
-            exchange.setProperty(Exchange.BATCH_INDEX, index);
-            exchange.setProperty(Exchange.BATCH_SIZE, total);
-            exchange.setProperty(Exchange.BATCH_COMPLETE, index == total - 1);
-
-            // update pending number of exchanges
-            pendingExchanges = total - index - 1;
-
-            // add on completion to handle after work when the exchange is done
-            exchange.adapt(ExtendedExchange.class).addOnCompletion(new Synchronization() {
-                public void onComplete(Exchange exchange) {
-                    processCommit(exchange);
-                }
-
-                public void onFailure(Exchange exchange) {
-                    processRollback(exchange);
-                }
-
-                @Override
-                public String toString() {
-                    return "S3ConsumerOnCompletion";
-                }
-            });
-
-            LOG.trace("Processing exchange [{}]...", exchange);
-            getAsyncProcessor().process(exchange, new AsyncCallback() {
-                @Override
-                public void done(boolean doneSync) {
-                    LOG.trace("Processing exchange [{}] done.", exchange);
-                }
-            });
-        }
-
-        return total;
-    }
-
-    /**
-     * Strategy to delete the message after being processed.
-     *
-     * @param exchange the exchange
-     */
-    protected void processCommit(Exchange exchange) {
-        try {
-            if (getConfiguration().isDeleteAfterRead()) {
-                String bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
-                String key = exchange.getIn().getHeader(S3Constants.KEY, String.class);
-
-                LOG.trace("Deleting object from bucket {} with key {}...", bucketName, key);
-
-                getAmazonS3Client().deleteObject(bucketName, key);
-
-                LOG.trace("Deleted object from bucket {} with key {}...", bucketName, key);
-            }
-        } catch (AmazonClientException e) {
-            getExceptionHandler().handleException("Error occurred during deleting object. This exception is ignored.", exchange,
-                    e);
-        }
-    }
-
-    /**
-     * Strategy when processing the exchange failed.
-     *
-     * @param exchange the exchange
-     */
-    protected void processRollback(Exchange exchange) {
-        Exception cause = exchange.getException();
-        if (cause != null) {
-            LOG.warn("Exchange failed, so rolling back message status: {}", exchange, cause);
-        } else {
-            LOG.warn("Exchange failed, so rolling back message status: {}", exchange);
-        }
-    }
-
-    protected S3Configuration getConfiguration() {
-        return getEndpoint().getConfiguration();
-    }
-
-    protected AmazonS3 getAmazonS3Client() {
-        return getEndpoint().getS3Client();
-    }
-
-    @Override
-    public S3Endpoint getEndpoint() {
-        return (S3Endpoint) super.getEndpoint();
-    }
-
-    @Override
-    public String toString() {
-        if (s3ConsumerToString == null) {
-            s3ConsumerToString = "S3Consumer[" + URISupport.sanitizeUri(getEndpoint().getEndpointUri()) + "]";
-        }
-        return s3ConsumerToString;
-    }
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Endpoint.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Endpoint.java
deleted file mode 100644
index c034ca1..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Endpoint.java
+++ /dev/null
@@ -1,248 +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.aws.s3;
-
-import com.amazonaws.AmazonServiceException;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.model.CreateBucketRequest;
-import com.amazonaws.services.s3.model.ListObjectsRequest;
-import com.amazonaws.services.s3.model.ObjectMetadata;
-import com.amazonaws.services.s3.model.S3Object;
-import org.apache.camel.Category;
-import org.apache.camel.Component;
-import org.apache.camel.Consumer;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.ExtendedExchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.component.aws.s3.client.S3ClientFactory;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.ScheduledPollEndpoint;
-import org.apache.camel.support.SynchronizationAdapter;
-import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Store and retrieve objects from AWS S3 Storage Service.
- */
-@UriEndpoint(firstVersion = "2.8.0", scheme = "aws-s3", title = "AWS S3 Storage Service", syntax = "aws-s3://bucketNameOrArn",
-             category = { Category.CLOUD, Category.FILE })
-public class S3Endpoint extends ScheduledPollEndpoint {
-
-    private static final Logger LOG = LoggerFactory.getLogger(S3Endpoint.class);
-
-    private AmazonS3 s3Client;
-
-    @UriPath(description = "Bucket name or ARN")
-    @Metadata(required = true)
-    private String bucketNameOrArn; // to support component docs
-    @UriParam
-    private S3Configuration configuration;
-    @UriParam(label = "consumer", defaultValue = "10")
-    private int maxMessagesPerPoll = 10;
-    @UriParam(label = "consumer", defaultValue = "60")
-    private int maxConnections = 50 + maxMessagesPerPoll;
-
-    public S3Endpoint(String uri, Component comp, S3Configuration configuration) {
-        super(uri, comp);
-        this.configuration = configuration;
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        S3Consumer s3Consumer = new S3Consumer(this, processor);
-        configureConsumer(s3Consumer);
-        s3Consumer.setMaxMessagesPerPoll(maxMessagesPerPoll);
-        return s3Consumer;
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        return new S3Producer(this);
-    }
-
-    @Override
-    public void doStart() throws Exception {
-        super.doStart();
-
-        s3Client = configuration.getAmazonS3Client() != null
-                ? configuration.getAmazonS3Client()
-                : S3ClientFactory.getAWSS3Client(configuration, getMaxConnections()).getS3Client();
-
-        String fileName = getConfiguration().getFileName();
-
-        if (fileName != null) {
-            LOG.trace("File name [{}] requested, so skipping bucket check...", fileName);
-            return;
-        }
-
-        String bucketName = getConfiguration().getBucketName();
-        LOG.trace("Querying whether bucket [{}] already exists...", bucketName);
-
-        String prefix = getConfiguration().getPrefix();
-
-        try {
-            s3Client.listObjects(new ListObjectsRequest(bucketName, prefix, null, null, maxMessagesPerPoll));
-            LOG.trace("Bucket [{}] already exists", bucketName);
-            return;
-        } catch (AmazonServiceException ase) {
-            /* 404 means the bucket doesn't exist */
-            if (ase.getStatusCode() != 404) {
-                throw ase;
-            }
-        }
-
-        LOG.trace("Bucket [{}] doesn't exist yet", bucketName);
-
-        if (getConfiguration().isAutoCreateBucket()) {
-            // creates the new bucket because it doesn't exist yet
-            CreateBucketRequest createBucketRequest = new CreateBucketRequest(getConfiguration().getBucketName());
-
-            LOG.trace("Creating bucket [{}] in region [{}] with request [{}]...", configuration.getBucketName(),
-                    configuration.getRegion(), createBucketRequest);
-
-            s3Client.createBucket(createBucketRequest);
-
-            LOG.trace("Bucket created");
-        }
-
-        if (configuration.getPolicy() != null) {
-            LOG.trace("Updating bucket [{}] with policy [{}]", bucketName, configuration.getPolicy());
-
-            s3Client.setBucketPolicy(bucketName, configuration.getPolicy());
-
-            LOG.trace("Bucket policy updated");
-        }
-    }
-
-    @Override
-    public void doStop() throws Exception {
-        if (ObjectHelper.isEmpty(configuration.getAmazonS3Client())) {
-            if (s3Client != null) {
-                s3Client.shutdown();
-            }
-        }
-        super.doStop();
-    }
-
-    public Exchange createExchange(S3Object s3Object) {
-        return createExchange(getExchangePattern(), s3Object);
-    }
-
-    public Exchange createExchange(ExchangePattern pattern, S3Object s3Object) {
-        LOG.trace("Getting object with key [{}] from bucket [{}]...", s3Object.getKey(), s3Object.getBucketName());
-
-        ObjectMetadata objectMetadata = s3Object.getObjectMetadata();
-
-        LOG.trace("Got object [{}]", s3Object);
-
-        Exchange exchange = super.createExchange(pattern);
-        Message message = exchange.getIn();
-
-        if (configuration.isIncludeBody()) {
-            message.setBody(s3Object.getObjectContent());
-        } else {
-            message.setBody(null);
-        }
-
-        message.setHeader(S3Constants.KEY, s3Object.getKey());
-        message.setHeader(S3Constants.BUCKET_NAME, s3Object.getBucketName());
-        message.setHeader(S3Constants.E_TAG, objectMetadata.getETag());
-        message.setHeader(S3Constants.LAST_MODIFIED, objectMetadata.getLastModified());
-        message.setHeader(S3Constants.VERSION_ID, objectMetadata.getVersionId());
-        message.setHeader(S3Constants.CONTENT_TYPE, objectMetadata.getContentType());
-        message.setHeader(S3Constants.CONTENT_MD5, objectMetadata.getContentMD5());
-        message.setHeader(S3Constants.CONTENT_LENGTH, objectMetadata.getContentLength());
-        message.setHeader(S3Constants.CONTENT_ENCODING, objectMetadata.getContentEncoding());
-        message.setHeader(S3Constants.CONTENT_DISPOSITION, objectMetadata.getContentDisposition());
-        message.setHeader(S3Constants.CACHE_CONTROL, objectMetadata.getCacheControl());
-        message.setHeader(S3Constants.S3_HEADERS, objectMetadata.getRawMetadata());
-        message.setHeader(S3Constants.SERVER_SIDE_ENCRYPTION, objectMetadata.getSSEAlgorithm());
-        message.setHeader(S3Constants.USER_METADATA, objectMetadata.getUserMetadata());
-        message.setHeader(S3Constants.EXPIRATION_TIME, objectMetadata.getExpirationTime());
-        message.setHeader(S3Constants.REPLICATION_STATUS, objectMetadata.getReplicationStatus());
-        message.setHeader(S3Constants.STORAGE_CLASS, objectMetadata.getStorageClass());
-
-        /**
-         * If includeBody != true, it is safe to close the object here. If includeBody == true, the caller is
-         * responsible for closing the stream and object once the body has been fully consumed. As of 2.17, the consumer
-         * does not close the stream or object on commit.
-         */
-        if (!configuration.isIncludeBody()) {
-            IOHelper.close(s3Object);
-        } else {
-            if (configuration.isAutocloseBody()) {
-                exchange.adapt(ExtendedExchange.class).addOnCompletion(new SynchronizationAdapter() {
-                    @Override
-                    public void onDone(Exchange exchange) {
-                        IOHelper.close(s3Object);
-                    }
-                });
-            }
-        }
-
-        return exchange;
-    }
-
-    public S3Configuration getConfiguration() {
-        return configuration;
-    }
-
-    public void setConfiguration(S3Configuration configuration) {
-        this.configuration = configuration;
-    }
-
-    public void setS3Client(AmazonS3 s3Client) {
-        this.s3Client = s3Client;
-    }
-
-    public AmazonS3 getS3Client() {
-        return s3Client;
-    }
-
-    public int getMaxMessagesPerPoll() {
-        return maxMessagesPerPoll;
-    }
-
-    /**
-     * Gets the maximum number of messages as a limit to poll at each polling.
-     * <p/>
-     * Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a
-     * negative number to set it as unlimited.
-     */
-    public void setMaxMessagesPerPoll(int maxMessagesPerPoll) {
-        this.maxMessagesPerPoll = maxMessagesPerPoll;
-    }
-
-    public int getMaxConnections() {
-        return maxConnections;
-    }
-
-    /**
-     * Set the maxConnections parameter in the S3 client configuration
-     */
-    public void setMaxConnections(int maxConnections) {
-        this.maxConnections = maxConnections;
-    }
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Operations.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Operations.java
deleted file mode 100644
index 2bf5c96..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Operations.java
+++ /dev/null
@@ -1,29 +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.aws.s3;
-
-public enum S3Operations {
-
-    copyObject,
-    listObjects,
-    deleteObject,
-    deleteBucket,
-    listBuckets,
-    downloadLink,
-    getObject,
-    getObjectRange
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java
deleted file mode 100644
index c187e1f..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java
+++ /dev/null
@@ -1,580 +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.aws.s3;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import com.amazonaws.HttpMethod;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.model.AbortMultipartUploadRequest;
-import com.amazonaws.services.s3.model.AccessControlList;
-import com.amazonaws.services.s3.model.Bucket;
-import com.amazonaws.services.s3.model.CannedAccessControlList;
-import com.amazonaws.services.s3.model.CompleteMultipartUploadRequest;
-import com.amazonaws.services.s3.model.CompleteMultipartUploadResult;
-import com.amazonaws.services.s3.model.CopyObjectRequest;
-import com.amazonaws.services.s3.model.CopyObjectResult;
-import com.amazonaws.services.s3.model.DeleteBucketRequest;
-import com.amazonaws.services.s3.model.DeleteObjectRequest;
-import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
-import com.amazonaws.services.s3.model.GetObjectRequest;
-import com.amazonaws.services.s3.model.InitiateMultipartUploadRequest;
-import com.amazonaws.services.s3.model.InitiateMultipartUploadResult;
-import com.amazonaws.services.s3.model.ObjectListing;
-import com.amazonaws.services.s3.model.ObjectMetadata;
-import com.amazonaws.services.s3.model.PartETag;
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import com.amazonaws.services.s3.model.PutObjectResult;
-import com.amazonaws.services.s3.model.S3Object;
-import com.amazonaws.services.s3.model.SSEAwsKeyManagementParams;
-import com.amazonaws.services.s3.model.StorageClass;
-import com.amazonaws.services.s3.model.UploadPartRequest;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.WrappedFile;
-import org.apache.camel.support.DefaultProducer;
-import org.apache.camel.util.CastUtils;
-import org.apache.camel.util.FileUtil;
-import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.URISupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A Producer which sends messages to the Amazon Web Service Simple Storage Service
- * <a href="http://aws.amazon.com/s3/">AWS S3</a>
- */
-public class S3Producer extends DefaultProducer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(S3Producer.class);
-
-    private transient String s3ProducerToString;
-
-    public S3Producer(final Endpoint endpoint) {
-        super(endpoint);
-    }
-
-    @Override
-    public void process(final Exchange exchange) throws Exception {
-        S3Operations operation = determineOperation(exchange);
-        if (ObjectHelper.isEmpty(operation)) {
-            if (getConfiguration().isMultiPartUpload()) {
-                processMultiPart(exchange);
-            } else {
-                processSingleOp(exchange);
-            }
-        } else {
-            switch (operation) {
-                case copyObject:
-                    copyObject(getEndpoint().getS3Client(), exchange);
-                    break;
-                case deleteObject:
-                    deleteObject(getEndpoint().getS3Client(), exchange);
-                    break;
-                case listBuckets:
-                    listBuckets(getEndpoint().getS3Client(), exchange);
-                    break;
-                case deleteBucket:
-                    deleteBucket(getEndpoint().getS3Client(), exchange);
-                    break;
-                case downloadLink:
-                    createDownloadLink(getEndpoint().getS3Client(), exchange);
-                    break;
-                case listObjects:
-                    listObjects(getEndpoint().getS3Client(), exchange);
-                    break;
-                case getObject:
-                    getObject(getEndpoint().getS3Client(), exchange);
-                    break;
-                case getObjectRange:
-                    getObjectRange(getEndpoint().getS3Client(), exchange);
-                    break;
-                default:
-                    throw new IllegalArgumentException("Unsupported operation");
-            }
-        }
-    }
-
-    public void processMultiPart(final Exchange exchange) throws Exception {
-        File filePayload = null;
-        Object obj = exchange.getIn().getMandatoryBody();
-        // Need to check if the message body is WrappedFile
-        if (obj instanceof WrappedFile) {
-            obj = ((WrappedFile<?>) obj).getFile();
-        }
-        if (obj instanceof File) {
-            filePayload = (File) obj;
-        } else {
-            throw new IllegalArgumentException("aws-s3: MultiPart upload requires a File input.");
-        }
-
-        ObjectMetadata objectMetadata = determineMetadata(exchange);
-        if (objectMetadata.getContentLength() == 0) {
-            objectMetadata.setContentLength(filePayload.length());
-        }
-
-        final String keyName = determineKey(exchange);
-        final InitiateMultipartUploadRequest initRequest
-                = new InitiateMultipartUploadRequest(getConfiguration().getBucketName(), keyName, objectMetadata);
-
-        String storageClass = determineStorageClass(exchange);
-        if (storageClass != null) {
-            initRequest.setStorageClass(StorageClass.fromValue(storageClass));
-        }
-
-        String cannedAcl = exchange.getIn().getHeader(S3Constants.CANNED_ACL, String.class);
-        if (cannedAcl != null) {
-            CannedAccessControlList objectAcl = CannedAccessControlList.valueOf(cannedAcl);
-            initRequest.setCannedACL(objectAcl);
-        }
-
-        AccessControlList acl = exchange.getIn().getHeader(S3Constants.ACL, AccessControlList.class);
-        if (acl != null) {
-            // note: if cannedacl and acl are both specified the last one will
-            // be used. refer to
-            // PutObjectRequest#setAccessControlList for more details
-            initRequest.setAccessControlList(acl);
-        }
-
-        if (getConfiguration().isUseAwsKMS()) {
-            SSEAwsKeyManagementParams keyManagementParams;
-            if (ObjectHelper.isNotEmpty(getConfiguration().getAwsKMSKeyId())) {
-                keyManagementParams = new SSEAwsKeyManagementParams(getConfiguration().getAwsKMSKeyId());
-            } else {
-                keyManagementParams = new SSEAwsKeyManagementParams();
-            }
-            initRequest.setSSEAwsKeyManagementParams(keyManagementParams);
-        }
-
-        LOG.trace("Initiating multipart upload [{}] from exchange [{}]...", initRequest, exchange);
-
-        final InitiateMultipartUploadResult initResponse = getEndpoint().getS3Client().initiateMultipartUpload(initRequest);
-        final long contentLength = objectMetadata.getContentLength();
-        final List<PartETag> partETags = new ArrayList<>();
-        long partSize = getConfiguration().getPartSize();
-        CompleteMultipartUploadResult uploadResult = null;
-
-        long filePosition = 0;
-
-        try {
-            for (int part = 1; filePosition < contentLength; part++) {
-                partSize = Math.min(partSize, contentLength - filePosition);
-
-                UploadPartRequest uploadRequest
-                        = new UploadPartRequest().withBucketName(getConfiguration().getBucketName()).withKey(keyName)
-                                .withUploadId(initResponse.getUploadId()).withPartNumber(part).withFileOffset(filePosition)
-                                .withFile(filePayload).withPartSize(partSize);
-
-                LOG.trace("Uploading part [{}] for {}", part, keyName);
-                partETags.add(getEndpoint().getS3Client().uploadPart(uploadRequest).getPartETag());
-
-                filePosition += partSize;
-            }
-            CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(
-                    getConfiguration().getBucketName(), keyName, initResponse.getUploadId(), partETags);
-
-            uploadResult = getEndpoint().getS3Client().completeMultipartUpload(compRequest);
-
-        } catch (Exception e) {
-            getEndpoint().getS3Client().abortMultipartUpload(
-                    new AbortMultipartUploadRequest(getConfiguration().getBucketName(), keyName, initResponse.getUploadId()));
-            throw e;
-        }
-
-        Message message = getMessageForResponse(exchange);
-        message.setHeader(S3Constants.E_TAG, uploadResult.getETag());
-        if (uploadResult.getVersionId() != null) {
-            message.setHeader(S3Constants.VERSION_ID, uploadResult.getVersionId());
-        }
-
-        if (getConfiguration().isDeleteAfterWrite()) {
-            FileUtil.deleteFile(filePayload);
-        }
-    }
-
-    public void processSingleOp(final Exchange exchange) throws Exception {
-
-        ObjectMetadata objectMetadata = determineMetadata(exchange);
-
-        File filePayload = null;
-        InputStream is = null;
-        ByteArrayOutputStream baos = null;
-        Object obj = exchange.getIn().getMandatoryBody();
-        PutObjectRequest putObjectRequest = null;
-        // Need to check if the message body is WrappedFile
-        if (obj instanceof WrappedFile) {
-            obj = ((WrappedFile<?>) obj).getFile();
-        }
-        if (obj instanceof File) {
-            filePayload = (File) obj;
-            is = new FileInputStream(filePayload);
-        } else {
-            is = exchange.getIn().getMandatoryBody(InputStream.class);
-            if (objectMetadata.getContentLength() == 0 && ObjectHelper.isEmpty(exchange.getProperty(Exchange.CONTENT_LENGTH))) {
-                LOG.debug("The content length is not defined. It needs to be determined by reading the data into memory");
-                baos = determineLengthInputStream(is);
-                objectMetadata.setContentLength(baos.size());
-                is = new ByteArrayInputStream(baos.toByteArray());
-            } else {
-                if (ObjectHelper.isNotEmpty(exchange.getProperty(Exchange.CONTENT_LENGTH))) {
-                    objectMetadata.setContentLength(Long.valueOf(exchange.getProperty(Exchange.CONTENT_LENGTH, String.class)));
-                }
-            }
-        }
-
-        final String bucketName = determineBucketName(exchange);
-        final String key = determineKey(exchange);
-        putObjectRequest = new PutObjectRequest(bucketName, key, is, objectMetadata);
-
-        String storageClass = determineStorageClass(exchange);
-        if (storageClass != null) {
-            putObjectRequest.setStorageClass(storageClass);
-        }
-
-        String cannedAcl = exchange.getIn().getHeader(S3Constants.CANNED_ACL, String.class);
-        if (cannedAcl != null) {
-            CannedAccessControlList objectAcl = CannedAccessControlList.valueOf(cannedAcl);
-            putObjectRequest.setCannedAcl(objectAcl);
-        }
-
-        AccessControlList acl = exchange.getIn().getHeader(S3Constants.ACL, AccessControlList.class);
-        if (acl != null) {
-            // note: if cannedacl and acl are both specified the last one will
-            // be used. refer to
-            // PutObjectRequest#setAccessControlList for more details
-            putObjectRequest.setAccessControlList(acl);
-        }
-
-        if (getConfiguration().isUseAwsKMS()) {
-            SSEAwsKeyManagementParams keyManagementParams;
-            if (ObjectHelper.isNotEmpty(getConfiguration().getAwsKMSKeyId())) {
-                keyManagementParams = new SSEAwsKeyManagementParams(getConfiguration().getAwsKMSKeyId());
-            } else {
-                keyManagementParams = new SSEAwsKeyManagementParams();
-            }
-            putObjectRequest.setSSEAwsKeyManagementParams(keyManagementParams);
-        }
-
-        LOG.trace("Put object [{}] from exchange [{}]...", putObjectRequest, exchange);
-
-        PutObjectResult putObjectResult = getEndpoint().getS3Client().putObject(putObjectRequest);
-
-        LOG.trace("Received result [{}]", putObjectResult);
-
-        Message message = getMessageForResponse(exchange);
-        message.setHeader(S3Constants.E_TAG, putObjectResult.getETag());
-        if (putObjectResult.getVersionId() != null) {
-            message.setHeader(S3Constants.VERSION_ID, putObjectResult.getVersionId());
-        }
-
-        // close streams
-        IOHelper.close(putObjectRequest.getInputStream());
-        IOHelper.close(is);
-
-        if (getConfiguration().isDeleteAfterWrite() && filePayload != null) {
-            FileUtil.deleteFile(filePayload);
-        }
-    }
-
-    private void copyObject(AmazonS3 s3Client, Exchange exchange) {
-        final String bucketName = determineBucketName(exchange);
-        final String sourceKey = determineKey(exchange);
-        final String destinationKey = exchange.getIn().getHeader(S3Constants.DESTINATION_KEY, String.class);
-        final String bucketNameDestination = exchange.getIn().getHeader(S3Constants.BUCKET_DESTINATION_NAME, String.class);
-        final String versionId = exchange.getIn().getHeader(S3Constants.VERSION_ID, String.class);
-
-        if (ObjectHelper.isEmpty(bucketNameDestination)) {
-            throw new IllegalArgumentException("Bucket Name Destination must be specified for copyObject Operation");
-        }
-        if (ObjectHelper.isEmpty(destinationKey)) {
-            throw new IllegalArgumentException("Destination Key must be specified for copyObject Operation");
-        }
-        CopyObjectRequest copyObjectRequest;
-        if (ObjectHelper.isEmpty(versionId)) {
-            copyObjectRequest = new CopyObjectRequest(bucketName, sourceKey, bucketNameDestination, destinationKey);
-        } else {
-            copyObjectRequest = new CopyObjectRequest(bucketName, sourceKey, versionId, bucketNameDestination, destinationKey);
-        }
-
-        if (getConfiguration().isUseAwsKMS()) {
-            SSEAwsKeyManagementParams keyManagementParams;
-            if (ObjectHelper.isNotEmpty(getConfiguration().getAwsKMSKeyId())) {
-                keyManagementParams = new SSEAwsKeyManagementParams(getConfiguration().getAwsKMSKeyId());
-            } else {
-                keyManagementParams = new SSEAwsKeyManagementParams();
-            }
-            copyObjectRequest.setSSEAwsKeyManagementParams(keyManagementParams);
-        }
-
-        CopyObjectResult copyObjectResult = s3Client.copyObject(copyObjectRequest);
-
-        Message message = getMessageForResponse(exchange);
-        message.setHeader(S3Constants.E_TAG, copyObjectResult.getETag());
-        if (copyObjectResult.getVersionId() != null) {
-            message.setHeader(S3Constants.VERSION_ID, copyObjectResult.getVersionId());
-        }
-    }
-
-    private void deleteObject(AmazonS3 s3Client, Exchange exchange) {
-        final String bucketName = determineBucketName(exchange);
-        final String sourceKey = determineKey(exchange);
-
-        DeleteObjectRequest deleteObjectRequest;
-        deleteObjectRequest = new DeleteObjectRequest(bucketName, sourceKey);
-        s3Client.deleteObject(deleteObjectRequest);
-
-        Message message = getMessageForResponse(exchange);
-        message.setBody(true);
-    }
-
-    private void listBuckets(AmazonS3 s3Client, Exchange exchange) {
-        List<Bucket> bucketsList = s3Client.listBuckets();
-
-        Message message = getMessageForResponse(exchange);
-        message.setBody(bucketsList);
-    }
-
-    private void deleteBucket(AmazonS3 s3Client, Exchange exchange) {
-        final String bucketName = determineBucketName(exchange);
-
-        DeleteBucketRequest deleteBucketRequest = new DeleteBucketRequest(bucketName);
-        s3Client.deleteBucket(deleteBucketRequest);
-    }
-
-    private void getObject(AmazonS3 s3Client, Exchange exchange) {
-        final String bucketName = determineBucketName(exchange);
-        final String sourceKey = determineKey(exchange);
-
-        GetObjectRequest req = new GetObjectRequest(bucketName, sourceKey);
-        S3Object res = s3Client.getObject(req);
-
-        Message message = getMessageForResponse(exchange);
-        message.setBody(res);
-    }
-
-    private void getObjectRange(AmazonS3 s3Client, Exchange exchange) {
-        final String bucketName = determineBucketName(exchange);
-        final String sourceKey = determineKey(exchange);
-        final String rangeStart = exchange.getIn().getHeader(S3Constants.RANGE_START, String.class);
-        final String rangeEnd = exchange.getIn().getHeader(S3Constants.RANGE_END, String.class);
-
-        if (ObjectHelper.isEmpty(rangeStart) || ObjectHelper.isEmpty(rangeEnd)) {
-            throw new IllegalArgumentException(
-                    "A Range start and range end header must be configured to perform a range get operation.");
-        }
-
-        GetObjectRequest req
-                = new GetObjectRequest(bucketName, sourceKey).withRange(Long.parseLong(rangeStart), Long.parseLong(rangeEnd));
-        S3Object res = s3Client.getObject(req);
-
-        Message message = getMessageForResponse(exchange);
-        message.setBody(res);
-    }
-
-    private void listObjects(AmazonS3 s3Client, Exchange exchange) {
-        final String bucketName = determineBucketName(exchange);
-
-        ObjectListing objectList = s3Client.listObjects(bucketName);
-
-        Message message = getMessageForResponse(exchange);
-        message.setBody(objectList);
-    }
-
-    private S3Operations determineOperation(Exchange exchange) {
-        S3Operations operation = exchange.getIn().getHeader(S3Constants.S3_OPERATION, S3Operations.class);
-        if (operation == null) {
-            operation = getConfiguration().getOperation();
-        }
-        return operation;
-    }
-
-    private ObjectMetadata determineMetadata(final Exchange exchange) {
-        ObjectMetadata objectMetadata = new ObjectMetadata();
-
-        Long contentLength = exchange.getIn().getHeader(S3Constants.CONTENT_LENGTH, Long.class);
-        if (contentLength != null) {
-            objectMetadata.setContentLength(contentLength);
-        }
-
-        String contentType = exchange.getIn().getHeader(S3Constants.CONTENT_TYPE, String.class);
-        if (contentType != null) {
-            objectMetadata.setContentType(contentType);
-        }
-
-        String cacheControl = exchange.getIn().getHeader(S3Constants.CACHE_CONTROL, String.class);
-        if (cacheControl != null) {
-            objectMetadata.setCacheControl(cacheControl);
-        }
-
-        String contentDisposition = exchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION, String.class);
-        if (contentDisposition != null) {
-            objectMetadata.setContentDisposition(contentDisposition);
-        }
-
-        String contentEncoding = exchange.getIn().getHeader(S3Constants.CONTENT_ENCODING, String.class);
-        if (contentEncoding != null) {
-            objectMetadata.setContentEncoding(contentEncoding);
-        }
-
-        String contentMD5 = exchange.getIn().getHeader(S3Constants.CONTENT_MD5, String.class);
-        if (contentMD5 != null) {
-            objectMetadata.setContentMD5(contentMD5);
-        }
-
-        Date lastModified = exchange.getIn().getHeader(S3Constants.LAST_MODIFIED, Date.class);
-        if (lastModified != null) {
-            objectMetadata.setLastModified(lastModified);
-        }
-
-        Map<String, String> userMetadata = CastUtils.cast(exchange.getIn().getHeader(S3Constants.USER_METADATA, Map.class));
-        if (userMetadata != null) {
-            objectMetadata.setUserMetadata(userMetadata);
-        }
-
-        Map<String, String> s3Headers = CastUtils.cast(exchange.getIn().getHeader(S3Constants.S3_HEADERS, Map.class));
-        if (s3Headers != null) {
-            for (Map.Entry<String, String> entry : s3Headers.entrySet()) {
-                objectMetadata.setHeader(entry.getKey(), entry.getValue());
-            }
-        }
-
-        String encryption = exchange.getIn().getHeader(S3Constants.SERVER_SIDE_ENCRYPTION,
-                getConfiguration().getServerSideEncryption(), String.class);
-        if (encryption != null) {
-            objectMetadata.setSSEAlgorithm(encryption);
-        }
-
-        return objectMetadata;
-    }
-
-    /**
-     * Reads the bucket name from the header of the given exchange. If not provided, it's read from the endpoint
-     * configuration.
-     *
-     * @param  exchange                 The exchange to read the header from.
-     * @return                          The bucket name.
-     * @throws IllegalArgumentException if the header could not be determined.
-     */
-    private String determineBucketName(final Exchange exchange) {
-        String bucketName = exchange.getIn().getHeader(S3Constants.BUCKET_NAME, String.class);
-
-        if (ObjectHelper.isEmpty(bucketName)) {
-            bucketName = getConfiguration().getBucketName();
-            LOG.trace("AWS S3 Bucket name header is missing, using default one [{}]", bucketName);
-        }
-
-        if (bucketName == null) {
-            throw new IllegalArgumentException("AWS S3 Bucket name header is missing or not configured.");
-        }
-
-        return bucketName;
-    }
-
-    private String determineKey(final Exchange exchange) {
-        String key = exchange.getIn().getHeader(S3Constants.KEY, String.class);
-        if (ObjectHelper.isEmpty(key)) {
-            key = getConfiguration().getKeyName();
-        }
-        if (key == null) {
-            throw new IllegalArgumentException("AWS S3 Key header missing.");
-        }
-        return key;
-    }
-
-    private String determineStorageClass(final Exchange exchange) {
-        String storageClass = exchange.getIn().getHeader(S3Constants.STORAGE_CLASS, String.class);
-        if (storageClass == null) {
-            storageClass = getConfiguration().getStorageClass();
-        }
-
-        return storageClass;
-    }
-
-    private ByteArrayOutputStream determineLengthInputStream(InputStream is) throws IOException {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        byte[] bytes = new byte[1024];
-        int count;
-        while ((count = is.read(bytes)) > 0) {
-            out.write(bytes, 0, count);
-        }
-        return out;
-    }
-
-    private void createDownloadLink(AmazonS3 s3Client, Exchange exchange) {
-        final String bucketName = determineBucketName(exchange);
-
-        String key = exchange.getIn().getHeader(S3Constants.KEY, String.class);
-        if (key == null) {
-            throw new IllegalArgumentException("AWS S3 Key header is missing.");
-        }
-
-        Date expiration = new Date();
-        long milliSeconds = expiration.getTime();
-
-        Long expirationMillis = exchange.getIn().getHeader(S3Constants.DOWNLOAD_LINK_EXPIRATION, Long.class);
-        if (expirationMillis != null) {
-            milliSeconds += expirationMillis;
-        } else {
-            milliSeconds += 1000 * 60 * 60; // Default: Add 1 hour.
-        }
-
-        expiration.setTime(milliSeconds);
-
-        GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, key);
-        generatePresignedUrlRequest.setMethod(HttpMethod.GET);
-        generatePresignedUrlRequest.setExpiration(expiration);
-
-        URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);
-
-        Message message = getMessageForResponse(exchange);
-        message.setHeader(S3Constants.DOWNLOAD_LINK, url.toString());
-    }
-
-    protected S3Configuration getConfiguration() {
-        return getEndpoint().getConfiguration();
-    }
-
-    @Override
-    public String toString() {
-        if (s3ProducerToString == null) {
-            s3ProducerToString = "S3Producer[" + URISupport.sanitizeUri(getEndpoint().getEndpointUri()) + "]";
-        }
-        return s3ProducerToString;
-    }
-
-    @Override
-    public S3Endpoint getEndpoint() {
-        return (S3Endpoint) super.getEndpoint();
-    }
-
-    public static Message getMessageForResponse(final Exchange exchange) {
-        return exchange.getMessage();
-    }
-
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/S3Client.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/S3Client.java
deleted file mode 100644
index 3b745b3..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/S3Client.java
+++ /dev/null
@@ -1,32 +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.aws.s3.client;
-
-import com.amazonaws.services.s3.AmazonS3;
-
-/**
- * Mange the required actions of an s3 client for either local or remote.
- */
-public interface S3Client {
-
-    /**
-     * Returns an s3 client after a factory method determines which one to return.
-     * 
-     * @return AmazonS3 AmazonS3
-     */
-    AmazonS3 getS3Client();
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/S3ClientFactory.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/S3ClientFactory.java
deleted file mode 100644
index b396d7b..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/S3ClientFactory.java
+++ /dev/null
@@ -1,46 +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.aws.s3.client;
-
-import org.apache.camel.component.aws.s3.S3Configuration;
-import org.apache.camel.component.aws.s3.client.impl.S3ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws.s3.client.impl.S3ClientStandardImpl;
-
-/**
- * Factory class to return the correct type of AWS S3 aws.
- */
-public final class S3ClientFactory {
-
-    private S3ClientFactory() {
-        // Prevent instantiation of this factory class.
-        throw new RuntimeException(
-                "Do not instantiate a Factory class! Refer to the class "
-                                   + "to learn how to properly use this factory implementation.");
-    }
-
-    /**
-     * Return the correct aws s3 client (based on remote vs local).
-     * 
-     * @param  maxConnections max connections
-     * @return                AWSS3Client
-     */
-    public static S3Client getAWSS3Client(S3Configuration configuration, int maxConnections) {
-        return Boolean.TRUE.equals(configuration.isUseIAMCredentials())
-                ? new S3ClientIAMOptimizedImpl(configuration, maxConnections)
-                : new S3ClientStandardImpl(configuration, maxConnections);
-    }
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/impl/S3ClientIAMOptimizedImpl.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/impl/S3ClientIAMOptimizedImpl.java
deleted file mode 100644
index 185aeb8..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/impl/S3ClientIAMOptimizedImpl.java
+++ /dev/null
@@ -1,110 +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.aws.s3.client.impl;
-
-import com.amazonaws.ClientConfiguration;
-import com.amazonaws.auth.InstanceProfileCredentialsProvider;
-import com.amazonaws.regions.Regions;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3ClientBuilder;
-import com.amazonaws.services.s3.AmazonS3EncryptionClientBuilder;
-import com.amazonaws.services.s3.model.StaticEncryptionMaterialsProvider;
-import org.apache.camel.component.aws.s3.S3Configuration;
-import org.apache.camel.component.aws.s3.client.S3Client;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Manage an AWS s3 client for all users to use (enabling temporary creds). This implementation is for remote instances
- * to manage the credentials on their own (eliminating credential rotations)
- */
-public class S3ClientIAMOptimizedImpl implements S3Client {
-    private static final Logger LOG = LoggerFactory.getLogger(S3ClientIAMOptimizedImpl.class);
-    private S3Configuration configuration;
-    private int maxConnections;
-
-    /**
-     * Constructor that uses the config file.
-     */
-    public S3ClientIAMOptimizedImpl(S3Configuration configuration, int maxConnections) {
-        LOG.trace("Creating an AWS S3 client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
-        this.configuration = configuration;
-        this.maxConnections = maxConnections;
-    }
-
-    /**
-     * Getting the s3 aws client that is used.
-     * 
-     * @return Amazon S3 Client.
-     */
-    @Override
-    public AmazonS3 getS3Client() {
-        AmazonS3 client = null;
-        AmazonS3ClientBuilder clientBuilder = null;
-        AmazonS3EncryptionClientBuilder encClientBuilder = null;
-
-        ClientConfiguration clientConfiguration = new ClientConfiguration();
-        clientConfiguration.setMaxConnections(maxConnections);
-
-        if (configuration.hasProxyConfiguration()) {
-            clientConfiguration.setProxyProtocol(configuration.getProxyProtocol());
-            clientConfiguration.setProxyHost(configuration.getProxyHost());
-            clientConfiguration.setProxyPort(configuration.getProxyPort());
-        }
-
-        if (configuration.getAccessKey() != null || configuration.getSecretKey() != null) {
-            LOG.trace("Do not pass in unnecessary static credentials when selecting the IAM credential option.");
-        }
-
-        if (!configuration.isUseEncryption()) {
-            clientBuilder = AmazonS3ClientBuilder.standard().withCredentials(new InstanceProfileCredentialsProvider(false));
-
-            if (configuration.hasProxyConfiguration()) {
-                clientBuilder = clientBuilder.withClientConfiguration(clientConfiguration);
-            }
-        } else {
-            StaticEncryptionMaterialsProvider encryptionMaterialsProvider
-                    = new StaticEncryptionMaterialsProvider(configuration.getEncryptionMaterials());
-            encClientBuilder = AmazonS3EncryptionClientBuilder.standard().withClientConfiguration(clientConfiguration)
-                    .withEncryptionMaterials(encryptionMaterialsProvider)
-                    .withCredentials(new InstanceProfileCredentialsProvider(false));
-        }
-
-        if (!configuration.isUseEncryption()) {
-            if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
-                clientBuilder = clientBuilder.withRegion(Regions.valueOf(configuration.getRegion()));
-            }
-            clientBuilder = clientBuilder.withPathStyleAccessEnabled(configuration.isPathStyleAccess());
-            if (ObjectHelper.isNotEmpty(configuration.getEndpointConfiguration())) {
-                clientBuilder.withEndpointConfiguration(configuration.getEndpointConfiguration());
-            }
-            client = clientBuilder.build();
-        } else {
-            if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
-                encClientBuilder = encClientBuilder.withRegion(Regions.valueOf(configuration.getRegion()));
-            }
-            encClientBuilder = encClientBuilder.withPathStyleAccessEnabled(configuration.isPathStyleAccess());
-            if (ObjectHelper.isNotEmpty(configuration.getEndpointConfiguration())) {
-                encClientBuilder.withEndpointConfiguration(configuration.getEndpointConfiguration());
-            }
-            client = encClientBuilder.build();
-        }
-
-        return client;
-    }
-}
diff --git a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/impl/S3ClientStandardImpl.java b/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/impl/S3ClientStandardImpl.java
deleted file mode 100644
index d7bf52f..0000000
--- a/components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/impl/S3ClientStandardImpl.java
+++ /dev/null
@@ -1,140 +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.aws.s3.client.impl;
-
-import com.amazonaws.ClientConfiguration;
-import com.amazonaws.auth.AWSCredentials;
-import com.amazonaws.auth.AWSCredentialsProvider;
-import com.amazonaws.auth.AWSStaticCredentialsProvider;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.regions.Regions;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3ClientBuilder;
-import com.amazonaws.services.s3.AmazonS3EncryptionClientBuilder;
-import com.amazonaws.services.s3.model.StaticEncryptionMaterialsProvider;
-import org.apache.camel.component.aws.s3.S3Configuration;
-import org.apache.camel.component.aws.s3.client.S3Client;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Manage an AWS s3 client for all users to use. This implementation is for local instances to use a static and solid
- * credential set.
- */
-public class S3ClientStandardImpl implements S3Client {
-    private static final Logger LOG = LoggerFactory.getLogger(S3ClientStandardImpl.class);
-    private S3Configuration configuration;
-    private int maxConnections;
-
-    /**
-     * Constructor that uses the config file.
-     */
-    public S3ClientStandardImpl(S3Configuration configuration, int maxConnections) {
-        LOG.trace("Creating an AWS S3 manager using static credentials.");
-        this.configuration = configuration;
-        this.maxConnections = maxConnections;
-    }
-
-    /**
-     * Getting the s3 aws client that is used.
-     * 
-     * @return Amazon S3 Client.
-     */
-    @Override
-    public AmazonS3 getS3Client() {
-        AmazonS3 client;
-        AmazonS3ClientBuilder clientBuilder = null;
-        AmazonS3EncryptionClientBuilder encClientBuilder = null;
-
-        ClientConfiguration clientConfiguration = new ClientConfiguration();
-        clientConfiguration.setMaxConnections(maxConnections);
-
-        if (configuration.hasProxyConfiguration()) {
-            clientConfiguration.setProxyProtocol(configuration.getProxyProtocol());
-            clientConfiguration.setProxyHost(configuration.getProxyHost());
-            clientConfiguration.setProxyPort(configuration.getProxyPort());
-        }
-
-        if (configuration.getAccessKey() != null && configuration.getSecretKey() != null) {
-            AWSCredentials credentials = new BasicAWSCredentials(configuration.getAccessKey(), configuration.getSecretKey());
-            AWSCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials);
-            if (!configuration.isUseEncryption()) {
-                clientBuilder = AmazonS3ClientBuilder.standard().withClientConfiguration(clientConfiguration)
-                        .withCredentials(credentialsProvider);
-            } else {
-                StaticEncryptionMaterialsProvider encryptionMaterialsProvider
-                        = new StaticEncryptionMaterialsProvider(configuration.getEncryptionMaterials());
-                encClientBuilder = AmazonS3EncryptionClientBuilder.standard().withClientConfiguration(clientConfiguration)
-                        .withCredentials(credentialsProvider)
-                        .withEncryptionMaterials(encryptionMaterialsProvider);
-            }
-
-            if (!configuration.isUseEncryption()) {
-                if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
-                    clientBuilder = clientBuilder.withRegion(Regions.valueOf(configuration.getRegion()));
-                }
-                clientBuilder = clientBuilder.withPathStyleAccessEnabled(configuration.isPathStyleAccess());
-                if (ObjectHelper.isNotEmpty(configuration.getEndpointConfiguration())) {
-                    clientBuilder.withEndpointConfiguration(configuration.getEndpointConfiguration());
-                }
-                client = clientBuilder.build();
-            } else {
-                if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
-                    encClientBuilder = encClientBuilder.withRegion(Regions.valueOf(configuration.getRegion()));
-                }
-                encClientBuilder = encClientBuilder.withPathStyleAccessEnabled(configuration.isPathStyleAccess());
-                if (ObjectHelper.isNotEmpty(configuration.getEndpointConfiguration())) {
-                    encClientBuilder.withEndpointConfiguration(configuration.getEndpointConfiguration());
-                }
-                client = encClientBuilder.build();
-            }
-        } else {
-            if (!configuration.isUseEncryption()) {
-                clientBuilder = AmazonS3ClientBuilder.standard();
-            } else if (configuration.isUseEncryption()) {
-                StaticEncryptionMaterialsProvider encryptionMaterialsProvider
-                        = new StaticEncryptionMaterialsProvider(configuration.getEncryptionMaterials());
-                encClientBuilder = AmazonS3EncryptionClientBuilder.standard().withClientConfiguration(clientConfiguration)
-                        .withEncryptionMaterials(encryptionMaterialsProvider);
-            } else {
-                clientBuilder = AmazonS3ClientBuilder.standard().withClientConfiguration(clientConfiguration);
-            }
-
-            if (!configuration.isUseEncryption()) {
-                if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
-                    clientBuilder = clientBuilder.withRegion(Regions.valueOf(configuration.getRegion()));
-                }
-                clientBuilder = clientBuilder.withPathStyleAccessEnabled(configuration.isPathStyleAccess());
-                if (ObjectHelper.isNotEmpty(configuration.getEndpointConfiguration())) {
-                    clientBuilder.withEndpointConfiguration(configuration.getEndpointConfiguration());
-                }
-                client = clientBuilder.build();
-            } else {
-                if (ObjectHelper.isNotEmpty(configuration.getRegion())) {
-                    encClientBuilder = encClientBuilder.withRegion(Regions.valueOf(configuration.getRegion()));
-                }
-                encClientBuilder = encClientBuilder.withPathStyleAccessEnabled(configuration.isPathStyleAccess());
-                if (ObjectHelper.isNotEmpty(configuration.getEndpointConfiguration())) {
-                    encClientBuilder.withEndpointConfiguration(configuration.getEndpointConfiguration());
-                }
-                client = encClientBuilder.build();
-            }
-        }
-        return client;
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AWSS3ClientFactoryTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AWSS3ClientFactoryTest.java
deleted file mode 100644
index 2f75dca..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AWSS3ClientFactoryTest.java
+++ /dev/null
@@ -1,52 +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.aws.s3;
-
-import org.apache.camel.component.aws.s3.client.S3Client;
-import org.apache.camel.component.aws.s3.client.S3ClientFactory;
-import org.apache.camel.component.aws.s3.client.impl.S3ClientIAMOptimizedImpl;
-import org.apache.camel.component.aws.s3.client.impl.S3ClientStandardImpl;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class AWSS3ClientFactoryTest {
-    private static final int MAX_CONNECTIONS = 1;
-
-    @Test
-    public void getStandardS3ClientDefault() {
-        S3Configuration s3Configuration = new S3Configuration();
-        S3Client awss3Client = S3ClientFactory.getAWSS3Client(s3Configuration, MAX_CONNECTIONS);
-        assertTrue(awss3Client instanceof S3ClientStandardImpl);
-    }
-
-    @Test
-    public void getStandardS3Client() {
-        S3Configuration s3Configuration = new S3Configuration();
-        s3Configuration.setUseIAMCredentials(false);
-        S3Client awss3Client = S3ClientFactory.getAWSS3Client(s3Configuration, MAX_CONNECTIONS);
-        assertTrue(awss3Client instanceof S3ClientStandardImpl);
-    }
-
-    @Test
-    public void getIAMOptimizedS3Client() {
-        S3Configuration s3Configuration = new S3Configuration();
-        s3Configuration.setUseIAMCredentials(true);
-        S3Client awss3Client = S3ClientFactory.getAWSS3Client(s3Configuration, MAX_CONNECTIONS);
-        assertTrue(awss3Client instanceof S3ClientIAMOptimizedImpl);
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AmazonS3ClientMock.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AmazonS3ClientMock.java
deleted file mode 100644
index 9e01f11..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AmazonS3ClientMock.java
+++ /dev/null
@@ -1,521 +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.aws.s3;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import com.amazonaws.AmazonClientException;
-import com.amazonaws.AmazonServiceException;
-import com.amazonaws.AmazonWebServiceRequest;
-import com.amazonaws.HttpMethod;
-import com.amazonaws.services.s3.AbstractAmazonS3;
-import com.amazonaws.services.s3.S3ResponseMetadata;
-import com.amazonaws.services.s3.model.AbortMultipartUploadRequest;
-import com.amazonaws.services.s3.model.AccessControlList;
-import com.amazonaws.services.s3.model.Bucket;
-import com.amazonaws.services.s3.model.BucketLoggingConfiguration;
-import com.amazonaws.services.s3.model.BucketNotificationConfiguration;
-import com.amazonaws.services.s3.model.BucketPolicy;
-import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
-import com.amazonaws.services.s3.model.CannedAccessControlList;
-import com.amazonaws.services.s3.model.CompleteMultipartUploadRequest;
-import com.amazonaws.services.s3.model.CompleteMultipartUploadResult;
-import com.amazonaws.services.s3.model.CopyObjectRequest;
-import com.amazonaws.services.s3.model.CopyObjectResult;
-import com.amazonaws.services.s3.model.CreateBucketRequest;
-import com.amazonaws.services.s3.model.DeleteBucketRequest;
-import com.amazonaws.services.s3.model.DeleteObjectRequest;
-import com.amazonaws.services.s3.model.DeleteVersionRequest;
-import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
-import com.amazonaws.services.s3.model.GetObjectMetadataRequest;
-import com.amazonaws.services.s3.model.GetObjectRequest;
-import com.amazonaws.services.s3.model.InitiateMultipartUploadRequest;
-import com.amazonaws.services.s3.model.InitiateMultipartUploadResult;
-import com.amazonaws.services.s3.model.ListBucketsRequest;
-import com.amazonaws.services.s3.model.ListMultipartUploadsRequest;
-import com.amazonaws.services.s3.model.ListObjectsRequest;
-import com.amazonaws.services.s3.model.ListPartsRequest;
-import com.amazonaws.services.s3.model.ListVersionsRequest;
-import com.amazonaws.services.s3.model.MultipartUploadListing;
-import com.amazonaws.services.s3.model.ObjectListing;
-import com.amazonaws.services.s3.model.ObjectMetadata;
-import com.amazonaws.services.s3.model.Owner;
-import com.amazonaws.services.s3.model.PartListing;
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import com.amazonaws.services.s3.model.PutObjectResult;
-import com.amazonaws.services.s3.model.Region;
-import com.amazonaws.services.s3.model.S3Object;
-import com.amazonaws.services.s3.model.S3ObjectSummary;
-import com.amazonaws.services.s3.model.SetBucketLoggingConfigurationRequest;
-import com.amazonaws.services.s3.model.SetBucketVersioningConfigurationRequest;
-import com.amazonaws.services.s3.model.StorageClass;
-import com.amazonaws.services.s3.model.UploadPartRequest;
-import com.amazonaws.services.s3.model.UploadPartResult;
-import com.amazonaws.services.s3.model.VersionListing;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class AmazonS3ClientMock extends AbstractAmazonS3 {
-    private static final Logger LOG = LoggerFactory.getLogger(AmazonS3ClientMock.class);
-
-    List<S3Object> objects = new CopyOnWriteArrayList<>();
-    List<PutObjectRequest> putObjectRequests = new CopyOnWriteArrayList<>();
-
-    private boolean nonExistingBucketCreated;
-
-    private int maxCapacity = 100;
-
-    public AmazonS3ClientMock() {
-    }
-
-    @Override
-    public VersionListing listNextBatchOfVersions(VersionListing previousVersionListing)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public VersionListing listVersions(String bucketName, String prefix) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public VersionListing listVersions(
-            String bucketName, String prefix, String keyMarker, String versionIdMarker, String delimiter, Integer maxKeys)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public VersionListing listVersions(ListVersionsRequest listVersionsRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ObjectListing listObjects(String bucketName) throws AmazonClientException, AmazonServiceException {
-        ObjectListing list = new ObjectListing();
-        list.setBucketName("test");
-        list.setTruncated(false);
-        S3ObjectSummary summary = new S3ObjectSummary();
-        summary.setBucketName("test");
-        summary.setSize(10000L);
-        summary.setKey("Myfile");
-        list.getObjectSummaries().add(summary);
-        return list;
-    }
-
-    @Override
-    public ObjectListing listObjects(String bucketName, String prefix) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ObjectListing listObjects(ListObjectsRequest listObjectsRequest)
-            throws AmazonClientException, AmazonServiceException {
-        if ("nonExistingBucket".equals(listObjectsRequest.getBucketName()) && !nonExistingBucketCreated) {
-            AmazonServiceException ex = new AmazonServiceException("Unknown bucket");
-            ex.setStatusCode(404);
-            throw ex;
-        }
-        int capacity;
-        ObjectListing objectListing = new ObjectListing();
-        if (!ObjectHelper.isEmpty(listObjectsRequest.getMaxKeys()) && listObjectsRequest.getMaxKeys() != null) {
-            capacity = listObjectsRequest.getMaxKeys();
-        } else {
-            capacity = maxCapacity;
-        }
-
-        for (int index = 0; index < objects.size() && index < capacity; index++) {
-            S3ObjectSummary s3ObjectSummary = new S3ObjectSummary();
-            s3ObjectSummary.setBucketName(objects.get(index).getBucketName());
-            s3ObjectSummary.setKey(objects.get(index).getKey());
-
-            objectListing.getObjectSummaries().add(s3ObjectSummary);
-        }
-
-        return objectListing;
-    }
-
-    @Override
-    public ObjectListing listNextBatchOfObjects(ObjectListing previousObjectListing)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Owner getS3AccountOwner() throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<Bucket> listBuckets(ListBucketsRequest listBucketsRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<Bucket> listBuckets() throws AmazonClientException, AmazonServiceException {
-        ArrayList<Bucket> list = new ArrayList<>();
-        Bucket bucket = new Bucket("camel-bucket");
-        bucket.setOwner(new Owner("Camel", "camel"));
-        bucket.setCreationDate(new Date());
-        list.add(bucket);
-        return list;
-    }
-
-    @Override
-    public String getBucketLocation(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Bucket createBucket(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Bucket createBucket(String bucketName, Region region) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Bucket createBucket(String bucketName, String region) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Bucket createBucket(CreateBucketRequest createBucketRequest) throws AmazonClientException, AmazonServiceException {
-        if ("nonExistingBucket".equals(createBucketRequest.getBucketName())) {
-            nonExistingBucketCreated = true;
-        }
-
-        Bucket bucket = new Bucket();
-        bucket.setName(createBucketRequest.getBucketName());
-        bucket.setCreationDate(new Date());
-        bucket.setOwner(new Owner("c2efc7302b9011ba9a78a92ac5fd1cd47b61790499ab5ddf5a37c31f0638a8fc ", "Christian Mueller"));
-        return bucket;
-    }
-
-    @Override
-    public AccessControlList getObjectAcl(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public AccessControlList getObjectAcl(String bucketName, String key, String versionId)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setObjectAcl(String bucketName, String key, AccessControlList acl)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setObjectAcl(String bucketName, String key, CannedAccessControlList acl)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setObjectAcl(String bucketName, String key, String versionId, AccessControlList acl)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setObjectAcl(String bucketName, String key, String versionId, CannedAccessControlList acl)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public AccessControlList getBucketAcl(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketAcl(String bucketName, AccessControlList acl) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketAcl(String bucketName, CannedAccessControlList acl)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ObjectMetadata getObjectMetadata(String bucketName, String key)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ObjectMetadata getObjectMetadata(GetObjectMetadataRequest getObjectMetadataRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public S3Object getObject(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-        for (S3Object s3Object : objects) {
-            if (bucketName.equals(s3Object.getBucketName()) && key.equals(s3Object.getKey())) {
-                return s3Object;
-            }
-        }
-
-        return null;
-    }
-
-    @Override
-    public boolean doesBucketExist(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void changeObjectStorageClass(String bucketName, String key, StorageClass newStorageClass)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public S3Object getObject(GetObjectRequest getObjectRequest) throws AmazonClientException, AmazonServiceException {
-        return getObject(getObjectRequest.getBucketName(), getObjectRequest.getKey());
-    }
-
-    @Override
-    public ObjectMetadata getObject(GetObjectRequest getObjectRequest, File destinationFile)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void deleteBucket(String bucketName) throws AmazonClientException, AmazonServiceException {
-        // noop
-    }
-
-    @Override
-    public void deleteBucket(DeleteBucketRequest deleteBucketRequest) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public PutObjectResult putObject(String bucketName, String key, File file)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public PutObjectResult putObject(String bucketName, String key, InputStream input, ObjectMetadata metadata)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @SuppressWarnings("resource")
-    @Override
-    public PutObjectResult putObject(PutObjectRequest putObjectRequest) throws AmazonClientException, AmazonServiceException {
-        putObjectRequests.add(putObjectRequest);
-
-        S3Object s3Object = new S3Object();
-        s3Object.setBucketName(putObjectRequest.getBucketName());
-        s3Object.setKey(putObjectRequest.getKey());
-        s3Object.getObjectMetadata().setUserMetadata(putObjectRequest.getMetadata().getUserMetadata());
-        if (putObjectRequest.getFile() != null) {
-            try {
-                s3Object.setObjectContent(new FileInputStream(putObjectRequest.getFile()));
-            } catch (FileNotFoundException e) {
-                throw new AmazonServiceException("Cannot store the file object.", e);
-            }
-        } else {
-            s3Object.setObjectContent(putObjectRequest.getInputStream());
-        }
-        objects.add(s3Object);
-
-        PutObjectResult putObjectResult = new PutObjectResult();
-        putObjectResult.setETag("3a5c8b1ad448bca04584ecb55b836264");
-        return putObjectResult;
-    }
-
-    @Override
-    public CopyObjectResult copyObject(
-            String sourceBucketName, String sourceKey, String destinationBucketName, String destinationKey)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public CopyObjectResult copyObject(CopyObjectRequest copyObjectRequest)
-            throws AmazonClientException, AmazonServiceException {
-        CopyObjectResult copyObjectResult = new CopyObjectResult();
-        copyObjectResult.setETag("3a5c8b1ad448bca04584ecb55b836264");
-        copyObjectResult.setVersionId("11192828ahsh2723");
-        return copyObjectResult;
-    }
-
-    @Override
-    public void deleteObject(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-        // noop
-    }
-
-    @Override
-    public void deleteObject(DeleteObjectRequest deleteObjectRequest) throws AmazonClientException, AmazonServiceException {
-        // noop
-    }
-
-    @Override
-    public void deleteVersion(String bucketName, String key, String versionId)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void deleteVersion(DeleteVersionRequest deleteVersionRequest) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketVersioningConfiguration(
-            SetBucketVersioningConfigurationRequest setBucketVersioningConfigurationRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public BucketVersioningConfiguration getBucketVersioningConfiguration(String bucketName)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketNotificationConfiguration(
-            String bucketName, BucketNotificationConfiguration bucketNotificationConfiguration)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public BucketNotificationConfiguration getBucketNotificationConfiguration(String bucketName)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public BucketLoggingConfiguration getBucketLoggingConfiguration(String bucketName)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketLoggingConfiguration(SetBucketLoggingConfigurationRequest setBucketLoggingConfigurationRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public BucketPolicy getBucketPolicy(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketPolicy(String bucketName, String policyText) throws AmazonClientException, AmazonServiceException {
-        assertEquals("nonExistingBucket", bucketName);
-        assertEquals("xxx", policyText);
-    }
-
-    @Override
-    public void deleteBucketPolicy(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public URL generatePresignedUrl(String bucketName, String key, Date expiration) throws AmazonClientException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public URL generatePresignedUrl(String bucketName, String key, Date expiration, HttpMethod method)
-            throws AmazonClientException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public URL generatePresignedUrl(GeneratePresignedUrlRequest generatePresignedUrlRequest) throws AmazonClientException {
-        URL url = null;
-        try {
-            url = new URL("http://aws.amazonas.s3/file.zip");
-        } catch (MalformedURLException e) {
-            LOG.warn("Invalid URL: {}", e.getMessage(), e);
-        }
-        return url;
-    }
-
-    @Override
-    public void abortMultipartUpload(AbortMultipartUploadRequest abortMultipartUploadRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public CompleteMultipartUploadResult completeMultipartUpload(CompleteMultipartUploadRequest completeMultipartUploadRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public InitiateMultipartUploadResult initiateMultipartUpload(InitiateMultipartUploadRequest initiateMultipartUploadRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public MultipartUploadListing listMultipartUploads(ListMultipartUploadsRequest listMultipartUploadsRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public PartListing listParts(ListPartsRequest listPartsRequest) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public UploadPartResult uploadPart(UploadPartRequest uploadPartRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public S3ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) {
-        throw new UnsupportedOperationException();
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AmazonS3EncryptionClientMock.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AmazonS3EncryptionClientMock.java
deleted file mode 100644
index 198fe8b..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AmazonS3EncryptionClientMock.java
+++ /dev/null
@@ -1,502 +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.aws.s3;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import com.amazonaws.AmazonClientException;
-import com.amazonaws.AmazonServiceException;
-import com.amazonaws.AmazonWebServiceRequest;
-import com.amazonaws.HttpMethod;
-import com.amazonaws.services.s3.AbstractAmazonS3;
-import com.amazonaws.services.s3.S3ResponseMetadata;
-import com.amazonaws.services.s3.model.AbortMultipartUploadRequest;
-import com.amazonaws.services.s3.model.AccessControlList;
-import com.amazonaws.services.s3.model.Bucket;
-import com.amazonaws.services.s3.model.BucketLoggingConfiguration;
-import com.amazonaws.services.s3.model.BucketNotificationConfiguration;
-import com.amazonaws.services.s3.model.BucketPolicy;
-import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
-import com.amazonaws.services.s3.model.CannedAccessControlList;
-import com.amazonaws.services.s3.model.CompleteMultipartUploadRequest;
-import com.amazonaws.services.s3.model.CompleteMultipartUploadResult;
-import com.amazonaws.services.s3.model.CopyObjectRequest;
-import com.amazonaws.services.s3.model.CopyObjectResult;
-import com.amazonaws.services.s3.model.CreateBucketRequest;
-import com.amazonaws.services.s3.model.DeleteBucketRequest;
-import com.amazonaws.services.s3.model.DeleteObjectRequest;
-import com.amazonaws.services.s3.model.DeleteVersionRequest;
-import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
-import com.amazonaws.services.s3.model.GetObjectMetadataRequest;
-import com.amazonaws.services.s3.model.GetObjectRequest;
-import com.amazonaws.services.s3.model.InitiateMultipartUploadRequest;
-import com.amazonaws.services.s3.model.InitiateMultipartUploadResult;
-import com.amazonaws.services.s3.model.ListBucketsRequest;
-import com.amazonaws.services.s3.model.ListMultipartUploadsRequest;
-import com.amazonaws.services.s3.model.ListObjectsRequest;
-import com.amazonaws.services.s3.model.ListPartsRequest;
-import com.amazonaws.services.s3.model.ListVersionsRequest;
-import com.amazonaws.services.s3.model.MultipartUploadListing;
-import com.amazonaws.services.s3.model.ObjectListing;
-import com.amazonaws.services.s3.model.ObjectMetadata;
-import com.amazonaws.services.s3.model.Owner;
-import com.amazonaws.services.s3.model.PartListing;
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import com.amazonaws.services.s3.model.PutObjectResult;
-import com.amazonaws.services.s3.model.Region;
-import com.amazonaws.services.s3.model.S3Object;
-import com.amazonaws.services.s3.model.S3ObjectSummary;
-import com.amazonaws.services.s3.model.SetBucketLoggingConfigurationRequest;
-import com.amazonaws.services.s3.model.SetBucketVersioningConfigurationRequest;
-import com.amazonaws.services.s3.model.StorageClass;
-import com.amazonaws.services.s3.model.UploadPartRequest;
-import com.amazonaws.services.s3.model.UploadPartResult;
-import com.amazonaws.services.s3.model.VersionListing;
-import org.apache.camel.util.ObjectHelper;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class AmazonS3EncryptionClientMock extends AbstractAmazonS3 {
-
-    List<S3Object> objects = new CopyOnWriteArrayList<>();
-    List<PutObjectRequest> putObjectRequests = new CopyOnWriteArrayList<>();
-
-    private boolean nonExistingBucketCreated;
-
-    private int maxCapacity = 100;
-
-    public AmazonS3EncryptionClientMock() {
-    }
-
-    @Override
-    public VersionListing listNextBatchOfVersions(VersionListing previousVersionListing)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public VersionListing listVersions(String bucketName, String prefix) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public VersionListing listVersions(
-            String bucketName, String prefix, String keyMarker, String versionIdMarker, String delimiter, Integer maxKeys)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public VersionListing listVersions(ListVersionsRequest listVersionsRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ObjectListing listObjects(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ObjectListing listObjects(String bucketName, String prefix) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ObjectListing listObjects(ListObjectsRequest listObjectsRequest)
-            throws AmazonClientException, AmazonServiceException {
-        if ("nonExistingBucket".equals(listObjectsRequest.getBucketName()) && !nonExistingBucketCreated) {
-            AmazonServiceException ex = new AmazonServiceException("Unknown bucket");
-            ex.setStatusCode(404);
-            throw ex;
-        }
-        int capacity;
-        ObjectListing objectListing = new ObjectListing();
-        if (!ObjectHelper.isEmpty(listObjectsRequest.getMaxKeys()) && listObjectsRequest.getMaxKeys() != null) {
-            capacity = listObjectsRequest.getMaxKeys();
-        } else {
-            capacity = maxCapacity;
-        }
-
-        for (int index = 0; index < objects.size() && index < capacity; index++) {
-            S3ObjectSummary s3ObjectSummary = new S3ObjectSummary();
-            s3ObjectSummary.setBucketName(objects.get(index).getBucketName());
-            s3ObjectSummary.setKey(objects.get(index).getKey());
-
-            objectListing.getObjectSummaries().add(s3ObjectSummary);
-        }
-
-        return objectListing;
-    }
-
-    @Override
-    public ObjectListing listNextBatchOfObjects(ObjectListing previousObjectListing)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Owner getS3AccountOwner() throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<Bucket> listBuckets(ListBucketsRequest listBucketsRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<Bucket> listBuckets() throws AmazonClientException, AmazonServiceException {
-        ArrayList<Bucket> list = new ArrayList<>();
-        Bucket bucket = new Bucket("camel-bucket");
-        bucket.setOwner(new Owner("Camel", "camel"));
-        bucket.setCreationDate(new Date());
-        list.add(bucket);
-        return list;
-    }
-
-    @Override
-    public String getBucketLocation(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Bucket createBucket(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Bucket createBucket(String bucketName, Region region) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Bucket createBucket(String bucketName, String region) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Bucket createBucket(CreateBucketRequest createBucketRequest) throws AmazonClientException, AmazonServiceException {
-        if ("nonExistingBucket".equals(createBucketRequest.getBucketName())) {
-            nonExistingBucketCreated = true;
-        }
-
-        Bucket bucket = new Bucket();
-        bucket.setName(createBucketRequest.getBucketName());
-        bucket.setCreationDate(new Date());
-        bucket.setOwner(new Owner("c2efc7302b9011ba9a78a92ac5fd1cd47b61790499ab5ddf5a37c31f0638a8fc ", "Christian Mueller"));
-        return bucket;
-    }
-
-    @Override
-    public AccessControlList getObjectAcl(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public AccessControlList getObjectAcl(String bucketName, String key, String versionId)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setObjectAcl(String bucketName, String key, AccessControlList acl)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setObjectAcl(String bucketName, String key, CannedAccessControlList acl)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setObjectAcl(String bucketName, String key, String versionId, AccessControlList acl)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setObjectAcl(String bucketName, String key, String versionId, CannedAccessControlList acl)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public AccessControlList getBucketAcl(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketAcl(String bucketName, AccessControlList acl) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketAcl(String bucketName, CannedAccessControlList acl)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ObjectMetadata getObjectMetadata(String bucketName, String key)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ObjectMetadata getObjectMetadata(GetObjectMetadataRequest getObjectMetadataRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public S3Object getObject(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-        for (S3Object s3Object : objects) {
-            if (bucketName.equals(s3Object.getBucketName()) && key.equals(s3Object.getKey())) {
-                return s3Object;
-            }
-        }
-
-        return null;
-    }
-
-    @Override
-    public boolean doesBucketExist(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void changeObjectStorageClass(String bucketName, String key, StorageClass newStorageClass)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public S3Object getObject(GetObjectRequest getObjectRequest) throws AmazonClientException, AmazonServiceException {
-        return getObject(getObjectRequest.getBucketName(), getObjectRequest.getKey());
-    }
-
-    @Override
-    public ObjectMetadata getObject(GetObjectRequest getObjectRequest, File destinationFile)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void deleteBucket(String bucketName) throws AmazonClientException, AmazonServiceException {
-        // noop
-    }
-
-    @Override
-    public void deleteBucket(DeleteBucketRequest deleteBucketRequest) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public PutObjectResult putObject(String bucketName, String key, File file)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public PutObjectResult putObject(String bucketName, String key, InputStream input, ObjectMetadata metadata)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @SuppressWarnings("resource")
-    @Override
-    public PutObjectResult putObject(PutObjectRequest putObjectRequest) throws AmazonClientException, AmazonServiceException {
-        putObjectRequests.add(putObjectRequest);
-
-        S3Object s3Object = new S3Object();
-        s3Object.setBucketName(putObjectRequest.getBucketName());
-        s3Object.setKey(putObjectRequest.getKey());
-        if (putObjectRequest.getFile() != null) {
-            try {
-                s3Object.setObjectContent(new FileInputStream(putObjectRequest.getFile()));
-            } catch (FileNotFoundException e) {
-                throw new AmazonServiceException("Cannot store the file object.", e);
-            }
-        } else {
-            s3Object.setObjectContent(putObjectRequest.getInputStream());
-        }
-        objects.add(s3Object);
-
-        PutObjectResult putObjectResult = new PutObjectResult();
-        putObjectResult.setETag("3a5c8b1ad448bca04584ecb55b836264");
-        return putObjectResult;
-    }
-
-    @Override
-    public CopyObjectResult copyObject(
-            String sourceBucketName, String sourceKey, String destinationBucketName, String destinationKey)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public CopyObjectResult copyObject(CopyObjectRequest copyObjectRequest)
-            throws AmazonClientException, AmazonServiceException {
-        CopyObjectResult copyObjectResult = new CopyObjectResult();
-        copyObjectResult.setETag("3a5c8b1ad448bca04584ecb55b836264");
-        copyObjectResult.setVersionId("11192828ahsh2723");
-        return copyObjectResult;
-    }
-
-    @Override
-    public void deleteObject(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-        // noop
-    }
-
-    @Override
-    public void deleteObject(DeleteObjectRequest deleteObjectRequest) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void deleteVersion(String bucketName, String key, String versionId)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void deleteVersion(DeleteVersionRequest deleteVersionRequest) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketVersioningConfiguration(
-            SetBucketVersioningConfigurationRequest setBucketVersioningConfigurationRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public BucketVersioningConfiguration getBucketVersioningConfiguration(String bucketName)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketNotificationConfiguration(
-            String bucketName, BucketNotificationConfiguration bucketNotificationConfiguration)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public BucketNotificationConfiguration getBucketNotificationConfiguration(String bucketName)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public BucketLoggingConfiguration getBucketLoggingConfiguration(String bucketName)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketLoggingConfiguration(SetBucketLoggingConfigurationRequest setBucketLoggingConfigurationRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public BucketPolicy getBucketPolicy(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBucketPolicy(String bucketName, String policyText) throws AmazonClientException, AmazonServiceException {
-        assertEquals("nonExistingBucket", bucketName);
-        assertEquals("xxx", policyText);
-    }
-
-    @Override
-    public void deleteBucketPolicy(String bucketName) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public URL generatePresignedUrl(String bucketName, String key, Date expiration) throws AmazonClientException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public URL generatePresignedUrl(String bucketName, String key, Date expiration, HttpMethod method)
-            throws AmazonClientException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public URL generatePresignedUrl(GeneratePresignedUrlRequest generatePresignedUrlRequest) throws AmazonClientException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void abortMultipartUpload(AbortMultipartUploadRequest abortMultipartUploadRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public CompleteMultipartUploadResult completeMultipartUpload(CompleteMultipartUploadRequest completeMultipartUploadRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public InitiateMultipartUploadResult initiateMultipartUpload(InitiateMultipartUploadRequest initiateMultipartUploadRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public MultipartUploadListing listMultipartUploads(ListMultipartUploadsRequest listMultipartUploadsRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public PartListing listParts(ListPartsRequest listPartsRequest) throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public UploadPartResult uploadPart(UploadPartRequest uploadPartRequest)
-            throws AmazonClientException, AmazonServiceException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public S3ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) {
-        throw new UnsupportedOperationException();
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3BatchConsumerMaxMessagesPerPollTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3BatchConsumerMaxMessagesPerPollTest.java
deleted file mode 100644
index 51329c0..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3BatchConsumerMaxMessagesPerPollTest.java
+++ /dev/null
@@ -1,101 +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.aws.s3;
-
-import com.amazonaws.services.s3.model.S3Object;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-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.Test;
-
-public class S3BatchConsumerMaxMessagesPerPollTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @EndpointInject("mock:result")
-    private MockEndpoint mock;
-
-    @Test
-    public void receiveBatch() throws Exception {
-        mock.expectedMessageCount(20);
-        assertMockEndpointsSatisfied();
-
-        mock.message(0).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(1);
-        mock.message(1).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(2);
-        mock.message(2).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(3);
-        mock.message(3).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(4);
-        mock.message(4).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(5);
-        mock.message(5).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(6);
-        mock.message(6).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(7);
-        mock.message(7).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(8);
-        mock.message(8).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(9);
-        mock.message(9).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(10);
-        mock.message(10).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(11);
-        mock.message(11).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(12);
-        mock.message(12).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(13);
-        mock.message(13).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(14);
-        mock.message(14).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(15);
-        mock.message(15).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(16);
-        mock.message(16).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(17);
-        mock.message(17).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(18);
-        mock.message(18).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(19);
-        mock.message(19).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(20);
-        mock.message(0).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(1).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(2).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(3).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(4).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(5).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(6).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(7).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(8).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(9).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(10).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(11).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(12).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(13).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(14).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(15).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(16).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(17).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(18).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(19).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(true);
-        mock.expectedPropertyReceived(Exchange.BATCH_SIZE, 20);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        for (int counter = 0; counter < 20; counter++) {
-            S3Object s3Object = new S3Object();
-            s3Object.setBucketName("mycamelbucket");
-            s3Object.setKey("counter-" + counter);
-
-            clientMock.objects.add(s3Object);
-        }
-
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&delay=5000&maxMessagesPerPoll=0").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3BatchConsumerTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3BatchConsumerTest.java
deleted file mode 100644
index 1f4a516..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3BatchConsumerTest.java
+++ /dev/null
@@ -1,72 +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.aws.s3;
-
-import com.amazonaws.services.s3.model.S3Object;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-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.Test;
-
-public class S3BatchConsumerTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @EndpointInject("mock:result")
-    private MockEndpoint mock;
-
-    @Test
-    public void receiveBatch() throws Exception {
-        mock.expectedMessageCount(5);
-        assertMockEndpointsSatisfied();
-
-        mock.message(0).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(0);
-        mock.message(1).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(1);
-        mock.message(2).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(2);
-        mock.message(3).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(3);
-        mock.message(4).exchangeProperty(Exchange.BATCH_INDEX).isEqualTo(4);
-        mock.message(0).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(1).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(2).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(3).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(3).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(false);
-        mock.message(4).exchangeProperty(Exchange.BATCH_COMPLETE).isEqualTo(true);
-        mock.expectedPropertyReceived(Exchange.BATCH_SIZE, 5);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        for (int counter = 0; counter < 6; counter++) {
-            S3Object s3Object = new S3Object();
-            s3Object.setBucketName("mycamelbucket");
-            s3Object.setKey("counter-" + counter);
-
-            clientMock.objects.add(s3Object);
-        }
-
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&delay=5000&maxMessagesPerPoll=5").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentClientRegistryTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentClientRegistryTest.java
deleted file mode 100644
index a18c40f..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentClientRegistryTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.aws.s3;
-
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-public class S3ComponentClientRegistryTest extends CamelTestSupport {
-
-    @Test
-    public void createEndpointWithMinimalS3ClientConfiguration() throws Exception {
-
-        AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-        context.getRegistry().bind("amazonS3Client", clientMock);
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component.createEndpoint("aws-s3://MyBucket");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertNotNull(endpoint.getConfiguration().getAmazonS3Client());
-        assertNull(endpoint.getConfiguration().getRegion());
-        assertTrue(endpoint.getConfiguration().isDeleteAfterRead());
-        assertEquals(10, endpoint.getMaxMessagesPerPoll());
-        assertNull(endpoint.getConfiguration().getPolicy());
-        assertNull(endpoint.getConfiguration().getPrefix());
-        assertTrue(endpoint.getConfiguration().isIncludeBody());
-    }
-
-    @Test
-    public void createEndpointWithMinimalS3ClientMisconfiguration() throws Exception {
-
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        assertThrows(IllegalArgumentException.class,
-                () -> component.createEndpoint("aws-s3://MyBucket"));
-    }
-
-    @Test
-    public void createEndpointWithCredentialsAndClientExistInRegistry() throws Exception {
-        AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-        context.getRegistry().bind("amazonS3Client", clientMock);
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component
-                .createEndpoint("aws-s3://MyBucket?accessKey=RAW(XXX)&secretKey=RAW(XXX)&autoDiscoverClient=false");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertNotSame(clientMock, endpoint.getConfiguration().getAmazonS3Client());
-    }
-
-    @Test
-    public void createEndpointWithCredentialsAndClientExistInRegistryWithAutodiscover() throws Exception {
-        AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-        context.getRegistry().bind("amazonS3Client", clientMock);
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component.createEndpoint("aws-s3://MyBucket?accessKey=RAW(XXX)&secretKey=RAW(XXX)");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertSame(clientMock, endpoint.getConfiguration().getAmazonS3Client());
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentConfigurationTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentConfigurationTest.java
deleted file mode 100644
index 3c0deb8..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentConfigurationTest.java
+++ /dev/null
@@ -1,280 +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.aws.s3;
-
-import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
-import com.amazonaws.regions.Regions;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class S3ComponentConfigurationTest extends CamelTestSupport {
-
-    @Test
-    public void createEndpointWithMinimalS3ClientConfiguration() throws Exception {
-
-        AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-        context.getRegistry().bind("amazonS3Client", clientMock);
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component
-                .createEndpoint("aws-s3://MyBucket?amazonS3Client=#amazonS3Client&accessKey=xxx&secretKey=yyy");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyy", endpoint.getConfiguration().getSecretKey());
-        assertNotNull(endpoint.getConfiguration().getAmazonS3Client());
-        assertNull(endpoint.getConfiguration().getRegion());
-        assertTrue(endpoint.getConfiguration().isDeleteAfterRead());
-        assertEquals(10, endpoint.getMaxMessagesPerPoll());
-        assertNull(endpoint.getConfiguration().getPolicy());
-        assertNull(endpoint.getConfiguration().getPrefix());
-        assertTrue(endpoint.getConfiguration().isIncludeBody());
-    }
-
-    @Test
-    public void createEndpointWithMinimalCredentialsConfiguration() throws Exception {
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component.createEndpoint("aws-s3://MyBucket?accessKey=xxx&secretKey=yyy");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyy", endpoint.getConfiguration().getSecretKey());
-        assertNull(endpoint.getConfiguration().getRegion());
-        assertTrue(endpoint.getConfiguration().isDeleteAfterRead());
-        assertEquals(10, endpoint.getMaxMessagesPerPoll());
-        assertNull(endpoint.getConfiguration().getPolicy());
-        assertNull(endpoint.getConfiguration().getPrefix());
-        assertTrue(endpoint.getConfiguration().isIncludeBody());
-    }
-
-    @Test
-    public void createEndpointWithMinimalArnConfiguration() throws Exception {
-        AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-        context.getRegistry().bind("amazonS3Client", clientMock);
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component
-                .createEndpoint("aws-s3://arn:aws:s3:::MyBucket?amazonS3Client=#amazonS3Client&accessKey=xxx&secretKey=yyy");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-    }
-
-    @Test
-    public void createEndpointWithMinimalConfigurationAndProvidedClient() throws Exception {
-
-        AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-        context.getRegistry().bind("amazonS3Client", clientMock);
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component.createEndpoint("aws-s3://MyBucket?amazonS3Client=#amazonS3Client");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertNull(endpoint.getConfiguration().getAccessKey());
-        assertNull(endpoint.getConfiguration().getSecretKey());
-        assertSame(clientMock, endpoint.getConfiguration().getAmazonS3Client());
-        assertNull(endpoint.getConfiguration().getRegion());
-        assertTrue(endpoint.getConfiguration().isDeleteAfterRead());
-        assertEquals(10, endpoint.getMaxMessagesPerPoll());
-        assertNull(endpoint.getConfiguration().getPolicy());
-        assertNull(endpoint.getConfiguration().getPrefix());
-        assertTrue(endpoint.getConfiguration().isIncludeBody());
-    }
-
-    @Test
-    public void createEndpointWithMaximalConfiguration() throws Exception {
-        AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-        context.getRegistry().bind("amazonS3Client", clientMock);
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component
-                .createEndpoint("aws-s3://MyBucket?amazonS3Client=#amazonS3Client"
-                                + "&accessKey=xxx&secretKey=yyy&region=us-west-1&deleteAfterRead=false&maxMessagesPerPoll=1&policy=%7B%22Version%22%3A%222008-10-17%22,%22Id%22%3A%22Policy4324355464%22,"
-                                + "%22Statement%22%3A%5B%7B%22Sid%22%3A%22Stmt456464646477%22,%22Action%22%3A%5B%22s3%3AGetObject%22%5D,%22Effect%22%3A%22Allow%22,"
-                                + "%22Resource%22%3A%5B%22arn%3Aaws%3As3%3A%3A%3Amybucket/some/path/*%22%5D,%22Principal%22%3A%7B%22AWS%22%3A%5B%22*%22%5D%7D%7D%5D%7D&storageClass=REDUCED_REDUNDANCY"
-                                + "&prefix=confidential&includeBody=false");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyy", endpoint.getConfiguration().getSecretKey());
-        assertNotNull(endpoint.getConfiguration().getAmazonS3Client());
-        assertEquals("us-west-1", endpoint.getConfiguration().getRegion());
-        assertFalse(endpoint.getConfiguration().isDeleteAfterRead());
-        assertEquals(1, endpoint.getMaxMessagesPerPoll());
-        assertEquals(
-                "{\"Version\":\"2008-10-17\",\"Id\":\"Policy4324355464\",\"Statement\":[{\"Sid\":\"Stmt456464646477\",\"Action\":[\"s3:GetObject\"],\"Effect\":\"Allow\",\"Resource\":"
-                     + "[\"arn:aws:s3:::mybucket/some/path/*\"],\"Principal\":{\"AWS\":[\"*\"]}}]}",
-                endpoint.getConfiguration().getPolicy());
-        assertEquals("REDUCED_REDUNDANCY", endpoint.getConfiguration().getStorageClass());
-        assertEquals("confidential", endpoint.getConfiguration().getPrefix());
-        assertFalse(endpoint.getConfiguration().isIncludeBody());
-    }
-
-    @Test
-    public void createEndpointWithoutBucketName() throws Exception {
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        assertThrows(IllegalArgumentException.class,
-                () -> component.createEndpoint("aws-s3:// "));
-    }
-
-    @Test
-    public void createEndpointWithoutAccessKeyConfiguration() throws Exception {
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        assertThrows(IllegalArgumentException.class,
-                () -> component.createEndpoint("aws-s3://MyTopic?secretKey=yyy"));
-    }
-
-    @Test
-    public void createEndpointWithoutSecretKeyConfiguration() throws Exception {
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        assertThrows(IllegalArgumentException.class,
-                () -> component.createEndpoint("aws-s3://MyTopic?accessKey=xxx"));
-    }
-
-    @Test
-    public void createEndpointWithComponentElements() throws Exception {
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        component.getConfiguration().setAccessKey("XXX");
-        component.getConfiguration().setSecretKey("YYY");
-        S3Endpoint endpoint = (S3Endpoint) component.createEndpoint("aws-s3://MyBucket");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("XXX", endpoint.getConfiguration().getAccessKey());
-        assertEquals("YYY", endpoint.getConfiguration().getSecretKey());
-    }
-
-    @Test
-    public void createEndpointWithComponentAndEndpointElements() throws Exception {
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        component.getConfiguration().setAccessKey("XXX");
-        component.getConfiguration().setSecretKey("YYY");
-        component.getConfiguration().setRegion(Regions.US_WEST_1.toString());
-        S3Endpoint endpoint
-                = (S3Endpoint) component.createEndpoint("aws-s3://MyBucket?accessKey=xxxxxx&secretKey=yyyyy&region=US_EAST_1");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxxxxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyyyy", endpoint.getConfiguration().getSecretKey());
-        assertEquals("US_EAST_1", endpoint.getConfiguration().getRegion());
-    }
-
-    @Test
-    public void createEndpointWithChunkedEncoding() throws Exception {
-
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component
-                .createEndpoint("aws-s3://MyBucket?chunkedEncodingDisabled=true&accessKey=xxx&secretKey=yyy&region=US_WEST_1");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyy", endpoint.getConfiguration().getSecretKey());
-        assertTrue(endpoint.getConfiguration().isChunkedEncodingDisabled());
-    }
-
-    @Test
-    public void createEndpointWithAccelerateMode() throws Exception {
-
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component
-                .createEndpoint("aws-s3://MyBucket?accelerateModeEnabled=true&accessKey=xxx&secretKey=yyy&region=US_WEST_1");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyy", endpoint.getConfiguration().getSecretKey());
-        assertTrue(endpoint.getConfiguration().isAccelerateModeEnabled());
-    }
-
-    @Test
-    public void createEndpointWithDualstack() throws Exception {
-
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component
-                .createEndpoint("aws-s3://MyBucket?dualstackEnabled=true&accessKey=xxx&secretKey=yyy&region=US_WEST_1");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyy", endpoint.getConfiguration().getSecretKey());
-        assertTrue(endpoint.getConfiguration().isDualstackEnabled());
-    }
-
-    @Test
-    public void createEndpointWithPayloadSigning() throws Exception {
-
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component
-                .createEndpoint("aws-s3://MyBucket?payloadSigningEnabled=true&accessKey=xxx&secretKey=yyy&region=US_WEST_1");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyy", endpoint.getConfiguration().getSecretKey());
-        assertTrue(endpoint.getConfiguration().isPayloadSigningEnabled());
-    }
-
-    @Test
-    public void createEndpointWithForceGlobalBucketAccess() throws Exception {
-
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component.createEndpoint(
-                "aws-s3://MyBucket?forceGlobalBucketAccessEnabled=true&accessKey=xxx&secretKey=yyy&region=US_WEST_1");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyy", endpoint.getConfiguration().getSecretKey());
-        assertTrue(endpoint.getConfiguration().isForceGlobalBucketAccessEnabled());
-    }
-
-    @Test
-    public void createEndpointWithAutocreateOption() throws Exception {
-
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component
-                .createEndpoint(
-                        "aws-s3://MyBucket?forceGlobalBucketAccessEnabled=true&accessKey=xxx&secretKey=yyy&region=US_WEST_1&autoCreateBucket=false");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyy", endpoint.getConfiguration().getSecretKey());
-        assertTrue(endpoint.getConfiguration().isForceGlobalBucketAccessEnabled());
-        assertFalse(endpoint.getConfiguration().isAutoCreateBucket());
-    }
-
-    @Test
-    public void createEndpointWithoutSecretKeyAndAccessKeyConfiguration() throws Exception {
-        AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-        context.getRegistry().bind("amazonS3Client", clientMock);
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        component.createEndpoint("aws-s3://MyTopic?amazonS3Client=#amazonS3Client");
-    }
-
-    @Test
-    public void createEndpointWithEndpointConfiguration() throws Exception {
-
-        EndpointConfiguration endpointConfiguration = new EndpointConfiguration("localhost", Regions.US_EAST_1.toString());
-        context.getRegistry().bind("endpointConfiguration", endpointConfiguration);
-        S3Component component = context.getComponent("aws-s3", S3Component.class);
-        S3Endpoint endpoint = (S3Endpoint) component.createEndpoint(
-                "aws-s3://MyBucket?endpointConfiguration=#endpointConfiguration&accessKey=xxx&secretKey=yyy&region=US_WEST_1");
-
-        assertEquals("MyBucket", endpoint.getConfiguration().getBucketName());
-        assertEquals("xxx", endpoint.getConfiguration().getAccessKey());
-        assertEquals("yyy", endpoint.getConfiguration().getSecretKey());
-        assertNotNull(endpoint.getConfiguration().getEndpointConfiguration());
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentContentLengthFileTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentContentLengthFileTest.java
deleted file mode 100644
index 82823d2..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentContentLengthFileTest.java
+++ /dev/null
@@ -1,183 +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.aws.s3;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.InputStream;
-import java.util.Map;
-
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.apache.camel.util.FileUtil;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.apache.camel.test.junit5.TestSupport.assertFileExists;
-import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ComponentContentLengthFileTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock client = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:startKeep")
-    ProducerTemplate templateKeep;
-
-    @EndpointInject("direct:startDelete")
-    ProducerTemplate templateDelete;
-
-    @EndpointInject("mock:result")
-    MockEndpoint result;
-
-    File testFile;
-
-    String getCamelBucket() {
-        return "mycamelbucket";
-    }
-
-    @BeforeEach
-    public void setup() throws Exception {
-        super.setUp();
-
-        testFile = FileUtil.createTempFile("test", "file", new File("target/tmp"));
-
-        FileWriter writer = new FileWriter(testFile);
-        writer.write("This is my bucket content.");
-        writer.close();
-    }
-
-    @Override
-    @AfterEach
-    public void tearDown() throws Exception {
-        super.tearDown();
-
-        FileUtil.deleteFile(testFile);
-    }
-
-    @Test
-    public void sendFile() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = templateKeep.send("direct:startKeep", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody(new FileInputStream(testFile));
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0), true);
-
-        PutObjectRequest putObjectRequest = client.putObjectRequests.get(0);
-        assertEquals(getCamelBucket(), putObjectRequest.getBucketName());
-
-        assertResponseMessage(exchange.getIn());
-
-        assertFileExists(testFile.getAbsolutePath());
-    }
-
-    @Test
-    public void sendFileWithContentLength() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = templateKeep.send("direct:startKeep", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setHeader(S3Constants.CONTENT_LENGTH, testFile.length());
-                exchange.getIn().setBody(new FileInputStream(testFile));
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0), true);
-
-        PutObjectRequest putObjectRequest = client.putObjectRequests.get(0);
-        assertEquals(getCamelBucket(), putObjectRequest.getBucketName());
-
-        assertResponseMessage(exchange.getIn());
-
-        assertFileExists(testFile.getAbsolutePath());
-    }
-
-    void assertResultExchange(Exchange resultExchange, boolean delete) {
-        assertIsInstanceOf(InputStream.class, resultExchange.getIn().getBody());
-
-        if (!delete) {
-            // assert on the file content only in case the "deleteAfterWrite"
-            // option is NOT enabled
-            // in which case we would still have the file and thereby could
-            // assert on it's content
-            assertEquals("This is my bucket content.", resultExchange.getIn().getBody(String.class));
-        }
-
-        assertEquals(getCamelBucket(), resultExchange.getIn().getHeader(S3Constants.BUCKET_NAME));
-        assertEquals("CamelUnitTest", resultExchange.getIn().getHeader(S3Constants.KEY));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.VERSION_ID)); // not
-                                                                             // enabled
-                                                                             // on
-                                                                             // this
-                                                                             // bucket
-        assertNull(resultExchange.getIn().getHeader(S3Constants.LAST_MODIFIED));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.E_TAG));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_TYPE));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_ENCODING));
-        assertEquals(0L, resultExchange.getIn().getHeader(S3Constants.CONTENT_LENGTH));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_MD5));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CACHE_CONTROL));
-        assertNotNull(resultExchange.getIn().getHeader(S3Constants.USER_METADATA));
-        assertEquals(0, resultExchange.getIn().getHeader(S3Constants.S3_HEADERS, Map.class).size());
-    }
-
-    void assertResponseMessage(Message message) {
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", message.getHeader(S3Constants.E_TAG));
-        assertNull(message.getHeader(S3Constants.VERSION_ID));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://" + getCamelBucket() + "?amazonS3Client=#amazonS3Client";
-
-                from("direct:startKeep").to(awsEndpoint + "&deleteAfterWrite=false");
-
-                from("direct:startDelete").to(awsEndpoint + "&deleteAfterWrite=true");
-
-                from(awsEndpoint + "&maxMessagesPerPoll=5").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectEncryptionTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectEncryptionTest.java
deleted file mode 100644
index 13ea9bb..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectEncryptionTest.java
+++ /dev/null
@@ -1,86 +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.aws.s3;
-
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ComponentCopyObjectEncryptionTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3EncryptionClientMock clientMock = new AmazonS3EncryptionClientMock();
-
-    @EndpointInject("direct:start")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.send("direct:start", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.BUCKET_DESTINATION_NAME, "camelDestinationBucket");
-                exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
-                exchange.getIn().setHeader(S3Constants.DESTINATION_KEY, "camelDestinationKey");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        assertEquals("11192828ahsh2723", resultExchange.getIn().getHeader(S3Constants.VERSION_ID));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.LAST_MODIFIED));
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", resultExchange.getIn().getHeader(S3Constants.E_TAG));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_TYPE));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_ENCODING));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_MD5));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CACHE_CONTROL));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.USER_METADATA));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=copyObject";
-
-                from("direct:start").to(awsEndpoint).to("mock:result");
-
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectSpringTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectSpringTest.java
deleted file mode 100644
index 8d373aa..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectSpringTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.aws.s3;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ComponentCopyObjectSpringTest extends CamelSpringTestSupport {
-
-    @EndpointInject("direct:start")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.send("direct:copyObject", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.BUCKET_DESTINATION_NAME, "camelDestinationBucket");
-                exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
-                exchange.getIn().setHeader(S3Constants.DESTINATION_KEY, "camelDestinationKey");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        assertEquals("11192828ahsh2723", resultExchange.getIn().getHeader(S3Constants.VERSION_ID));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.LAST_MODIFIED));
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", resultExchange.getIn().getHeader(S3Constants.E_TAG));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_TYPE));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_ENCODING));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_MD5));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CACHE_CONTROL));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.USER_METADATA));
-    }
-
-    @Override
-    protected ClassPathXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/component/aws/s3/S3ComponentSpringTest-context.xml");
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectTest.java
deleted file mode 100644
index 39a1b58..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectTest.java
+++ /dev/null
@@ -1,86 +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.aws.s3;
-
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ComponentCopyObjectTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:start")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.send("direct:start", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.BUCKET_DESTINATION_NAME, "camelDestinationBucket");
-                exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
-                exchange.getIn().setHeader(S3Constants.DESTINATION_KEY, "camelDestinationKey");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        assertEquals("11192828ahsh2723", resultExchange.getIn().getHeader(S3Constants.VERSION_ID));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.LAST_MODIFIED));
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", resultExchange.getIn().getHeader(S3Constants.E_TAG));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_TYPE));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_ENCODING));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_MD5));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CACHE_CONTROL));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.USER_METADATA));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=copyObject";
-
-                from("direct:start").to(awsEndpoint).to("mock:result");
-
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDeleteObjectSpringTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDeleteObjectSpringTest.java
deleted file mode 100644
index 1c4f9c8..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDeleteObjectSpringTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.aws.s3;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class S3ComponentDeleteObjectSpringTest extends CamelSpringTestSupport {
-
-    @EndpointInject("direct:start")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.send("direct:deleteObject", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        assertEquals(true, resultExchange.getIn().getBody());
-    }
-
-    @Override
-    protected ClassPathXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/component/aws/s3/S3ComponentSpringTest-context.xml");
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDeleteObjectTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDeleteObjectTest.java
deleted file mode 100644
index 52bfa9d..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDeleteObjectTest.java
+++ /dev/null
@@ -1,75 +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.aws.s3;
-
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class S3ComponentDeleteObjectTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:start")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.send("direct:start", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        assertEquals(true, resultExchange.getIn().getBody());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteObject";
-
-                from("direct:start").to(awsEndpoint).to("mock:result");
-
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDownloadLinkSpringTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDownloadLinkSpringTest.java
deleted file mode 100644
index bb30b87..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDownloadLinkSpringTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.aws.s3;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
-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 S3ComponentDownloadLinkSpringTest extends CamelSpringTestSupport {
-
-    @EndpointInject("direct:downloadLink")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        Map<String, Object> headers = new HashMap<>();
-        headers.put(S3Constants.KEY, "test");
-        template.sendBodyAndHeaders("direct:downloadLink", headers);
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        String dlLink = resultExchange.getIn().getHeader(S3Constants.DOWNLOAD_LINK, String.class);
-        assertEquals("http://aws.amazonas.s3/file.zip", dlLink);
-    }
-
-    @Override
-    protected AbstractApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/component/aws/s3/S3ComponentSpringTest-context.xml");
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDownloadLinkTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDownloadLinkTest.java
deleted file mode 100644
index 1297f1e9..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDownloadLinkTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.aws.s3;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class S3ComponentDownloadLinkTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:downloadLink")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        Map<String, Object> headers = new HashMap<>();
-        headers.put(S3Constants.KEY, "test");
-        template.sendBodyAndHeaders("direct:downloadLink", headers);
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        String dlLink = resultExchange.getIn().getHeader(S3Constants.DOWNLOAD_LINK, String.class);
-        assertEquals("http://aws.amazonas.s3/file.zip", dlLink);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=downloadLink";
-
-                from("direct:downloadLink").to(awsEndpoint).to("mock:result");
-
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentExistingBucketTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentExistingBucketTest.java
deleted file mode 100644
index 0aa3a94..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentExistingBucketTest.java
+++ /dev/null
@@ -1,184 +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.aws.s3;
-
-import java.io.InputStream;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ComponentExistingBucketTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:start")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = template.send("direct:start", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-        PutObjectRequest putObjectRequest = clientMock.putObjectRequests.get(0);
-        assertEquals("REDUCED_REDUNDANCY", putObjectRequest.getStorageClass());
-        assertEquals("mycamelbucket", putObjectRequest.getBucketName());
-
-        assertResponseMessage(exchange.getIn());
-    }
-
-    @Test
-    public void sendInOut() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = template.send("direct:start", ExchangePattern.InOut, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-        PutObjectRequest putObjectRequest = clientMock.putObjectRequests.get(0);
-        assertEquals("REDUCED_REDUNDANCY", putObjectRequest.getStorageClass());
-        assertEquals("mycamelbucket", putObjectRequest.getBucketName());
-
-        assertResponseMessage(exchange.getMessage());
-    }
-
-    @Test
-    public void sendCustomHeaderValues() throws Exception {
-        result.expectedMessageCount(1);
-        final Date now = new Date();
-        final Map<String, String> userMetadata = new HashMap<>();
-        userMetadata.put("CamelName", "Camel");
-        final Map<String, String> s3Headers = new HashMap<>();
-        s3Headers.put("x-aws-s3-header", "extra");
-
-        Exchange exchange = template.send("direct:start", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.STORAGE_CLASS, "STANDARD");
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setHeader(S3Constants.CONTENT_LENGTH, 26L);
-                exchange.getIn().setHeader(S3Constants.CONTENT_TYPE, "text/html");
-                exchange.getIn().setHeader(S3Constants.CACHE_CONTROL, "no-cache");
-                exchange.getIn().setHeader(S3Constants.CONTENT_DISPOSITION, "attachment;");
-                exchange.getIn().setHeader(S3Constants.CONTENT_ENCODING, "gzip");
-                exchange.getIn().setHeader(S3Constants.CONTENT_MD5, "TWF");
-                exchange.getIn().setHeader(S3Constants.LAST_MODIFIED, now);
-                exchange.getIn().setHeader(S3Constants.USER_METADATA, userMetadata);
-                exchange.getIn().setHeader(S3Constants.S3_HEADERS, s3Headers);
-
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-        PutObjectRequest putObjectRequest = clientMock.putObjectRequests.get(0);
-        assertEquals("STANDARD", putObjectRequest.getStorageClass());
-        assertEquals("mycamelbucket", putObjectRequest.getBucketName());
-        assertEquals(26L, putObjectRequest.getMetadata().getContentLength());
-        assertEquals("text/html", putObjectRequest.getMetadata().getContentType());
-        assertEquals("no-cache", putObjectRequest.getMetadata().getCacheControl());
-        assertEquals("attachment;", putObjectRequest.getMetadata().getContentDisposition());
-        assertEquals("gzip", putObjectRequest.getMetadata().getContentEncoding());
-        assertEquals("TWF", putObjectRequest.getMetadata().getContentMD5());
-        assertEquals(now, putObjectRequest.getMetadata().getLastModified());
-        assertEquals(userMetadata, putObjectRequest.getMetadata().getUserMetadata());
-        assertEquals("extra", putObjectRequest.getMetadata().getRawMetadataValue("x-aws-s3-header"));
-
-        assertResponseMessage(exchange.getIn());
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        assertIsInstanceOf(InputStream.class, resultExchange.getIn().getBody());
-        assertEquals("This is my bucket content.", resultExchange.getIn().getBody(String.class));
-        assertEquals("mycamelbucket", resultExchange.getIn().getHeader(S3Constants.BUCKET_NAME));
-        assertEquals("CamelUnitTest", resultExchange.getIn().getHeader(S3Constants.KEY));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.VERSION_ID)); // not
-                                                                             // enabled
-                                                                             // on
-                                                                             // this
-                                                                             // bucket
-        assertNull(resultExchange.getIn().getHeader(S3Constants.LAST_MODIFIED));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.E_TAG));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_TYPE));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_ENCODING));
-        assertEquals(0L, resultExchange.getIn().getHeader(S3Constants.CONTENT_LENGTH));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_MD5));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CACHE_CONTROL));
-        assertNotNull(resultExchange.getIn().getHeader(S3Constants.USER_METADATA));
-        assertEquals(0, resultExchange.getIn().getHeader(S3Constants.S3_HEADERS, Map.class).size());
-    }
-
-    private void assertResponseMessage(Message message) {
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", message.getHeader(S3Constants.E_TAG));
-        assertNull(message.getHeader(S3Constants.VERSION_ID));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client";
-
-                from("direct:start").to(awsEndpoint + "&storageClass=REDUCED_REDUNDANCY");
-
-                from(awsEndpoint + "&maxMessagesPerPoll=5").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentFileDeleteTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentFileDeleteTest.java
deleted file mode 100644
index ad79838..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentFileDeleteTest.java
+++ /dev/null
@@ -1,59 +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.aws.s3;
-
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
-import org.junit.jupiter.api.Test;
-
-import static org.apache.camel.test.junit5.TestSupport.assertFileNotExists;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class S3ComponentFileDeleteTest extends S3ComponentFileTest {
-
-    @Override
-    String getCamelBucket() {
-        return "myothercamelbucket";
-    }
-
-    @Test
-    @Override
-    public void sendFile() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = templateDelete.send("direct:startDelete", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody(testFile);
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0), true);
-
-        PutObjectRequest putObjectRequest = client.putObjectRequests.get(0);
-        assertEquals(getCamelBucket(), putObjectRequest.getBucketName());
-
-        assertResponseMessage(exchange.getIn());
-
-        assertFileNotExists(testFile.getAbsolutePath());
-    }
-
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentFileTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentFileTest.java
deleted file mode 100644
index ea16a62..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentFileTest.java
+++ /dev/null
@@ -1,158 +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.aws.s3;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.InputStream;
-import java.util.Map;
-
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.apache.camel.util.FileUtil;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.apache.camel.test.junit5.TestSupport.assertFileExists;
-import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ComponentFileTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock client = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:startKeep")
-    ProducerTemplate templateKeep;
-
-    @EndpointInject("direct:startDelete")
-    ProducerTemplate templateDelete;
-
-    @EndpointInject("mock:result")
-    MockEndpoint result;
-
-    File testFile;
-
-    String getCamelBucket() {
-        return "mycamelbucket";
-    }
-
-    @BeforeEach
-    public void setup() throws Exception {
-        super.setUp();
-
-        testFile = FileUtil.createTempFile("test", "file", new File("target/tmp"));
-
-        FileWriter writer = new FileWriter(testFile);
-        writer.write("This is my bucket content.");
-        writer.close();
-    }
-
-    @Override
-    @AfterEach
-    public void tearDown() throws Exception {
-        super.tearDown();
-
-        FileUtil.deleteFile(testFile);
-    }
-
-    @Test
-    public void sendFile() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = templateKeep.send("direct:startKeep", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody(testFile);
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0), true);
-
-        PutObjectRequest putObjectRequest = client.putObjectRequests.get(0);
-        assertEquals(getCamelBucket(), putObjectRequest.getBucketName());
-
-        assertResponseMessage(exchange.getIn());
-
-        assertFileExists(testFile.getAbsolutePath());
-    }
-
-    void assertResultExchange(Exchange resultExchange, boolean delete) {
-        assertIsInstanceOf(InputStream.class, resultExchange.getIn().getBody());
-
-        if (!delete) {
-            // assert on the file content only in case the "deleteAfterWrite"
-            // option is NOT enabled
-            // in which case we would still have the file and thereby could
-            // assert on it's content
-            assertEquals("This is my bucket content.", resultExchange.getIn().getBody(String.class));
-        }
-
-        assertEquals(getCamelBucket(), resultExchange.getIn().getHeader(S3Constants.BUCKET_NAME));
-        assertEquals("CamelUnitTest", resultExchange.getIn().getHeader(S3Constants.KEY));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.VERSION_ID)); // not
-                                                                             // enabled
-                                                                             // on
-                                                                             // this
-                                                                             // bucket
-        assertNull(resultExchange.getIn().getHeader(S3Constants.LAST_MODIFIED));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.E_TAG));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_TYPE));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_ENCODING));
-        assertEquals(0L, resultExchange.getIn().getHeader(S3Constants.CONTENT_LENGTH));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_MD5));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CACHE_CONTROL));
-        assertNotNull(resultExchange.getIn().getHeader(S3Constants.USER_METADATA));
-        assertEquals(0, resultExchange.getIn().getHeader(S3Constants.S3_HEADERS, Map.class).size());
-    }
-
-    void assertResponseMessage(Message message) {
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", message.getHeader(S3Constants.E_TAG));
-        assertNull(message.getHeader(S3Constants.VERSION_ID));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://" + getCamelBucket() + "?amazonS3Client=#amazonS3Client";
-
-                from("direct:startKeep").to(awsEndpoint + "&deleteAfterWrite=false");
-
-                from("direct:startDelete").to(awsEndpoint + "&deleteAfterWrite=true");
-
-                from(awsEndpoint + "&maxMessagesPerPoll=5").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentGetObjectRangeTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentGetObjectRangeTest.java
deleted file mode 100644
index c7448a8..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentGetObjectRangeTest.java
+++ /dev/null
@@ -1,70 +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.aws.s3;
-
-import com.amazonaws.services.s3.AmazonS3;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-public class S3ComponentGetObjectRangeTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3 clientMock = new AmazonS3ClientMock();
-
-    @EndpointInject
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.send("direct:getObjectRange", new Processor() {
-
-            @Override
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "pippo.txt");
-                exchange.getIn().setHeader(S3Constants.RANGE_START, 0);
-                exchange.getIn().setHeader(S3Constants.RANGE_END, 9);
-            }
-        });
-        assertMockEndpointsSatisfied();
-
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObjectRange";
-
-                from("direct:getObjectRange").to(awsEndpoint).to("mock:result");
-
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentGetObjectTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentGetObjectTest.java
deleted file mode 100644
index 3a0887f..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentGetObjectTest.java
+++ /dev/null
@@ -1,68 +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.aws.s3;
-
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-public class S3ComponentGetObjectTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:listBuckets")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.send("direct:getObject", new Processor() {
-
-            @Override
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "test");
-
-            }
-        });
-        assertMockEndpointsSatisfied();
-
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObject";
-
-                from("direct:getObject").to(awsEndpoint).to("mock:result");
-
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentKeyNameFileTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentKeyNameFileTest.java
deleted file mode 100644
index 4f0796e..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentKeyNameFileTest.java
+++ /dev/null
@@ -1,156 +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.aws.s3;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.InputStream;
-import java.util.Map;
-
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.apache.camel.util.FileUtil;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.apache.camel.test.junit5.TestSupport.assertFileExists;
-import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ComponentKeyNameFileTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock client = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:startKeep")
-    ProducerTemplate templateKeep;
-
-    @EndpointInject("direct:startDelete")
-    ProducerTemplate templateDelete;
-
-    @EndpointInject("mock:result")
-    MockEndpoint result;
-
-    File testFile;
-
-    String getCamelBucket() {
-        return "mycamelbucket";
-    }
-
-    @BeforeEach
-    public void setup() throws Exception {
-        super.setUp();
-
-        testFile = FileUtil.createTempFile("test", "file", new File("target/tmp"));
-
-        FileWriter writer = new FileWriter(testFile);
-        writer.write("This is my bucket content.");
-        writer.close();
-    }
-
-    @Override
-    @AfterEach
-    public void tearDown() throws Exception {
-        super.tearDown();
-
-        FileUtil.deleteFile(testFile);
-    }
-
-    @Test
-    public void sendFile() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = templateKeep.send("direct:startKeep", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setBody(new FileInputStream(testFile));
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0), true);
-
-        PutObjectRequest putObjectRequest = client.putObjectRequests.get(0);
-        assertEquals(getCamelBucket(), putObjectRequest.getBucketName());
-
-        assertResponseMessage(exchange.getIn());
-
-        assertFileExists(testFile.getAbsolutePath());
-    }
-
-    void assertResultExchange(Exchange resultExchange, boolean delete) {
-        assertIsInstanceOf(InputStream.class, resultExchange.getIn().getBody());
-
-        if (!delete) {
-            // assert on the file content only in case the "deleteAfterWrite"
-            // option is NOT enabled
-            // in which case we would still have the file and thereby could
-            // assert on it's content
-            assertEquals("This is my bucket content.", resultExchange.getIn().getBody(String.class));
-        }
-
-        assertEquals(getCamelBucket(), resultExchange.getIn().getHeader(S3Constants.BUCKET_NAME));
-        assertEquals("CamelUnitTest", resultExchange.getIn().getHeader(S3Constants.KEY));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.VERSION_ID)); // not
-                                                                             // enabled
-                                                                             // on
-                                                                             // this
-                                                                             // bucket
-        assertNull(resultExchange.getIn().getHeader(S3Constants.LAST_MODIFIED));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.E_TAG));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_TYPE));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_ENCODING));
-        assertEquals(0L, resultExchange.getIn().getHeader(S3Constants.CONTENT_LENGTH));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_MD5));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CACHE_CONTROL));
-        assertNotNull(resultExchange.getIn().getHeader(S3Constants.USER_METADATA));
-        assertEquals(0, resultExchange.getIn().getHeader(S3Constants.S3_HEADERS, Map.class).size());
-    }
-
-    void assertResponseMessage(Message message) {
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", message.getHeader(S3Constants.E_TAG));
-        assertNull(message.getHeader(S3Constants.VERSION_ID));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://" + getCamelBucket() + "?amazonS3Client=#amazonS3Client";
-
-                from("direct:startKeep").to(awsEndpoint + "&deleteAfterWrite=false&keyName=CamelUnitTest");
-
-                from(awsEndpoint + "&maxMessagesPerPoll=5").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListBucketsSpringTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListBucketsSpringTest.java
deleted file mode 100644
index 2ac9e0f..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListBucketsSpringTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.aws.s3;
-
-import java.util.List;
-
-import com.amazonaws.services.s3.model.Bucket;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class S3ComponentListBucketsSpringTest extends CamelSpringTestSupport {
-
-    @EndpointInject("direct:listBuckets")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.sendBody("direct:listBuckets", ExchangePattern.InOnly, "");
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        List<Bucket> list = resultExchange.getIn().getBody(List.class);
-        assertEquals(1, list.size());
-        assertEquals("camel", list.get(0).getOwner().getDisplayName());
-        assertEquals("camel-bucket", list.get(0).getName());
-    }
-
-    @Override
-    protected ClassPathXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/component/aws/s3/S3ComponentSpringTest-context.xml");
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListBucketsTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListBucketsTest.java
deleted file mode 100644
index 0e0f6d4..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListBucketsTest.java
+++ /dev/null
@@ -1,75 +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.aws.s3;
-
-import java.util.List;
-
-import com.amazonaws.services.s3.model.Bucket;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class S3ComponentListBucketsTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:listBuckets")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.sendBody("direct:listBuckets", ExchangePattern.InOnly, "");
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        List<Bucket> list = resultExchange.getIn().getBody(List.class);
-        assertEquals(1, list.size());
-        assertEquals("camel", list.get(0).getOwner().getDisplayName());
-        assertEquals("camel-bucket", list.get(0).getName());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listBuckets";
-
-                from("direct:listBuckets").to(awsEndpoint).to("mock:result");
-
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListObjectTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListObjectTest.java
deleted file mode 100644
index 897e190..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListObjectTest.java
+++ /dev/null
@@ -1,73 +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.aws.s3;
-
-import com.amazonaws.services.s3.model.ObjectListing;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class S3ComponentListObjectTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:listBuckets")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.sendBody("direct:listObjects", ExchangePattern.InOnly, "");
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        ObjectListing list = resultExchange.getIn().getBody(ObjectListing.class);
-        assertEquals(1, list.getObjectSummaries().size());
-        assertEquals("Myfile", list.getObjectSummaries().get(0).getKey());
-        assertEquals("test", list.getObjectSummaries().get(0).getBucketName());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listObjects";
-
-                from("direct:listObjects").to(awsEndpoint).to("mock:result");
-
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListObjectsSpringTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListObjectsSpringTest.java
deleted file mode 100644
index f92fbb0..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListObjectsSpringTest.java
+++ /dev/null
@@ -1,61 +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.aws.s3;
-
-import com.amazonaws.services.s3.model.ObjectListing;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class S3ComponentListObjectsSpringTest extends CamelSpringTestSupport {
-
-    @EndpointInject("direct:listBuckets")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.sendBody("direct:listObjects", ExchangePattern.InOnly, "");
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        ObjectListing list = resultExchange.getIn().getBody(ObjectListing.class);
-        assertEquals(1, list.getObjectSummaries().size());
-        assertEquals("Myfile", list.getObjectSummaries().get(0).getKey());
-        assertEquals("test", list.getObjectSummaries().get(0).getBucketName());
-    }
-
-    @Override
-    protected ClassPathXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/component/aws/s3/S3ComponentSpringTest-context.xml");
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentNonExistingBucketTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentNonExistingBucketTest.java
deleted file mode 100644
index edad2ae..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentNonExistingBucketTest.java
+++ /dev/null
@@ -1,178 +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.aws.s3;
-
-import java.io.InputStream;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ComponentNonExistingBucketTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock client = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:start")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendInOnly() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = template.send("direct:start", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-        PutObjectRequest putObjectRequest = client.putObjectRequests.get(0);
-        assertEquals("REDUCED_REDUNDANCY", putObjectRequest.getStorageClass());
-        assertEquals("nonExistingBucket", putObjectRequest.getBucketName());
-
-        assertResponseMessage(exchange.getIn());
-    }
-
-    @Test
-    public void sendInOut() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = template.send("direct:start", ExchangePattern.InOut, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-        PutObjectRequest putObjectRequest = client.putObjectRequests.get(0);
-        assertEquals("REDUCED_REDUNDANCY", putObjectRequest.getStorageClass());
-        assertEquals("nonExistingBucket", putObjectRequest.getBucketName());
-
-        assertResponseMessage(exchange.getMessage());
-    }
-
-    @Test
-    public void sendCustomHeaderValues() throws Exception {
-        result.expectedMessageCount(1);
-        final Date now = new Date();
-        final Map<String, String> s3Headers = new HashMap<>();
-        s3Headers.put("x-aws-s3-header", "extra");
-
-        Exchange exchange = template.send("direct:start", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.STORAGE_CLASS, "STANDARD");
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setHeader(S3Constants.CONTENT_LENGTH, 26L);
-                exchange.getIn().setHeader(S3Constants.CONTENT_TYPE, "text/html");
-                exchange.getIn().setHeader(S3Constants.CACHE_CONTROL, "no-cache");
-                exchange.getIn().setHeader(S3Constants.CONTENT_DISPOSITION, "attachment;");
-                exchange.getIn().setHeader(S3Constants.CONTENT_ENCODING, "gzip");
-                exchange.getIn().setHeader(S3Constants.CONTENT_MD5, "TWF");
-                exchange.getIn().setHeader(S3Constants.LAST_MODIFIED, now);
-                exchange.getIn().setHeader(S3Constants.S3_HEADERS, s3Headers);
-
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-        PutObjectRequest putObjectRequest = client.putObjectRequests.get(0);
-        assertEquals("STANDARD", putObjectRequest.getStorageClass());
-        assertEquals("nonExistingBucket", putObjectRequest.getBucketName());
-        assertEquals(26L, putObjectRequest.getMetadata().getContentLength());
-        assertEquals("text/html", putObjectRequest.getMetadata().getContentType());
-        assertEquals("no-cache", putObjectRequest.getMetadata().getCacheControl());
-        assertEquals("attachment;", putObjectRequest.getMetadata().getContentDisposition());
-        assertEquals("gzip", putObjectRequest.getMetadata().getContentEncoding());
-        assertEquals("TWF", putObjectRequest.getMetadata().getContentMD5());
-        assertEquals(now, putObjectRequest.getMetadata().getLastModified());
-        assertEquals("extra", putObjectRequest.getMetadata().getRawMetadataValue("x-aws-s3-header"));
-
-        assertResponseMessage(exchange.getIn());
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        assertIsInstanceOf(InputStream.class, resultExchange.getIn().getBody());
-        assertEquals("This is my bucket content.", resultExchange.getIn().getBody(String.class));
-        assertEquals("nonExistingBucket", resultExchange.getIn().getHeader(S3Constants.BUCKET_NAME));
-        assertEquals("CamelUnitTest", resultExchange.getIn().getHeader(S3Constants.KEY));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.VERSION_ID)); // not
-                                                                             // enabled
-                                                                             // on
-                                                                             // this
-                                                                             // bucket
-        assertNull(resultExchange.getIn().getHeader(S3Constants.LAST_MODIFIED));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.E_TAG));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_TYPE));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_ENCODING));
-        assertEquals(0L, resultExchange.getIn().getHeader(S3Constants.CONTENT_LENGTH));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_MD5));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CACHE_CONTROL));
-        assertEquals(0, resultExchange.getIn().getHeader(S3Constants.S3_HEADERS, Map.class).size());
-    }
-
-    private void assertResponseMessage(Message message) {
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", message.getHeader(S3Constants.E_TAG));
-        assertNull(message.getHeader(S3Constants.VERSION_ID));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://nonExistingBucket?amazonS3Client=#amazonS3Client&policy=xxx";
-
-                from("direct:start").to(awsEndpoint + "&storageClass=REDUCED_REDUNDANCY");
-
-                from(awsEndpoint + "&maxMessagesPerPoll=5").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentSpringTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentSpringTest.java
deleted file mode 100644
index 2d37882..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentSpringTest.java
+++ /dev/null
@@ -1,109 +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.aws.s3;
-
-import java.io.InputStream;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ComponentSpringTest extends CamelSpringTestSupport {
-
-    @EndpointInject("direct:start")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendInOnly() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = template.send("direct:start", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-        assertResponseMessage(exchange.getIn());
-    }
-
-    @Test
-    public void sendInOut() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = template.send("direct:start", ExchangePattern.InOut, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-        assertResponseMessage(exchange.getMessage());
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        assertIsInstanceOf(InputStream.class, resultExchange.getIn().getBody());
-        assertEquals("This is my bucket content.", resultExchange.getIn().getBody(String.class));
-        assertEquals("mycamelbucket", resultExchange.getIn().getHeader(S3Constants.BUCKET_NAME));
-        assertEquals("CamelUnitTest", resultExchange.getIn().getHeader(S3Constants.KEY));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.VERSION_ID)); // not
-                                                                             // enabled
-                                                                             // on
-                                                                             // this
-                                                                             // bucket
-        assertNull(resultExchange.getIn().getHeader(S3Constants.LAST_MODIFIED));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.E_TAG));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_TYPE));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_ENCODING));
-        assertEquals(0L, resultExchange.getIn().getHeader(S3Constants.CONTENT_LENGTH));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_MD5));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CACHE_CONTROL));
-    }
-
-    private void assertResponseMessage(Message message) {
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", message.getHeader(S3Constants.E_TAG));
-        assertNull(message.getHeader(S3Constants.VERSION_ID));
-    }
-
-    @Override
-    protected ClassPathXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/component/aws/s3/S3ComponentSpringTest-context.xml");
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentStringTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentStringTest.java
deleted file mode 100644
index 932bc94..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentStringTest.java
+++ /dev/null
@@ -1,96 +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.aws.s3;
-
-import java.io.File;
-
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-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.Test;
-
-import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ComponentStringTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock client = new AmazonS3ClientMock();
-
-    @EndpointInject("direct:sendString")
-    ProducerTemplate templateSendString;
-
-    @EndpointInject("mock:result")
-    MockEndpoint result;
-
-    File testFile;
-
-    String getCamelBucket() {
-        return "mycamelbucket";
-    }
-
-    @Test
-    public void sendString() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = templateSendString.send("direct:sendString", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody("Peppe");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0), true);
-
-        PutObjectRequest putObjectRequest = client.putObjectRequests.get(0);
-        assertEquals(getCamelBucket(), putObjectRequest.getBucketName());
-
-        assertResponseMessage(exchange.getIn());
-    }
-
-    void assertResultExchange(Exchange resultExchange, boolean delete) {
-        assertIsInstanceOf(String.class, resultExchange.getIn().getBody());
-    }
-
-    void assertResponseMessage(Message message) {
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", message.getHeader(S3Constants.E_TAG));
-        assertNull(message.getHeader(S3Constants.VERSION_ID));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://" + getCamelBucket() + "?amazonS3Client=#amazonS3Client";
-
-                from("direct:sendString").to(awsEndpoint + "&deleteAfterWrite=false").to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentVerifierExtensionTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentVerifierExtensionTest.java
deleted file mode 100644
index 8cea8cc..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentVerifierExtensionTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.aws.s3;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.camel.Component;
-import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class S3ComponentVerifierExtensionTest extends CamelTestSupport {
-
-    // *************************************************
-    // Tests (parameters)
-    // *************************************************
-    @Override
-    public boolean isUseRouteBuilder() {
-        return false;
-    }
-
-    @Test
-    public void testParameters() throws Exception {
-        Component component = context().getComponent("aws-s3");
-
-        ComponentVerifierExtension verifier
-                = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
-
-        Map<String, Object> parameters = new HashMap<>();
-        parameters.put("secretKey", "l");
-        parameters.put("accessKey", "k");
-        parameters.put("region", "l");
-        parameters.put("bucketNameOrArn", "bucket1");
-
-        ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, parameters);
-
-        assertEquals(ComponentVerifierExtension.Result.Status.OK, result.getStatus());
-    }
-
-    @Test
-    public void testConnectivity() throws Exception {
-        Component component = context().getComponent("aws-s3");
-        ComponentVerifierExtension verifier
-                = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
-
-        Map<String, Object> parameters = new HashMap<>();
-        parameters.put("secretKey", "l");
-        parameters.put("accessKey", "k");
-        parameters.put("region", "US_EAST_1");
-        parameters.put("bucketNameOrArn", "test12");
-
-        ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters);
-
-        assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
-    }
-
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerCronTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerCronTest.java
deleted file mode 100644
index c1074c3..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerCronTest.java
+++ /dev/null
@@ -1,55 +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.aws.s3;
-
-import org.apache.camel.BindToRegistry;
-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.Test;
-
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class S3ConsumerCronTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @Test
-    public void testConsumerCron() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMinimumMessageCount(2);
-
-        assertMockEndpointsSatisfied();
-
-        assertNull(mock.getExchanges().get(0).getIn().getBody());
-        assertNull(mock.getExchanges().get(1).getIn().getBody());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client" + "&scheduler=spring&scheduler.cron=0/2+*+*+*+*+?"
-                     + "&sendEmptyMessageWhenIdle=true")
-                             .to("mock:result");
-            }
-        };
-    }
-
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerDelimiterTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerDelimiterTest.java
deleted file mode 100644
index 43e7b92..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerDelimiterTest.java
+++ /dev/null
@@ -1,119 +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.aws.s3;
-
-import java.io.UnsupportedEncodingException;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import com.amazonaws.AmazonClientException;
-import com.amazonaws.AmazonServiceException;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.services.s3.AmazonS3Client;
-import com.amazonaws.services.s3.model.ListObjectsRequest;
-import com.amazonaws.services.s3.model.ObjectListing;
-import com.amazonaws.services.s3.model.S3Object;
-import com.amazonaws.services.s3.model.S3ObjectSummary;
-import com.amazonaws.util.StringInputStream;
-import org.apache.camel.BindToRegistry;
-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.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-/**
- * Test to verify that the polling consumer delivers an empty Exchange when the sendEmptyMessageWhenIdle property is set
- * and a polling event yields no results.
- */
-public class S3ConsumerDelimiterTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    DummyAmazonS3Client clientMock = new DummyAmazonS3Client();
-
-    @Test
-    public void testConsumePrefixedMessages() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(1);
-
-        assertMockEndpointsSatisfied();
-        assertEquals("Camel rocks!", mock.getExchanges().get(0).getIn().getBody(String.class));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&delay=50" + "&maxMessagesPerPoll=5&delimiter=_")
-                        .to("mock:result");
-            }
-        };
-    }
-
-    class DummyAmazonS3Client extends AmazonS3Client {
-
-        private AtomicInteger requestCount = new AtomicInteger();
-
-        DummyAmazonS3Client() {
-            super(new BasicAWSCredentials("myAccessKey", "mySecretKey"));
-        }
-
-        @Override
-        public ObjectListing listObjects(ListObjectsRequest request) throws AmazonClientException, AmazonServiceException {
-            int currentRequestCount = requestCount.incrementAndGet();
-
-            assertEquals("mycamelbucket", request.getBucketName());
-            if (currentRequestCount == 2) {
-                assertEquals("_", request.getDelimiter());
-            }
-
-            ObjectListing response = new ObjectListing();
-            response.setBucketName(request.getBucketName());
-            response.setDelimiter(request.getDelimiter());
-
-            S3ObjectSummary s3ObjectSummary = new S3ObjectSummary();
-            s3ObjectSummary.setBucketName(request.getBucketName());
-            s3ObjectSummary.setKey("key");
-            response.getObjectSummaries().add(s3ObjectSummary);
-
-            return response;
-        }
-
-        @Override
-        public S3Object getObject(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-            assertEquals("mycamelbucket", bucketName);
-            assertEquals("key", key);
-
-            S3Object s3Object = new S3Object();
-            s3Object.setBucketName(bucketName);
-            s3Object.setKey(key);
-            try {
-                s3Object.setObjectContent(new StringInputStream("Camel rocks!"));
-            } catch (UnsupportedEncodingException e) {
-                // noop
-            }
-
-            return s3Object;
-        }
-
-        @Override
-        public void deleteObject(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-            // noop
-        }
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerIdleMessageTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerIdleMessageTest.java
deleted file mode 100644
index 789695c..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerIdleMessageTest.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.aws.s3;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.awaitility.Awaitility;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-/**
- * Test to verify that the polling consumer delivers an empty Exchange when the sendEmptyMessageWhenIdle property is set
- * and a polling event yields no results.
- */
-public class S3ConsumerIdleMessageTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3ClientMock clientMock = new AmazonS3ClientMock();
-
-    @Test
-    public void testConsumeIdleMessages() throws Exception {
-        Awaitility.await().atMost(110, TimeUnit.MILLISECONDS);
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMinimumMessageCount(2);
-        assertMockEndpointsSatisfied();
-        assertNull(mock.getExchanges().get(0).getIn().getBody());
-        assertNull(mock.getExchanges().get(1).getIn().getBody());
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&delay=50"
-                     + "&maxMessagesPerPoll=5&sendEmptyMessageWhenIdle=true").to("mock:result");
-            }
-        };
-    }
-
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerPrefixTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerPrefixTest.java
deleted file mode 100644
index fad14e7..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerPrefixTest.java
+++ /dev/null
@@ -1,119 +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.aws.s3;
-
-import java.io.UnsupportedEncodingException;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import com.amazonaws.AmazonClientException;
-import com.amazonaws.AmazonServiceException;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.services.s3.AmazonS3Client;
-import com.amazonaws.services.s3.model.ListObjectsRequest;
-import com.amazonaws.services.s3.model.ObjectListing;
-import com.amazonaws.services.s3.model.S3Object;
-import com.amazonaws.services.s3.model.S3ObjectSummary;
-import com.amazonaws.util.StringInputStream;
-import org.apache.camel.BindToRegistry;
-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.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-/**
- * Test to verify that the polling consumer delivers an empty Exchange when the sendEmptyMessageWhenIdle property is set
- * and a polling event yields no results.
- */
-public class S3ConsumerPrefixTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    DummyAmazonS3Client clientMock = new DummyAmazonS3Client();
-
-    @Test
-    public void testConsumePrefixedMessages() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(1);
-
-        assertMockEndpointsSatisfied();
-        assertEquals("Camel rocks!", mock.getExchanges().get(0).getIn().getBody(String.class));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&delay=50"
-                     + "&maxMessagesPerPoll=5&prefix=confidential").to("mock:result");
-            }
-        };
-    }
-
-    class DummyAmazonS3Client extends AmazonS3Client {
-
-        private AtomicInteger requestCount = new AtomicInteger();
-
-        DummyAmazonS3Client() {
-            super(new BasicAWSCredentials("myAccessKey", "mySecretKey"));
-        }
-
-        @Override
-        public ObjectListing listObjects(ListObjectsRequest request) throws AmazonClientException, AmazonServiceException {
-            int currentRequestCount = requestCount.incrementAndGet();
-
-            assertEquals("mycamelbucket", request.getBucketName());
-            if (currentRequestCount == 2) {
-                assertEquals("confidential", request.getPrefix());
-            }
-
-            ObjectListing response = new ObjectListing();
-            response.setBucketName(request.getBucketName());
-            response.setPrefix(request.getPrefix());
-
-            S3ObjectSummary s3ObjectSummary = new S3ObjectSummary();
-            s3ObjectSummary.setBucketName(request.getBucketName());
-            s3ObjectSummary.setKey("key");
-            response.getObjectSummaries().add(s3ObjectSummary);
-
-            return response;
-        }
-
-        @Override
-        public S3Object getObject(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-            assertEquals("mycamelbucket", bucketName);
-            assertEquals("key", key);
-
-            S3Object s3Object = new S3Object();
-            s3Object.setBucketName(bucketName);
-            s3Object.setKey(key);
-            try {
-                s3Object.setObjectContent(new StringInputStream("Camel rocks!"));
-            } catch (UnsupportedEncodingException e) {
-                // noop
-            }
-
-            return s3Object;
-        }
-
-        @Override
-        public void deleteObject(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-            // noop
-        }
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3IncludeBodyTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3IncludeBodyTest.java
deleted file mode 100644
index 23d8be2..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3IncludeBodyTest.java
+++ /dev/null
@@ -1,119 +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.aws.s3;
-
-import java.io.UnsupportedEncodingException;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import com.amazonaws.AmazonClientException;
-import com.amazonaws.AmazonServiceException;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.services.s3.AmazonS3Client;
-import com.amazonaws.services.s3.model.ListObjectsRequest;
-import com.amazonaws.services.s3.model.ObjectListing;
-import com.amazonaws.services.s3.model.S3Object;
-import com.amazonaws.services.s3.model.S3ObjectSummary;
-import com.amazonaws.util.StringInputStream;
-import org.apache.camel.BindToRegistry;
-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.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-/**
- * Test to verify that the body is not retrieved when the includeBody option is false
- */
-public class S3IncludeBodyTest extends CamelTestSupport {
-
-    @BindToRegistry("amazonS3Client")
-    DummyAmazonS3Client clientMock = new DummyAmazonS3Client();
-
-    @Test
-    public void testConsumePrefixedMessages() throws Exception {
-        MockEndpoint mock = getMockEndpoint("mock:result");
-        mock.expectedMessageCount(1);
-
-        assertMockEndpointsSatisfied();
-        assertNull(mock.getExchanges().get(0).getIn().getBody(String.class), "Expected body to be empty");
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&delay=50"
-                     + "&maxMessagesPerPoll=5&prefix=confidential&includeBody=false").to("mock:result");
-            }
-        };
-    }
-
-    class DummyAmazonS3Client extends AmazonS3Client {
-
-        private AtomicInteger requestCount = new AtomicInteger();
-
-        DummyAmazonS3Client() {
-            super(new BasicAWSCredentials("myAccessKey", "mySecretKey"));
-        }
-
-        @Override
-        public ObjectListing listObjects(ListObjectsRequest request) throws AmazonClientException, AmazonServiceException {
-            int currentRequestCount = requestCount.incrementAndGet();
-
-            assertEquals("mycamelbucket", request.getBucketName());
-            if (currentRequestCount == 2) {
-                assertEquals("confidential", request.getPrefix());
-            }
-
-            ObjectListing response = new ObjectListing();
-            response.setBucketName(request.getBucketName());
-            response.setPrefix(request.getPrefix());
-
-            S3ObjectSummary s3ObjectSummary = new S3ObjectSummary();
-            s3ObjectSummary.setBucketName(request.getBucketName());
-            s3ObjectSummary.setKey("key");
-            response.getObjectSummaries().add(s3ObjectSummary);
-
-            return response;
-        }
-
-        @Override
-        public S3Object getObject(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-            assertEquals("mycamelbucket", bucketName);
-            assertEquals("key", key);
-
-            S3Object s3Object = new S3Object();
-            s3Object.setBucketName(bucketName);
-            s3Object.setKey(key);
-            try {
-                s3Object.setObjectContent(new StringInputStream("Camel rocks!"));
-            } catch (UnsupportedEncodingException e) {
-                // noop
-            }
-
-            return s3Object;
-        }
-
-        @Override
-        public void deleteObject(String bucketName, String key) throws AmazonClientException, AmazonServiceException {
-            // noop
-        }
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/client/impl/IAMOptimizedAWSS3ClientImplTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/client/impl/IAMOptimizedAWSS3ClientImplTest.java
deleted file mode 100644
index 97ae866..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/client/impl/IAMOptimizedAWSS3ClientImplTest.java
+++ /dev/null
@@ -1,97 +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.aws.s3.client.impl;
-
-import com.amazonaws.ClientConfiguration;
-import com.amazonaws.Protocol;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3Client;
-import com.amazonaws.services.s3.AmazonS3EncryptionClient;
-import org.apache.camel.component.aws.s3.S3Configuration;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-/**
- * Basic testing to ensure that the IAMOptimizedAWSS3ClientImplTest class is returning a standard client that is capable
- * of encryption given certain parameters. This client is new to Camel as of 02-15-2018 and enables IAM temporary
- * credentials to improve security.
- */
-public class IAMOptimizedAWSS3ClientImplTest {
-    private static final int MAX_CONNECTIONS = 1;
-
-    @Test
-    public void iamOptimizedAWSS3ClientImplNoEncryption() {
-        S3ClientIAMOptimizedImpl iamOptimizedAWSS3Client
-                = new S3ClientIAMOptimizedImpl(getS3ConfigurationNoEncryption(), MAX_CONNECTIONS);
-        AmazonS3 s3Client = iamOptimizedAWSS3Client.getS3Client();
-        assertNotNull(s3Client);
-        assertFalse(s3Client instanceof AmazonS3EncryptionClient);
-    }
-
-    @Test
-    public void iamOptimizedAWSS3ClientImplUseEncryption() {
-        S3ClientIAMOptimizedImpl iamOptimizedAWSS3Client
-                = new S3ClientIAMOptimizedImpl(getS3ConfigurationUseEncryption(), MAX_CONNECTIONS);
-        AmazonS3 s3Client = iamOptimizedAWSS3Client.getS3Client();
-        assertNotNull(s3Client);
-        assertTrue(s3Client instanceof AmazonS3EncryptionClient);
-    }
-
-    @Test
-    public void iamOptimizedAWSS3ClientImplWithProxy() {
-        S3ClientIAMOptimizedImpl iamOptimizedAWSS3Client
-                = new S3ClientIAMOptimizedImpl(getS3ConfigurationUseProxy(), MAX_CONNECTIONS);
-        AmazonS3 s3Client = iamOptimizedAWSS3Client.getS3Client();
-        assertNotNull(s3Client);
-        assertFalse(s3Client instanceof AmazonS3EncryptionClient);
-
-        ClientConfiguration configuration = ((AmazonS3Client) s3Client).getClientConfiguration();
-        assertEquals(Protocol.HTTP, configuration.getProxyProtocol());
-    }
-
-    private S3Configuration getS3ConfigurationNoEncryption() {
-        S3Configuration s3Configuration = mock(S3Configuration.class);
-        when(s3Configuration.getRegion()).thenReturn("US_EAST_1");
-        when(s3Configuration.isUseEncryption()).thenReturn(false);
-        return s3Configuration;
-    }
-
-    private S3Configuration getS3ConfigurationUseEncryption() {
-        S3Configuration s3Configuration = mock(S3Configuration.class);
-        when(s3Configuration.getRegion()).thenReturn("US_EAST_1");
-        when(s3Configuration.isUseEncryption()).thenReturn(true);
-        return s3Configuration;
-    }
-
-    private S3Configuration getS3ConfigurationUseProxy() {
-        S3Configuration s3Configuration = mock(S3Configuration.class);
-        when(s3Configuration.getRegion()).thenReturn("US_EAST_1");
-
-        when(s3Configuration.hasProxyConfiguration()).thenReturn(true);
-        when(s3Configuration.getProxyProtocol()).thenReturn(Protocol.HTTP);
-        when(s3Configuration.getProxyHost()).thenReturn("PROXY_HOST");
-        when(s3Configuration.getProxyPort()).thenReturn(1234);
-
-        return s3Configuration;
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/client/impl/StandardAWSS3ClientImplTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/client/impl/StandardAWSS3ClientImplTest.java
deleted file mode 100644
index 6c1a066..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/client/impl/StandardAWSS3ClientImplTest.java
+++ /dev/null
@@ -1,94 +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.aws.s3.client.impl;
-
-import com.amazonaws.ClientConfiguration;
-import com.amazonaws.Protocol;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3Client;
-import com.amazonaws.services.s3.AmazonS3EncryptionClient;
-import org.apache.camel.component.aws.s3.S3Configuration;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-/**
- * Basic testing to ensure that the StandardAWSS3ClientImpl class is returning a standard client that is capable of
- * encryption given certain parameters. These clients have been in existence for a long time, but haven't been properly
- * unit tested.
- */
-public class StandardAWSS3ClientImplTest {
-    private static final int MAX_CONNECTIONS = 1;
-
-    @Test
-    public void standardAWSS3ClientImplNoEncryption() {
-        S3ClientStandardImpl standardAWSS3Client = new S3ClientStandardImpl(getS3ConfigurationNoEncryption(), MAX_CONNECTIONS);
-        AmazonS3 s3Client = standardAWSS3Client.getS3Client();
-        assertNotNull(s3Client);
-        assertFalse(s3Client instanceof AmazonS3EncryptionClient);
-    }
-
-    @Test
-    public void standardAWSS3ClientImplUseEncryption() {
-        S3ClientStandardImpl standardAWSS3Client = new S3ClientStandardImpl(getS3ConfigurationUseEncryption(), MAX_CONNECTIONS);
-        AmazonS3 s3Client = standardAWSS3Client.getS3Client();
-        assertNotNull(s3Client);
-        assertTrue(s3Client instanceof AmazonS3EncryptionClient);
-    }
-
-    @Test
-    public void standardAWSS3ClientImplWithProxy() {
-        S3ClientStandardImpl standardAWSS3Client = new S3ClientStandardImpl(getS3ConfigurationUseProxy(), MAX_CONNECTIONS);
-        AmazonS3 s3Client = standardAWSS3Client.getS3Client();
-        assertNotNull(s3Client);
-        assertFalse(s3Client instanceof AmazonS3EncryptionClient);
-
-        ClientConfiguration configuration = ((AmazonS3Client) s3Client).getClientConfiguration();
-        assertEquals(Protocol.HTTP, configuration.getProxyProtocol());
-    }
-
-    private S3Configuration getS3ConfigurationNoEncryption() {
-        S3Configuration s3Configuration = mock(S3Configuration.class);
-        when(s3Configuration.getRegion()).thenReturn("US_EAST_1");
-        when(s3Configuration.isUseEncryption()).thenReturn(false);
-        return s3Configuration;
-    }
-
-    private S3Configuration getS3ConfigurationUseEncryption() {
-        S3Configuration s3Configuration = mock(S3Configuration.class);
-        when(s3Configuration.getRegion()).thenReturn("US_EAST_1");
-        when(s3Configuration.isUseEncryption()).thenReturn(true);
-        return s3Configuration;
-    }
-
-    private S3Configuration getS3ConfigurationUseProxy() {
-        S3Configuration s3Configuration = mock(S3Configuration.class);
-        when(s3Configuration.getRegion()).thenReturn("US_EAST_1");
-
-        when(s3Configuration.hasProxyConfiguration()).thenReturn(true);
-        when(s3Configuration.getProxyProtocol()).thenReturn(Protocol.HTTP);
-        when(s3Configuration.getProxyHost()).thenReturn("PROXY_HOST");
-        when(s3Configuration.getProxyPort()).thenReturn(1234);
-
-        return s3Configuration;
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/integration/S3ComponentIntegrationTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/integration/S3ComponentIntegrationTest.java
deleted file mode 100644
index d9dd3b6..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/integration/S3ComponentIntegrationTest.java
+++ /dev/null
@@ -1,135 +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.aws.s3.integration;
-
-import java.io.InputStream;
-
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.aws.s3.S3Constants;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-
-import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-@Disabled("Must be manually tested. Provide your own accessKey and secretKey!")
-public class S3ComponentIntegrationTest extends CamelTestSupport {
-
-    @EndpointInject("direct:start")
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendInOnly() throws Exception {
-        result.expectedMessageCount(2);
-
-        Exchange exchange1 = template.send("direct:start", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest1");
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        Exchange exchange2 = template.send("direct:start", ExchangePattern.InOnly, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest2");
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-        assertResultExchange(result.getExchanges().get(1));
-
-        assertResponseMessage(exchange1.getIn());
-        assertResponseMessage(exchange2.getIn());
-    }
-
-    @Test
-    public void sendInOut() throws Exception {
-        result.expectedMessageCount(1);
-
-        Exchange exchange = template.send("direct:start", ExchangePattern.InOut, new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "CamelUnitTest");
-                exchange.getIn().setBody("This is my bucket content.");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        assertResultExchange(result.getExchanges().get(0));
-
-        assertResponseMessage(exchange.getMessage());
-    }
-
-    private void assertResultExchange(Exchange resultExchange) {
-        assertIsInstanceOf(InputStream.class, resultExchange.getIn().getBody());
-        assertEquals("This is my bucket content.", resultExchange.getIn().getBody(String.class));
-        assertEquals("mynewcamelbucket", resultExchange.getIn().getHeader(S3Constants.BUCKET_NAME));
-        assertTrue(resultExchange.getIn().getHeader(S3Constants.KEY, String.class).startsWith("CamelUnitTest"));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.VERSION_ID)); // not
-                                                                             // enabled
-                                                                             // on
-                                                                             // this
-                                                                             // bucket
-        assertNotNull(resultExchange.getIn().getHeader(S3Constants.LAST_MODIFIED));
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", resultExchange.getIn().getHeader(S3Constants.E_TAG));
-        assertEquals("application/octet-stream", resultExchange.getIn().getHeader(S3Constants.CONTENT_TYPE));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_ENCODING));
-        assertEquals(26L, resultExchange.getIn().getHeader(S3Constants.CONTENT_LENGTH));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_DISPOSITION));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CONTENT_MD5));
-        assertNull(resultExchange.getIn().getHeader(S3Constants.CACHE_CONTROL));
-    }
-
-    private void assertResponseMessage(Message message) {
-        assertEquals("3a5c8b1ad448bca04584ecb55b836264", message.getHeader(S3Constants.E_TAG));
-        assertNull(message.getHeader(S3Constants.VERSION_ID));
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String s3EndpointUri
-                        = "aws-s3://mynewcamelbucket?accessKey=xxx&secretKey=yyy&region=us-west-1&policy=%7B%22Version%22%3A%222008-10-17%22,%22Id%22%3A%22Policy4324355464%22,"
-                          + "%22Statement%22%3A%5B%7B%22Sid%22%3A%22Stmt456464646477%22,%22Action%22%3A%5B%22s3%3AGetObject%22%5D,%22Effect%22%3A%22Allow%22,%22Resource%22%3A%5B%22arn%3A"
-                          + "aws%3As3%3A%3A%3Amynewcamelbucket/*%22%5D,%22Principal%22%3A%7B%22AWS%22%3A%5B%22*%22%5D%7D%7D%5D%7D";
-
-                from("direct:start").to(s3EndpointUri);
-
-                from(s3EndpointUri).to("mock:result");
-            }
-        };
-    }
-}
diff --git a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/integration/S3ObjectRangeOperationIntegrationTest.java b/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/integration/S3ObjectRangeOperationIntegrationTest.java
deleted file mode 100644
index 92a9422..0000000
--- a/components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/integration/S3ObjectRangeOperationIntegrationTest.java
+++ /dev/null
@@ -1,107 +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.aws.s3.integration;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-import com.amazonaws.auth.AWSStaticCredentialsProvider;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.regions.Regions;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3ClientBuilder;
-import com.amazonaws.services.s3.model.S3Object;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.aws.s3.S3Constants;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Disabled("Must be manually tested. Provide your own accessKey and secretKey!")
-public class S3ObjectRangeOperationIntegrationTest extends CamelTestSupport {
-
-    private static final Logger LOG = LoggerFactory.getLogger(S3ObjectRangeOperationIntegrationTest.class);
-
-    @BindToRegistry("amazonS3Client")
-    AmazonS3 client = AmazonS3ClientBuilder.standard()
-            .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials("xxx", "yyy")))
-            .withRegion(Regions.US_WEST_1)
-            .build();
-
-    @EndpointInject
-    private ProducerTemplate template;
-
-    @EndpointInject("mock:result")
-    private MockEndpoint result;
-
-    @Test
-    public void sendIn() throws Exception {
-        result.expectedMessageCount(1);
-
-        template.send("direct:getObjectRange", new Processor() {
-
-            @Override
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader(S3Constants.KEY, "pippo.txt");
-                exchange.getIn().setHeader(S3Constants.RANGE_START, 0);
-                exchange.getIn().setHeader(S3Constants.RANGE_END, 9);
-            }
-        });
-        assertMockEndpointsSatisfied();
-
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                String awsEndpoint = "aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObjectRange";
-
-                from("direct:getObjectRange").to(awsEndpoint).process(new Processor() {
-
-                    @Override
-                    public void process(Exchange exchange) throws Exception {
-                        S3Object s3 = exchange.getIn().getBody(S3Object.class);
-                        displayTextInputStream(s3.getObjectContent());
-
-                    }
-                }).to("mock:result");
-
-            }
-        };
-    }
-
-    private static void displayTextInputStream(InputStream input) throws IOException {
-        // Read the text input stream one line at a time and display each line.
-        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
-        String line = null;
-        while ((line = reader.readLine()) != null) {
-            LOG.info(line);
-        }
-    }
-}
diff --git a/components/camel-aws-s3/src/test/resources/log4j2.properties b/components/camel-aws-s3/src/test/resources/log4j2.properties
deleted file mode 100644
index caf55f1..0000000
--- a/components/camel-aws-s3/src/test/resources/log4j2.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You under the Apache License, Version 2.0
-## (the "License"); you may not use this file except in compliance with
-## the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS,
-## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-## See the License for the specific language governing permissions and
-## limitations under the License.
-## ---------------------------------------------------------------------------
-
-appender.file.type = File
-appender.file.name = file
-appender.file.fileName = target/camel-aws-s3-test.log
-appender.file.layout.type = PatternLayout
-appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-appender.out.type = Console
-appender.out.name = out
-appender.out.layout.type = PatternLayout
-appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-rootLogger.level = INFO
-rootLogger.appenderRef.file.ref = file
diff --git a/components/camel-aws-s3/src/test/resources/org/apache/camel/component/aws/s3/S3ComponentSpringTest-context.xml b/components/camel-aws-s3/src/test/resources/org/apache/camel/component/aws/s3/S3ComponentSpringTest-context.xml
deleted file mode 100644
index 0f04f6a..0000000
--- a/components/camel-aws-s3/src/test/resources/org/apache/camel/component/aws/s3/S3ComponentSpringTest-context.xml
+++ /dev/null
@@ -1,63 +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 id="camel" xmlns="http://camel.apache.org/schema/spring">
-        <route>
-            <from uri="direct:start"/>
-            <to uri="aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client"/>
-        </route>
-        <route>
-            <from uri="direct:copyObject"/>
-            <to uri="aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&amp;operation=copyObject"/>
-            <to uri="mock:result"/>
-        </route>
-        <route>
-            <from uri="direct:listBuckets"/>
-            <to uri="aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&amp;operation=listBuckets"/>
-            <to uri="mock:result"/>
-        </route>
-        <route>
-            <from uri="direct:deleteObject"/>
-            <to uri="aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&amp;operation=deleteObject"/>
-            <to uri="mock:result"/>
-        </route>   
-        <route>
-            <from uri="direct:downloadLink"/>
-            <to uri="aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&amp;operation=downloadLink"/>
-            <to uri="mock:result"/>
-        </route> 
-        <route>
-            <from uri="direct:listObjects"/>
-            <to uri="aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&amp;operation=listObjects"/>
-            <to uri="mock:result"/>
-        </route>    
-        <route>
-            <from uri="aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&amp;maxMessagesPerPoll=5"/>
-            <to uri="mock:result"/>
-        </route>
-    </camelContext>
-
-    <bean id="amazonS3Client" class="org.apache.camel.component.aws.s3.AmazonS3ClientMock"/>
-</beans>
\ No newline at end of file
diff --git a/components/pom.xml b/components/pom.xml
index 05eafbf..ee37b7e 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -107,7 +107,6 @@
         <module>camel-atomix</module>
         <module>camel-avro</module>
         <module>camel-avro-rpc</module>
-        <module>camel-aws-s3</module>
         <module>camel-aws-swf</module>
         <module>camel-aws2-athena</module>
         <module>camel-aws2-cw</module>