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 2013/07/25 19:30:16 UTC
git commit: Preserve blob metadata for AWS-S3 MPU
Updated Branches:
refs/heads/1.6.x b7d75f794 -> 4b5b89ae7
Preserve blob metadata for AWS-S3 MPU
Specifically preserve content-type and content-disposition for
multi-part uploads.
Fixes JCLOUDS-204
Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/commit/4b5b89ae
Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/tree/4b5b89ae
Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/diff/4b5b89ae
Branch: refs/heads/1.6.x
Commit: 4b5b89ae757ce3e7466666d2ce05694a742b1b42
Parents: b7d75f7
Author: Diwaker Gupta <di...@maginatics.com>
Authored: Wed Jul 24 11:50:39 2013 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Thu Jul 25 09:50:55 2013 -0700
----------------------------------------------------------------------
.../internal/SequentialMultipartUploadStrategy.java | 7 ++++++-
.../internal/SequentialMultipartUploadStrategyMockTest.java | 9 ++++++++-
2 files changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/4b5b89ae/providers/aws-s3/src/main/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategy.java
----------------------------------------------------------------------
diff --git a/providers/aws-s3/src/main/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategy.java b/providers/aws-s3/src/main/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategy.java
index 7696f07..4d5eea9 100644
--- a/providers/aws-s3/src/main/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategy.java
+++ b/providers/aws-s3/src/main/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategy.java
@@ -28,6 +28,7 @@ import org.jclouds.aws.s3.blobstore.strategy.MultipartUploadStrategy;
import org.jclouds.blobstore.KeyNotFoundException;
import org.jclouds.blobstore.domain.Blob;
import org.jclouds.blobstore.reference.BlobStoreConstants;
+import org.jclouds.io.ContentMetadata;
import org.jclouds.io.Payload;
import org.jclouds.io.PayloadSlicer;
import org.jclouds.logging.Logger;
@@ -72,6 +73,7 @@ public class SequentialMultipartUploadStrategy implements MultipartUploadStrateg
@Override
public String execute(String container, Blob blob) {
String key = blob.getMetadata().getName();
+ ContentMetadata metadata = blob.getMetadata().getContentMetadata();
Payload payload = blob.getPayload();
Long length = payload.getContentMetadata().getContentLength();
checkNotNull(length,
@@ -79,7 +81,10 @@ public class SequentialMultipartUploadStrategy implements MultipartUploadStrateg
long chunkSize = algorithm.calculateChunkSize(length);
int partCount = algorithm.getParts();
if (partCount > 0) {
- String uploadId = client.initiateMultipartUpload(container, ObjectMetadataBuilder.create().key(key).build());
+ ObjectMetadataBuilder builder = ObjectMetadataBuilder.create().key(key)
+ .contentType(metadata.getContentType())
+ .contentDisposition(metadata.getContentDisposition());
+ String uploadId = client.initiateMultipartUpload(container, builder.build());
try {
SortedMap<Integer, String> etags = Maps.newTreeMap();
int part;
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/4b5b89ae/providers/aws-s3/src/test/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
----------------------------------------------------------------------
diff --git a/providers/aws-s3/src/test/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java b/providers/aws-s3/src/test/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
index 052be49..12e4ce1 100644
--- a/providers/aws-s3/src/test/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
+++ b/providers/aws-s3/src/test/java/org/jclouds/aws/s3/blobstore/strategy/internal/SequentialMultipartUploadStrategyMockTest.java
@@ -34,6 +34,8 @@ import org.testng.annotations.Test;
import com.google.common.base.Charsets;
import com.google.common.collect.ImmutableSet;
+import com.google.common.net.HttpHeaders;
+import com.google.common.net.MediaType;
import com.google.inject.Module;
import com.google.mockwebserver.MockResponse;
import com.google.mockwebserver.MockWebServer;
@@ -62,12 +64,17 @@ public class SequentialMultipartUploadStrategyMockTest {
partSize);
try {
- assertEquals(api.execute("container", new BlobBuilderImpl().name("foo").payload(bytes).build()), "fff");
+ assertEquals(api.execute("container", new BlobBuilderImpl().name("foo").payload(bytes)
+ .contentDisposition("inline; filename=foo.mp4")
+ .contentType(MediaType.MP4_VIDEO.toString())
+ .build()), "fff");
} finally {
RecordedRequest initiate = server.takeRequest();
assertEquals(initiate.getRequestLine(), "POST /container/foo?uploads HTTP/1.1");
assertEquals(initiate.getHeader("Content-Length"), "0");
+ assertEquals(initiate.getHeader(HttpHeaders.CONTENT_TYPE), MediaType.MP4_VIDEO.toString());
+ assertEquals(initiate.getHeader(HttpHeaders.CONTENT_DISPOSITION), "inline; filename=foo.mp4");
RecordedRequest part1 = server.takeRequest();
assertEquals(part1.getRequestLine(), "PUT /container/foo?partNumber=1&uploadId=upload-id HTTP/1.1");