From 9af1d14dcc0dd65ac1ec74d48e8fa92f11f8d4c0 Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Mon, 14 Dec 2015 00:31:19 -0800 Subject: [PATCH] Provide content length to AmazonS3.putObject Prevents warnings of the form: WARNING: No content length specified for stream data. Stream contents will be buffered in memory and could result in out of memory errors. --- .../java/org/gaul/s3proxy/S3AwsSdkTest.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java b/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java index 43c80d9..5417f29 100644 --- a/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java +++ b/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java @@ -131,18 +131,22 @@ public final class S3AwsSdkTest { AmazonS3 client = new AmazonS3Client(awsCreds, new ClientConfiguration().withSignerOverride("S3SignerType")); client.setEndpoint(s3Endpoint.toString()); + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentLength(BYTE_SOURCE.size()); client.putObject(containerName, "foo", BYTE_SOURCE.openStream(), - new ObjectMetadata()); + metadata); } @Test public void testAwsV4Signature() throws Exception { - final AmazonS3 client = new AmazonS3Client(awsCreds); + AmazonS3 client = new AmazonS3Client(awsCreds); client.setEndpoint(s3Endpoint.toString()); + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentLength(BYTE_SOURCE.size()); try { client.putObject(containerName, "foo", - BYTE_SOURCE.openStream(), new ObjectMetadata()); + BYTE_SOURCE.openStream(), metadata); Fail.failBecauseExceptionWasNotThrown(AmazonS3Exception.class); } catch (AmazonS3Exception e) { assertThat(e.getErrorCode()).isEqualTo("InvalidArgument"); @@ -159,8 +163,10 @@ public final class S3AwsSdkTest { client.setEndpoint(s3Endpoint.toString()); String blobName = "foo"; + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentLength(BYTE_SOURCE.size()); client.putObject(containerName, blobName, BYTE_SOURCE.openStream(), - new ObjectMetadata()); + metadata); Date expiration = new Date(System.currentTimeMillis() + TimeUnit.HOURS.toMillis(1)); @@ -186,8 +192,10 @@ public final class S3AwsSdkTest { String sourceBlobName = "testMultipartCopy-source"; String targetBlobName = "testMultipartCopy-target"; + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentLength(BYTE_SOURCE.size()); client.putObject(containerName, sourceBlobName, - BYTE_SOURCE.openStream(), new ObjectMetadata()); + BYTE_SOURCE.openStream(), metadata); InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest(containerName,