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;
    }