Updated Branches:
  refs/heads/master 462117651 -> 2409ac1a3

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/2409ac1a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/tree/2409ac1a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/diff/2409ac1a

Branch: refs/heads/master
Commit: 2409ac1a371465b753effb52cb4b7be6164e2f7e
Parents: 4621176
Author: Diwaker Gupta <[email protected]>
Authored: Wed Jul 24 11:50:39 2013 -0700
Committer: Andrew Gaul <[email protected]>
Committed: Thu Jul 25 10:31:47 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/2409ac1a/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/2409ac1a/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");

Reply via email to