Repository: jclouds Updated Branches: refs/heads/master 8053abb53 -> 6e7801ad5
JCLOUDS-766: Fix issues with chunked upload signer Previously we created a new builder instead of using the one the method modified and did not preserve content encoding. Addresses AWSS3BlobIntegrationLiveTest.testPutInputStream test failures. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/6e7801ad Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/6e7801ad Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/6e7801ad Branch: refs/heads/master Commit: 6e7801ad58450a44719a241dfde8124363cf78cc Parents: 8053abb Author: Andrew Gaul <[email protected]> Authored: Sun Mar 20 13:55:17 2016 -0700 Committer: Andrew Gaul <[email protected]> Committed: Sun Mar 20 16:06:51 2016 -0700 ---------------------------------------------------------------------- .../jclouds/s3/filters/Aws4SignerForChunkedUpload.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/6e7801ad/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java index 97370e6..bd455e9 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java +++ b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java @@ -112,8 +112,13 @@ public class Aws4SignerForChunkedUpload extends Aws4SignerBase { ImmutableMap.Builder<String, String> signedHeadersBuilder = ImmutableSortedMap.<String, String>naturalOrder(); // content-encoding - requestBuilder.replaceHeader(HttpHeaders.CONTENT_ENCODING, CONTENT_ENCODING_HEADER_AWS_CHUNKED); - signedHeadersBuilder.put(HttpHeaders.CONTENT_ENCODING.toLowerCase(), CONTENT_ENCODING_HEADER_AWS_CHUNKED); + String contentEncoding = CONTENT_ENCODING_HEADER_AWS_CHUNKED; + String originalContentEncoding = payload.getContentMetadata().getContentEncoding(); + if (originalContentEncoding != null) { + contentEncoding += "," + originalContentEncoding; + } + requestBuilder.replaceHeader(HttpHeaders.CONTENT_ENCODING, contentEncoding); + signedHeadersBuilder.put(HttpHeaders.CONTENT_ENCODING.toLowerCase(), contentEncoding); // x-amz-decoded-content-length @@ -213,8 +218,9 @@ public class Aws4SignerForChunkedUpload extends Aws4SignerBase { // replace request payload with chunked upload payload ChunkedUploadPayload chunkedPayload = new ChunkedUploadPayload(payload, userDataBlockSize, timestamp, credentialScope, hmacSHA256, signature); + chunkedPayload.getContentMetadata().setContentEncoding(null); - return request.toBuilder() + return requestBuilder .replaceHeader(HttpHeaders.AUTHORIZATION, authorization.toString()) .payload(chunkedPayload) .build();
