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

[camel] 06/14: CAMEL-14555 - Create an AWS-S3 component based on SDK v2, fixed CS

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 1a5ff48e9124c864b3d9bb8991087eb1c507668b
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Mar 6 08:45:40 2020 +0100

    CAMEL-14555 - Create an AWS-S3 component based on SDK v2, fixed CS
---
 .../camel/component/aws2/s3/AWS2S3Component.java   |  1 -
 .../aws2/s3/AWS2S3ComponentVerifierExtension.java  |  1 -
 .../component/aws2/s3/AWS2S3Configuration.java     |  5 +--
 .../camel/component/aws2/s3/AWS2S3Consumer.java    | 30 ++++++--------
 .../camel/component/aws2/s3/AWS2S3Endpoint.java    | 46 +++++++++++-----------
 .../camel/component/aws2/s3/AWS2S3Producer.java    | 37 ++++++-----------
 .../aws2/s3/client/AWS2S3ClientFactory.java        |  4 +-
 .../client/impl/AWS2S3ClientIAMOptimizedImpl.java  | 11 ++----
 .../s3/client/impl/AWS2S3ClientStandardImpl.java   | 23 +++++------
 .../component/aws2/s3/AWSS3ClientFactoryTest.java  |  8 ++--
 .../s3/integration/S3ComponentIntegrationTest.java |  8 ++--
 .../S3ObjectRangeOperationIntegrationTest.java     | 24 ++++++-----
 12 files changed, 80 insertions(+), 118 deletions(-)

diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Component.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Component.java
index 97b7bc0..87fb256 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Component.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Component.java
@@ -24,7 +24,6 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
-
 import software.amazon.awssdk.services.s3.S3Client;
 
 @Component("aws2-s3")
diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentVerifierExtension.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentVerifierExtension.java
index 5278b05..c0aee32 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentVerifierExtension.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentVerifierExtension.java
@@ -22,7 +22,6 @@ import org.apache.camel.component.extension.verifier.DefaultComponentVerifierExt
 import org.apache.camel.component.extension.verifier.ResultBuilder;
 import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
 import org.apache.camel.component.extension.verifier.ResultErrorHelper;
-
 import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
 import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
 import software.amazon.awssdk.core.exception.SdkClientException;
diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Configuration.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Configuration.java
index 370f042..9a4ff5f 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Configuration.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Configuration.java
@@ -20,7 +20,6 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;
 import org.apache.camel.util.ObjectHelper;
-
 import software.amazon.awssdk.core.Protocol;
 import software.amazon.awssdk.services.s3.S3Client;
 import software.amazon.awssdk.services.s3.model.Encryption;
