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/04/03 00:40:49 UTC
[3/4] jclouds git commit: JCLOUDS-651: Add S3 server-side copyBlob
JCLOUDS-651: Add S3 server-side copyBlob
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/b85068ca
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/b85068ca
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/b85068ca
Branch: refs/heads/master
Commit: b85068ca7fa608ffd785cbc6ef3c003ef85deb4d
Parents: 31369ae
Author: Andrew Gaul <ga...@apache.org>
Authored: Fri Sep 5 19:06:16 2014 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Thu Apr 2 15:36:53 2015 -0700
----------------------------------------------------------------------
.../org/jclouds/s3/blobstore/S3BlobStore.java | 22 ++++++++++++++++++++
1 file changed, 22 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/b85068ca/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java b/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
index 2d6b84a..cd38e52 100644
--- a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
+++ b/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
@@ -21,6 +21,7 @@ import static com.google.common.base.Preconditions.checkState;
import static org.jclouds.util.Predicates2.retry;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import javax.inject.Inject;
@@ -37,6 +38,7 @@ import org.jclouds.blobstore.domain.PageSet;
import org.jclouds.blobstore.domain.StorageMetadata;
import org.jclouds.blobstore.functions.BlobToHttpGetOptions;
import org.jclouds.blobstore.internal.BaseBlobStore;
+import org.jclouds.blobstore.options.CopyOptions;
import org.jclouds.blobstore.options.CreateContainerOptions;
import org.jclouds.blobstore.options.ListContainerOptions;
import org.jclouds.blobstore.options.PutOptions;
@@ -57,12 +59,14 @@ import org.jclouds.s3.domain.AccessControlList.GroupGranteeURI;
import org.jclouds.s3.domain.AccessControlList.Permission;
import org.jclouds.s3.domain.BucketMetadata;
import org.jclouds.s3.domain.CannedAccessPolicy;
+import org.jclouds.s3.options.CopyObjectOptions;
import org.jclouds.s3.options.ListBucketOptions;
import org.jclouds.s3.options.PutBucketOptions;
import org.jclouds.s3.options.PutObjectOptions;
import org.jclouds.s3.util.S3Utils;
import com.google.common.base.Function;
+import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.base.Supplier;
import com.google.common.cache.CacheLoader;
@@ -273,6 +277,24 @@ public class S3BlobStore extends BaseBlobStore {
return sync.putObject(container, blob2Object.apply(blob), options);
}
+ @Override
+ public String copyBlob(String fromContainer, String fromName, String toContainer, String toName,
+ CopyOptions options) {
+ CopyObjectOptions s3Options = new CopyObjectOptions();
+
+ // TODO: content disposition
+ // TODO: content encoding
+ // TODO: content language
+ // TODO: content type
+
+ Optional<Map<String, String>> userMetadata = options.getUserMetadata();
+ if (userMetadata.isPresent()) {
+ s3Options.overrideMetadataWith(userMetadata.get());
+ }
+
+ return sync.copyObject(fromContainer, fromName, toContainer, toName, s3Options).getETag();
+ }
+
/**
* This implementation invokes {@link S3Client#deleteObject}
*