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 2015/11/20 02:41:58 UTC
jclouds git commit: Tolerate missing or extra quotes in ETags
Repository: jclouds
Updated Branches:
refs/heads/master 8d87bfc61 -> 25f4807df
Tolerate missing or extra quotes in ETags
References andrewgaul/s3proxy#77.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/25f4807d
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/25f4807d
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/25f4807d
Branch: refs/heads/master
Commit: 25f4807df868cff9a9da599009adc0091f7bb52b
Parents: 8d87bfc
Author: Andrew Gaul <ga...@apache.org>
Authored: Thu Nov 19 17:40:48 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Thu Nov 19 17:40:48 2015 -0800
----------------------------------------------------------------------
.../org/jclouds/blobstore/config/LocalBlobStore.java | 11 +++++++++--
.../main/java/org/jclouds/http/options/GetOptions.java | 10 ++++++++--
2 files changed, 17 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/25f4807d/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 8d799c6..96edd2e 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
@@ -630,11 +630,11 @@ public final class LocalBlobStore implements BlobStore {
if (options != null) {
if (options.getIfMatch() != null) {
- if (!blob.getMetadata().getETag().equals(options.getIfMatch()))
+ if (!maybeQuoteETag(blob.getMetadata().getETag()).equals(options.getIfMatch()))
throw returnResponseException(412);
}
if (options.getIfNoneMatch() != null) {
- if (blob.getMetadata().getETag().equals(options.getIfNoneMatch()))
+ if (maybeQuoteETag(blob.getMetadata().getETag()).equals(options.getIfNoneMatch()))
throw returnResponseException(304);
}
if (options.getIfModifiedSince() != null) {
@@ -857,4 +857,11 @@ public final class LocalBlobStore implements BlobStore {
public int getMaximumNumberOfParts() {
return Integer.MAX_VALUE;
}
+
+ private static String maybeQuoteETag(String eTag) {
+ if (!eTag.startsWith("\"") && !eTag.endsWith("\"")) {
+ eTag = "\"" + eTag + "\"";
+ }
+ return eTag;
+ }
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/25f4807d/core/src/main/java/org/jclouds/http/options/GetOptions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/http/options/GetOptions.java b/core/src/main/java/org/jclouds/http/options/GetOptions.java
index 278a40a..9844aed 100644
--- a/core/src/main/java/org/jclouds/http/options/GetOptions.java
+++ b/core/src/main/java/org/jclouds/http/options/GetOptions.java
@@ -161,7 +161,7 @@ public class GetOptions extends BaseHttpRequestOptions {
public GetOptions ifETagMatches(String eTag) {
checkArgument(getIfNoneMatch() == null, "ifETagDoesntMatch() is not compatible with ifETagMatches()");
checkArgument(getIfModifiedSince() == null, "ifModifiedSince() is not compatible with ifETagMatches()");
- this.headers.put(IF_MATCH, String.format("\"%1$s\"", checkNotNull(eTag, "eTag")));
+ this.headers.put(IF_MATCH, maybeQuoteETag(checkNotNull(eTag, "eTag")));
return this;
}
@@ -188,7 +188,7 @@ public class GetOptions extends BaseHttpRequestOptions {
public GetOptions ifETagDoesntMatch(String eTag) {
checkArgument(getIfMatch() == null, "ifETagMatches() is not compatible with ifETagDoesntMatch()");
checkArgument(getIfUnmodifiedSince() == null, "ifUnmodifiedSince() is not compatible with ifETagDoesntMatch()");
- this.headers.put(IF_NONE_MATCH, String.format("\"%1$s\"", checkNotNull(eTag, "ifETagDoesntMatch")));
+ this.headers.put(IF_NONE_MATCH, maybeQuoteETag(checkNotNull(eTag, "ifETagDoesntMatch")));
return this;
}
@@ -299,4 +299,10 @@ public class GetOptions extends BaseHttpRequestOptions {
+ ", payload=" + payload + ", pathSuffix=" + pathSuffix + ", ranges=" + ranges + "]";
}
+ private static String maybeQuoteETag(String eTag) {
+ if (!eTag.startsWith("\"") && !eTag.endsWith("\"")) {
+ eTag = "\"" + eTag + "\"";
+ }
+ return eTag;
+ }
}