This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch camel-3.14.x in repository https://gitbox.apache.org/repos/asf/camel.git
commit 4eb87887596930b46d5a7c9f56b245184bbf41b1 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Thu Jan 13 11:36:07 2022 +0100 CAMEL-17358 - AWS SDK2 Producer does not set the Content Type at all - Fix multipart upload too --- .../camel/component/aws2/s3/AWS2S3Producer.java | 5 ++++ .../integration/S3MultipartUploadOperationIT.java | 27 ++++++++++++++++++++++ .../s3/integration/S3SimpleUploadOperationIT.java | 3 ++- 3 files changed, 34 insertions(+), 1 deletion(-) 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 f5baf2b..658398d 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 @@ -171,6 +171,11 @@ public class AWS2S3Producer extends DefaultProducer { createMultipartUploadRequest.acl(acl.toString()); } + String contentType = exchange.getIn().getHeader(AWS2S3Constants.CONTENT_TYPE, String.class); + if (contentType != null) { + createMultipartUploadRequest.contentType(contentType); + } + if (getConfiguration().isUseAwsKMS()) { createMultipartUploadRequest.ssekmsKeyId(getConfiguration().getAwsKMSKeyId()); createMultipartUploadRequest.serverSideEncryption(ServerSideEncryption.AWS_KMS); diff --git a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3MultipartUploadOperationIT.java b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3MultipartUploadOperationIT.java index 4d3f6d8..e50d16d 100644 --- a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3MultipartUploadOperationIT.java +++ b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3MultipartUploadOperationIT.java @@ -25,7 +25,14 @@ import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.aws2.s3.AWS2S3Constants; import org.apache.camel.component.mock.MockEndpoint; +import org.apache.camel.test.infra.aws2.clients.AWSSDKClientUtils; import org.junit.jupiter.api.Test; +import software.amazon.awssdk.core.ResponseInputStream; +import software.amazon.awssdk.services.s3.S3Client; +import software.amazon.awssdk.services.s3.model.GetObjectRequest; +import software.amazon.awssdk.services.s3.model.GetObjectResponse; + +import static org.junit.jupiter.api.Assertions.assertEquals; public class S3MultipartUploadOperationIT extends Aws2S3Base { @@ -51,6 +58,26 @@ public class S3MultipartUploadOperationIT extends Aws2S3Base { assertMockEndpointsSatisfied(); } + @Test + public void sendInWithContentType() throws Exception { + result.expectedMessageCount(1); + + template.send("direct:putObject", new Processor() { + + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(AWS2S3Constants.KEY, "camel-content-type.txt"); + exchange.getIn().setBody(new File("src/test/resources/empty.txt")); + exchange.getIn().setHeader(AWS2S3Constants.CONTENT_TYPE, "application/text"); + } + }); + + S3Client s = AWSSDKClientUtils.newS3Client(); + ResponseInputStream<GetObjectResponse> response + = s.getObject(GetObjectRequest.builder().bucket("mycamel").key("camel-content-type.txt").build()); + assertEquals("application/text", response.response().contentType()); + } + @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { diff --git a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleUploadOperationIT.java b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleUploadOperationIT.java index 536de40..b2e03db 100644 --- a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleUploadOperationIT.java +++ b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/integration/S3SimpleUploadOperationIT.java @@ -88,7 +88,8 @@ public class S3SimpleUploadOperationIT extends Aws2S3Base { }); S3Client s = AWSSDKClientUtils.newS3Client(); - ResponseInputStream<GetObjectResponse> response = s.getObject(GetObjectRequest.builder().bucket("mycamel").key("camel-content-type.txt").build()); + ResponseInputStream<GetObjectResponse> response + = s.getObject(GetObjectRequest.builder().bucket("mycamel").key("camel-content-type.txt").build()); assertEquals("application/text", response.response().contentType()); }