storage.objects().rewrite(bucketName, objectName, bucketName, objectName, null); rewriteObject.setRequestHeaders(httpHeaders); RewriteResponse rewriteResponse = rewriteObject.execute(); rewriteObject.setRewriteToken(rewriteResponse.getRewriteToken()); rewriteResponse = rewriteObject.execute();
req.target.getName(), req.overrideInfo ? req.target : null) .setSourceGeneration(req.source.getGeneration()) .setRewriteToken(token) .setMaxBytesRewrittenPerCall(maxBytesRewrittenPerCall) .setProjection(DEFAULT_PROJECTION) .setIfSourceMetagenerationMatch( Option.IF_SOURCE_METAGENERATION_MATCH.getLong(req.sourceOptions)) .setIfSourceMetagenerationNotMatch( Option.IF_SOURCE_METAGENERATION_NOT_MATCH.getLong(req.sourceOptions)) .setIfSourceGenerationMatch( Option.IF_SOURCE_GENERATION_MATCH.getLong(req.sourceOptions)) .setIfSourceGenerationNotMatch( Option.IF_SOURCE_GENERATION_NOT_MATCH.getLong(req.sourceOptions)) .setIfMetagenerationMatch(Option.IF_METAGENERATION_MATCH.getLong(req.targetOptions)) .setIfMetagenerationNotMatch( Option.IF_METAGENERATION_NOT_MATCH.getLong(req.targetOptions)) .setIfGenerationMatch(Option.IF_GENERATION_MATCH.getLong(req.targetOptions)) .setIfGenerationNotMatch(Option.IF_GENERATION_NOT_MATCH.getLong(req.targetOptions)) .setDestinationPredefinedAcl(Option.PREDEFINED_ACL.getString(req.targetOptions)) .setUserProject(userProject) .setDestinationKmsKeyName(Option.KMS_KEY_NAME.getString(req.targetOptions)); HttpHeaders requestHeaders = rewrite.getRequestHeaders(); setEncryptionHeaders(requestHeaders, SOURCE_ENCRYPTION_KEY_PREFIX, req.sourceOptions); setEncryptionHeaders(requestHeaders, ENCRYPTION_KEY_PREFIX, req.targetOptions); com.google.api.services.storage.model.RewriteResponse rewriteResponse = rewrite.execute(); return new RewriteResponse( req,
srcBucketName); if (storageOptions.getMaxBytesRewrittenPerCall() > 0) { rewriteObject.setMaxBytesRewrittenPerCall(storageOptions.getMaxBytesRewrittenPerCall());
req.target.getName(), req.overrideInfo ? req.target : null) .setSourceGeneration(req.source.getGeneration()) .setRewriteToken(token) .setMaxBytesRewrittenPerCall(maxBytesRewrittenPerCall) .setProjection(DEFAULT_PROJECTION) .setIfSourceMetagenerationMatch( Option.IF_SOURCE_METAGENERATION_MATCH.getLong(req.sourceOptions)) .setIfSourceMetagenerationNotMatch( Option.IF_SOURCE_METAGENERATION_NOT_MATCH.getLong(req.sourceOptions)) .setIfSourceGenerationMatch( Option.IF_SOURCE_GENERATION_MATCH.getLong(req.sourceOptions)) .setIfSourceGenerationNotMatch( Option.IF_SOURCE_GENERATION_NOT_MATCH.getLong(req.sourceOptions)) .setIfMetagenerationMatch(Option.IF_METAGENERATION_MATCH.getLong(req.targetOptions)) .setIfMetagenerationNotMatch( Option.IF_METAGENERATION_NOT_MATCH.getLong(req.targetOptions)) .setIfGenerationMatch(Option.IF_GENERATION_MATCH.getLong(req.targetOptions)) .setIfGenerationNotMatch(Option.IF_GENERATION_NOT_MATCH.getLong(req.targetOptions)) .setDestinationPredefinedAcl(Option.PREDEFINED_ACL.getString(req.targetOptions)) .setUserProject(userProject) .setDestinationKmsKeyName(Option.KMS_KEY_NAME.getString(req.targetOptions)); HttpHeaders requestHeaders = rewrite.getRequestHeaders(); setEncryptionHeaders(requestHeaders, SOURCE_ENCRYPTION_KEY_PREFIX, req.sourceOptions); setEncryptionHeaders(requestHeaders, ENCRYPTION_KEY_PREFIX, req.targetOptions); com.google.api.services.storage.model.RewriteResponse rewriteResponse = rewrite.execute(); return new RewriteResponse( req,
.rewrite(req.source.getBucket(), req.source.getName(), req.target.getBucket(), req.target.getName(), req.overrideInfo ? req.target : null) .setSourceGeneration(req.source.getGeneration()) .setRewriteToken(token) .setMaxBytesRewrittenPerCall(maxBytesRewrittenPerCall) .setProjection(DEFAULT_PROJECTION) .setIfSourceMetagenerationMatch(IF_SOURCE_METAGENERATION_MATCH.getLong(req.sourceOptions)) .setIfSourceMetagenerationNotMatch( IF_SOURCE_METAGENERATION_NOT_MATCH.getLong(req.sourceOptions)) .setIfSourceGenerationMatch(IF_SOURCE_GENERATION_MATCH.getLong(req.sourceOptions)) .setIfSourceGenerationNotMatch(IF_SOURCE_GENERATION_NOT_MATCH.getLong(req.sourceOptions)) .setIfMetagenerationMatch(IF_METAGENERATION_MATCH.getLong(req.targetOptions)) .setIfMetagenerationNotMatch(IF_METAGENERATION_NOT_MATCH.getLong(req.targetOptions))
@Override public void onSuccess(RewriteResponse rewriteResponse, HttpHeaders responseHeaders) { String srcString = StorageResourceId.createReadableString(srcBucketName, srcObjectName); String dstString = StorageResourceId.createReadableString(dstBucketName, dstObjectName); if (rewriteResponse.getDone()) { logger.atFine().log("Successfully copied %s to %s", srcString, dstString); } else { // If an object is very large, we need to continue making successive calls to // rewrite until the operation completes. logger.atFine().log( "Copy (%s to %s) did not complete. Resuming...", srcString, dstString); try { Storage.Objects.Rewrite rewriteObjectWithToken = configureRequest( gcs.objects() .rewrite( srcBucketName, srcObjectName, dstBucketName, dstObjectName, null), srcBucketName); if (storageOptions.getMaxBytesRewrittenPerCall() > 0) { rewriteObjectWithToken.setMaxBytesRewrittenPerCall( storageOptions.getMaxBytesRewrittenPerCall()); } rewriteObjectWithToken.setRewriteToken(rewriteResponse.getRewriteToken()); batchHelper.queue(rewriteObjectWithToken, this); } catch (IOException e) { innerExceptions.add(e); } } }