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:17 UTC

[camel] branch master updated (e2c4a52 -> 9193c51)

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

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


    from e2c4a52  CAMEL-16222: camel-core - ExchangeFactory SPI to allow to use exchange pooling
     new 1d0580a  CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
     new 07ebc11cf CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
     new 8cf5505  CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
     new bd44f04  CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
     new 718a01a  CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
     new 9193c51  CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3

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


Summary of changes:
 bom/camel-bom/pom.xml                              |    5 -
 .../org/apache/camel/catalog/components.properties |    1 -
 .../apache/camel/catalog/components/aws-s3.json    |  128 -
 .../org/apache/camel/catalog/docs.properties       |    1 -
 .../camel/catalog/docs/aws-s3-component.adoc       |  553 ----
 .../camel/catalog/docs/polling-consumer.adoc       |    1 -
 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 -
 core/camel-allcomponents/pom.xml                   |    4 -
 .../component/ComponentsBuilderFactory.java        |   14 -
 .../dsl/AwsS3ComponentBuilderFactory.java          |  775 -----
 .../src/generated/resources/metadata.json          |   23 -
 .../docs/modules/eips/pages/polling-consumer.adoc  |    1 -
 .../builder/endpoint/EndpointBuilderFactory.java   |    1 -
 .../camel/builder/endpoint/EndpointBuilders.java   |    1 -
 .../builder/endpoint/StaticEndpointBuilders.java   |   45 -
 .../endpoint/dsl/S3EndpointBuilderFactory.java     | 3062 --------------------
 docs/components/modules/ROOT/nav.adoc              |    1 -
 .../modules/ROOT/pages/aws-s3-component.adoc       |  555 ----
 .../modules/ROOT/pages/batch-consumer.adoc         |    1 -
 parent/pom.xml                                     |    5 -
 83 files changed, 13679 deletions(-)
 delete mode 100644 catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-s3.json
 delete mode 100644 catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-s3-component.adoc
 delete mode 100644 components/camel-aws-s3/pom.xml
 delete mode 100644 components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3ComponentConfigurer.java
 delete mode 100644 components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3EndpointConfigurer.java
 delete mode 100644 components/camel-aws-s3/src/generated/java/org/apache/camel/component/aws/s3/S3EndpointUriFactory.java
 delete mode 100644 components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/component.properties
 delete mode 100644 components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/component/aws-s3
 delete mode 100644 components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws-s3-component
 delete mode 100644 components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/configurer/aws-s3-endpoint
 delete mode 100644 components/camel-aws-s3/src/generated/resources/META-INF/services/org/apache/camel/urifactory/aws-s3-endpoint
 delete mode 100644 components/camel-aws-s3/src/generated/resources/org/apache/camel/component/aws/s3/aws-s3.json
 delete mode 100644 components/camel-aws-s3/src/main/docs/aws-s3-component.adoc
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Component.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3ComponentVerifierExtension.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Configuration.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Constants.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Consumer.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Endpoint.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Operations.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/S3Client.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/S3ClientFactory.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/impl/S3ClientIAMOptimizedImpl.java
 delete mode 100644 components/camel-aws-s3/src/main/java/org/apache/camel/component/aws/s3/client/impl/S3ClientStandardImpl.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AWSS3ClientFactoryTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AmazonS3ClientMock.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/AmazonS3EncryptionClientMock.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3BatchConsumerMaxMessagesPerPollTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3BatchConsumerTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentClientRegistryTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentConfigurationTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentContentLengthFileTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectEncryptionTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectSpringTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentCopyObjectTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDeleteObjectSpringTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDeleteObjectTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDownloadLinkSpringTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentDownloadLinkTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentExistingBucketTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentFileDeleteTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentFileTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentGetObjectRangeTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentGetObjectTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentKeyNameFileTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListBucketsSpringTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListBucketsTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListObjectTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentListObjectsSpringTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentNonExistingBucketTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentSpringTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentStringTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ComponentVerifierExtensionTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerCronTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerDelimiterTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerIdleMessageTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3ConsumerPrefixTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/S3IncludeBodyTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/client/impl/IAMOptimizedAWSS3ClientImplTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/client/impl/StandardAWSS3ClientImplTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/integration/S3ComponentIntegrationTest.java
 delete mode 100644 components/camel-aws-s3/src/test/java/org/apache/camel/component/aws/s3/integration/S3ObjectRangeOperationIntegrationTest.java
 delete mode 100644 components/camel-aws-s3/src/test/resources/log4j2.properties
 delete mode 100644 components/camel-aws-s3/src/test/resources/org/apache/camel/component/aws/s3/S3ComponentSpringTest-context.xml
 delete mode 100644 core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsS3ComponentBuilderFactory.java
 delete mode 100644 core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/S3EndpointBuilderFactory.java
 delete mode 100644 docs/components/modules/ROOT/pages/aws-s3-component.adoc


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

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

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

commit 9193c51dbe488c05d9f8d5ec2972bfe623779034
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Feb 25 10:26:26 2021 +0100

    CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
