From b50164dccf0ac6a896c171420ddf8f117b5dcec8 Mon Sep 17 00:00:00 2001 From: Jim Sermersheim Date: Thu, 19 Apr 2018 23:43:57 -0600 Subject: [PATCH] JCLOUDS-1389: Populate storageClass in destination from source object --- .../blobstore/GoogleCloudStorageBlobStore.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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 63834e42c0..029ca03e95 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 @@ -379,15 +379,17 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { @Override public String completeMultipartUpload(MultipartUpload mpu, List parts) { - ImmutableList.Builder objects = ImmutableList.builder(); + ImmutableList.Builder objectsBuilder = ImmutableList.builder(); for (MultipartPart part : parts) { - objects.add(api.getObjectApi().getObject(mpu.containerName(), + objectsBuilder.add(api.getObjectApi().getObject(mpu.containerName(), Strings2.urlEncode(getMPUPartName(mpu, part.partNumber())))); } ObjectTemplate destination = blobMetadataToObjectTemplate.apply(mpu.blobMetadata()); - // unset storage class because the subobjects store this state - destination.storageClass(DomainResourceReferences.StorageClass.STANDARD); + final ImmutableList objects = objectsBuilder.build(); + if (!objects.isEmpty()) { + destination.storageClass(objects.get(0).storageClass()); + } if (mpu.putOptions().getBlobAccess() == BlobAccess.PUBLIC_READ) { ObjectAccessControls controls = ObjectAccessControls.builder() .entity("allUsers") @@ -398,7 +400,7 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { } ComposeObjectTemplate template = ComposeObjectTemplate.builder() - .fromGoogleCloudStorageObject(objects.build()) + .fromGoogleCloudStorageObject(objects) .destination(destination).build(); String eTag = api.getObjectApi().composeObjects(mpu.containerName(), Strings2.urlEncode(mpu.blobName()), template) .etag(); -- 2.12.2.windows.2