Update ObjectApi and getBlob, fix testGetRangeOutOfRange
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/c0190dd0 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/c0190dd0 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/c0190dd0 Branch: refs/heads/master Commit: c0190dd03e56e66a7f1987ce05d81eb0c03f6c6c Parents: bb62abf Author: Daniel Broudy <[email protected]> Authored: Tue Jun 9 12:52:00 2015 -0700 Committer: Andrew Gaul <[email protected]> Committed: Fri Jun 12 16:11:53 2015 -0700 ---------------------------------------------------------------------- .../blobstore/GoogleCloudStorageBlobStore.java | 9 +++++++-- .../org/jclouds/googlecloudstorage/features/ObjectApi.java | 5 +++-- .../googlecloudstorage/options/GetObjectOptions.java | 4 ++-- .../googlecloudstorage/features/ObjectApiMockTest.java | 4 +++- 4 files changed, 15 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/c0190dd0/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java ---------------------------------------------------------------------- diff --git a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java index 4ccc8f2..7fd3643 100644 --- a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java +++ b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java @@ -39,6 +39,7 @@ import org.jclouds.blobstore.domain.PageSet; import org.jclouds.blobstore.domain.StorageMetadata; import org.jclouds.blobstore.domain.internal.BlobImpl; import org.jclouds.blobstore.domain.internal.PageSetImpl; +import org.jclouds.blobstore.functions.BlobToHttpGetOptions; import org.jclouds.blobstore.internal.BaseBlobStore; import org.jclouds.blobstore.options.CreateContainerOptions; import org.jclouds.blobstore.options.GetOptions; @@ -91,6 +92,7 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { private final BlobStoreListContainerOptionsToListObjectOptions listContainerOptionsToListObjectOptions; private final Provider<MultipartUploadStrategy> multipartUploadStrategy; private final Supplier<String> projectId; + private final BlobToHttpGetOptions blob2ObjectGetOptions; @Inject GoogleCloudStorageBlobStore(BlobStoreContext context, BlobUtils blobUtils, Supplier<Location> defaultLocation, @Memoized Supplier<Set<? extends Location>> locations, PayloadSlicer slicer, GoogleCloudStorageApi api, @@ -99,7 +101,8 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { Provider<FetchBlobMetadata> fetchBlobMetadataProvider, BlobMetadataToObjectTemplate blobMetadataToObjectTemplate, BlobStoreListContainerOptionsToListObjectOptions listContainerOptionsToListObjectOptions, - Provider<MultipartUploadStrategy> multipartUploadStrategy, @CurrentProject Supplier<String> projectId) { + Provider<MultipartUploadStrategy> multipartUploadStrategy, @CurrentProject Supplier<String> projectId, + BlobToHttpGetOptions blob2ObjectGetOptions) { super(context, blobUtils, defaultLocation, locations, slicer); this.api = api; this.bucketToStorageMetadata = bucketToStorageMetadata; @@ -110,6 +113,7 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { this.listContainerOptionsToListObjectOptions = listContainerOptionsToListObjectOptions; this.projectId = projectId; this.multipartUploadStrategy = multipartUploadStrategy; + this.blob2ObjectGetOptions = checkNotNull(blob2ObjectGetOptions, "blob2ObjectGetOptions"); } @Override @@ -250,10 +254,11 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { if (gcsObject == null) { return null; } + org.jclouds.http.options.GetOptions httpOptions = blob2ObjectGetOptions.apply(options); MutableBlobMetadata metadata = objectToBlobMetadata.apply(gcsObject); Blob blob = new BlobImpl(metadata); // TODO: Does getObject not get the payload?! - Payload payload = api.getObjectApi().download(container, name).getPayload(); + Payload payload = api.getObjectApi().download(container, name, httpOptions).getPayload(); payload.setContentMetadata(metadata.getContentMetadata()); // Doing this first retains it on setPayload. blob.setPayload(payload); return blob; http://git-wip-us.apache.org/repos/asf/jclouds/blob/c0190dd0/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java ---------------------------------------------------------------------- diff --git a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java index 29bbd57..119aece 100644 --- a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java +++ b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/features/ObjectApi.java @@ -45,6 +45,7 @@ import org.jclouds.googlecloudstorage.options.InsertObjectOptions; import org.jclouds.googlecloudstorage.options.ListObjectOptions; import org.jclouds.googlecloudstorage.options.UpdateObjectOptions; import org.jclouds.googlecloudstorage.parser.ParseToPayloadEnclosing; +import org.jclouds.http.options.HttpRequestOptions; import org.jclouds.io.Payload; import org.jclouds.io.PayloadEnclosing; import org.jclouds.javax.annotation.Nullable; @@ -123,7 +124,7 @@ public interface ObjectApi { @Fallback(NullOnNotFoundOr404.class) @Nullable GoogleCloudStorageObject getObject(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, - GetObjectOptions options); + HttpRequestOptions options); /** * Retrieve an object or their metadata @@ -163,7 +164,7 @@ public interface ObjectApi { @ResponseParser(ParseToPayloadEnclosing.class) @Fallback(NullOnNotFoundOr404.class) @Nullable PayloadEnclosing download(@PathParam("bucket") String bucketName, @PathParam("object") String objectName, - GetObjectOptions options); + HttpRequestOptions options); /** * Stores a new object. Object metadata setting is not supported with simple uploads http://git-wip-us.apache.org/repos/asf/jclouds/blob/c0190dd0/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/options/GetObjectOptions.java ---------------------------------------------------------------------- diff --git a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/options/GetObjectOptions.java b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/options/GetObjectOptions.java index a4446e6..2d307bc 100644 --- a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/options/GetObjectOptions.java +++ b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/options/GetObjectOptions.java @@ -19,12 +19,12 @@ package org.jclouds.googlecloudstorage.options; import static com.google.common.base.Preconditions.checkNotNull; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Projection; -import org.jclouds.http.options.BaseHttpRequestOptions; +import org.jclouds.http.options.GetOptions; /** * Allows to optionally specify generation,ifGenerationMatch,ifGenerationNotMatch, ifMetagenerationMatch,ifMetagenerationNotMatch and projection which used in Bucket */ -public class GetObjectOptions extends BaseHttpRequestOptions { +public class GetObjectOptions extends GetOptions { public GetObjectOptions ifGenerationMatch(Long ifGenerationMatch) { this.queryParameters.put("ifGenerationMatch", checkNotNull(ifGenerationMatch, "ifGenerationMatch") + ""); http://git-wip-us.apache.org/repos/asf/jclouds/blob/c0190dd0/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiMockTest.java ---------------------------------------------------------------------- diff --git a/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiMockTest.java b/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiMockTest.java index d95b078..af224d4 100644 --- a/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiMockTest.java +++ b/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiMockTest.java @@ -81,10 +81,12 @@ public class ObjectApiMockTest extends BaseGoogleCloudStorageApiMockTest { server.enqueue(jsonResponse("/object_get.json")); GetObjectOptions options = new GetObjectOptions().ifGenerationMatch((long) 1000); + options.range(0, 1023); assertEquals(objectApi().getObject("test", "file_name", options), new ParseGoogleCloudStorageObject().expected()); - assertSent(server, "GET", "/storage/v1/b/test/o/file_name?ifGenerationMatch=1000"); + RecordedRequest request = assertSent(server, "GET", "/storage/v1/b/test/o/file_name?ifGenerationMatch=1000"); + assertEquals(request.getHeader("Range"), "bytes=0-1023"); } public void simpleUpload() throws Exception {
