You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2016/06/28 16:57:48 UTC

jclouds git commit: Handle null ETag in copyBlob and conditional get

Repository: jclouds
Updated Branches:
  refs/heads/master fff12293f -> 984b6ae8f


Handle null ETag in copyBlob and conditional get

Mac OS X and Docker aufs do not support xattr and thus have null
ETags.  Fixes andrewgaul/s3proxy#143.


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

Branch: refs/heads/master
Commit: 984b6ae8fbb875c2fe1dc6f382ff80d8c2d98180
Parents: fff1229
Author: Andrew Gaul <ga...@apache.org>
Authored: Tue Jun 28 09:54:30 2016 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Tue Jun 28 09:55:53 2016 -0700

----------------------------------------------------------------------
 .../blobstore/config/LocalBlobStore.java        | 21 ++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/984b6ae8/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
index 1b46b34..65d39ba 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
@@ -537,8 +537,9 @@ public final class LocalBlobStore implements BlobStore {
          throw new KeyNotFoundException(fromContainer, fromName, "while copying");
       }
 
-      String eTag = maybeQuoteETag(blob.getMetadata().getETag());
+      String eTag = blob.getMetadata().getETag();
       if (eTag != null) {
+         eTag = maybeQuoteETag(eTag);
          if (options.ifMatch() != null && !maybeQuoteETag(options.ifMatch()).equals(eTag)) {
             throw returnResponseException(412);
          }
@@ -640,13 +641,17 @@ public final class LocalBlobStore implements BlobStore {
       Blob blob = loadBlob(containerName, key);
 
       if (options != null) {
-         if (options.getIfMatch() != null) {
-            if (!maybeQuoteETag(blob.getMetadata().getETag()).equals(maybeQuoteETag(options.getIfMatch())))
-               throw returnResponseException(412);
-         }
-         if (options.getIfNoneMatch() != null) {
-            if (maybeQuoteETag(blob.getMetadata().getETag()).equals(maybeQuoteETag(options.getIfNoneMatch())))
-               throw returnResponseException(304);
+         String eTag = blob.getMetadata().getETag();
+         if (eTag != null) {
+            eTag = maybeQuoteETag(eTag);
+            if (options.getIfMatch() != null) {
+               if (!eTag.equals(maybeQuoteETag(options.getIfMatch())))
+                  throw returnResponseException(412);
+            }
+            if (options.getIfNoneMatch() != null) {
+               if (eTag.equals(maybeQuoteETag(options.getIfNoneMatch())))
+                  throw returnResponseException(304);
+            }
          }
          if (options.getIfModifiedSince() != null) {
             Date modifiedSince = options.getIfModifiedSince();