destination.storageClass(objects.get(0).storageClass()); if (mpu.putOptions().getBlobAccess() == BlobAccess.PUBLIC_READ) { ObjectAccessControls controls = ObjectAccessControls.builder() .entity("allUsers")
destination.storageClass(objects.get(0).storageClass()); if (mpu.putOptions().getBlobAccess() == BlobAccess.PUBLIC_READ) { ObjectAccessControls controls = ObjectAccessControls.builder() .entity("allUsers")
@Override public String completeMultipartUpload(MultipartUpload mpu, List<MultipartPart> parts) { ImmutableList.Builder<GoogleCloudStorageObject> objects = ImmutableList.builder(); for (MultipartPart part : parts) { objects.add(api.getObjectApi().getObject(mpu.containerName(), Strings2.urlEncode(getMPUPartName(mpu, part.partNumber())))); } ObjectTemplate destination = blobMetadataToObjectTemplate.apply(mpu.blobMetadata()); if (mpu.putOptions().getBlobAccess() == BlobAccess.PUBLIC_READ) { ObjectAccessControls controls = ObjectAccessControls.builder() .entity("allUsers") .bucket(mpu.containerName()) .role(READER) .build(); destination.addAcl(controls); } ComposeObjectTemplate template = ComposeObjectTemplate.builder() .fromGoogleCloudStorageObject(objects.build()) .destination(destination).build(); String eTag = api.getObjectApi().composeObjects(mpu.containerName(), Strings2.urlEncode(mpu.blobName()), template) .etag(); // remove parts, composite object keeps a reference to them ImmutableList.Builder<String> builder = ImmutableList.builder(); for (MultipartPart part : parts) { builder.add(getMPUPartName(mpu, part.partNumber())); } removeBlobs(mpu.containerName(), builder.build()); return eTag; }
@Override public String completeMultipartUpload(final MultipartUpload mpu, final List<MultipartPart> parts) { long length = 0; for (MultipartPart part : parts) { length += part.partSize(); super.removeBlob(mpu.containerName(), mpu.id() + "-" + part.partNumber()); } byte[] array = Longs.toByteArray(length); ByteSourcePayload payload = new ByteSourcePayload( ByteSource.wrap(array)); payload.getContentMetadata().setContentLength((long) array.length); super.abortMultipartUpload(mpu); MultipartUpload mpu2 = super.initiateMultipartUpload( mpu.containerName(), mpu.blobMetadata(), mpu.putOptions()); MultipartPart part = super.uploadMultipartPart(mpu2, 1, payload); return super.completeMultipartUpload(mpu2, ImmutableList.of(part)); }
setBlobAccess(mpu.containerName(), mpu.blobName(), mpu.putOptions().getBlobAccess());
setBlobAccess(mpu.containerName(), mpu.blobName(), mpu.putOptions().getBlobAccess());
setBlobAccess(mpu.containerName(), mpu.blobName(), mpu.putOptions().getBlobAccess());
setBlobAccess(mpu.containerName(), mpu.blobName(), mpu.putOptions().getBlobAccess());