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/02/17 01:30:28 UTC
[7/8] jclouds git commit: JCLOUDS-651: Swift support for conditional
copies
JCLOUDS-651: Swift support for conditional copies
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/7eb46cce
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/7eb46cce
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/7eb46cce
Branch: refs/heads/master
Commit: 7eb46cce366e5bfb6021b03104e9cf64f764c42d
Parents: 6cdb121
Author: Andrew Gaul <ga...@apache.org>
Authored: Fri Feb 12 03:07:51 2016 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Tue Feb 16 16:29:54 2016 -0800
----------------------------------------------------------------------
.../v1/blobstore/RegionScopedSwiftBlobStore.java | 17 ++++++++++++++++-
.../integration/SwiftBlobIntegrationLiveTest.java | 14 ++++++++++++++
2 files changed, 30 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7eb46cce/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
----------------------------------------------------------------------
diff --git a/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java b/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
index 5b331ed..8c4745a 100644
--- a/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
+++ b/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
@@ -253,6 +253,21 @@ public class RegionScopedSwiftBlobStore implements BlobStore {
CopyOptions options) {
ObjectApi objectApi = api.getObjectApi(regionId, toContainer);
+ org.jclouds.openstack.swift.v1.options.CopyOptions swiftOptions = new org.jclouds.openstack.swift.v1.options.CopyOptions();
+
+ if (options.ifMatch() != null) {
+ swiftOptions.ifMatch(options.ifMatch());
+ }
+ if (options.ifNoneMatch() != null) {
+ throw new UnsupportedOperationException("Swift does not support ifNoneMatch");
+ }
+ if (options.ifModifiedSince() != null) {
+ swiftOptions.ifModifiedSince(options.ifModifiedSince());
+ }
+ if (options.ifUnmodifiedSince() != null) {
+ swiftOptions.ifUnmodifiedSince(options.ifUnmodifiedSince());
+ }
+
Map<String, String> systemMetadata = Maps.newHashMap();
ContentMetadata contentMetadata = options.contentMetadata();
Map<String, String> userMetadata = options.userMetadata();
@@ -307,7 +322,7 @@ public class RegionScopedSwiftBlobStore implements BlobStore {
userMetadata = metadata.getMetadata();
}
- objectApi.copy(toName, fromContainer, fromName, userMetadata, systemMetadata);
+ objectApi.copy(toName, fromContainer, fromName, userMetadata, systemMetadata, swiftOptions);
// TODO: Swift copy object *appends* user metadata, does not overwrite
return objectApi.getWithoutBody(toName).getETag();
http://git-wip-us.apache.org/repos/asf/jclouds/blob/7eb46cce/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/blobstore/integration/SwiftBlobIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/blobstore/integration/SwiftBlobIntegrationLiveTest.java b/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/blobstore/integration/SwiftBlobIntegrationLiveTest.java
index 6440788..441b6a2 100644
--- a/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/blobstore/integration/SwiftBlobIntegrationLiveTest.java
+++ b/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/blobstore/integration/SwiftBlobIntegrationLiveTest.java
@@ -101,6 +101,20 @@ public class SwiftBlobIntegrationLiveTest extends BaseBlobIntegrationTest {
}
@Override
+ @Test(expectedExceptions = UnsupportedOperationException.class)
+ public void testCopyIfNoneMatch() throws Exception {
+ super.testCopyIfNoneMatch();
+ }
+
+ @Override
+ @Test(expectedExceptions = UnsupportedOperationException.class)
+ public void testCopyIfNoneMatchNegative() throws Exception {
+ super.testCopyIfNoneMatchNegative();
+ }
+
+ // TODO: testCopyIfModifiedSinceNegative throws HTTP 304 not 412 error
+
+ @Override
protected long getMinimumMultipartBlobSize() {
return 1;
}