Repository: jclouds
Updated Branches:
  refs/heads/master 35c5d7ffc -> 8053abb53


JCLOUDS-766: Check metadata and headers for MD5

Addresses AWSS3ClientLiveTest.testMultipartSynchronously test
failures.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/8053abb5
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/8053abb5
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/8053abb5

Branch: refs/heads/master
Commit: 8053abb5302641a6500cb3f46e7c9e58de3b0ebe
Parents: 35c5d7f
Author: Andrew Gaul <[email protected]>
Authored: Fri Mar 18 22:55:34 2016 -0700
Committer: Andrew Gaul <[email protected]>
Committed: Fri Mar 18 22:56:54 2016 -0700

----------------------------------------------------------------------
 .../s3/filters/Aws4SignerForAuthorizationHeader.java        | 9 ++++++---
 .../org/jclouds/s3/filters/Aws4SignerForChunkedUpload.java  | 9 ++++++---
 2 files changed, 12 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/8053abb5/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java
----------------------------------------------------------------------
diff --git 
a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java
 
b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java
index 96526b9..e7ef172 100644
--- 
a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java
+++ 
b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerForAuthorizationHeader.java
@@ -106,14 +106,17 @@ public class Aws4SignerForAuthorizationHeader extends 
Aws4SignerBase {
       }
 
       // Content MD5
+      String contentMD5 = request.getFirstHeaderOrNull(CONTENT_MD5);
       if (payload != null) {
          HashCode md5 = payload.getContentMetadata().getContentMD5AsHashCode();
          if (md5 != null) {
-            String contentMD5 = BaseEncoding.base64().encode(md5.asBytes());
-            requestBuilder.replaceHeader(CONTENT_MD5, contentMD5);
-            signedHeadersBuilder.put(CONTENT_MD5.toLowerCase(), contentMD5);
+            contentMD5 = BaseEncoding.base64().encode(md5.asBytes());
          }
       }
+      if (contentMD5 != null) {
+         requestBuilder.replaceHeader(CONTENT_MD5, contentMD5);
+         signedHeadersBuilder.put(CONTENT_MD5.toLowerCase(), contentMD5);
+      }
 
       // host
       requestBuilder.replaceHeader(HttpHeaders.HOST, host);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/8053abb5/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 4b6798d..97370e6 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
@@ -127,14 +127,17 @@ public class Aws4SignerForChunkedUpload extends 
Aws4SignerBase {
       signedHeadersBuilder.put(CONTENT_LENGTH.toLowerCase(), 
Long.toString(totalLength));
 
       // Content MD5
+      String contentMD5 = request.getFirstHeaderOrNull(CONTENT_MD5);
       if (payload != null) {
          HashCode md5 = payload.getContentMetadata().getContentMD5AsHashCode();
          if (md5 != null) {
-            String contentMD5 = BaseEncoding.base64().encode(md5.asBytes());
-            requestBuilder.replaceHeader(CONTENT_MD5, contentMD5);
-            signedHeadersBuilder.put(CONTENT_MD5.toLowerCase(), contentMD5);
+            contentMD5 = BaseEncoding.base64().encode(md5.asBytes());
          }
       }
+      if (contentMD5 != null) {
+         requestBuilder.replaceHeader(CONTENT_MD5, contentMD5);
+         signedHeadersBuilder.put(CONTENT_MD5.toLowerCase(), contentMD5);
+      }
 
       // Content Type
       // content-type is not a required signing param. However, examples use 
this, so we include it to ease testing.

Reply via email to