@@ -245,8 +244,8 @@ public class AWS2S3Configuration implements Cloneable {
      * 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 AWS2S3Constants#BUCKET_NAME} and {@link AWS2S3Constants#KEY} headers,
-     * or only the {@link AWS2S3Constants#KEY} header.
+     * the {@link AWS2S3Constants#BUCKET_NAME} and {@link AWS2S3Constants#KEY}
+     * headers, or only the {@link AWS2S3Constants#KEY} header.
      */
     public void setDeleteAfterRead(boolean deleteAfterRead) {
         this.deleteAfterRead = deleteAfterRead;
diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java
index c0c2fe7..fdf5e52 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java
@@ -16,29 +16,12 @@
  */
 package org.apache.camel.component.aws2.s3;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Queue;
 
-import software.amazon.awssdk.awscore.exception.AwsServiceException;
-import software.amazon.awssdk.core.ResponseInputStream;
-import software.amazon.awssdk.core.sync.ResponseTransformer;
-import software.amazon.awssdk.services.s3.S3Client;
-import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
-import software.amazon.awssdk.services.s3.model.GetObjectRequest;
-import software.amazon.awssdk.services.s3.model.GetObjectResponse;
-import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
-import software.amazon.awssdk.services.s3.model.ListObjectsResponse;
-import software.amazon.awssdk.services.s3.model.S3Object;
-
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExtendedExchange;
@@ -52,6 +35,16 @@ import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.URISupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.awscore.exception.AwsServiceException;
+import software.amazon.awssdk.core.ResponseInputStream;
+import software.amazon.awssdk.core.sync.ResponseTransformer;
+import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
+import software.amazon.awssdk.services.s3.model.GetObjectRequest;
+import software.amazon.awssdk.services.s3.model.GetObjectResponse;
+import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
+import software.amazon.awssdk.services.s3.model.ListObjectsResponse;
+import software.amazon.awssdk.services.s3.model.S3Object;
 
 /**
  * A Consumer of messages from the Amazon Web Service Simple Storage Service
@@ -135,7 +128,8 @@ public class AWS2S3Consumer extends ScheduledBatchPollingConsumer {
         Queue<Exchange> answer = new LinkedList<>();
         try {
             for (S3Object s3ObjectSummary : s3ObjectSummaries) {
-                ResponseInputStream<GetObjectResponse> s3Object = getAmazonS3Client().getObject(GetObjectRequest.builder().bucket(getConfiguration().getBucketName()).key(s3ObjectSummary.key()).build(), ResponseTransformer.toInputStream());
+                ResponseInputStream<GetObjectResponse> s3Object = getAmazonS3Client()
+                    .getObject(GetObjectRequest.builder().bucket(getConfiguration().getBucketName()).key(s3ObjectSummary.key()).build(), ResponseTransformer.toInputStream());
                 s3Objects.add(s3Object);
 
                 Exchange exchange = getEndpoint().createExchange(s3Object, s3ObjectSummary.key());
diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Endpoint.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Endpoint.java
index 9088ac2..a7c1c42 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Endpoint.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Endpoint.java
@@ -16,22 +16,12 @@
  */
 package org.apache.camel.component.aws2.s3;
 
-import software.amazon.awssdk.awscore.exception.AwsServiceException;
-import software.amazon.awssdk.core.ResponseInputStream;
-import software.amazon.awssdk.services.s3.S3Client;
-import software.amazon.awssdk.services.s3.model.CreateBucketRequest;
-import software.amazon.awssdk.services.s3.model.GetObjectResponse;
-import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
-import software.amazon.awssdk.services.s3.model.PutBucketPolicyRequest;
-import software.amazon.awssdk.services.s3.model.S3Object;
-
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
-import java.util.Map;
 
 import org.apache.camel.Component;
 import org.apache.camel.Consumer;
@@ -52,6 +42,14 @@ import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.awscore.exception.AwsServiceException;
+import software.amazon.awssdk.core.ResponseInputStream;
+import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.model.CreateBucketRequest;
+import software.amazon.awssdk.services.s3.model.GetObjectResponse;
+import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
+import software.amazon.awssdk.services.s3.model.PutBucketPolicyRequest;
+import software.amazon.awssdk.services.s3.model.S3Object;
 
 /**
  * The aws-s3 component is used for storing and retrieving object from Amazon S3
@@ -96,7 +94,8 @@ public class AWS2S3Endpoint extends ScheduledPollEndpoint {
     public void doStart() throws Exception {
         super.doStart();
 
-        s3Client = configuration.getAmazonS3Client() != null ? configuration.getAmazonS3Client() : AWS2S3ClientFactory.getAWSS3Client(configuration, getMaxConnections()).getS3Client();
+        s3Client = configuration.getAmazonS3Client() != null
+            ? configuration.getAmazonS3Client() : AWS2S3ClientFactory.getAWSS3Client(configuration).getS3Client();
 
         String fileName = getConfiguration().getFileName();
 
@@ -111,10 +110,10 @@ public class AWS2S3Endpoint extends ScheduledPollEndpoint {
         String prefix = getConfiguration().getPrefix();
 
         try {
-        	ListObjectsRequest.Builder builder = ListObjectsRequest.builder();
-        	builder.bucket(bucketName);
-        	builder.prefix(prefix);
-        	builder.maxKeys(maxMessagesPerPoll);
+            ListObjectsRequest.Builder builder = ListObjectsRequest.builder();
+            builder.bucket(bucketName);
+            builder.prefix(prefix);
+            builder.maxKeys(maxMessagesPerPoll);
             s3Client.listObjects(builder.build());
             LOG.trace("Bucket [{}] already exists", bucketName);
             return;
@@ -171,11 +170,11 @@ public class AWS2S3Endpoint extends ScheduledPollEndpoint {
 
         if (configuration.isIncludeBody()) {
             try {
-				message.setBody(readInputStream(s3Object));
-			} catch (IOException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
+                message.setBody(readInputStream(s3Object));
+            } catch (IOException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
         } else {
             message.setBody(null);
         }
@@ -258,14 +257,13 @@ public class AWS2S3Endpoint extends ScheduledPollEndpoint {
     public void setMaxConnections(int maxConnections) {
         this.maxConnections = maxConnections;
     }
-    
+
     private String readInputStream(ResponseInputStream<GetObjectResponse> s3Object) throws IOException {
         StringBuilder textBuilder = new StringBuilder();
-        try (Reader reader = new BufferedReader(new InputStreamReader
-          (s3Object, Charset.forName(StandardCharsets.UTF_8.name())))) {
+        try (Reader reader = new BufferedReader(new InputStreamReader(s3Object, Charset.forName(StandardCharsets.UTF_8.name())))) {
             int c = 0;
             while ((c = reader.read()) != -1) {
-                textBuilder.append((char) c);
+                textBuilder.append((char)c);
             }
         }
         return textBuilder.toString();
diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
index 533be73..f6c199b 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
@@ -22,11 +22,7 @@ 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.HashMap;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
@@ -34,27 +30,20 @@ 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;
-
 import software.amazon.awssdk.core.ResponseInputStream;
 import software.amazon.awssdk.core.SdkBytes;
 import software.amazon.awssdk.core.sync.RequestBody;
 import software.amazon.awssdk.core.sync.ResponseTransformer;
 import software.amazon.awssdk.services.s3.S3Client;
-import software.amazon.awssdk.services.s3.model.AccessControlPolicy;
-import software.amazon.awssdk.services.s3.model.Bucket;
 import software.amazon.awssdk.services.s3.model.BucketCannedACL;
-import software.amazon.awssdk.services.s3.model.CompletedMultipartUpload;
 import software.amazon.awssdk.services.s3.model.CopyObjectRequest;
 import software.amazon.awssdk.services.s3.model.CopyObjectResponse;
-import software.amazon.awssdk.services.s3.model.CreateMultipartUploadRequest;
-import software.amazon.awssdk.services.s3.model.CreateMultipartUploadResponse;
 import software.amazon.awssdk.services.s3.model.DeleteBucketRequest;
 import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
 import software.amazon.awssdk.services.s3.model.GetObjectRequest;
@@ -65,10 +54,6 @@ import software.amazon.awssdk.services.s3.model.ListObjectsResponse;
 import software.amazon.awssdk.services.s3.model.ObjectCannedACL;
 import software.amazon.awssdk.services.s3.model.PutObjectRequest;
 import software.amazon.awssdk.services.s3.model.PutObjectResponse;
-import software.amazon.awssdk.services.s3.model.S3Object;
-import software.amazon.awssdk.services.s3.model.StorageClass;
-import software.amazon.awssdk.services.s3.model.UploadPartRequest;
-
 /**
  * A Producer which sends messages to the Amazon Web Service Simple Storage
  * Service <a href="http://aws.amazon.com/s3/">AWS S3</a>
@@ -87,7 +72,7 @@ public class AWS2S3Producer extends DefaultProducer {
     public void process(final Exchange exchange) throws Exception {
         AWS2S3Operations operation = determineOperation(exchange);
         if (ObjectHelper.isEmpty(operation)) {
-                processSingleOp(exchange);
+            processSingleOp(exchange);
         } else {
             switch (operation) {
                 case copyObject:
@@ -135,7 +120,7 @@ public class AWS2S3Producer extends DefaultProducer {
             is = new FileInputStream(filePayload);
         } else {
             is = exchange.getIn().getMandatoryBody(InputStream.class);
-            if (objectMetadata.get("Content-Length") == "0" && ObjectHelper.isEmpty(exchange.getProperty(Exchange.CONTENT_LENGTH))) {
+            if (objectMetadata.get("Content-Length").equals("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.put("Content-Length", String.valueOf(baos.size()));
@@ -208,12 +193,12 @@ public class AWS2S3Producer extends DefaultProducer {
             throw new IllegalArgumentException("Destination Key must be specified for copyObject Operation");
         }
         CopyObjectRequest.Builder copyObjectRequest = CopyObjectRequest.builder();
-            copyObjectRequest = CopyObjectRequest.builder().destinationBucket(bucketNameDestination).destinationKey(destinationKey).copySource(bucketName + "/" + sourceKey);
+        copyObjectRequest = CopyObjectRequest.builder().destinationBucket(bucketNameDestination).destinationKey(destinationKey).copySource(bucketName + "/" + sourceKey);
 
         if (getConfiguration().isUseAwsKMS()) {
             if (ObjectHelper.isNotEmpty(getConfiguration().getAwsKMSKeyId())) {
                 copyObjectRequest.ssekmsKeyId(getConfiguration().getAwsKMSKeyId());
-            } 
+            }
         }
 
         CopyObjectResponse copyObjectResult = s3Client.copyObject(copyObjectRequest.build());
@@ -295,7 +280,7 @@ public class AWS2S3Producer extends DefaultProducer {
     }
 
     private Map<String, String> determineMetadata(final Exchange exchange) {
-    	Map<String, String> objectMetadata = new HashMap<String, String>();
+        Map<String, String> objectMetadata = new HashMap<String, String>();
 
         Long contentLength = exchange.getIn().getHeader(AWS2S3Constants.CONTENT_LENGTH, Long.class);
         if (contentLength != null) {
@@ -304,27 +289,27 @@ public class AWS2S3Producer extends DefaultProducer {
 
         String contentType = exchange.getIn().getHeader(AWS2S3Constants.CONTENT_TYPE, String.class);
         if (contentType != null) {
-        	objectMetadata.put("Content-Type", String.valueOf(contentType));
+            objectMetadata.put("Content-Type", String.valueOf(contentType));
         }
 
         String cacheControl = exchange.getIn().getHeader(AWS2S3Constants.CACHE_CONTROL, String.class);
         if (cacheControl != null) {
-        	objectMetadata.put("Cache-Control", String.valueOf(cacheControl));
+            objectMetadata.put("Cache-Control", String.valueOf(cacheControl));
         }
 
         String contentDisposition = exchange.getIn().getHeader(AWS2S3Constants.CONTENT_DISPOSITION, String.class);
         if (contentDisposition != null) {
-        	objectMetadata.put("Content-Disposition", String.valueOf(contentDisposition));
+            objectMetadata.put("Content-Disposition", String.valueOf(contentDisposition));
         }
 
         String contentEncoding = exchange.getIn().getHeader(AWS2S3Constants.CONTENT_ENCODING, String.class);
         if (contentEncoding != null) {
-        	objectMetadata.put("Content-Encoding", String.valueOf(contentEncoding));
+            objectMetadata.put("Content-Encoding", String.valueOf(contentEncoding));
         }
 
         String contentMD5 = exchange.getIn().getHeader(AWS2S3Constants.CONTENT_MD5, String.class);
         if (contentMD5 != null) {
-        	objectMetadata.put("Content-Md5", String.valueOf(contentMD5));
+            objectMetadata.put("Content-Md5", String.valueOf(contentMD5));
         }
 
         return objectMetadata;
@@ -341,7 +326,7 @@ public class AWS2S3Producer extends DefaultProducer {
     private String determineBucketName(final Exchange exchange) {
         String bucketName = exchange.getIn().getHeader(AWS2S3Constants.BUCKET_NAME, String.class);
 
-        if (ObjectHelper.isEmpty(bucketName)) { 
+        if (ObjectHelper.isEmpty(bucketName)) {
             bucketName = getConfiguration().getBucketName();
             LOG.trace("AWS S3 Bucket name header is missing, using default one [{}]", bucketName);
         }
diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/AWS2S3ClientFactory.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/AWS2S3ClientFactory.java
index 0b3c478..9edba33 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/AWS2S3ClientFactory.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/AWS2S3ClientFactory.java
@@ -36,7 +36,7 @@ public final class AWS2S3ClientFactory {
      * @param maxConnections max connections
      * @return AWSS3Client
      */
-    public static AWS2CamelS3InternalClient getAWSS3Client(AWS2S3Configuration configuration, int maxConnections) {
-        return configuration.isUseIAMCredentials() ? new AWS2S3ClientIAMOptimizedImpl(configuration, maxConnections) : new AWS2S3ClientStandardImpl(configuration, maxConnections);
+    public static AWS2CamelS3InternalClient getAWSS3Client(AWS2S3Configuration configuration) {
+        return configuration.isUseIAMCredentials() ? new AWS2S3ClientIAMOptimizedImpl(configuration) : new AWS2S3ClientStandardImpl(configuration);
     }
 }
diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/impl/AWS2S3ClientIAMOptimizedImpl.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/impl/AWS2S3ClientIAMOptimizedImpl.java
index 5395aec..1f8be57 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/impl/AWS2S3ClientIAMOptimizedImpl.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/impl/AWS2S3ClientIAMOptimizedImpl.java
@@ -23,10 +23,7 @@ import org.apache.camel.component.aws2.s3.client.AWS2CamelS3InternalClient;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
 import software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider;
-import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
 import software.amazon.awssdk.http.apache.ApacheHttpClient;
 import software.amazon.awssdk.http.apache.ProxyConfiguration;
 import software.amazon.awssdk.regions.Region;
@@ -41,15 +38,13 @@ import software.amazon.awssdk.services.s3.S3ClientBuilder;
 public class AWS2S3ClientIAMOptimizedImpl implements AWS2CamelS3InternalClient {
     private static final Logger LOG = LoggerFactory.getLogger(AWS2S3ClientIAMOptimizedImpl.class);
     private AWS2S3Configuration configuration;
-    private int maxConnections;
 
     /**
      * Constructor that uses the config file.
      */
-    public AWS2S3ClientIAMOptimizedImpl(AWS2S3Configuration configuration, int maxConnections) {
+    public AWS2S3ClientIAMOptimizedImpl(AWS2S3Configuration configuration) {
         LOG.trace("Creating an AWS S3 client for an ec2 instance with IAM temporary credentials (normal for ec2s).");
         this.configuration = configuration;
-        this.maxConnections = maxConnections;
     }
 
     /**
@@ -59,8 +54,8 @@ public class AWS2S3ClientIAMOptimizedImpl implements AWS2CamelS3InternalClient {
      */
     @Override
     public S3Client getS3Client() {
-    	S3Client client = null;
-    	S3ClientBuilder clientBuilder = S3Client.builder();
+        S3Client client = null;
+        S3ClientBuilder clientBuilder = S3Client.builder();
         ProxyConfiguration.Builder proxyConfig = null;
         ApacheHttpClient.Builder httpClientBuilder = null;
         boolean isClientConfigFound = false;
diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/impl/AWS2S3ClientStandardImpl.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/impl/AWS2S3ClientStandardImpl.java
index 6fd055b..ff6d639 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/impl/AWS2S3ClientStandardImpl.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/client/impl/AWS2S3ClientStandardImpl.java
@@ -16,14 +16,6 @@
  */
 package org.apache.camel.component.aws2.s3.client.impl;
 
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
-import software.amazon.awssdk.http.apache.ApacheHttpClient;
-import software.amazon.awssdk.http.apache.ProxyConfiguration;
-import software.amazon.awssdk.regions.Region;
-import software.amazon.awssdk.services.s3.S3Client;
-import software.amazon.awssdk.services.s3.S3ClientBuilder;
-
 import java.net.URI;
 
 import org.apache.camel.component.aws2.s3.AWS2S3Configuration;
@@ -31,6 +23,13 @@ import org.apache.camel.component.aws2.s3.client.AWS2CamelS3InternalClient;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.http.apache.ApacheHttpClient;
+import software.amazon.awssdk.http.apache.ProxyConfiguration;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.S3ClientBuilder;
 
 /**
  * Manage an AWS s3 client for all users to use. This implementation is for
@@ -39,15 +38,13 @@ import org.slf4j.LoggerFactory;
 public class AWS2S3ClientStandardImpl implements AWS2CamelS3InternalClient {
     private static final Logger LOG = LoggerFactory.getLogger(AWS2S3ClientStandardImpl.class);
     private AWS2S3Configuration configuration;
-    private int maxConnections;
 
     /**
      * Constructor that uses the config file.
      */
-    public AWS2S3ClientStandardImpl(AWS2S3Configuration configuration, int maxConnections) {
+    public AWS2S3ClientStandardImpl(AWS2S3Configuration configuration) {
         LOG.trace("Creating an AWS S3 manager using static credentials.");
         this.configuration = configuration;
-        this.maxConnections = maxConnections;
     }
 
     /**
@@ -57,8 +54,8 @@ public class AWS2S3ClientStandardImpl implements AWS2CamelS3InternalClient {
      */
     @Override
     public S3Client getS3Client() {
-    	S3Client client = null;
-    	S3ClientBuilder clientBuilder = S3Client.builder();
+        S3Client client = null;
+        S3ClientBuilder clientBuilder = S3Client.builder();
         ProxyConfiguration.Builder proxyConfig = null;
         ApacheHttpClient.Builder httpClientBuilder = null;
         boolean isClientConfigFound = false;
diff --git a/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWSS3ClientFactoryTest.java b/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWSS3ClientFactoryTest.java
index 5b0d7b1..e4484f2 100644
--- a/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWSS3ClientFactoryTest.java
+++ b/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWSS3ClientFactoryTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.aws2.s3;
 
-import org.apache.camel.component.aws2.s3.AWS2S3Configuration;
 import org.apache.camel.component.aws2.s3.client.AWS2CamelS3InternalClient;
 import org.apache.camel.component.aws2.s3.client.AWS2S3ClientFactory;
 import org.apache.camel.component.aws2.s3.client.impl.AWS2S3ClientIAMOptimizedImpl;
@@ -25,12 +24,11 @@ import org.junit.Assert;
 import org.junit.Test;
 
 public class AWSS3ClientFactoryTest {
-    private static final int MAX_CONNECTIONS = 1;
 
     @Test
     public void getStandardS3ClientDefault() {
         AWS2S3Configuration s3Configuration = new AWS2S3Configuration();
-        AWS2CamelS3InternalClient awss3Client = AWS2S3ClientFactory.getAWSS3Client(s3Configuration, MAX_CONNECTIONS);
+        AWS2CamelS3InternalClient awss3Client = AWS2S3ClientFactory.getAWSS3Client(s3Configuration);
         Assert.assertTrue(awss3Client instanceof AWS2S3ClientStandardImpl);
     }
 
@@ -38,7 +36,7 @@ public class AWSS3ClientFactoryTest {
     public void getStandardS3Client() {
         AWS2S3Configuration s3Configuration = new AWS2S3Configuration();
         s3Configuration.setUseIAMCredentials(false);
-        AWS2CamelS3InternalClient awss3Client = AWS2S3ClientFactory.getAWSS3Client(s3Configuration, MAX_CONNECTIONS);
+        AWS2CamelS3InternalClient awss3Client = AWS2S3ClientFactory.getAWSS3Client(s3Configuration);
         Assert.assertTrue(awss3Client instanceof AWS2S3ClientStandardImpl);
     }
 
@@ -46,7 +44,7 @@ public class AWSS3ClientFactoryTest {
     public void getIAMOptimizedS3Client() {
         AWS2S3Configuration s3Configuration = new AWS2S3Configuration();
         s3Configuration.setUseIAMCredentials(true);
-        AWS2CamelS3InternalClient awss3Client = AWS2S3ClientFactory.getAWSS3Client(s3Configuration, MAX_CONNECTIONS);
+        AWS2CamelS3InternalClient awss3Client = AWS2S3ClientFactory.getAWSS3Client(s3Configuration);
         Assert.assertTrue(awss3Client instanceof AWS2S3ClientIAMOptimizedImpl);
     }
 }
diff --git a/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ComponentIntegrationTest.java b/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ComponentIntegrationTest.java
index 951f7b3..c45f67c 100644
--- a/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ComponentIntegrationTest.java
+++ b/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ComponentIntegrationTest.java
@@ -89,10 +89,10 @@ public class S3ComponentIntegrationTest extends CamelTestSupport {
         assertEquals("mycamelbucket", resultExchange.getIn().getHeader(AWS2S3Constants.BUCKET_NAME));
         assertTrue(resultExchange.getIn().getHeader(AWS2S3Constants.KEY, String.class).startsWith("CamelUnitTest"));
         assertNull(resultExchange.getIn().getHeader(AWS2S3Constants.VERSION_ID)); // not
-                                                                              // enabled
-                                                                              // on
-                                                                              // this
-                                                                              // bucket
+        // enabled
+        // on
+        // this
+        // bucket
         assertNotNull(resultExchange.getIn().getHeader(AWS2S3Constants.LAST_MODIFIED));
         assertEquals("application/octet-stream", resultExchange.getIn().getHeader(AWS2S3Constants.CONTENT_TYPE));
         assertNull(resultExchange.getIn().getHeader(AWS2S3Constants.CONTENT_ENCODING));
diff --git a/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ObjectRangeOperationIntegrationTest.java b/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ObjectRangeOperationIntegrationTest.java
index fed3648..19e9a8e 100644
--- a/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ObjectRangeOperationIntegrationTest.java
+++ b/components/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3ObjectRangeOperationIntegrationTest.java
@@ -23,13 +23,6 @@ import java.io.Reader;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
-import software.amazon.awssdk.core.ResponseInputStream;
-import software.amazon.awssdk.regions.Region;
-import software.amazon.awssdk.services.s3.S3Client;
-import software.amazon.awssdk.services.s3.model.GetObjectResponse;
-
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Exchange;
@@ -43,10 +36,16 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.core.ResponseInputStream;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.model.GetObjectResponse;
 
 @Ignore("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")
@@ -86,8 +85,8 @@ public class S3ObjectRangeOperationIntegrationTest extends CamelTestSupport {
 
                     @Override
                     public void process(Exchange exchange) throws Exception {
-                    	ResponseInputStream<GetObjectResponse> s3 = exchange.getIn().getBody(ResponseInputStream.class);
-                    	LOG.info(readInputStream(s3));
+                        ResponseInputStream<GetObjectResponse> s3 = exchange.getIn().getBody(ResponseInputStream.class);
+                        LOG.info(readInputStream(s3));
 
                     }
                 }).to("mock:result");
@@ -98,11 +97,10 @@ public class S3ObjectRangeOperationIntegrationTest extends CamelTestSupport {
 
     private String readInputStream(ResponseInputStream<GetObjectResponse> s3Object) throws IOException {
         StringBuilder textBuilder = new StringBuilder();
-        try (Reader reader = new BufferedReader(new InputStreamReader
-          (s3Object, Charset.forName(StandardCharsets.UTF_8.name())))) {
+        try (Reader reader = new BufferedReader(new InputStreamReader(s3Object, Charset.forName(StandardCharsets.UTF_8.name())))) {
             int c = 0;
             while ((c = reader.read()) != -1) {
-                textBuilder.append((char) c);
+                textBuilder.append((char)c);
             }
         }
         return textBuilder.toString();