You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/10/01 08:44:26 UTC
[camel] branch main updated: CAMEL-17029: camel-aws-s3 - File
message body optimize in putObject
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 46045f0 CAMEL-17029: camel-aws-s3 - File message body optimize in putObject
46045f0 is described below
commit 46045f002d017073edfbc608125f01fe5afef67e
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Oct 1 10:28:51 2021 +0200
CAMEL-17029: camel-aws-s3 - File message body optimize in putObject
---
.../camel/component/aws2/s3/AWS2S3Producer.java | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
index 6044db9..19aa092 100644
--- a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
+++ b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
@@ -264,10 +264,11 @@ public class AWS2S3Producer extends DefaultProducer {
obj = ((WrappedFile<?>) obj).getFile();
}
if (obj instanceof File) {
+ // optimize for file payload
filePayload = (File) obj;
- inputStream = new FileInputStream(filePayload);
contentLength = filePayload.length();
} else {
+ // okay we use input stream
inputStream = exchange.getIn().getMandatoryBody(InputStream.class);
if (contentLength <= 0) {
contentLength = AWS2S3Utils.determineLengthInputStream(inputStream);
@@ -282,12 +283,11 @@ public class AWS2S3Producer extends DefaultProducer {
inputStream = new ByteArrayInputStream(arr);
}
}
- if (contentLength > 0) {
- objectMetadata.put(Exchange.CONTENT_LENGTH, String.valueOf(contentLength));
- }
}
-
- doPutObject(exchange, putObjectRequest, objectMetadata, inputStream, contentLength);
+ if (contentLength > 0) {
+ objectMetadata.put(Exchange.CONTENT_LENGTH, String.valueOf(contentLength));
+ }
+ doPutObject(exchange, putObjectRequest, objectMetadata, filePayload, inputStream, contentLength);
} finally {
IOHelper.close(inputStream);
}
@@ -299,7 +299,7 @@ public class AWS2S3Producer extends DefaultProducer {
private void doPutObject(
Exchange exchange, PutObjectRequest.Builder putObjectRequest, Map<String, String> objectMetadata,
- InputStream inputStream, long contentLength) {
+ File file, InputStream inputStream, long contentLength) {
final String bucketName = AWS2S3Utils.determineBucketName(exchange, getConfiguration());
final String key = AWS2S3Utils.determineKey(exchange, getConfiguration());
putObjectRequest.bucket(bucketName).key(key).metadata(objectMetadata);
@@ -349,7 +349,12 @@ public class AWS2S3Producer extends DefaultProducer {
LOG.trace("Put object [{}] from exchange [{}]...", putObjectRequest, exchange);
- RequestBody rb = RequestBody.fromInputStream(inputStream, contentLength);
+ RequestBody rb;
+ if (file != null) {
+ rb = RequestBody.fromFile(file);
+ } else {
+ rb = RequestBody.fromInputStream(inputStream, contentLength);
+ }
PutObjectResponse putObjectResult = getEndpoint().getS3Client().putObject(putObjectRequest.build(), rb);