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