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/10 06:27:38 UTC
jclouds-labs-google git commit: JCLOUDS-651: GCS copy object content
metadata
Repository: jclouds-labs-google
Updated Branches:
refs/heads/master 8d867feba -> 60e26da23
JCLOUDS-651: GCS copy object content metadata
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/commit/60e26da2
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/60e26da2
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/60e26da2
Branch: refs/heads/master
Commit: 60e26da23c2772e0e905a61f65621db9e5d17f41
Parents: 8d867fe
Author: Andrew Gaul <ga...@apache.org>
Authored: Thu Apr 9 21:25:21 2015 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Thu Apr 9 21:27:05 2015 -0700
----------------------------------------------------------------------
.../blobstore/GoogleCloudStorageBlobStore.java | 57 +++++++++++++++-----
1 file changed, 44 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/60e26da2/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
index 7ef2daf..dcc1d5a 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
@@ -23,7 +23,6 @@ import static org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Obj
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Set;
-import java.util.Map;
import javax.inject.Inject;
@@ -66,6 +65,7 @@ import org.jclouds.googlecloudstorage.domain.templates.ObjectAccessControlsTempl
import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate;
import org.jclouds.googlecloudstorage.options.ListObjectOptions;
import org.jclouds.http.HttpResponseException;
+import org.jclouds.io.ContentMetadata;
import org.jclouds.io.Payload;
import com.google.common.base.Charsets;
@@ -305,16 +305,47 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore {
return false;
}
- @Override
- public String copyBlob(String fromContainer, String fromName, String toContainer, String toName, CopyOptions options) {
-
- if (options == CopyOptions.NONE) {
- return api.getObjectApi().copyObject(toContainer, toName, fromContainer, fromName).etag();
- } else {
- Map<String, String> map = options.getUserMetadata().get();
- String contentType = api.getObjectApi().getObject(fromContainer, fromName).contentType();
- ObjectTemplate template = new ObjectTemplate().customMetadata(map).contentType(contentType);
- return api.getObjectApi().copyObject(toContainer, toName, fromContainer, fromName, template).etag();
- }
- }
+ @Override
+ public String copyBlob(String fromContainer, String fromName, String toContainer, String toName,
+ CopyOptions options) {
+ if (!options.getContentMetadata().isPresent() && !options.getUserMetadata().isPresent()) {
+ return api.getObjectApi().copyObject(toContainer, toName, fromContainer, fromName).etag();
+ }
+
+ ObjectTemplate template = new ObjectTemplate();
+
+ if (options.getContentMetadata().isPresent()) {
+ ContentMetadata contentMetadata = options.getContentMetadata().get();
+
+ String contentDisposition = contentMetadata.getContentDisposition();
+ if (contentDisposition != null) {
+ template.contentDisposition(contentDisposition);
+ }
+
+ // TODO: causes failures with subsequent GET operations:
+ // HTTP/1.1 failed with response: HTTP/1.1 503 Service Unavailable; content: [Service Unavailable]
+/*
+ String contentEncoding = contentMetadata.getContentEncoding();
+ if (contentEncoding != null) {
+ template.contentEncoding(contentEncoding);
+ }
+*/
+
+ String contentLanguage = contentMetadata.getContentLanguage();
+ if (contentLanguage != null) {
+ template.contentLanguage(contentLanguage);
+ }
+
+ String contentType = contentMetadata.getContentType();
+ if (contentType != null) {
+ template.contentType(contentType);
+ }
+ }
+
+ if (options.getUserMetadata().isPresent()) {
+ template.customMetadata(options.getUserMetadata().get());
+ }
+
+ return api.getObjectApi().copyObject(toContainer, toName, fromContainer, fromName, template).etag();
+ }
}