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();