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

Reply via email to