---
 .../resources/org/apache/camel/catalog/docs/polling-consumer.adoc        | 1 -
 1 file changed, 1 deletion(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/polling-consumer.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/polling-consumer.adoc
index 58def54..13a6d61 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/polling-consumer.adoc
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/polling-consumer.adoc
@@ -181,7 +181,6 @@ For more details see:
 ** xref:components::mybatis-component.adoc[MyBatis]
 ** xref:components::quartz-component.adoc[Quartz]
 ** xref:components::snmp-component.adoc[SNMP]
-** xref:components::aws-s3-component.adoc[AWS-S3]
 
 [[PollingConsumer-ScheduledPollConsumerOptions]]
 === ScheduledPollConsumer Options


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

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

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

commit 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>


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

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

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

commit 8cf55052062b177704e68b8ac7d0a165d9bd323c
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Feb 25 08:00:27 2021 +0100

    CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
---
 .../component/ComponentsBuilderFactory.java        |   16 +-
 .../dsl/AwsS3ComponentBuilderFactory.java          |  775 -----
 .../builder/endpoint/StaticEndpointBuilders.java   |   47 +-
 .../endpoint/dsl/S3EndpointBuilderFactory.java     | 3062 --------------------
 4 files changed, 2 insertions(+), 3898 deletions(-)

diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index a6461a7..6ba1c62 100644
--- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -306,20 +306,6 @@ public interface ComponentsBuilderFactory {
         return org.apache.camel.builder.component.dsl.AvroComponentBuilderFactory.avro();
     }
     /**
-     * AWS S3 Storage Service (camel-aws-s3)
-     * Store and retrieve objects from AWS S3 Storage Service.
-     * 
-     * Category: cloud,file
-     * Since: 2.8
-     * Maven coordinates: org.apache.camel:camel-aws-s3
-     * 
-     * @return the dsl builder
-     */
-    @Deprecated
-    static org.apache.camel.builder.component.dsl.AwsS3ComponentBuilderFactory.AwsS3ComponentBuilder awsS3() {
-        return org.apache.camel.builder.component.dsl.AwsS3ComponentBuilderFactory.awsS3();
-    }
-    /**
      * AWS Simple Workflow (SWF) (camel-aws-swf)
      * Manage workflows in the AWS Simple Workflow service.
      * 
@@ -4666,4 +4652,4 @@ public interface ComponentsBuilderFactory {
     static org.apache.camel.builder.component.dsl.ZookeeperMasterComponentBuilderFactory.ZookeeperMasterComponentBuilder zookeeperMaster() {
         return org.apache.camel.builder.component.dsl.ZookeeperMasterComponentBuilderFactory.zookeeperMaster();
     }
-}
\ No newline at end of file
+}
diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsS3ComponentBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsS3ComponentBuilderFactory.java
deleted file mode 100644
index 85000e6..0000000
--- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AwsS3ComponentBuilderFactory.java
+++ /dev/null
@@ -1,775 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.builder.component.dsl;
-
-import javax.annotation.Generated;
-import org.apache.camel.Component;
-import org.apache.camel.builder.component.AbstractComponentBuilder;
-import org.apache.camel.builder.component.ComponentBuilder;
-import org.apache.camel.component.aws.s3.S3Component;
-
-/**
- * Store and retrieve objects from AWS S3 Storage Service.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.ComponentDslMojo")
-public interface AwsS3ComponentBuilderFactory {
-
-    /**
-     * AWS S3 Storage Service (camel-aws-s3)
-     * Store and retrieve objects from AWS S3 Storage Service.
-     * 
-     * Category: cloud,file
-     * Since: 2.8
-     * Maven coordinates: org.apache.camel:camel-aws-s3
-     * 
-     * @return the dsl builder
-     */
-    @Deprecated
-    static AwsS3ComponentBuilder awsS3() {
-        return new AwsS3ComponentBuilderImpl();
-    }
-
-    /**
-     * Builder for the AWS S3 Storage Service component.
-     */
-    interface AwsS3ComponentBuilder extends ComponentBuilder<S3Component> {
-        /**
-         * Reference to a com.amazonaws.services.s3.AmazonS3 in the registry.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.services.s3.AmazonS3&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param amazonS3Client the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder amazonS3Client(
-                com.amazonaws.services.s3.AmazonS3 amazonS3Client) {
-            doSetProperty("amazonS3Client", amazonS3Client);
-            return this;
-        }
-        /**
-         * Setting the autocreation of the bucket.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoCreateBucket the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder autoCreateBucket(boolean autoCreateBucket) {
-            doSetProperty("autoCreateBucket", autoCreateBucket);
-            return this;
-        }
-        /**
-         * Setting the autoDiscoverClient mechanism, if true, the component will
-         * look for a client instance in the registry automatically otherwise it
-         * will skip that checking.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoDiscoverClient the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder autoDiscoverClient(
-                boolean autoDiscoverClient) {
-            doSetProperty("autoDiscoverClient", autoDiscoverClient);
-            return this;
-        }
-        /**
-         * The component configuration.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.component.aws.s3.S3Configuration&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param configuration the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder configuration(
-                org.apache.camel.component.aws.s3.S3Configuration configuration) {
-            doSetProperty("configuration", configuration);
-            return this;
-        }
-        /**
-         * Amazon AWS Endpoint Configuration.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param endpointConfiguration the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder endpointConfiguration(
-                com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration endpointConfiguration) {
-            doSetProperty("endpointConfiguration", endpointConfiguration);
-            return this;
-        }
-        /**
-         * Whether or not the S3 client should use path style access.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param pathStyleAccess the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder pathStyleAccess(boolean pathStyleAccess) {
-            doSetProperty("pathStyleAccess", pathStyleAccess);
-            return this;
-        }
-        /**
-         * The policy for this queue to set in the
-         * com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param policy the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder policy(java.lang.String policy) {
-            doSetProperty("policy", policy);
-            return this;
-        }
-        /**
-         * To define a proxy host when instantiating the S3 client.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyHost the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder proxyHost(java.lang.String proxyHost) {
-            doSetProperty("proxyHost", proxyHost);
-            return this;
-        }
-        /**
-         * Specify a proxy port to be used inside the client definition.
-         * 
-         * The option is a: &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyPort the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder proxyPort(java.lang.Integer proxyPort) {
-            doSetProperty("proxyPort", proxyPort);
-            return this;
-        }
-        /**
-         * To define a proxy protocol when instantiating the S3 client.
-         * 
-         * The option is a: &lt;code&gt;com.amazonaws.Protocol&lt;/code&gt;
-         * type.
-         * 
-         * Default: HTTPS
-         * Group: common
-         * 
-         * @param proxyProtocol the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder proxyProtocol(
-                com.amazonaws.Protocol proxyProtocol) {
-            doSetProperty("proxyProtocol", proxyProtocol);
-            return this;
-        }
-        /**
-         * 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().
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param region the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder region(java.lang.String region) {
-            doSetProperty("region", region);
-            return this;
-        }
-        /**
-         * Set whether the S3 client should expect to load credentials on an EC2
-         * instance or to expect static credentials to be passed in.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param useIAMCredentials the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder useIAMCredentials(
-                boolean useIAMCredentials) {
-            doSetProperty("useIAMCredentials", useIAMCredentials);
-            return this;
-        }
-        /**
-         * The encryption materials to use in case of Symmetric/Asymmetric
-         * client usage.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.services.s3.model.EncryptionMaterials&lt;/code&gt; type.
-         * 
-         * Group: common (advanced)
-         * 
-         * @param encryptionMaterials the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder encryptionMaterials(
-                com.amazonaws.services.s3.model.EncryptionMaterials encryptionMaterials) {
-            doSetProperty("encryptionMaterials", encryptionMaterials);
-            return this;
-        }
-        /**
-         * Define if encryption must be used or not.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common (advanced)
-         * 
-         * @param useEncryption the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder useEncryption(boolean useEncryption) {
-            doSetProperty("useEncryption", useEncryption);
-            return this;
-        }
-        /**
-         * Allows for bridging the consumer to the Camel routing Error Handler,
-         * which mean any exceptions occurred while the consumer is trying to
-         * pickup incoming messages, or the likes, will now be processed as a
-         * message and handled by the routing Error Handler. By default the
-         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
-         * with exceptions, that will be logged at WARN or ERROR level and
-         * ignored.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: consumer
-         * 
-         * @param bridgeErrorHandler the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder bridgeErrorHandler(
-                boolean bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
-            return this;
-        }
-        /**
-         * 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 header.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: consumer
-         * 
-         * @param deleteAfterRead the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder deleteAfterRead(boolean deleteAfterRead) {
-            doSetProperty("deleteAfterRead", deleteAfterRead);
-            return this;
-        }
-        /**
-         * The delimiter which is used in the
-         * com.amazonaws.services.s3.model.ListObjectsRequest to only consume
-         * objects we are interested in.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: consumer
-         * 
-         * @param delimiter the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder delimiter(java.lang.String delimiter) {
-            doSetProperty("delimiter", delimiter);
-            return this;
-        }
-        /**
-         * If provided, Camel will only consume files if a done file exists.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: consumer
-         * 
-         * @param doneFileName the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder doneFileName(java.lang.String doneFileName) {
-            doSetProperty("doneFileName", doneFileName);
-            return this;
-        }
-        /**
-         * To get the object from the bucket with the given file name.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: consumer
-         * 
-         * @param fileName the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder fileName(java.lang.String fileName) {
-            doSetProperty("fileName", fileName);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: consumer
-         * 
-         * @param includeBody the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder includeBody(boolean includeBody) {
-            doSetProperty("includeBody", includeBody);
-            return this;
-        }
-        /**
-         * The prefix which is used in the
-         * com.amazonaws.services.s3.model.ListObjectsRequest to only consume
-         * objects we are interested in.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: consumer
-         * 
-         * @param prefix the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder prefix(java.lang.String prefix) {
-            doSetProperty("prefix", prefix);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: consumer (advanced)
-         * 
-         * @param autocloseBody the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder autocloseBody(boolean autocloseBody) {
-            doSetProperty("autocloseBody", autocloseBody);
-            return this;
-        }
-        /**
-         * Delete file object after the S3 file has been uploaded.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param deleteAfterWrite the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder deleteAfterWrite(boolean deleteAfterWrite) {
-            doSetProperty("deleteAfterWrite", deleteAfterWrite);
-            return this;
-        }
-        /**
-         * Setting the key name for an element in the bucket through endpoint
-         * parameter.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: producer
-         * 
-         * @param keyName the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder keyName(java.lang.String keyName) {
-            doSetProperty("keyName", keyName);
-            return this;
-        }
-        /**
-         * Whether the producer should be started lazy (on the first message).
-         * By starting lazy you can use this to allow CamelContext and routes to
-         * startup in situations where a producer may otherwise fail during
-         * starting and cause the route to fail being started. By deferring this
-         * startup to be lazy then the startup failure can be handled during
-         * routing messages via Camel's routing error handlers. Beware that when
-         * the first message is processed then creating and starting the
-         * producer may take a little time and prolong the total processing time
-         * of the processing.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param lazyStartProducer the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder lazyStartProducer(
-                boolean lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-        /**
-         * If it is true, camel will upload the file with multi part format, the
-         * part size is decided by the option of partSize.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param multiPartUpload the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder multiPartUpload(boolean multiPartUpload) {
-            doSetProperty("multiPartUpload", multiPartUpload);
-            return this;
-        }
-        /**
-         * The operation to do in case the user don't want to do only an upload.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.component.aws.s3.S3Operations&lt;/code&gt; type.
-         * 
-         * Group: producer
-         * 
-         * @param operation the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder operation(
-                org.apache.camel.component.aws.s3.S3Operations operation) {
-            doSetProperty("operation", operation);
-            return this;
-        }
-        /**
-         * Setup the partSize which is used in multi part upload, the default
-         * size is 25M.
-         * 
-         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 26214400
-         * Group: producer
-         * 
-         * @param partSize the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder partSize(long partSize) {
-            doSetProperty("partSize", partSize);
-            return this;
-        }
-        /**
-         * Sets the server-side encryption algorithm when encrypting the object
-         * using AWS-managed keys. For example use AES256.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: producer
-         * 
-         * @param serverSideEncryption the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder serverSideEncryption(
-                java.lang.String serverSideEncryption) {
-            doSetProperty("serverSideEncryption", serverSideEncryption);
-            return this;
-        }
-        /**
-         * The storage class to set in the
-         * com.amazonaws.services.s3.model.PutObjectRequest request.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: producer
-         * 
-         * @param storageClass the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder storageClass(java.lang.String storageClass) {
-            doSetProperty("storageClass", storageClass);
-            return this;
-        }
-        /**
-         * Define the id of KMS key to use in case KMS is enabled.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: producer (advanced)
-         * 
-         * @param awsKMSKeyId the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder awsKMSKeyId(java.lang.String awsKMSKeyId) {
-            doSetProperty("awsKMSKeyId", awsKMSKeyId);
-            return this;
-        }
-        /**
-         * Define if KMS must be used or not.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer (advanced)
-         * 
-         * @param useAwsKMS the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder useAwsKMS(boolean useAwsKMS) {
-            doSetProperty("useAwsKMS", useAwsKMS);
-            return this;
-        }
-        /**
-         * Define if Accelerate Mode enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param accelerateModeEnabled the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder accelerateModeEnabled(
-                boolean accelerateModeEnabled) {
-            doSetProperty("accelerateModeEnabled", accelerateModeEnabled);
-            return this;
-        }
-        /**
-         * Define if disabled Chunked Encoding is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param chunkedEncodingDisabled the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder chunkedEncodingDisabled(
-                boolean chunkedEncodingDisabled) {
-            doSetProperty("chunkedEncodingDisabled", chunkedEncodingDisabled);
-            return this;
-        }
-        /**
-         * Define if Dualstack enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param dualstackEnabled the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder dualstackEnabled(boolean dualstackEnabled) {
-            doSetProperty("dualstackEnabled", dualstackEnabled);
-            return this;
-        }
-        /**
-         * Define if Force Global Bucket Access enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param forceGlobalBucketAccessEnabled the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder forceGlobalBucketAccessEnabled(
-                boolean forceGlobalBucketAccessEnabled) {
-            doSetProperty("forceGlobalBucketAccessEnabled", forceGlobalBucketAccessEnabled);
-            return this;
-        }
-        /**
-         * Define if Payload Signing enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param payloadSigningEnabled the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder payloadSigningEnabled(
-                boolean payloadSigningEnabled) {
-            doSetProperty("payloadSigningEnabled", payloadSigningEnabled);
-            return this;
-        }
-        /**
-         * Whether autowiring is enabled. This is used for automatic autowiring
-         * options (the option must be marked as autowired) by looking up in the
-         * registry to find if there is a single instance of matching type,
-         * which then gets configured on the component. This can be used for
-         * automatic configuring JDBC data sources, JMS connection factories,
-         * AWS Clients, etc.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: advanced
-         * 
-         * @param autowiredEnabled the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder autowiredEnabled(boolean autowiredEnabled) {
-            doSetProperty("autowiredEnabled", autowiredEnabled);
-            return this;
-        }
-        /**
-         * Amazon AWS Access Key.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: security
-         * 
-         * @param accessKey the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder accessKey(java.lang.String accessKey) {
-            doSetProperty("accessKey", accessKey);
-            return this;
-        }
-        /**
-         * Amazon AWS Secret Key.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: security
-         * 
-         * @param secretKey the value to set
-         * @return the dsl builder
-         */
-        default AwsS3ComponentBuilder secretKey(java.lang.String secretKey) {
-            doSetProperty("secretKey", secretKey);
-            return this;
-        }
-    }
-
-    class AwsS3ComponentBuilderImpl
-            extends
-                AbstractComponentBuilder<S3Component>
-            implements
-                AwsS3ComponentBuilder {
-        @Override
-        protected S3Component buildConcreteComponent() {
-            return new S3Component();
-        }
-        private org.apache.camel.component.aws.s3.S3Configuration getOrCreateConfiguration(
-                org.apache.camel.component.aws.s3.S3Component component) {
-            if (component.getConfiguration() == null) {
-                component.setConfiguration(new org.apache.camel.component.aws.s3.S3Configuration());
-            }
-            return component.getConfiguration();
-        }
-        @Override
-        protected boolean setPropertyOnComponent(
-                Component component,
-                String name,
-                Object value) {
-            switch (name) {
-            case "amazonS3Client": getOrCreateConfiguration((S3Component) component).setAmazonS3Client((com.amazonaws.services.s3.AmazonS3) value); return true;
-            case "autoCreateBucket": getOrCreateConfiguration((S3Component) component).setAutoCreateBucket((boolean) value); return true;
-            case "autoDiscoverClient": getOrCreateConfiguration((S3Component) component).setAutoDiscoverClient((boolean) value); return true;
-            case "configuration": ((S3Component) component).setConfiguration((org.apache.camel.component.aws.s3.S3Configuration) value); return true;
-            case "endpointConfiguration": getOrCreateConfiguration((S3Component) component).setEndpointConfiguration((com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration) value); return true;
-            case "pathStyleAccess": getOrCreateConfiguration((S3Component) component).setPathStyleAccess((boolean) value); return true;
-            case "policy": getOrCreateConfiguration((S3Component) component).setPolicy((java.lang.String) value); return true;
-            case "proxyHost": getOrCreateConfiguration((S3Component) component).setProxyHost((java.lang.String) value); return true;
-            case "proxyPort": getOrCreateConfiguration((S3Component) component).setProxyPort((java.lang.Integer) value); return true;
-            case "proxyProtocol": getOrCreateConfiguration((S3Component) component).setProxyProtocol((com.amazonaws.Protocol) value); return true;
-            case "region": getOrCreateConfiguration((S3Component) component).setRegion((java.lang.String) value); return true;
-            case "useIAMCredentials": getOrCreateConfiguration((S3Component) component).setUseIAMCredentials((boolean) value); return true;
-            case "encryptionMaterials": getOrCreateConfiguration((S3Component) component).setEncryptionMaterials((com.amazonaws.services.s3.model.EncryptionMaterials) value); return true;
-            case "useEncryption": getOrCreateConfiguration((S3Component) component).setUseEncryption((boolean) value); return true;
-            case "bridgeErrorHandler": ((S3Component) component).setBridgeErrorHandler((boolean) value); return true;
-            case "deleteAfterRead": getOrCreateConfiguration((S3Component) component).setDeleteAfterRead((boolean) value); return true;
-            case "delimiter": getOrCreateConfiguration((S3Component) component).setDelimiter((java.lang.String) value); return true;
-            case "doneFileName": getOrCreateConfiguration((S3Component) component).setDoneFileName((java.lang.String) value); return true;
-            case "fileName": getOrCreateConfiguration((S3Component) component).setFileName((java.lang.String) value); return true;
-            case "includeBody": getOrCreateConfiguration((S3Component) component).setIncludeBody((boolean) value); return true;
-            case "prefix": getOrCreateConfiguration((S3Component) component).setPrefix((java.lang.String) value); return true;
-            case "autocloseBody": getOrCreateConfiguration((S3Component) component).setAutocloseBody((boolean) value); return true;
-            case "deleteAfterWrite": getOrCreateConfiguration((S3Component) component).setDeleteAfterWrite((boolean) value); return true;
-            case "keyName": getOrCreateConfiguration((S3Component) component).setKeyName((java.lang.String) value); return true;
-            case "lazyStartProducer": ((S3Component) component).setLazyStartProducer((boolean) value); return true;
-            case "multiPartUpload": getOrCreateConfiguration((S3Component) component).setMultiPartUpload((boolean) value); return true;
-            case "operation": getOrCreateConfiguration((S3Component) component).setOperation((org.apache.camel.component.aws.s3.S3Operations) value); return true;
-            case "partSize": getOrCreateConfiguration((S3Component) component).setPartSize((long) value); return true;
-            case "serverSideEncryption": getOrCreateConfiguration((S3Component) component).setServerSideEncryption((java.lang.String) value); return true;
-            case "storageClass": getOrCreateConfiguration((S3Component) component).setStorageClass((java.lang.String) value); return true;
-            case "awsKMSKeyId": getOrCreateConfiguration((S3Component) component).setAwsKMSKeyId((java.lang.String) value); return true;
-            case "useAwsKMS": getOrCreateConfiguration((S3Component) component).setUseAwsKMS((boolean) value); return true;
-            case "accelerateModeEnabled": getOrCreateConfiguration((S3Component) component).setAccelerateModeEnabled((boolean) value); return true;
-            case "chunkedEncodingDisabled": getOrCreateConfiguration((S3Component) component).setChunkedEncodingDisabled((boolean) value); return true;
-            case "dualstackEnabled": getOrCreateConfiguration((S3Component) component).setDualstackEnabled((boolean) value); return true;
-            case "forceGlobalBucketAccessEnabled": getOrCreateConfiguration((S3Component) component).setForceGlobalBucketAccessEnabled((boolean) value); return true;
-            case "payloadSigningEnabled": getOrCreateConfiguration((S3Component) component).setPayloadSigningEnabled((boolean) value); return true;
-            case "autowiredEnabled": ((S3Component) component).setAutowiredEnabled((boolean) value); return true;
-            case "accessKey": getOrCreateConfiguration((S3Component) component).setAccessKey((java.lang.String) value); return true;
-            case "secretKey": getOrCreateConfiguration((S3Component) component).setSecretKey((java.lang.String) value); return true;
-            default: return false;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index d79b783..240a486 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -1832,51 +1832,6 @@ public class StaticEndpointBuilders {
         return org.apache.camel.builder.endpoint.dsl.Translate2EndpointBuilderFactory.endpointBuilder(componentName, path);
     }
     /**
-     * AWS S3 Storage Service (camel-aws-s3)
-     * Store and retrieve objects from AWS S3 Storage Service.
-     * 
-     * Category: cloud,file
-     * Since: 2.8
-     * Maven coordinates: org.apache.camel:camel-aws-s3
-     * 
-     * Syntax: <code>aws-s3://bucketNameOrArn</code>
-     * 
-     * Path parameter: bucketNameOrArn (required)
-     * Bucket name or ARN
-     * 
-     * @param path //bucketNameOrArn
-     * @return the dsl builder
-     */
-    @Deprecated
-    public static org.apache.camel.builder.endpoint.dsl.S3EndpointBuilderFactory.S3EndpointBuilder awsS3(
-            String path) {
-        return org.apache.camel.builder.endpoint.dsl.S3EndpointBuilderFactory.endpointBuilder("aws-s3", path);
-    }
-    /**
-     * AWS S3 Storage Service (camel-aws-s3)
-     * Store and retrieve objects from AWS S3 Storage Service.
-     * 
-     * Category: cloud,file
-     * Since: 2.8
-     * Maven coordinates: org.apache.camel:camel-aws-s3
-     * 
-     * Syntax: <code>aws-s3://bucketNameOrArn</code>
-     * 
-     * Path parameter: bucketNameOrArn (required)
-     * Bucket name or ARN
-     * 
-     * @param componentName to use a custom component name for the endpoint
-     * instead of the default name
-     * @param path //bucketNameOrArn
-     * @return the dsl builder
-     */
-    @Deprecated
-    public static org.apache.camel.builder.endpoint.dsl.S3EndpointBuilderFactory.S3EndpointBuilder awsS3(
-            String componentName,
-            String path) {
-        return org.apache.camel.builder.endpoint.dsl.S3EndpointBuilderFactory.endpointBuilder(componentName, path);
-    }
-    /**
      * AWS Simple Workflow (SWF) (camel-aws-swf)
      * Manage workflows in the AWS Simple Workflow service.
      * 
@@ -16397,4 +16352,4 @@ public class StaticEndpointBuilders {
         return org.apache.camel.builder.endpoint.dsl.ZooKeeperMasterEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
 }
-//CHECKSTYLE:ON
\ No newline at end of file
+//CHECKSTYLE:ON
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/S3EndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/S3EndpointBuilderFactory.java
deleted file mode 100644
index 4c35e5a..0000000
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/S3EndpointBuilderFactory.java
+++ /dev/null
@@ -1,3062 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.builder.endpoint.dsl;
-
-import java.util.Map;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import javax.annotation.Generated;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.builder.EndpointConsumerBuilder;
-import org.apache.camel.builder.EndpointProducerBuilder;
-import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
-import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.spi.PollingConsumerPollStrategy;
-
-/**
- * Store and retrieve objects from AWS S3 Storage Service.
- * 
- * Generated by camel build tools - do NOT edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
-public interface S3EndpointBuilderFactory {
-
-
-    /**
-     * Builder for endpoint consumers for the AWS S3 Storage Service component.
-     */
-    public interface S3EndpointConsumerBuilder
-            extends
-                EndpointConsumerBuilder {
-        default AdvancedS3EndpointConsumerBuilder advanced() {
-            return (AdvancedS3EndpointConsumerBuilder) this;
-        }
-        /**
-         * Reference to a com.amazonaws.services.s3.AmazonS3 in the registry.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.services.s3.AmazonS3&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param amazonS3Client the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder amazonS3Client(Object amazonS3Client) {
-            doSetProperty("amazonS3Client", amazonS3Client);
-            return this;
-        }
-        /**
-         * Reference to a com.amazonaws.services.s3.AmazonS3 in the registry.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.services.s3.AmazonS3&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param amazonS3Client the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder amazonS3Client(String amazonS3Client) {
-            doSetProperty("amazonS3Client", amazonS3Client);
-            return this;
-        }
-        /**
-         * Setting the autocreation of the bucket.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoCreateBucket the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder autoCreateBucket(
-                boolean autoCreateBucket) {
-            doSetProperty("autoCreateBucket", autoCreateBucket);
-            return this;
-        }
-        /**
-         * Setting the autocreation of the bucket.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoCreateBucket the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder autoCreateBucket(
-                String autoCreateBucket) {
-            doSetProperty("autoCreateBucket", autoCreateBucket);
-            return this;
-        }
-        /**
-         * Setting the autoDiscoverClient mechanism, if true, the component will
-         * look for a client instance in the registry automatically otherwise it
-         * will skip that checking.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoDiscoverClient the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder autoDiscoverClient(
-                boolean autoDiscoverClient) {
-            doSetProperty("autoDiscoverClient", autoDiscoverClient);
-            return this;
-        }
-        /**
-         * Setting the autoDiscoverClient mechanism, if true, the component will
-         * look for a client instance in the registry automatically otherwise it
-         * will skip that checking.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoDiscoverClient the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder autoDiscoverClient(
-                String autoDiscoverClient) {
-            doSetProperty("autoDiscoverClient", autoDiscoverClient);
-            return this;
-        }
-        /**
-         * Amazon AWS Endpoint Configuration.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.client.builder.AwsClientBuilder$EndpointConfiguration&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param endpointConfiguration the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder endpointConfiguration(
-                Object endpointConfiguration) {
-            doSetProperty("endpointConfiguration", endpointConfiguration);
-            return this;
-        }
-        /**
-         * Amazon AWS Endpoint Configuration.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.client.builder.AwsClientBuilder$EndpointConfiguration&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param endpointConfiguration the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder endpointConfiguration(
-                String endpointConfiguration) {
-            doSetProperty("endpointConfiguration", endpointConfiguration);
-            return this;
-        }
-        /**
-         * Whether or not the S3 client should use path style access.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param pathStyleAccess the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder pathStyleAccess(
-                boolean pathStyleAccess) {
-            doSetProperty("pathStyleAccess", pathStyleAccess);
-            return this;
-        }
-        /**
-         * Whether or not the S3 client should use path style access.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param pathStyleAccess the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder pathStyleAccess(String pathStyleAccess) {
-            doSetProperty("pathStyleAccess", pathStyleAccess);
-            return this;
-        }
-        /**
-         * The policy for this queue to set in the
-         * com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param policy the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder policy(String policy) {
-            doSetProperty("policy", policy);
-            return this;
-        }
-        /**
-         * To define a proxy host when instantiating the S3 client.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyHost the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder proxyHost(String proxyHost) {
-            doSetProperty("proxyHost", proxyHost);
-            return this;
-        }
-        /**
-         * Specify a proxy port to be used inside the client definition.
-         * 
-         * The option is a: &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyPort the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder proxyPort(Integer proxyPort) {
-            doSetProperty("proxyPort", proxyPort);
-            return this;
-        }
-        /**
-         * Specify a proxy port to be used inside the client definition.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyPort the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder proxyPort(String proxyPort) {
-            doSetProperty("proxyPort", proxyPort);
-            return this;
-        }
-        /**
-         * To define a proxy protocol when instantiating the S3 client.
-         * 
-         * The option is a: &lt;code&gt;com.amazonaws.Protocol&lt;/code&gt;
-         * type.
-         * 
-         * Default: HTTPS
-         * Group: common
-         * 
-         * @param proxyProtocol the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder proxyProtocol(Protocol proxyProtocol) {
-            doSetProperty("proxyProtocol", proxyProtocol);
-            return this;
-        }
-        /**
-         * To define a proxy protocol when instantiating the S3 client.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.Protocol&lt;/code&gt; type.
-         * 
-         * Default: HTTPS
-         * Group: common
-         * 
-         * @param proxyProtocol the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder proxyProtocol(String proxyProtocol) {
-            doSetProperty("proxyProtocol", proxyProtocol);
-            return this;
-        }
-        /**
-         * 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().
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param region the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder region(String region) {
-            doSetProperty("region", region);
-            return this;
-        }
-        /**
-         * Set whether the S3 client should expect to load credentials on an EC2
-         * instance or to expect static credentials to be passed in.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param useIAMCredentials the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder useIAMCredentials(
-                boolean useIAMCredentials) {
-            doSetProperty("useIAMCredentials", useIAMCredentials);
-            return this;
-        }
-        /**
-         * Set whether the S3 client should expect to load credentials on an EC2
-         * instance or to expect static credentials to be passed in.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param useIAMCredentials the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder useIAMCredentials(
-                String useIAMCredentials) {
-            doSetProperty("useIAMCredentials", useIAMCredentials);
-            return this;
-        }
-        /**
-         * Allows for bridging the consumer to the Camel routing Error Handler,
-         * which mean any exceptions occurred while the consumer is trying to
-         * pickup incoming messages, or the likes, will now be processed as a
-         * message and handled by the routing Error Handler. By default the
-         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
-         * with exceptions, that will be logged at WARN or ERROR level and
-         * ignored.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: consumer
-         * 
-         * @param bridgeErrorHandler the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder bridgeErrorHandler(
-                boolean bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
-            return this;
-        }
-        /**
-         * Allows for bridging the consumer to the Camel routing Error Handler,
-         * which mean any exceptions occurred while the consumer is trying to
-         * pickup incoming messages, or the likes, will now be processed as a
-         * message and handled by the routing Error Handler. By default the
-         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
-         * with exceptions, that will be logged at WARN or ERROR level and
-         * ignored.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: consumer
-         * 
-         * @param bridgeErrorHandler the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder bridgeErrorHandler(
-                String bridgeErrorHandler) {
-            doSetProperty("bridgeErrorHandler", bridgeErrorHandler);
-            return this;
-        }
-        /**
-         * 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 header.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: consumer
-         * 
-         * @param deleteAfterRead the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder deleteAfterRead(
-                boolean deleteAfterRead) {
-            doSetProperty("deleteAfterRead", deleteAfterRead);
-            return this;
-        }
-        /**
-         * 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 header.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: consumer
-         * 
-         * @param deleteAfterRead the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder deleteAfterRead(String deleteAfterRead) {
-            doSetProperty("deleteAfterRead", deleteAfterRead);
-            return this;
-        }
-        /**
-         * The delimiter which is used in the
-         * com.amazonaws.services.s3.model.ListObjectsRequest to only consume
-         * objects we are interested in.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: consumer
-         * 
-         * @param delimiter the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder delimiter(String delimiter) {
-            doSetProperty("delimiter", delimiter);
-            return this;
-        }
-        /**
-         * If provided, Camel will only consume files if a done file exists.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: consumer
-         * 
-         * @param doneFileName the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder doneFileName(String doneFileName) {
-            doSetProperty("doneFileName", doneFileName);
-            return this;
-        }
-        /**
-         * To get the object from the bucket with the given file name.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: consumer
-         * 
-         * @param fileName the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder fileName(String fileName) {
-            doSetProperty("fileName", fileName);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: consumer
-         * 
-         * @param includeBody the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder includeBody(boolean includeBody) {
-            doSetProperty("includeBody", includeBody);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: consumer
-         * 
-         * @param includeBody the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder includeBody(String includeBody) {
-            doSetProperty("includeBody", includeBody);
-            return this;
-        }
-        /**
-         * Set the maxConnections parameter in the S3 client configuration.
-         * 
-         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
-         * 
-         * Default: 60
-         * Group: consumer
-         * 
-         * @param maxConnections the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder maxConnections(int maxConnections) {
-            doSetProperty("maxConnections", maxConnections);
-            return this;
-        }
-        /**
-         * Set the maxConnections parameter in the S3 client configuration.
-         * 
-         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
-         * 
-         * Default: 60
-         * Group: consumer
-         * 
-         * @param maxConnections the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder maxConnections(String maxConnections) {
-            doSetProperty("maxConnections", maxConnections);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
-         * 
-         * Default: 10
-         * Group: consumer
-         * 
-         * @param maxMessagesPerPoll the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder maxMessagesPerPoll(
-                int maxMessagesPerPoll) {
-            doSetProperty("maxMessagesPerPoll", maxMessagesPerPoll);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
-         * 
-         * Default: 10
-         * Group: consumer
-         * 
-         * @param maxMessagesPerPoll the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder maxMessagesPerPoll(
-                String maxMessagesPerPoll) {
-            doSetProperty("maxMessagesPerPoll", maxMessagesPerPoll);
-            return this;
-        }
-        /**
-         * The prefix which is used in the
-         * com.amazonaws.services.s3.model.ListObjectsRequest to only consume
-         * objects we are interested in.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: consumer
-         * 
-         * @param prefix the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder prefix(String prefix) {
-            doSetProperty("prefix", prefix);
-            return this;
-        }
-        /**
-         * If the polling consumer did not poll any files, you can enable this
-         * option to send an empty message (no body) instead.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: consumer
-         * 
-         * @param sendEmptyMessageWhenIdle the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder sendEmptyMessageWhenIdle(
-                boolean sendEmptyMessageWhenIdle) {
-            doSetProperty("sendEmptyMessageWhenIdle", sendEmptyMessageWhenIdle);
-            return this;
-        }
-        /**
-         * If the polling consumer did not poll any files, you can enable this
-         * option to send an empty message (no body) instead.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: consumer
-         * 
-         * @param sendEmptyMessageWhenIdle the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder sendEmptyMessageWhenIdle(
-                String sendEmptyMessageWhenIdle) {
-            doSetProperty("sendEmptyMessageWhenIdle", sendEmptyMessageWhenIdle);
-            return this;
-        }
-        /**
-         * The number of subsequent error polls (failed due some error) that
-         * should happen before the backoffMultipler should kick-in.
-         * 
-         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
-         * 
-         * Group: scheduler
-         * 
-         * @param backoffErrorThreshold the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder backoffErrorThreshold(
-                int backoffErrorThreshold) {
-            doSetProperty("backoffErrorThreshold", backoffErrorThreshold);
-            return this;
-        }
-        /**
-         * The number of subsequent error polls (failed due some error) that
-         * should happen before the backoffMultipler should kick-in.
-         * 
-         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
-         * 
-         * Group: scheduler
-         * 
-         * @param backoffErrorThreshold the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder backoffErrorThreshold(
-                String backoffErrorThreshold) {
-            doSetProperty("backoffErrorThreshold", backoffErrorThreshold);
-            return this;
-        }
-        /**
-         * The number of subsequent idle polls that should happen before the
-         * backoffMultipler should kick-in.
-         * 
-         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
-         * 
-         * Group: scheduler
-         * 
-         * @param backoffIdleThreshold the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder backoffIdleThreshold(
-                int backoffIdleThreshold) {
-            doSetProperty("backoffIdleThreshold", backoffIdleThreshold);
-            return this;
-        }
-        /**
-         * The number of subsequent idle polls that should happen before the
-         * backoffMultipler should kick-in.
-         * 
-         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
-         * 
-         * Group: scheduler
-         * 
-         * @param backoffIdleThreshold the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder backoffIdleThreshold(
-                String backoffIdleThreshold) {
-            doSetProperty("backoffIdleThreshold", backoffIdleThreshold);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
-         * 
-         * Group: scheduler
-         * 
-         * @param backoffMultiplier the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder backoffMultiplier(
-                int backoffMultiplier) {
-            doSetProperty("backoffMultiplier", backoffMultiplier);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a &lt;code&gt;int&lt;/code&gt; type.
-         * 
-         * Group: scheduler
-         * 
-         * @param backoffMultiplier the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder backoffMultiplier(
-                String backoffMultiplier) {
-            doSetProperty("backoffMultiplier", backoffMultiplier);
-            return this;
-        }
-        /**
-         * Milliseconds before the next poll.
-         * 
-         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 500
-         * Group: scheduler
-         * 
-         * @param delay the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder delay(long delay) {
-            doSetProperty("delay", delay);
-            return this;
-        }
-        /**
-         * Milliseconds before the next poll.
-         * 
-         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 500
-         * Group: scheduler
-         * 
-         * @param delay the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder delay(String delay) {
-            doSetProperty("delay", delay);
-            return this;
-        }
-        /**
-         * If greedy is enabled, then the ScheduledPollConsumer will run
-         * immediately again, if the previous run polled 1 or more messages.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: scheduler
-         * 
-         * @param greedy the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder greedy(boolean greedy) {
-            doSetProperty("greedy", greedy);
-            return this;
-        }
-        /**
-         * If greedy is enabled, then the ScheduledPollConsumer will run
-         * immediately again, if the previous run polled 1 or more messages.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: scheduler
-         * 
-         * @param greedy the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder greedy(String greedy) {
-            doSetProperty("greedy", greedy);
-            return this;
-        }
-        /**
-         * Milliseconds before the first poll starts.
-         * 
-         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 1000
-         * Group: scheduler
-         * 
-         * @param initialDelay the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder initialDelay(long initialDelay) {
-            doSetProperty("initialDelay", initialDelay);
-            return this;
-        }
-        /**
-         * Milliseconds before the first poll starts.
-         * 
-         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 1000
-         * Group: scheduler
-         * 
-         * @param initialDelay the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder initialDelay(String initialDelay) {
-            doSetProperty("initialDelay", initialDelay);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 0
-         * Group: scheduler
-         * 
-         * @param repeatCount the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder repeatCount(long repeatCount) {
-            doSetProperty("repeatCount", repeatCount);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 0
-         * Group: scheduler
-         * 
-         * @param repeatCount the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder repeatCount(String repeatCount) {
-            doSetProperty("repeatCount", repeatCount);
-            return this;
-        }
-        /**
-         * The consumer logs a start/complete log line when it polls. This
-         * option allows you to configure the logging level for that.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.LoggingLevel&lt;/code&gt; type.
-         * 
-         * Default: TRACE
-         * Group: scheduler
-         * 
-         * @param runLoggingLevel the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder runLoggingLevel(
-                LoggingLevel runLoggingLevel) {
-            doSetProperty("runLoggingLevel", runLoggingLevel);
-            return this;
-        }
-        /**
-         * The consumer logs a start/complete log line when it polls. This
-         * option allows you to configure the logging level for that.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.LoggingLevel&lt;/code&gt; type.
-         * 
-         * Default: TRACE
-         * Group: scheduler
-         * 
-         * @param runLoggingLevel the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder runLoggingLevel(String runLoggingLevel) {
-            doSetProperty("runLoggingLevel", runLoggingLevel);
-            return this;
-        }
-        /**
-         * Allows for configuring a custom/shared thread pool to use for the
-         * consumer. By default each consumer has its own single threaded thread
-         * pool.
-         * 
-         * The option is a:
-         * &lt;code&gt;java.util.concurrent.ScheduledExecutorService&lt;/code&gt; type.
-         * 
-         * Group: scheduler
-         * 
-         * @param scheduledExecutorService the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder scheduledExecutorService(
-                ScheduledExecutorService scheduledExecutorService) {
-            doSetProperty("scheduledExecutorService", scheduledExecutorService);
-            return this;
-        }
-        /**
-         * Allows for configuring a custom/shared thread pool to use for the
-         * consumer. By default each consumer has its own single threaded thread
-         * pool.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;java.util.concurrent.ScheduledExecutorService&lt;/code&gt; type.
-         * 
-         * Group: scheduler
-         * 
-         * @param scheduledExecutorService the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder scheduledExecutorService(
-                String scheduledExecutorService) {
-            doSetProperty("scheduledExecutorService", scheduledExecutorService);
-            return this;
-        }
-        /**
-         * To use a cron scheduler from either camel-spring or camel-quartz
-         * component. Use value spring or quartz for built in scheduler.
-         * 
-         * The option is a: &lt;code&gt;java.lang.Object&lt;/code&gt; type.
-         * 
-         * Default: none
-         * Group: scheduler
-         * 
-         * @param scheduler the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder scheduler(Object scheduler) {
-            doSetProperty("scheduler", scheduler);
-            return this;
-        }
-        /**
-         * To use a cron scheduler from either camel-spring or camel-quartz
-         * component. Use value spring or quartz for built in scheduler.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;java.lang.Object&lt;/code&gt; type.
-         * 
-         * Default: none
-         * Group: scheduler
-         * 
-         * @param scheduler the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder scheduler(String scheduler) {
-            doSetProperty("scheduler", scheduler);
-            return this;
-        }
-        /**
-         * To configure additional properties when using a custom scheduler or
-         * any of the Quartz, Spring based scheduler.
-         * 
-         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
-         * java.lang.Object&amp;gt;&lt;/code&gt; type.
-         * The option is multivalued, and you can use the
-         * schedulerProperties(String, Object) method to add a value (call the
-         * method multiple times to set more values).
-         * 
-         * Group: scheduler
-         * 
-         * @param key the option key
-         * @param value the option value
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder schedulerProperties(
-                String key,
-                Object value) {
-            doSetMultiValueProperty("schedulerProperties", "scheduler." + key, value);
-            return this;
-        }
-        /**
-         * To configure additional properties when using a custom scheduler or
-         * any of the Quartz, Spring based scheduler.
-         * 
-         * The option is a: &lt;code&gt;java.util.Map&amp;lt;java.lang.String,
-         * java.lang.Object&amp;gt;&lt;/code&gt; type.
-         * The option is multivalued, and you can use the
-         * schedulerProperties(String, Object) method to add a value (call the
-         * method multiple times to set more values).
-         * 
-         * Group: scheduler
-         * 
-         * @param values the values
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder schedulerProperties(Map values) {
-            doSetMultiValueProperties("schedulerProperties", "scheduler.", values);
-            return this;
-        }
-        /**
-         * Whether the scheduler should be auto started.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: scheduler
-         * 
-         * @param startScheduler the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder startScheduler(boolean startScheduler) {
-            doSetProperty("startScheduler", startScheduler);
-            return this;
-        }
-        /**
-         * Whether the scheduler should be auto started.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: scheduler
-         * 
-         * @param startScheduler the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder startScheduler(String startScheduler) {
-            doSetProperty("startScheduler", startScheduler);
-            return this;
-        }
-        /**
-         * Time unit for initialDelay and delay options.
-         * 
-         * The option is a:
-         * &lt;code&gt;java.util.concurrent.TimeUnit&lt;/code&gt; type.
-         * 
-         * Default: MILLISECONDS
-         * Group: scheduler
-         * 
-         * @param timeUnit the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder timeUnit(TimeUnit timeUnit) {
-            doSetProperty("timeUnit", timeUnit);
-            return this;
-        }
-        /**
-         * Time unit for initialDelay and delay options.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;java.util.concurrent.TimeUnit&lt;/code&gt; type.
-         * 
-         * Default: MILLISECONDS
-         * Group: scheduler
-         * 
-         * @param timeUnit the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder timeUnit(String timeUnit) {
-            doSetProperty("timeUnit", timeUnit);
-            return this;
-        }
-        /**
-         * Controls if fixed delay or fixed rate is used. See
-         * ScheduledExecutorService in JDK for details.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: scheduler
-         * 
-         * @param useFixedDelay the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder useFixedDelay(boolean useFixedDelay) {
-            doSetProperty("useFixedDelay", useFixedDelay);
-            return this;
-        }
-        /**
-         * Controls if fixed delay or fixed rate is used. See
-         * ScheduledExecutorService in JDK for details.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: scheduler
-         * 
-         * @param useFixedDelay the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder useFixedDelay(String useFixedDelay) {
-            doSetProperty("useFixedDelay", useFixedDelay);
-            return this;
-        }
-        /**
-         * Amazon AWS Access Key.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: security
-         * 
-         * @param accessKey the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder accessKey(String accessKey) {
-            doSetProperty("accessKey", accessKey);
-            return this;
-        }
-        /**
-         * Amazon AWS Secret Key.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: security
-         * 
-         * @param secretKey the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointConsumerBuilder secretKey(String secretKey) {
-            doSetProperty("secretKey", secretKey);
-            return this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint consumers for the AWS S3 Storage Service
-     * component.
-     */
-    public interface AdvancedS3EndpointConsumerBuilder
-            extends
-                EndpointConsumerBuilder {
-        default S3EndpointConsumerBuilder basic() {
-            return (S3EndpointConsumerBuilder) this;
-        }
-        /**
-         * The encryption materials to use in case of Symmetric/Asymmetric
-         * client usage.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.services.s3.model.EncryptionMaterials&lt;/code&gt; type.
-         * 
-         * Group: common (advanced)
-         * 
-         * @param encryptionMaterials the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder encryptionMaterials(
-                Object encryptionMaterials) {
-            doSetProperty("encryptionMaterials", encryptionMaterials);
-            return this;
-        }
-        /**
-         * The encryption materials to use in case of Symmetric/Asymmetric
-         * client usage.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.services.s3.model.EncryptionMaterials&lt;/code&gt; type.
-         * 
-         * Group: common (advanced)
-         * 
-         * @param encryptionMaterials the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder encryptionMaterials(
-                String encryptionMaterials) {
-            doSetProperty("encryptionMaterials", encryptionMaterials);
-            return this;
-        }
-        /**
-         * Define if encryption must be used or not.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common (advanced)
-         * 
-         * @param useEncryption the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder useEncryption(
-                boolean useEncryption) {
-            doSetProperty("useEncryption", useEncryption);
-            return this;
-        }
-        /**
-         * Define if encryption must be used or not.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: common (advanced)
-         * 
-         * @param useEncryption the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder useEncryption(
-                String useEncryption) {
-            doSetProperty("useEncryption", useEncryption);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: consumer (advanced)
-         * 
-         * @param autocloseBody the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder autocloseBody(
-                boolean autocloseBody) {
-            doSetProperty("autocloseBody", autocloseBody);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: consumer (advanced)
-         * 
-         * @param autocloseBody the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder autocloseBody(
-                String autocloseBody) {
-            doSetProperty("autocloseBody", autocloseBody);
-            return this;
-        }
-        /**
-         * To let the consumer use a custom ExceptionHandler. Notice if the
-         * option bridgeErrorHandler is enabled then this option is not in use.
-         * By default the consumer will deal with exceptions, that will be
-         * logged at WARN or ERROR level and ignored.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exceptionHandler the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder exceptionHandler(
-                ExceptionHandler exceptionHandler) {
-            doSetProperty("exceptionHandler", exceptionHandler);
-            return this;
-        }
-        /**
-         * To let the consumer use a custom ExceptionHandler. Notice if the
-         * option bridgeErrorHandler is enabled then this option is not in use.
-         * By default the consumer will deal with exceptions, that will be
-         * logged at WARN or ERROR level and ignored.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.spi.ExceptionHandler&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exceptionHandler the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder exceptionHandler(
-                String exceptionHandler) {
-            doSetProperty("exceptionHandler", exceptionHandler);
-            return this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exchangePattern the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder exchangePattern(
-                ExchangePattern exchangePattern) {
-            doSetProperty("exchangePattern", exchangePattern);
-            return this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.ExchangePattern&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param exchangePattern the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder exchangePattern(
-                String exchangePattern) {
-            doSetProperty("exchangePattern", exchangePattern);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.spi.PollingConsumerPollStrategy&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param pollStrategy the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder pollStrategy(
-                PollingConsumerPollStrategy pollStrategy) {
-            doSetProperty("pollStrategy", pollStrategy);
-            return this;
-        }
-        /**
-         * 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.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.spi.PollingConsumerPollStrategy&lt;/code&gt; type.
-         * 
-         * Group: consumer (advanced)
-         * 
-         * @param pollStrategy the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder pollStrategy(
-                String pollStrategy) {
-            doSetProperty("pollStrategy", pollStrategy);
-            return this;
-        }
-        /**
-         * Define if Accelerate Mode enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param accelerateModeEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder accelerateModeEnabled(
-                boolean accelerateModeEnabled) {
-            doSetProperty("accelerateModeEnabled", accelerateModeEnabled);
-            return this;
-        }
-        /**
-         * Define if Accelerate Mode enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param accelerateModeEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder accelerateModeEnabled(
-                String accelerateModeEnabled) {
-            doSetProperty("accelerateModeEnabled", accelerateModeEnabled);
-            return this;
-        }
-        /**
-         * Define if disabled Chunked Encoding is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param chunkedEncodingDisabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder chunkedEncodingDisabled(
-                boolean chunkedEncodingDisabled) {
-            doSetProperty("chunkedEncodingDisabled", chunkedEncodingDisabled);
-            return this;
-        }
-        /**
-         * Define if disabled Chunked Encoding is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param chunkedEncodingDisabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder chunkedEncodingDisabled(
-                String chunkedEncodingDisabled) {
-            doSetProperty("chunkedEncodingDisabled", chunkedEncodingDisabled);
-            return this;
-        }
-        /**
-         * Define if Dualstack enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param dualstackEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder dualstackEnabled(
-                boolean dualstackEnabled) {
-            doSetProperty("dualstackEnabled", dualstackEnabled);
-            return this;
-        }
-        /**
-         * Define if Dualstack enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param dualstackEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder dualstackEnabled(
-                String dualstackEnabled) {
-            doSetProperty("dualstackEnabled", dualstackEnabled);
-            return this;
-        }
-        /**
-         * Define if Force Global Bucket Access enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param forceGlobalBucketAccessEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder forceGlobalBucketAccessEnabled(
-                boolean forceGlobalBucketAccessEnabled) {
-            doSetProperty("forceGlobalBucketAccessEnabled", forceGlobalBucketAccessEnabled);
-            return this;
-        }
-        /**
-         * Define if Force Global Bucket Access enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param forceGlobalBucketAccessEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder forceGlobalBucketAccessEnabled(
-                String forceGlobalBucketAccessEnabled) {
-            doSetProperty("forceGlobalBucketAccessEnabled", forceGlobalBucketAccessEnabled);
-            return this;
-        }
-        /**
-         * Define if Payload Signing enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param payloadSigningEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder payloadSigningEnabled(
-                boolean payloadSigningEnabled) {
-            doSetProperty("payloadSigningEnabled", payloadSigningEnabled);
-            return this;
-        }
-        /**
-         * Define if Payload Signing enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param payloadSigningEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointConsumerBuilder payloadSigningEnabled(
-                String payloadSigningEnabled) {
-            doSetProperty("payloadSigningEnabled", payloadSigningEnabled);
-            return this;
-        }
-    }
-
-    /**
-     * Builder for endpoint producers for the AWS S3 Storage Service component.
-     */
-    public interface S3EndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default AdvancedS3EndpointProducerBuilder advanced() {
-            return (AdvancedS3EndpointProducerBuilder) this;
-        }
-        /**
-         * Reference to a com.amazonaws.services.s3.AmazonS3 in the registry.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.services.s3.AmazonS3&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param amazonS3Client the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder amazonS3Client(Object amazonS3Client) {
-            doSetProperty("amazonS3Client", amazonS3Client);
-            return this;
-        }
-        /**
-         * Reference to a com.amazonaws.services.s3.AmazonS3 in the registry.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.services.s3.AmazonS3&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param amazonS3Client the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder amazonS3Client(String amazonS3Client) {
-            doSetProperty("amazonS3Client", amazonS3Client);
-            return this;
-        }
-        /**
-         * Setting the autocreation of the bucket.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoCreateBucket the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder autoCreateBucket(
-                boolean autoCreateBucket) {
-            doSetProperty("autoCreateBucket", autoCreateBucket);
-            return this;
-        }
-        /**
-         * Setting the autocreation of the bucket.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoCreateBucket the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder autoCreateBucket(
-                String autoCreateBucket) {
-            doSetProperty("autoCreateBucket", autoCreateBucket);
-            return this;
-        }
-        /**
-         * Setting the autoDiscoverClient mechanism, if true, the component will
-         * look for a client instance in the registry automatically otherwise it
-         * will skip that checking.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoDiscoverClient the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder autoDiscoverClient(
-                boolean autoDiscoverClient) {
-            doSetProperty("autoDiscoverClient", autoDiscoverClient);
-            return this;
-        }
-        /**
-         * Setting the autoDiscoverClient mechanism, if true, the component will
-         * look for a client instance in the registry automatically otherwise it
-         * will skip that checking.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoDiscoverClient the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder autoDiscoverClient(
-                String autoDiscoverClient) {
-            doSetProperty("autoDiscoverClient", autoDiscoverClient);
-            return this;
-        }
-        /**
-         * Amazon AWS Endpoint Configuration.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.client.builder.AwsClientBuilder$EndpointConfiguration&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param endpointConfiguration the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder endpointConfiguration(
-                Object endpointConfiguration) {
-            doSetProperty("endpointConfiguration", endpointConfiguration);
-            return this;
-        }
-        /**
-         * Amazon AWS Endpoint Configuration.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.client.builder.AwsClientBuilder$EndpointConfiguration&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param endpointConfiguration the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder endpointConfiguration(
-                String endpointConfiguration) {
-            doSetProperty("endpointConfiguration", endpointConfiguration);
-            return this;
-        }
-        /**
-         * Whether or not the S3 client should use path style access.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param pathStyleAccess the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder pathStyleAccess(
-                boolean pathStyleAccess) {
-            doSetProperty("pathStyleAccess", pathStyleAccess);
-            return this;
-        }
-        /**
-         * Whether or not the S3 client should use path style access.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param pathStyleAccess the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder pathStyleAccess(String pathStyleAccess) {
-            doSetProperty("pathStyleAccess", pathStyleAccess);
-            return this;
-        }
-        /**
-         * The policy for this queue to set in the
-         * com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param policy the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder policy(String policy) {
-            doSetProperty("policy", policy);
-            return this;
-        }
-        /**
-         * To define a proxy host when instantiating the S3 client.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyHost the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder proxyHost(String proxyHost) {
-            doSetProperty("proxyHost", proxyHost);
-            return this;
-        }
-        /**
-         * Specify a proxy port to be used inside the client definition.
-         * 
-         * The option is a: &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyPort the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder proxyPort(Integer proxyPort) {
-            doSetProperty("proxyPort", proxyPort);
-            return this;
-        }
-        /**
-         * Specify a proxy port to be used inside the client definition.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyPort the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder proxyPort(String proxyPort) {
-            doSetProperty("proxyPort", proxyPort);
-            return this;
-        }
-        /**
-         * To define a proxy protocol when instantiating the S3 client.
-         * 
-         * The option is a: &lt;code&gt;com.amazonaws.Protocol&lt;/code&gt;
-         * type.
-         * 
-         * Default: HTTPS
-         * Group: common
-         * 
-         * @param proxyProtocol the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder proxyProtocol(Protocol proxyProtocol) {
-            doSetProperty("proxyProtocol", proxyProtocol);
-            return this;
-        }
-        /**
-         * To define a proxy protocol when instantiating the S3 client.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.Protocol&lt;/code&gt; type.
-         * 
-         * Default: HTTPS
-         * Group: common
-         * 
-         * @param proxyProtocol the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder proxyProtocol(String proxyProtocol) {
-            doSetProperty("proxyProtocol", proxyProtocol);
-            return this;
-        }
-        /**
-         * 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().
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param region the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder region(String region) {
-            doSetProperty("region", region);
-            return this;
-        }
-        /**
-         * Set whether the S3 client should expect to load credentials on an EC2
-         * instance or to expect static credentials to be passed in.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param useIAMCredentials the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder useIAMCredentials(
-                boolean useIAMCredentials) {
-            doSetProperty("useIAMCredentials", useIAMCredentials);
-            return this;
-        }
-        /**
-         * Set whether the S3 client should expect to load credentials on an EC2
-         * instance or to expect static credentials to be passed in.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param useIAMCredentials the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder useIAMCredentials(
-                String useIAMCredentials) {
-            doSetProperty("useIAMCredentials", useIAMCredentials);
-            return this;
-        }
-        /**
-         * Delete file object after the S3 file has been uploaded.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param deleteAfterWrite the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder deleteAfterWrite(
-                boolean deleteAfterWrite) {
-            doSetProperty("deleteAfterWrite", deleteAfterWrite);
-            return this;
-        }
-        /**
-         * Delete file object after the S3 file has been uploaded.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param deleteAfterWrite the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder deleteAfterWrite(
-                String deleteAfterWrite) {
-            doSetProperty("deleteAfterWrite", deleteAfterWrite);
-            return this;
-        }
-        /**
-         * Setting the key name for an element in the bucket through endpoint
-         * parameter.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: producer
-         * 
-         * @param keyName the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder keyName(String keyName) {
-            doSetProperty("keyName", keyName);
-            return this;
-        }
-        /**
-         * Whether the producer should be started lazy (on the first message).
-         * By starting lazy you can use this to allow CamelContext and routes to
-         * startup in situations where a producer may otherwise fail during
-         * starting and cause the route to fail being started. By deferring this
-         * startup to be lazy then the startup failure can be handled during
-         * routing messages via Camel's routing error handlers. Beware that when
-         * the first message is processed then creating and starting the
-         * producer may take a little time and prolong the total processing time
-         * of the processing.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param lazyStartProducer the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder lazyStartProducer(
-                boolean lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-        /**
-         * Whether the producer should be started lazy (on the first message).
-         * By starting lazy you can use this to allow CamelContext and routes to
-         * startup in situations where a producer may otherwise fail during
-         * starting and cause the route to fail being started. By deferring this
-         * startup to be lazy then the startup failure can be handled during
-         * routing messages via Camel's routing error handlers. Beware that when
-         * the first message is processed then creating and starting the
-         * producer may take a little time and prolong the total processing time
-         * of the processing.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param lazyStartProducer the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder lazyStartProducer(
-                String lazyStartProducer) {
-            doSetProperty("lazyStartProducer", lazyStartProducer);
-            return this;
-        }
-        /**
-         * If it is true, camel will upload the file with multi part format, the
-         * part size is decided by the option of partSize.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param multiPartUpload the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder multiPartUpload(
-                boolean multiPartUpload) {
-            doSetProperty("multiPartUpload", multiPartUpload);
-            return this;
-        }
-        /**
-         * If it is true, camel will upload the file with multi part format, the
-         * part size is decided by the option of partSize.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: producer
-         * 
-         * @param multiPartUpload the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder multiPartUpload(String multiPartUpload) {
-            doSetProperty("multiPartUpload", multiPartUpload);
-            return this;
-        }
-        /**
-         * The operation to do in case the user don't want to do only an upload.
-         * 
-         * The option is a:
-         * &lt;code&gt;org.apache.camel.component.aws.s3.S3Operations&lt;/code&gt; type.
-         * 
-         * Group: producer
-         * 
-         * @param operation the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder operation(S3Operations operation) {
-            doSetProperty("operation", operation);
-            return this;
-        }
-        /**
-         * The operation to do in case the user don't want to do only an upload.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.component.aws.s3.S3Operations&lt;/code&gt; type.
-         * 
-         * Group: producer
-         * 
-         * @param operation the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder operation(String operation) {
-            doSetProperty("operation", operation);
-            return this;
-        }
-        /**
-         * Setup the partSize which is used in multi part upload, the default
-         * size is 25M.
-         * 
-         * The option is a: &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 26214400
-         * Group: producer
-         * 
-         * @param partSize the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder partSize(long partSize) {
-            doSetProperty("partSize", partSize);
-            return this;
-        }
-        /**
-         * Setup the partSize which is used in multi part upload, the default
-         * size is 25M.
-         * 
-         * The option will be converted to a &lt;code&gt;long&lt;/code&gt; type.
-         * 
-         * Default: 26214400
-         * Group: producer
-         * 
-         * @param partSize the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder partSize(String partSize) {
-            doSetProperty("partSize", partSize);
-            return this;
-        }
-        /**
-         * Sets the server-side encryption algorithm when encrypting the object
-         * using AWS-managed keys. For example use AES256.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: producer
-         * 
-         * @param serverSideEncryption the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder serverSideEncryption(
-                String serverSideEncryption) {
-            doSetProperty("serverSideEncryption", serverSideEncryption);
-            return this;
-        }
-        /**
-         * The storage class to set in the
-         * com.amazonaws.services.s3.model.PutObjectRequest request.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: producer
-         * 
-         * @param storageClass the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder storageClass(String storageClass) {
-            doSetProperty("storageClass", storageClass);
-            return this;
-        }
-        /**
-         * Amazon AWS Access Key.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: security
-         * 
-         * @param accessKey the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder accessKey(String accessKey) {
-            doSetProperty("accessKey", accessKey);
-            return this;
-        }
-        /**
-         * Amazon AWS Secret Key.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: security
-         * 
-         * @param secretKey the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointProducerBuilder secretKey(String secretKey) {
-            doSetProperty("secretKey", secretKey);
-            return this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint producers for the AWS S3 Storage Service
-     * component.
-     */
-    public interface AdvancedS3EndpointProducerBuilder
-            extends
-                EndpointProducerBuilder {
-        default S3EndpointProducerBuilder basic() {
-            return (S3EndpointProducerBuilder) this;
-        }
-        /**
-         * The encryption materials to use in case of Symmetric/Asymmetric
-         * client usage.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.services.s3.model.EncryptionMaterials&lt;/code&gt; type.
-         * 
-         * Group: common (advanced)
-         * 
-         * @param encryptionMaterials the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder encryptionMaterials(
-                Object encryptionMaterials) {
-            doSetProperty("encryptionMaterials", encryptionMaterials);
-            return this;
-        }
-        /**
-         * The encryption materials to use in case of Symmetric/Asymmetric
-         * client usage.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.services.s3.model.EncryptionMaterials&lt;/code&gt; type.
-         * 
-         * Group: common (advanced)
-         * 
-         * @param encryptionMaterials the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder encryptionMaterials(
-                String encryptionMaterials) {
-            doSetProperty("encryptionMaterials", encryptionMaterials);
-            return this;
-        }
-        /**
-         * Define if encryption must be used or not.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common (advanced)
-         * 
-         * @param useEncryption the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder useEncryption(
-                boolean useEncryption) {
-            doSetProperty("useEncryption", useEncryption);
-            return this;
-        }
-        /**
-         * Define if encryption must be used or not.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: common (advanced)
-         * 
-         * @param useEncryption the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder useEncryption(
-                String useEncryption) {
-            doSetProperty("useEncryption", useEncryption);
-            return this;
-        }
-        /**
-         * Define the id of KMS key to use in case KMS is enabled.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: producer (advanced)
-         * 
-         * @param awsKMSKeyId the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder awsKMSKeyId(String awsKMSKeyId) {
-            doSetProperty("awsKMSKeyId", awsKMSKeyId);
-            return this;
-        }
-        /**
-         * Define if KMS must be used or not.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: producer (advanced)
-         * 
-         * @param useAwsKMS the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder useAwsKMS(boolean useAwsKMS) {
-            doSetProperty("useAwsKMS", useAwsKMS);
-            return this;
-        }
-        /**
-         * Define if KMS must be used or not.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: producer (advanced)
-         * 
-         * @param useAwsKMS the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder useAwsKMS(String useAwsKMS) {
-            doSetProperty("useAwsKMS", useAwsKMS);
-            return this;
-        }
-        /**
-         * Define if Accelerate Mode enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param accelerateModeEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder accelerateModeEnabled(
-                boolean accelerateModeEnabled) {
-            doSetProperty("accelerateModeEnabled", accelerateModeEnabled);
-            return this;
-        }
-        /**
-         * Define if Accelerate Mode enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param accelerateModeEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder accelerateModeEnabled(
-                String accelerateModeEnabled) {
-            doSetProperty("accelerateModeEnabled", accelerateModeEnabled);
-            return this;
-        }
-        /**
-         * Define if disabled Chunked Encoding is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param chunkedEncodingDisabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder chunkedEncodingDisabled(
-                boolean chunkedEncodingDisabled) {
-            doSetProperty("chunkedEncodingDisabled", chunkedEncodingDisabled);
-            return this;
-        }
-        /**
-         * Define if disabled Chunked Encoding is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param chunkedEncodingDisabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder chunkedEncodingDisabled(
-                String chunkedEncodingDisabled) {
-            doSetProperty("chunkedEncodingDisabled", chunkedEncodingDisabled);
-            return this;
-        }
-        /**
-         * Define if Dualstack enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param dualstackEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder dualstackEnabled(
-                boolean dualstackEnabled) {
-            doSetProperty("dualstackEnabled", dualstackEnabled);
-            return this;
-        }
-        /**
-         * Define if Dualstack enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param dualstackEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder dualstackEnabled(
-                String dualstackEnabled) {
-            doSetProperty("dualstackEnabled", dualstackEnabled);
-            return this;
-        }
-        /**
-         * Define if Force Global Bucket Access enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param forceGlobalBucketAccessEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder forceGlobalBucketAccessEnabled(
-                boolean forceGlobalBucketAccessEnabled) {
-            doSetProperty("forceGlobalBucketAccessEnabled", forceGlobalBucketAccessEnabled);
-            return this;
-        }
-        /**
-         * Define if Force Global Bucket Access enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param forceGlobalBucketAccessEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder forceGlobalBucketAccessEnabled(
-                String forceGlobalBucketAccessEnabled) {
-            doSetProperty("forceGlobalBucketAccessEnabled", forceGlobalBucketAccessEnabled);
-            return this;
-        }
-        /**
-         * Define if Payload Signing enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param payloadSigningEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder payloadSigningEnabled(
-                boolean payloadSigningEnabled) {
-            doSetProperty("payloadSigningEnabled", payloadSigningEnabled);
-            return this;
-        }
-        /**
-         * Define if Payload Signing enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param payloadSigningEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointProducerBuilder payloadSigningEnabled(
-                String payloadSigningEnabled) {
-            doSetProperty("payloadSigningEnabled", payloadSigningEnabled);
-            return this;
-        }
-    }
-
-    /**
-     * Builder for endpoint for the AWS S3 Storage Service component.
-     */
-    public interface S3EndpointBuilder
-            extends
-                S3EndpointConsumerBuilder,
-                S3EndpointProducerBuilder {
-        default AdvancedS3EndpointBuilder advanced() {
-            return (AdvancedS3EndpointBuilder) this;
-        }
-        /**
-         * Reference to a com.amazonaws.services.s3.AmazonS3 in the registry.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.services.s3.AmazonS3&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param amazonS3Client the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder amazonS3Client(Object amazonS3Client) {
-            doSetProperty("amazonS3Client", amazonS3Client);
-            return this;
-        }
-        /**
-         * Reference to a com.amazonaws.services.s3.AmazonS3 in the registry.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.services.s3.AmazonS3&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param amazonS3Client the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder amazonS3Client(String amazonS3Client) {
-            doSetProperty("amazonS3Client", amazonS3Client);
-            return this;
-        }
-        /**
-         * Setting the autocreation of the bucket.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoCreateBucket the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder autoCreateBucket(boolean autoCreateBucket) {
-            doSetProperty("autoCreateBucket", autoCreateBucket);
-            return this;
-        }
-        /**
-         * Setting the autocreation of the bucket.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoCreateBucket the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder autoCreateBucket(String autoCreateBucket) {
-            doSetProperty("autoCreateBucket", autoCreateBucket);
-            return this;
-        }
-        /**
-         * Setting the autoDiscoverClient mechanism, if true, the component will
-         * look for a client instance in the registry automatically otherwise it
-         * will skip that checking.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoDiscoverClient the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder autoDiscoverClient(boolean autoDiscoverClient) {
-            doSetProperty("autoDiscoverClient", autoDiscoverClient);
-            return this;
-        }
-        /**
-         * Setting the autoDiscoverClient mechanism, if true, the component will
-         * look for a client instance in the registry automatically otherwise it
-         * will skip that checking.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: true
-         * Group: common
-         * 
-         * @param autoDiscoverClient the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder autoDiscoverClient(String autoDiscoverClient) {
-            doSetProperty("autoDiscoverClient", autoDiscoverClient);
-            return this;
-        }
-        /**
-         * Amazon AWS Endpoint Configuration.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.client.builder.AwsClientBuilder$EndpointConfiguration&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param endpointConfiguration the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder endpointConfiguration(
-                Object endpointConfiguration) {
-            doSetProperty("endpointConfiguration", endpointConfiguration);
-            return this;
-        }
-        /**
-         * Amazon AWS Endpoint Configuration.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.client.builder.AwsClientBuilder$EndpointConfiguration&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param endpointConfiguration the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder endpointConfiguration(
-                String endpointConfiguration) {
-            doSetProperty("endpointConfiguration", endpointConfiguration);
-            return this;
-        }
-        /**
-         * Whether or not the S3 client should use path style access.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param pathStyleAccess the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder pathStyleAccess(boolean pathStyleAccess) {
-            doSetProperty("pathStyleAccess", pathStyleAccess);
-            return this;
-        }
-        /**
-         * Whether or not the S3 client should use path style access.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param pathStyleAccess the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder pathStyleAccess(String pathStyleAccess) {
-            doSetProperty("pathStyleAccess", pathStyleAccess);
-            return this;
-        }
-        /**
-         * The policy for this queue to set in the
-         * com.amazonaws.services.s3.AmazonS3#setBucketPolicy() method.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param policy the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder policy(String policy) {
-            doSetProperty("policy", policy);
-            return this;
-        }
-        /**
-         * To define a proxy host when instantiating the S3 client.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyHost the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder proxyHost(String proxyHost) {
-            doSetProperty("proxyHost", proxyHost);
-            return this;
-        }
-        /**
-         * Specify a proxy port to be used inside the client definition.
-         * 
-         * The option is a: &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyPort the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder proxyPort(Integer proxyPort) {
-            doSetProperty("proxyPort", proxyPort);
-            return this;
-        }
-        /**
-         * Specify a proxy port to be used inside the client definition.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;java.lang.Integer&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param proxyPort the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder proxyPort(String proxyPort) {
-            doSetProperty("proxyPort", proxyPort);
-            return this;
-        }
-        /**
-         * To define a proxy protocol when instantiating the S3 client.
-         * 
-         * The option is a: &lt;code&gt;com.amazonaws.Protocol&lt;/code&gt;
-         * type.
-         * 
-         * Default: HTTPS
-         * Group: common
-         * 
-         * @param proxyProtocol the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder proxyProtocol(Protocol proxyProtocol) {
-            doSetProperty("proxyProtocol", proxyProtocol);
-            return this;
-        }
-        /**
-         * To define a proxy protocol when instantiating the S3 client.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.Protocol&lt;/code&gt; type.
-         * 
-         * Default: HTTPS
-         * Group: common
-         * 
-         * @param proxyProtocol the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder proxyProtocol(String proxyProtocol) {
-            doSetProperty("proxyProtocol", proxyProtocol);
-            return this;
-        }
-        /**
-         * 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().
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: common
-         * 
-         * @param region the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder region(String region) {
-            doSetProperty("region", region);
-            return this;
-        }
-        /**
-         * Set whether the S3 client should expect to load credentials on an EC2
-         * instance or to expect static credentials to be passed in.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param useIAMCredentials the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder useIAMCredentials(boolean useIAMCredentials) {
-            doSetProperty("useIAMCredentials", useIAMCredentials);
-            return this;
-        }
-        /**
-         * Set whether the S3 client should expect to load credentials on an EC2
-         * instance or to expect static credentials to be passed in.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: common
-         * 
-         * @param useIAMCredentials the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder useIAMCredentials(String useIAMCredentials) {
-            doSetProperty("useIAMCredentials", useIAMCredentials);
-            return this;
-        }
-        /**
-         * Amazon AWS Access Key.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: security
-         * 
-         * @param accessKey the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder accessKey(String accessKey) {
-            doSetProperty("accessKey", accessKey);
-            return this;
-        }
-        /**
-         * Amazon AWS Secret Key.
-         * 
-         * The option is a: &lt;code&gt;java.lang.String&lt;/code&gt; type.
-         * 
-         * Group: security
-         * 
-         * @param secretKey the value to set
-         * @return the dsl builder
-         */
-        default S3EndpointBuilder secretKey(String secretKey) {
-            doSetProperty("secretKey", secretKey);
-            return this;
-        }
-    }
-
-    /**
-     * Advanced builder for endpoint for the AWS S3 Storage Service component.
-     */
-    public interface AdvancedS3EndpointBuilder
-            extends
-                AdvancedS3EndpointConsumerBuilder,
-                AdvancedS3EndpointProducerBuilder {
-        default S3EndpointBuilder basic() {
-            return (S3EndpointBuilder) this;
-        }
-        /**
-         * The encryption materials to use in case of Symmetric/Asymmetric
-         * client usage.
-         * 
-         * The option is a:
-         * &lt;code&gt;com.amazonaws.services.s3.model.EncryptionMaterials&lt;/code&gt; type.
-         * 
-         * Group: common (advanced)
-         * 
-         * @param encryptionMaterials the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder encryptionMaterials(
-                Object encryptionMaterials) {
-            doSetProperty("encryptionMaterials", encryptionMaterials);
-            return this;
-        }
-        /**
-         * The encryption materials to use in case of Symmetric/Asymmetric
-         * client usage.
-         * 
-         * The option will be converted to a
-         * &lt;code&gt;com.amazonaws.services.s3.model.EncryptionMaterials&lt;/code&gt; type.
-         * 
-         * Group: common (advanced)
-         * 
-         * @param encryptionMaterials the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder encryptionMaterials(
-                String encryptionMaterials) {
-            doSetProperty("encryptionMaterials", encryptionMaterials);
-            return this;
-        }
-        /**
-         * Define if encryption must be used or not.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group: common (advanced)
-         * 
-         * @param useEncryption the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder useEncryption(boolean useEncryption) {
-            doSetProperty("useEncryption", useEncryption);
-            return this;
-        }
-        /**
-         * Define if encryption must be used or not.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group: common (advanced)
-         * 
-         * @param useEncryption the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder useEncryption(String useEncryption) {
-            doSetProperty("useEncryption", useEncryption);
-            return this;
-        }
-        /**
-         * Define if Accelerate Mode enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param accelerateModeEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder accelerateModeEnabled(
-                boolean accelerateModeEnabled) {
-            doSetProperty("accelerateModeEnabled", accelerateModeEnabled);
-            return this;
-        }
-        /**
-         * Define if Accelerate Mode enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param accelerateModeEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder accelerateModeEnabled(
-                String accelerateModeEnabled) {
-            doSetProperty("accelerateModeEnabled", accelerateModeEnabled);
-            return this;
-        }
-        /**
-         * Define if disabled Chunked Encoding is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param chunkedEncodingDisabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder chunkedEncodingDisabled(
-                boolean chunkedEncodingDisabled) {
-            doSetProperty("chunkedEncodingDisabled", chunkedEncodingDisabled);
-            return this;
-        }
-        /**
-         * Define if disabled Chunked Encoding is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param chunkedEncodingDisabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder chunkedEncodingDisabled(
-                String chunkedEncodingDisabled) {
-            doSetProperty("chunkedEncodingDisabled", chunkedEncodingDisabled);
-            return this;
-        }
-        /**
-         * Define if Dualstack enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param dualstackEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder dualstackEnabled(
-                boolean dualstackEnabled) {
-            doSetProperty("dualstackEnabled", dualstackEnabled);
-            return this;
-        }
-        /**
-         * Define if Dualstack enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param dualstackEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder dualstackEnabled(
-                String dualstackEnabled) {
-            doSetProperty("dualstackEnabled", dualstackEnabled);
-            return this;
-        }
-        /**
-         * Define if Force Global Bucket Access enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param forceGlobalBucketAccessEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder forceGlobalBucketAccessEnabled(
-                boolean forceGlobalBucketAccessEnabled) {
-            doSetProperty("forceGlobalBucketAccessEnabled", forceGlobalBucketAccessEnabled);
-            return this;
-        }
-        /**
-         * Define if Force Global Bucket Access enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param forceGlobalBucketAccessEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder forceGlobalBucketAccessEnabled(
-                String forceGlobalBucketAccessEnabled) {
-            doSetProperty("forceGlobalBucketAccessEnabled", forceGlobalBucketAccessEnabled);
-            return this;
-        }
-        /**
-         * Define if Payload Signing enabled is true or false.
-         * 
-         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param payloadSigningEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder payloadSigningEnabled(
-                boolean payloadSigningEnabled) {
-            doSetProperty("payloadSigningEnabled", payloadSigningEnabled);
-            return this;
-        }
-        /**
-         * Define if Payload Signing enabled is true or false.
-         * 
-         * The option will be converted to a &lt;code&gt;boolean&lt;/code&gt;
-         * type.
-         * 
-         * Default: false
-         * Group:  advanced
-         * 
-         * @param payloadSigningEnabled the value to set
-         * @return the dsl builder
-         */
-        default AdvancedS3EndpointBuilder payloadSigningEnabled(
-                String payloadSigningEnabled) {
-            doSetProperty("payloadSigningEnabled", payloadSigningEnabled);
-            return this;
-        }
-    }
-
-    /**
-     * Proxy enum for <code>com.amazonaws.Protocol</code> enum.
-     */
-    enum Protocol {
-        HTTP,
-        HTTPS;
-    }
-
-    /**
-     * Proxy enum for
-     * <code>org.apache.camel.component.aws.s3.S3Operations</code> enum.
-     */
-    enum S3Operations {
-        copyObject,
-        listObjects,
-        deleteObject,
-        deleteBucket,
-        listBuckets,
-        downloadLink,
-        getObject,
-        getObjectRange;
-    }
-
-    public interface S3Builders {
-        /**
-         * AWS S3 Storage Service (camel-aws-s3)
-         * Store and retrieve objects from AWS S3 Storage Service.
-         * 
-         * Category: cloud,file
-         * Since: 2.8
-         * Maven coordinates: org.apache.camel:camel-aws-s3
-         * 
-         * Syntax: <code>aws-s3://bucketNameOrArn</code>
-         * 
-         * Path parameter: bucketNameOrArn (required)
-         * Bucket name or ARN
-         * 
-         * @param path //bucketNameOrArn
-         * @return the dsl builder
-         */
-        @Deprecated
-        default S3EndpointBuilder awsS3(String path) {
-            return S3EndpointBuilderFactory.endpointBuilder("aws-s3", path);
-        }
-        /**
-         * AWS S3 Storage Service (camel-aws-s3)
-         * Store and retrieve objects from AWS S3 Storage Service.
-         * 
-         * Category: cloud,file
-         * Since: 2.8
-         * Maven coordinates: org.apache.camel:camel-aws-s3
-         * 
-         * Syntax: <code>aws-s3://bucketNameOrArn</code>
-         * 
-         * Path parameter: bucketNameOrArn (required)
-         * Bucket name or ARN
-         * 
-         * @param componentName to use a custom component name for the endpoint
-         * instead of the default name
-         * @param path //bucketNameOrArn
-         * @return the dsl builder
-         */
-        @Deprecated
-        default S3EndpointBuilder awsS3(String componentName, String path) {
-            return S3EndpointBuilderFactory.endpointBuilder(componentName, path);
-        }
-    }
-    @Deprecated
-    static S3EndpointBuilder endpointBuilder(String componentName, String path) {
-        class S3EndpointBuilderImpl extends AbstractEndpointBuilder implements S3EndpointBuilder, AdvancedS3EndpointBuilder {
-            public S3EndpointBuilderImpl(String path) {
-                super(componentName, path);
-            }
-        }
-        return new S3EndpointBuilderImpl(path);
-    }
-}
\ No newline at end of file


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

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

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

commit 07ebc11cf2e8de909c5ef4455b3c5d6b9bcdac94
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Feb 25 07:59:16 2021 +0100

    CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
---
 bom/camel-bom/pom.xml            | 5 -----
 core/camel-allcomponents/pom.xml | 4 ----
 parent/pom.xml                   | 5 -----
 3 files changed, 14 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index f79a5e0..e27230c 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -138,11 +138,6 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
-        <artifactId>camel-aws-s3</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.camel</groupId>
         <artifactId>camel-aws-swf</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/core/camel-allcomponents/pom.xml b/core/camel-allcomponents/pom.xml
index 28d43bd..e6d58e6 100644
--- a/core/camel-allcomponents/pom.xml
+++ b/core/camel-allcomponents/pom.xml
@@ -111,10 +111,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.camel</groupId>
-			<artifactId>camel-aws-s3</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.camel</groupId>
 			<artifactId>camel-aws-swf</artifactId>
 		</dependency>
 		<dependency>
diff --git a/parent/pom.xml b/parent/pom.xml
index 4b5321a..a55724c 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -857,11 +857,6 @@
 			</dependency>
 			<dependency>
 				<groupId>org.apache.camel</groupId>
-				<artifactId>camel-aws-s3</artifactId>
-				<version>${project.version}</version>
-			</dependency>
-			<dependency>
-				<groupId>org.apache.camel</groupId>
 				<artifactId>camel-aws-swf</artifactId>
 				<version>${project.version}</version>
 			</dependency>


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

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

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

commit bd44f0422a0291e449fd411c775983f6232a0c8a
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Feb 25 08:19:22 2021 +0100

    CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
---
 .../org/apache/camel/catalog/components.properties |   1 -
 .../apache/camel/catalog/components/aws-s3.json    | 128 -----
 .../org/apache/camel/catalog/docs.properties       |   1 -
 .../camel/catalog/docs/aws-s3-component.adoc       | 553 --------------------
 .../component/ComponentsBuilderFactory.java        |   2 +-
 .../src/generated/resources/metadata.json          |  23 -
 .../builder/endpoint/EndpointBuilderFactory.java   |   1 -
 .../camel/builder/endpoint/EndpointBuilders.java   |   1 -
 .../builder/endpoint/StaticEndpointBuilders.java   |   2 +-
 docs/components/modules/ROOT/nav.adoc              |   1 -
 .../modules/ROOT/pages/aws-s3-component.adoc       | 555 ---------------------
 11 files changed, 2 insertions(+), 1266 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
index 6848cd5..507c780 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
@@ -18,7 +18,6 @@ atomix-queue
 atomix-set
 atomix-value
 avro
-aws-s3
 aws-swf
 aws2-athena
 aws2-cw
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-s3.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-s3.json
deleted file mode 100644
index f919a34..0000000
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/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/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
index 7df465c..877381d 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
@@ -22,7 +22,6 @@ atomix-value-component
 attachments
 avro-component
 avro-dataformat
-aws-s3-component
 aws-swf-component
 aws-xray
 aws2-athena-component
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-s3-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws-s3-component.adoc
deleted file mode 100644
index 738a334..0000000
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/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/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index 6ba1c62..02d2bdc 100644
--- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -4652,4 +4652,4 @@ public interface ComponentsBuilderFactory {
     static org.apache.camel.builder.component.dsl.ZookeeperMasterComponentBuilderFactory.ZookeeperMasterComponentBuilder zookeeperMaster() {
         return org.apache.camel.builder.component.dsl.ZookeeperMasterComponentBuilderFactory.zookeeperMaster();
     }
-}
+}
\ No newline at end of file
diff --git a/core/camel-componentdsl/src/generated/resources/metadata.json b/core/camel-componentdsl/src/generated/resources/metadata.json
index ef93029..97972c1 100644
--- a/core/camel-componentdsl/src/generated/resources/metadata.json
+++ b/core/camel-componentdsl/src/generated/resources/metadata.json
@@ -906,29 +906,6 @@
     "producerOnly": true,
     "lenientProperties": false
   },
-  "AwsS3ComponentBuilderFactory": {
-    "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
-  },
   "AwsSwfComponentBuilderFactory": {
     "kind": "component",
     "name": "aws-swf",
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index 0dc0c1a..789d80f 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -280,7 +280,6 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.ResteasyEndpointBuilderFactory.ResteasyBuilders,
             org.apache.camel.builder.endpoint.dsl.RobotFrameworkEndpointBuilderFactory.RobotFrameworkBuilders,
             org.apache.camel.builder.endpoint.dsl.RssEndpointBuilderFactory.RssBuilders,
-            org.apache.camel.builder.endpoint.dsl.S3EndpointBuilderFactory.S3Builders,
             org.apache.camel.builder.endpoint.dsl.STS2EndpointBuilderFactory.STS2Builders,
             org.apache.camel.builder.endpoint.dsl.SWFEndpointBuilderFactory.SWFBuilders,
             org.apache.camel.builder.endpoint.dsl.SagaEndpointBuilderFactory.SagaBuilders,
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index a6450c8..48e9894 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -277,7 +277,6 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.ResteasyEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RobotFrameworkEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RssEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.S3EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.STS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.SWFEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.SagaEndpointBuilderFactory,
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 240a486..765667f 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -16352,4 +16352,4 @@ public class StaticEndpointBuilders {
         return org.apache.camel.builder.endpoint.dsl.ZooKeeperMasterEndpointBuilderFactory.endpointBuilder(componentName, path);
     }
 }
-//CHECKSTYLE:ON
+//CHECKSTYLE:ON
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index 265b3d1..4abda9d 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -21,7 +21,6 @@
 ** xref:atomix-set-component.adoc[Atomix Set]
 ** xref:atomix-value-component.adoc[Atomix Value]
 ** xref:avro-component.adoc[Avro RPC]
-*** xref:aws-s3-component.adoc[AWS S3 Storage Service]
 *** xref:aws-swf-component.adoc[AWS Simple Workflow (SWF)]
 ** xref:aws2-summary.adoc[AWS 2]
 *** xref:aws2-athena-component.adoc[AWS 2 Athena]
diff --git a/docs/components/modules/ROOT/pages/aws-s3-component.adoc b/docs/components/modules/ROOT/pages/aws-s3-component.adoc
deleted file mode 100644
index 6760738..0000000
--- a/docs/components/modules/ROOT/pages/aws-s3-component.adoc
+++ /dev/null
@@ -1,555 +0,0 @@
-[[aws-s3-component]]
-= AWS S3 Storage Service Component (deprecated)
-//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-aws-s3/src/main/docs/aws-s3-component.adoc
-: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[]


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

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

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

commit 718a01a984d815438d340bbda49cd041b2996d54
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Feb 25 08:24:11 2021 +0100

    CAMEL-16115 - Remove Camel-AWS-* components - AWS-S3
---
 .../src/main/docs/modules/eips/pages/polling-consumer.adoc               | 1 -
 docs/user-manual/modules/ROOT/pages/batch-consumer.adoc                  | 1 -
 2 files changed, 2 deletions(-)

diff --git a/core/camel-core-engine/src/main/docs/modules/eips/pages/polling-consumer.adoc b/core/camel-core-engine/src/main/docs/modules/eips/pages/polling-consumer.adoc
index 58def54..13a6d61 100644
--- a/core/camel-core-engine/src/main/docs/modules/eips/pages/polling-consumer.adoc
+++ b/core/camel-core-engine/src/main/docs/modules/eips/pages/polling-consumer.adoc
@@ -181,7 +181,6 @@ For more details see:
 ** xref:components::mybatis-component.adoc[MyBatis]
 ** xref:components::quartz-component.adoc[Quartz]
 ** xref:components::snmp-component.adoc[SNMP]
-** xref:components::aws-s3-component.adoc[AWS-S3]
 
 [[PollingConsumer-ScheduledPollConsumerOptions]]
 === ScheduledPollConsumer Options
diff --git a/docs/user-manual/modules/ROOT/pages/batch-consumer.adoc b/docs/user-manual/modules/ROOT/pages/batch-consumer.adoc
index 8f7ce09..78950a5 100644
--- a/docs/user-manual/modules/ROOT/pages/batch-consumer.adoc
+++ b/docs/user-manual/modules/ROOT/pages/batch-consumer.adoc
@@ -22,7 +22,6 @@ Consumer] by its consumer:
 * xref:components::mybatis-component.adoc[MyBatis]
 * xref:components::snmp-component.adoc[SNMP]
 * xref:components::sql-component.adoc[SQL]
-* xref:components::aws-s3-component.adoc[S3]
 
 [[BatchConsumer-ConsumerOptions]]
 == Consumer Options