From 3c4e96dca1ddd431212df434af0b98f9c2f7b4dc Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Fri, 30 Jan 2026 14:18:23 -0500 Subject: [PATCH 01/12] chore: replace old java team with cloud-sdk-java-team (#3480) Replace old teams with new ones. b/479542582 --- .github/CODEOWNERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b0834efa0f..bfda791ba8 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -5,7 +5,7 @@ # https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax # The @googleapis/gcs-sdk-team is the default owner for changes in this repo -* @googleapis/yoshi-java @googleapis/gcs-sdk-team +* @googleapis/cloud-sdk-java-team @googleapis/gcs-sdk-team # for handwritten libraries, keep codeowner_team in .repo-metadata.json as owner **/*.java @googleapis/gcs-sdk-team @@ -15,4 +15,4 @@ samples/**/*.java @googleapis/java-samples-reviewers # Generated snippets should not be owned by samples reviewers -samples/snippets/generated/ @googleapis/yoshi-java +samples/snippets/generated/ @googleapis/cloud-sdk-java-team From 49abf7559028d890e1c4848a5a356f266f6788be Mon Sep 17 00:00:00 2001 From: Nidhi Date: Mon, 9 Feb 2026 05:44:14 +0000 Subject: [PATCH 02/12] fix: validate blob paths to prevent directory traversal in TransferManager downloads (#3455) --- .../DirectDownloadCallable.java | 11 ++- .../ParallelDownloadConfig.java | 2 +- .../PathTraversalBlockedException.java | 36 ++++++++ .../transfermanager/TransferManagerImpl.java | 27 +++--- .../transfermanager/TransferManagerUtils.java | 15 +++- .../storage/it/ITTransferManagerTest.java | 86 +++++++++++++++++++ 6 files changed, 158 insertions(+), 19 deletions(-) create mode 100644 google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/PathTraversalBlockedException.java diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/DirectDownloadCallable.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/DirectDownloadCallable.java index f2c8ba1776..47f782e8bd 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/DirectDownloadCallable.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/DirectDownloadCallable.java @@ -36,27 +36,30 @@ final class DirectDownloadCallable implements Callable { private final Storage.BlobSourceOption[] opts; + private final Path destPath; + DirectDownloadCallable( Storage storage, BlobInfo originalBlob, ParallelDownloadConfig parallelDownloadConfig, - BlobSourceOption[] opts) { + BlobSourceOption[] opts, + Path destPath) { this.originalBlob = originalBlob; this.parallelDownloadConfig = parallelDownloadConfig; this.storage = storage; this.opts = opts; + this.destPath = destPath; } @Override public DownloadResult call() { - Path path = TransferManagerUtils.createDestPath(parallelDownloadConfig, originalBlob); long bytesCopied = -1L; try (ReadChannel rc = storage.reader( BlobId.of(parallelDownloadConfig.getBucketName(), originalBlob.getName()), opts); FileChannel wc = FileChannel.open( - path, + destPath, StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) { @@ -89,7 +92,7 @@ public DownloadResult call() { } DownloadResult result = DownloadResult.newBuilder(originalBlob, TransferStatus.SUCCESS) - .setOutputDestination(path.toAbsolutePath()) + .setOutputDestination(destPath) .build(); return result; } diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/ParallelDownloadConfig.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/ParallelDownloadConfig.java index 0ad8bd91f8..3e1c6e6fd1 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/ParallelDownloadConfig.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/ParallelDownloadConfig.java @@ -159,7 +159,7 @@ public Builder setStripPrefix(String stripPrefix) { * @see ParallelDownloadConfig#getDownloadDirectory() */ public Builder setDownloadDirectory(Path downloadDirectory) { - this.downloadDirectory = downloadDirectory; + this.downloadDirectory = downloadDirectory.toAbsolutePath().normalize(); return this; } diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/PathTraversalBlockedException.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/PathTraversalBlockedException.java new file mode 100644 index 0000000000..78d733e809 --- /dev/null +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/PathTraversalBlockedException.java @@ -0,0 +1,36 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.storage.transfermanager; + +import java.nio.file.Path; +import java.util.Locale; + +/** + * Exception thrown when a download is blocked because the object name would result in a path + * traversal outside the target directory. + */ +public final class PathTraversalBlockedException extends RuntimeException { + + public PathTraversalBlockedException(String objectName, Path targetDirectory) { + super( + String.format( + Locale.US, + "Download of object '%s' was blocked because it would escape the target directory '%s'.", + objectName, + targetDirectory)); + } +} diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/TransferManagerImpl.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/TransferManagerImpl.java index d005441924..aa1cfadf1e 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/TransferManagerImpl.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/TransferManagerImpl.java @@ -145,15 +145,20 @@ public void close() throws Exception { Storage.BlobSourceOption[] opts = config.getOptionsPerRequest().toArray(new Storage.BlobSourceOption[0]); List> downloadTasks = new ArrayList<>(); - if (!transferManagerConfig.isAllowDivideAndConquerDownload()) { - for (BlobInfo blob : blobs) { - DirectDownloadCallable callable = new DirectDownloadCallable(storage, blob, config, opts); - downloadTasks.add(convert(executor.submit(callable))); + for (BlobInfo blob : blobs) { + Path destPath = TransferManagerUtils.createAndValidateDestPath(config, blob); + if (destPath == null) { + DownloadResult skipped = + DownloadResult.newBuilder(blob, TransferStatus.FAILED_TO_START) + .setException( + new PathTraversalBlockedException( + blob.getName(), config.getDownloadDirectory())) + .build(); + downloadTasks.add(ApiFutures.immediateFuture(skipped)); + continue; } - } else { - for (BlobInfo blob : blobs) { + if (transferManagerConfig.isAllowDivideAndConquerDownload()) { BlobInfo validatedBlob = retrieveSizeAndGeneration(storage, blob, config.getBucketName()); - Path destPath = TransferManagerUtils.createDestPath(config, blob); if (validatedBlob != null && qos.divideAndConquer(validatedBlob.getSize())) { DownloadResult optimisticResult = DownloadResult.newBuilder(validatedBlob, TransferStatus.SUCCESS) @@ -181,12 +186,14 @@ public void close() throws Exception { DownloadSegment::reduce, BinaryOperator.minBy(DownloadResult.COMPARATOR)), MoreExecutors.directExecutor())); - } else { - DirectDownloadCallable callable = new DirectDownloadCallable(storage, blob, config, opts); - downloadTasks.add(convert(executor.submit(callable))); + continue; } } + DirectDownloadCallable callable = + new DirectDownloadCallable(storage, blob, config, opts, destPath); + downloadTasks.add(convert(executor.submit(callable))); } + return DownloadJob.newBuilder() .setDownloadResults(downloadTasks) .setParallelDownloadConfig(config) diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/TransferManagerUtils.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/TransferManagerUtils.java index a884aa7067..2742ffbd6e 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/TransferManagerUtils.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/TransferManagerUtils.java @@ -26,11 +26,18 @@ final class TransferManagerUtils { private TransferManagerUtils() {} - static Path createDestPath(ParallelDownloadConfig config, BlobInfo originalBlob) { + static Path createAndValidateDestPath(ParallelDownloadConfig config, BlobInfo originalBlob) { + Path targetDirectory = config.getDownloadDirectory(); Path newPath = - config - .getDownloadDirectory() - .resolve(originalBlob.getName().replaceFirst(config.getStripPrefix(), "")); + targetDirectory + .resolve(originalBlob.getName().replaceFirst(config.getStripPrefix(), "")) + .normalize(); + + // Security check: Verify the resolved path is inside the target directory + // This catches ".." sequences that attempt to "escape" the folder. + if (!newPath.startsWith(targetDirectory)) { + return null; + } // Check to make sure the parent directories exist if (Files.exists(newPath.getParent())) { return newPath; diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITTransferManagerTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITTransferManagerTest.java index dd7708b5f9..e5794fa819 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITTransferManagerTest.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITTransferManagerTest.java @@ -41,6 +41,7 @@ import com.google.cloud.storage.transfermanager.DownloadResult; import com.google.cloud.storage.transfermanager.ParallelDownloadConfig; import com.google.cloud.storage.transfermanager.ParallelUploadConfig; +import com.google.cloud.storage.transfermanager.PathTraversalBlockedException; import com.google.cloud.storage.transfermanager.TransferManager; import com.google.cloud.storage.transfermanager.TransferManagerConfig; import com.google.cloud.storage.transfermanager.TransferManagerConfigTestingInstances; @@ -635,6 +636,91 @@ public void bucketNameFromUploadBlobInfoFactoryMustMatchConfig() throws Exceptio } } + @Test + public void downloadBlobsPathTraversalBlocked() throws Exception { + TransferManagerConfig config = + TransferManagerConfigTestingInstances.defaults(storage.getOptions()); + try (TransferManager transferManager = config.getService()) { + String bucketName = bucket.getName(); + // Create an object with a name that attempts to "escape" the target directory + String maliciousName = "../malicious.txt"; + BlobInfo maliciousBlob = BlobInfo.newBuilder(BlobId.of(bucketName, maliciousName)).build(); + storage.create( + maliciousBlob, "malicious content".getBytes(java.nio.charset.StandardCharsets.UTF_8)); + + ParallelDownloadConfig parallelDownloadConfig = + ParallelDownloadConfig.newBuilder() + .setBucketName(bucketName) + .setDownloadDirectory(baseDir) // baseDir is the target + .build(); + + List blobsToDownload = new ArrayList<>(blobs); + blobsToDownload.add(maliciousBlob); + + DownloadJob job = transferManager.downloadBlobs(blobsToDownload, parallelDownloadConfig); + List results = job.getDownloadResults(); + + try { + long successCount = + results.stream().filter(res -> res.getStatus() == TransferStatus.SUCCESS).count(); + assertThat(successCount).isEqualTo(blobs.size()); + + // Verify that the malicious blob was blocked/skipped + Optional blockedResult = + results.stream() + .filter(res -> res.getInput().getName().equals(maliciousName)) + .findFirst(); + + assertThat(blockedResult).isPresent(); + assertThat(blockedResult.get().getStatus()).isEqualTo(TransferStatus.FAILED_TO_START); + assertThat(blockedResult.get().getException()) + .isInstanceOf(PathTraversalBlockedException.class); + assertThat(blockedResult.get().getException().getMessage()).contains("blocked"); + } finally { + storage.delete(maliciousBlob.getBlobId()); + cleanUpFiles( + results.stream() + .filter(res -> res.getStatus() == TransferStatus.SUCCESS) + .collect(Collectors.toList())); + } + } + } + + @Test + public void downloadBlobsPathTraversalAllowedWithinTarget() throws Exception { + TransferManagerConfig config = + TransferManagerConfigTestingInstances.defaults(storage.getOptions()); + try (TransferManager transferManager = config.getService()) { + String bucketName = bucket.getName(); + // This name resolves to 'safe.txt' inside the target directory + String safeNameWithDots = "subdir/../safe.txt"; + BlobInfo safeBlob = BlobInfo.newBuilder(BlobId.of(bucketName, safeNameWithDots)).build(); + storage.create(safeBlob, "safe content".getBytes(java.nio.charset.StandardCharsets.UTF_8)); + + ParallelDownloadConfig parallelDownloadConfig = + ParallelDownloadConfig.newBuilder() + .setBucketName(bucketName) + .setDownloadDirectory(baseDir) + .build(); + + DownloadJob job = + transferManager.downloadBlobs( + Collections.singletonList(safeBlob), parallelDownloadConfig); + List results = job.getDownloadResults(); + + try { + assertThat(results.get(0).getStatus()).isEqualTo(TransferStatus.SUCCESS); + // Verify it was saved to the correct normalized location + Path expectedPath = baseDir.resolve("safe.txt").toAbsolutePath().normalize(); + assertThat(results.get(0).getOutputDestination().toAbsolutePath().normalize()) + .isEqualTo(expectedPath); + } finally { + cleanUpFiles(results); + storage.delete(safeBlob.getBlobId()); + } + } + } + private void cleanUpFiles(List results) throws IOException { // Cleanup downloaded blobs and the parent directory for (DownloadResult res : results) { From 3a5deee364175fc8c879cb22f176354a62117d22 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 9 Feb 2026 05:57:49 +0000 Subject: [PATCH 03/12] deps: update dependency com.google.cloud:sdk-platform-java-config to v3.56.1 (#3484) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- google-cloud-storage-bom/pom.xml | 2 +- pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 31deb1cd2f..962fc1c689 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -17,6 +17,6 @@ jobs: # repository .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.56.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.56.1 with: bom-path: google-cloud-storage-bom/pom.xml diff --git a/google-cloud-storage-bom/pom.xml b/google-cloud-storage-bom/pom.xml index 79421f6fc8..23fd9da1df 100644 --- a/google-cloud-storage-bom/pom.xml +++ b/google-cloud-storage-bom/pom.xml @@ -24,7 +24,7 @@ com.google.cloud sdk-platform-java-config - 3.56.0 + 3.56.1 diff --git a/pom.xml b/pom.xml index 69585a4f4a..0b6eb11e29 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.56.0 + 3.56.1 From 87642bd58759a61f5fdf04b1765b77297ea443ea Mon Sep 17 00:00:00 2001 From: cloud-java-bot <122572305+cloud-java-bot@users.noreply.github.com> Date: Mon, 9 Feb 2026 05:59:09 -0500 Subject: [PATCH 04/12] chore: Update generation configuration at Sat Feb 7 02:50:34 UTC 2026 (#3479) --- .../hermetic_library_generation.yaml | 2 +- .kokoro/presubmit/graalvm-native-a.cfg | 2 +- .kokoro/presubmit/graalvm-native-b.cfg | 2 +- .kokoro/presubmit/graalvm-native-c.cfg | 2 +- README.md | 2 +- .../com/google/storage/v2/StorageClient.java | 8 +- .../google/storage/v2/StorageClientTest.java | 3 + generation_config.yaml | 6 +- .../control/v2/StorageControlClient.java | 181 +++ .../control/v2/StorageControlSettings.java | 26 + .../storage/control/v2/gapic_metadata.json | 3 + .../v2/stub/GrpcStorageControlStub.java | 62 + .../v2/stub/HttpJsonStorageControlStub.java | 11 + .../control/v2/stub/StorageControlStub.java | 12 + .../v2/stub/StorageControlStubSettings.java | 77 ++ .../reflect-config.json | 36 + .../storage/control/v2/gapic_metadata.json | 3 + .../control/v2/MockStorageControlImpl.java | 22 + .../v2/StorageControlClientHttpJsonTest.java | 6 + .../control/v2/StorageControlClientTest.java | 86 ++ .../control/v2/StorageControlGrpc.java | 179 ++- .../com/google/storage/v2/StorageGrpc.java | 39 +- .../v2/DeleteFolderRecursiveMetadata.java | 909 +++++++++++++ ...eleteFolderRecursiveMetadataOrBuilder.java | 92 ++ .../v2/DeleteFolderRecursiveRequest.java | 1136 +++++++++++++++++ ...DeleteFolderRecursiveRequestOrBuilder.java | 154 +++ .../control/v2/StorageControlProto.java | 389 +++--- .../storage/control/v2/storage_control.proto | 57 +- .../google/storage/v2/BidiReadObjectSpec.java | 8 +- .../v2/BidiReadObjectSpecOrBuilder.java | 4 +- .../storage/v2/ComposeObjectRequest.java | 135 ++ .../v2/ComposeObjectRequestOrBuilder.java | 26 + .../com/google/storage/v2/ObjectContexts.java | 36 + .../storage/v2/ObjectContextsOrBuilder.java | 15 + .../java/com/google/storage/v2/ReadRange.java | 40 +- .../google/storage/v2/ReadRangeOrBuilder.java | 10 +- .../com/google/storage/v2/StorageProto.java | 309 ++--- .../proto/google/storage/v2/storage.proto | 31 +- 38 files changed, 3697 insertions(+), 424 deletions(-) create mode 100644 proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveMetadata.java create mode 100644 proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveMetadataOrBuilder.java create mode 100644 proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveRequest.java create mode 100644 proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveRequestOrBuilder.java diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 6ed1b3019d..1df32c8ae8 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -77,7 +77,7 @@ jobs: echo "SHOULD_RUN=false" >> $GITHUB_ENV fi - - uses: googleapis/sdk-platform-java/.github/scripts@v2.66.0 + - uses: googleapis/sdk-platform-java/.github/scripts@v2.66.1 if: env.SHOULD_RUN == 'true' with: base_ref: ${{ github.base_ref }} diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg index af4115f37f..d7b53d8787 100644 --- a/.kokoro/presubmit/graalvm-native-a.cfg +++ b/.kokoro/presubmit/graalvm-native-a.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.56.0" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.56.1" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg index 33056bc067..102b057a5a 100644 --- a/.kokoro/presubmit/graalvm-native-b.cfg +++ b/.kokoro/presubmit/graalvm-native-b.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.56.0" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.56.1" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg index 8a6c25f495..9cbb4d0993 100644 --- a/.kokoro/presubmit/graalvm-native-c.cfg +++ b/.kokoro/presubmit/graalvm-native-c.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.56.0" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.56.1" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/README.md b/README.md index 32b0f32c0b..10d43fd263 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ If you are using Maven without the BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies: ```Groovy -implementation platform('com.google.cloud:libraries-bom:26.74.0') +implementation platform('com.google.cloud:libraries-bom:26.75.0') implementation 'com.google.cloud:google-cloud-storage' ``` diff --git a/gapic-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageClient.java b/gapic-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageClient.java index 1b02caf1d4..fd46bdab80 100644 --- a/gapic-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageClient.java +++ b/gapic-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageClient.java @@ -405,7 +405,7 @@ * *

BidiReadObject *

Reads an object's data. - *

This bi-directional API reads data from an object, allowing you to request multiple data ranges within a single stream, even across several messages. If an error occurs with any request, the stream closes with a relevant error code. Since you can have multiple outstanding requests, the error response includes a `BidiReadObjectRangesError` field detailing the specific error for each pending `read_id`. + *

This bi-directional API reads data from an object, allowing you to request multiple data ranges within a single stream, even across several messages. If an error occurs with any request, the stream closes with a relevant error code. Since you can have multiple outstanding requests, the error response includes a `BidiReadObjectError` proto in its `details` field, reporting the specific error, if any, for each pending `read_id`. *

**IAM Permissions**: *

Requires `storage.objects.get` IAM permission on the bucket. * @@ -2139,6 +2139,7 @@ public final UnaryCallable updateBucketCallable() { * .toString()) * .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) * .setObjectChecksums(ObjectChecksums.newBuilder().build()) + * .setDeleteSourceObjects(true) * .build(); * Object response = storageClient.composeObject(request); * } @@ -2185,6 +2186,7 @@ public final Object composeObject(ComposeObjectRequest request) { * .toString()) * .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) * .setObjectChecksums(ObjectChecksums.newBuilder().build()) + * .setDeleteSourceObjects(true) * .build(); * ApiFuture future = storageClient.composeObjectCallable().futureCall(request); * // Do something. @@ -3093,8 +3095,8 @@ public final ServerStreamingCallable read *

This bi-directional API reads data from an object, allowing you to request multiple data * ranges within a single stream, even across several messages. If an error occurs with any * request, the stream closes with a relevant error code. Since you can have multiple outstanding - * requests, the error response includes a `BidiReadObjectRangesError` field detailing the - * specific error for each pending `read_id`. + * requests, the error response includes a `BidiReadObjectError` proto in its `details` field, + * reporting the specific error, if any, for each pending `read_id`. * *

**IAM Permissions**: * diff --git a/gapic-google-cloud-storage-v2/src/test/java/com/google/storage/v2/StorageClientTest.java b/gapic-google-cloud-storage-v2/src/test/java/com/google/storage/v2/StorageClientTest.java index 99fdcaf159..f59fe20a0e 100644 --- a/gapic-google-cloud-storage-v2/src/test/java/com/google/storage/v2/StorageClientTest.java +++ b/gapic-google-cloud-storage-v2/src/test/java/com/google/storage/v2/StorageClientTest.java @@ -1064,6 +1064,7 @@ public void composeObjectTest() throws Exception { .toString()) .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) .setObjectChecksums(ObjectChecksums.newBuilder().build()) + .setDeleteSourceObjects(true) .build(); Object actualResponse = client.composeObject(request); @@ -1084,6 +1085,7 @@ public void composeObjectTest() throws Exception { Assert.assertEquals( request.getCommonObjectRequestParams(), actualRequest.getCommonObjectRequestParams()); Assert.assertEquals(request.getObjectChecksums(), actualRequest.getObjectChecksums()); + Assert.assertEquals(request.getDeleteSourceObjects(), actualRequest.getDeleteSourceObjects()); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -1108,6 +1110,7 @@ public void composeObjectExceptionTest() throws Exception { .toString()) .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) .setObjectChecksums(ObjectChecksums.newBuilder().build()) + .setDeleteSourceObjects(true) .build(); client.composeObject(request); Assert.fail("No exception raised"); diff --git a/generation_config.yaml b/generation_config.yaml index 001e28d565..d8cfa90cde 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,6 +1,6 @@ -gapic_generator_version: 2.66.0 -googleapis_commitish: cfe62b3c5ceb9f81879c61480f26707980534462 -libraries_bom_version: 26.74.0 +gapic_generator_version: 2.66.1 +googleapis_commitish: 725496d32a359a40dd773995d3fda0342b440e15 +libraries_bom_version: 26.75.0 libraries: - api_shortname: storage name_pretty: Cloud Storage diff --git a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/StorageControlClient.java b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/StorageControlClient.java index 9093498e02..cd59599f9f 100644 --- a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/StorageControlClient.java +++ b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/StorageControlClient.java @@ -174,6 +174,26 @@ * * * + *

DeleteFolderRecursive + *

Deletes a folder recursively. This operation is only applicable to a hierarchical namespace enabled bucket. + * + *

Request object method variants only take one parameter, a request object, which must be constructed before the call.

+ *
    + *
  • deleteFolderRecursiveAsync(DeleteFolderRecursiveRequest request) + *

+ *

Methods that return long-running operations have "Async" method variants that return `OperationFuture`, which is used to track polling of the service.

+ *
    + *
  • deleteFolderRecursiveAsync(FolderName name) + *

  • deleteFolderRecursiveAsync(String name) + *

+ *

Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.

+ *
    + *
  • deleteFolderRecursiveOperationCallable() + *

  • deleteFolderRecursiveCallable() + *

+ * + * + * *

GetStorageLayout *

Returns the storage layout configuration for a given bucket. * @@ -1450,6 +1470,167 @@ public final UnaryCallable renameFolderCallable( return stub.renameFolderCallable(); } + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes a folder recursively. This operation is only applicable to a hierarchical namespace + * enabled bucket. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (StorageControlClient storageControlClient = StorageControlClient.create()) {
+   *   FolderName name = FolderName.of("[PROJECT]", "[BUCKET]", "[FOLDER]");
+   *   storageControlClient.deleteFolderRecursiveAsync(name).get();
+   * }
+   * }
+ * + * @param name Required. Name of the folder being deleted, however all of its contents will be + * deleted too. Format: `projects/{project}/buckets/{bucket}/folders/{folder}` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final OperationFuture deleteFolderRecursiveAsync( + FolderName name) { + DeleteFolderRecursiveRequest request = + DeleteFolderRecursiveRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .build(); + return deleteFolderRecursiveAsync(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes a folder recursively. This operation is only applicable to a hierarchical namespace + * enabled bucket. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (StorageControlClient storageControlClient = StorageControlClient.create()) {
+   *   String name = FolderName.of("[PROJECT]", "[BUCKET]", "[FOLDER]").toString();
+   *   storageControlClient.deleteFolderRecursiveAsync(name).get();
+   * }
+   * }
+ * + * @param name Required. Name of the folder being deleted, however all of its contents will be + * deleted too. Format: `projects/{project}/buckets/{bucket}/folders/{folder}` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final OperationFuture deleteFolderRecursiveAsync( + String name) { + DeleteFolderRecursiveRequest request = + DeleteFolderRecursiveRequest.newBuilder().setName(name).build(); + return deleteFolderRecursiveAsync(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes a folder recursively. This operation is only applicable to a hierarchical namespace + * enabled bucket. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (StorageControlClient storageControlClient = StorageControlClient.create()) {
+   *   DeleteFolderRecursiveRequest request =
+   *       DeleteFolderRecursiveRequest.newBuilder()
+   *           .setName(FolderName.of("[PROJECT]", "[BUCKET]", "[FOLDER]").toString())
+   *           .setIfMetagenerationMatch(1043427781)
+   *           .setIfMetagenerationNotMatch(1025430873)
+   *           .setRequestId("requestId693933066")
+   *           .build();
+   *   storageControlClient.deleteFolderRecursiveAsync(request).get();
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final OperationFuture deleteFolderRecursiveAsync( + DeleteFolderRecursiveRequest request) { + return deleteFolderRecursiveOperationCallable().futureCall(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes a folder recursively. This operation is only applicable to a hierarchical namespace + * enabled bucket. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (StorageControlClient storageControlClient = StorageControlClient.create()) {
+   *   DeleteFolderRecursiveRequest request =
+   *       DeleteFolderRecursiveRequest.newBuilder()
+   *           .setName(FolderName.of("[PROJECT]", "[BUCKET]", "[FOLDER]").toString())
+   *           .setIfMetagenerationMatch(1043427781)
+   *           .setIfMetagenerationNotMatch(1025430873)
+   *           .setRequestId("requestId693933066")
+   *           .build();
+   *   OperationFuture future =
+   *       storageControlClient.deleteFolderRecursiveOperationCallable().futureCall(request);
+   *   // Do something.
+   *   future.get();
+   * }
+   * }
+ */ + public final OperationCallable + deleteFolderRecursiveOperationCallable() { + return stub.deleteFolderRecursiveOperationCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes a folder recursively. This operation is only applicable to a hierarchical namespace + * enabled bucket. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (StorageControlClient storageControlClient = StorageControlClient.create()) {
+   *   DeleteFolderRecursiveRequest request =
+   *       DeleteFolderRecursiveRequest.newBuilder()
+   *           .setName(FolderName.of("[PROJECT]", "[BUCKET]", "[FOLDER]").toString())
+   *           .setIfMetagenerationMatch(1043427781)
+   *           .setIfMetagenerationNotMatch(1025430873)
+   *           .setRequestId("requestId693933066")
+   *           .build();
+   *   ApiFuture future =
+   *       storageControlClient.deleteFolderRecursiveCallable().futureCall(request);
+   *   // Do something.
+   *   future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + deleteFolderRecursiveCallable() { + return stub.deleteFolderRecursiveCallable(); + } + // AUTO-GENERATED DOCUMENTATION AND METHOD. /** * Returns the storage layout configuration for a given bucket. diff --git a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/StorageControlSettings.java b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/StorageControlSettings.java index 642b1b3895..46f4dabb26 100644 --- a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/StorageControlSettings.java +++ b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/StorageControlSettings.java @@ -156,6 +156,19 @@ public UnaryCallSettings renameFolderSettings() return ((StorageControlStubSettings) getStubSettings()).renameFolderOperationSettings(); } + /** Returns the object with the settings used for calls to deleteFolderRecursive. */ + public UnaryCallSettings + deleteFolderRecursiveSettings() { + return ((StorageControlStubSettings) getStubSettings()).deleteFolderRecursiveSettings(); + } + + /** Returns the object with the settings used for calls to deleteFolderRecursive. */ + public OperationCallSettings + deleteFolderRecursiveOperationSettings() { + return ((StorageControlStubSettings) getStubSettings()) + .deleteFolderRecursiveOperationSettings(); + } + /** Returns the object with the settings used for calls to getStorageLayout. */ public UnaryCallSettings getStorageLayoutSettings() { return ((StorageControlStubSettings) getStubSettings()).getStorageLayoutSettings(); @@ -440,6 +453,19 @@ public UnaryCallSettings.Builder renameFolderSet return getStubSettingsBuilder().renameFolderOperationSettings(); } + /** Returns the builder for the settings used for calls to deleteFolderRecursive. */ + public UnaryCallSettings.Builder + deleteFolderRecursiveSettings() { + return getStubSettingsBuilder().deleteFolderRecursiveSettings(); + } + + /** Returns the builder for the settings used for calls to deleteFolderRecursive. */ + public OperationCallSettings.Builder< + DeleteFolderRecursiveRequest, Empty, DeleteFolderRecursiveMetadata> + deleteFolderRecursiveOperationSettings() { + return getStubSettingsBuilder().deleteFolderRecursiveOperationSettings(); + } + /** Returns the builder for the settings used for calls to getStorageLayout. */ public UnaryCallSettings.Builder getStorageLayoutSettings() { diff --git a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/gapic_metadata.json b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/gapic_metadata.json index f86f4c1c4b..0ca951cf14 100644 --- a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/gapic_metadata.json +++ b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/gapic_metadata.json @@ -22,6 +22,9 @@ "DeleteFolder": { "methods": ["deleteFolder", "deleteFolder", "deleteFolder", "deleteFolderCallable"] }, + "DeleteFolderRecursive": { + "methods": ["deleteFolderRecursiveAsync", "deleteFolderRecursiveAsync", "deleteFolderRecursiveAsync", "deleteFolderRecursiveOperationCallable", "deleteFolderRecursiveCallable"] + }, "DeleteManagedFolder": { "methods": ["deleteManagedFolder", "deleteManagedFolder", "deleteManagedFolder", "deleteManagedFolderCallable"] }, diff --git a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/GrpcStorageControlStub.java b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/GrpcStorageControlStub.java index c8c7e7d431..69488edf15 100644 --- a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/GrpcStorageControlStub.java +++ b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/GrpcStorageControlStub.java @@ -43,6 +43,8 @@ import com.google.storage.control.v2.CreateAnywhereCacheRequest; import com.google.storage.control.v2.CreateFolderRequest; import com.google.storage.control.v2.CreateManagedFolderRequest; +import com.google.storage.control.v2.DeleteFolderRecursiveMetadata; +import com.google.storage.control.v2.DeleteFolderRecursiveRequest; import com.google.storage.control.v2.DeleteFolderRequest; import com.google.storage.control.v2.DeleteManagedFolderRequest; import com.google.storage.control.v2.DisableAnywhereCacheRequest; @@ -135,6 +137,17 @@ public class GrpcStorageControlStub extends StorageControlStub { .setSampledToLocalTracing(true) .build(); + private static final MethodDescriptor + deleteFolderRecursiveMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.control.v2.StorageControl/DeleteFolderRecursive") + .setRequestMarshaller( + ProtoUtils.marshaller(DeleteFolderRecursiveRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Operation.getDefaultInstance())) + .setSampledToLocalTracing(true) + .build(); + private static final MethodDescriptor getStorageLayoutMethodDescriptor = MethodDescriptor.newBuilder() @@ -387,6 +400,11 @@ public class GrpcStorageControlStub extends StorageControlStub { private final UnaryCallable renameFolderCallable; private final OperationCallable renameFolderOperationCallable; + private final UnaryCallable + deleteFolderRecursiveCallable; + private final OperationCallable< + DeleteFolderRecursiveRequest, Empty, DeleteFolderRecursiveMetadata> + deleteFolderRecursiveOperationCallable; private final UnaryCallable getStorageLayoutCallable; private final UnaryCallable createManagedFolderCallable; @@ -445,6 +463,8 @@ public class GrpcStorageControlStub extends StorageControlStub { PathTemplate.create("{bucket=**}"); private static final PathTemplate RENAME_FOLDER_0_PATH_TEMPLATE = PathTemplate.create("{bucket=projects/*/buckets/*}/**"); + private static final PathTemplate DELETE_FOLDER_RECURSIVE_0_PATH_TEMPLATE = + PathTemplate.create("{bucket=projects/*/buckets/*}/**"); private static final PathTemplate GET_STORAGE_LAYOUT_0_PATH_TEMPLATE = PathTemplate.create("{bucket=projects/*/buckets/*}/**"); private static final PathTemplate CREATE_MANAGED_FOLDER_0_PATH_TEMPLATE = @@ -606,6 +626,26 @@ protected GrpcStorageControlStub( return requestBuilder.build(); }) .build(); + GrpcCallSettings + deleteFolderRecursiveTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(deleteFolderRecursiveMethodDescriptor) + .setParamsExtractor( + request -> { + RequestParamsBuilder builder = RequestParamsBuilder.create(); + builder.add( + request.getName(), "bucket", DELETE_FOLDER_RECURSIVE_0_PATH_TEMPLATE); + return builder.build(); + }) + .setRequestMutator( + request -> { + DeleteFolderRecursiveRequest.Builder requestBuilder = request.toBuilder(); + if (Strings.isNullOrEmpty(request.getRequestId())) { + requestBuilder.setRequestId(UUID.randomUUID().toString()); + } + return requestBuilder.build(); + }) + .build(); GrpcCallSettings getStorageLayoutTransportSettings = GrpcCallSettings.newBuilder() .setMethodDescriptor(getStorageLayoutMethodDescriptor) @@ -975,6 +1015,17 @@ protected GrpcStorageControlStub( settings.renameFolderOperationSettings(), clientContext, operationsStub); + this.deleteFolderRecursiveCallable = + callableFactory.createUnaryCallable( + deleteFolderRecursiveTransportSettings, + settings.deleteFolderRecursiveSettings(), + clientContext); + this.deleteFolderRecursiveOperationCallable = + callableFactory.createOperationCallable( + deleteFolderRecursiveTransportSettings, + settings.deleteFolderRecursiveOperationSettings(), + clientContext, + operationsStub); this.getStorageLayoutCallable = callableFactory.createUnaryCallable( getStorageLayoutTransportSettings, settings.getStorageLayoutSettings(), clientContext); @@ -1137,6 +1188,17 @@ public UnaryCallable renameFolderCallable() { return renameFolderOperationCallable; } + @Override + public UnaryCallable deleteFolderRecursiveCallable() { + return deleteFolderRecursiveCallable; + } + + @Override + public OperationCallable + deleteFolderRecursiveOperationCallable() { + return deleteFolderRecursiveOperationCallable; + } + @Override public UnaryCallable getStorageLayoutCallable() { return getStorageLayoutCallable; diff --git a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/HttpJsonStorageControlStub.java b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/HttpJsonStorageControlStub.java index ff19274ff1..2ba8b1669d 100644 --- a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/HttpJsonStorageControlStub.java +++ b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/HttpJsonStorageControlStub.java @@ -42,6 +42,8 @@ import com.google.storage.control.v2.CreateAnywhereCacheRequest; import com.google.storage.control.v2.CreateFolderRequest; import com.google.storage.control.v2.CreateManagedFolderRequest; +import com.google.storage.control.v2.DeleteFolderRecursiveMetadata; +import com.google.storage.control.v2.DeleteFolderRecursiveRequest; import com.google.storage.control.v2.DeleteFolderRequest; import com.google.storage.control.v2.DeleteManagedFolderRequest; import com.google.storage.control.v2.DisableAnywhereCacheRequest; @@ -89,10 +91,12 @@ public class HttpJsonStorageControlStub extends StorageControlStub { private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder() + .add(Empty.getDescriptor()) .add(RenameFolderMetadata.getDescriptor()) .add(Folder.getDescriptor()) .add(AnywhereCache.getDescriptor()) .add(UpdateAnywhereCacheMetadata.getDescriptor()) + .add(DeleteFolderRecursiveMetadata.getDescriptor()) .add(CreateAnywhereCacheMetadata.getDescriptor()) .build(); @@ -608,6 +612,13 @@ public UnaryCallable renameFolderCallable() { + " yet."); } + @Override + public UnaryCallable deleteFolderRecursiveCallable() { + throw new UnsupportedOperationException( + "Not implemented: deleteFolderRecursiveCallable(). REST transport is not implemented for" + + " this method yet."); + } + @Override public UnaryCallable getStorageLayoutCallable() { throw new UnsupportedOperationException( diff --git a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStub.java b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStub.java index c5442996e4..7463b7921b 100644 --- a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStub.java +++ b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStub.java @@ -36,6 +36,8 @@ import com.google.storage.control.v2.CreateAnywhereCacheRequest; import com.google.storage.control.v2.CreateFolderRequest; import com.google.storage.control.v2.CreateManagedFolderRequest; +import com.google.storage.control.v2.DeleteFolderRecursiveMetadata; +import com.google.storage.control.v2.DeleteFolderRecursiveRequest; import com.google.storage.control.v2.DeleteFolderRequest; import com.google.storage.control.v2.DeleteManagedFolderRequest; import com.google.storage.control.v2.DisableAnywhereCacheRequest; @@ -113,6 +115,16 @@ public UnaryCallable renameFolderCallable() { throw new UnsupportedOperationException("Not implemented: renameFolderCallable()"); } + public OperationCallable + deleteFolderRecursiveOperationCallable() { + throw new UnsupportedOperationException( + "Not implemented: deleteFolderRecursiveOperationCallable()"); + } + + public UnaryCallable deleteFolderRecursiveCallable() { + throw new UnsupportedOperationException("Not implemented: deleteFolderRecursiveCallable()"); + } + public UnaryCallable getStorageLayoutCallable() { throw new UnsupportedOperationException("Not implemented: getStorageLayoutCallable()"); } diff --git a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStubSettings.java b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStubSettings.java index 3acc188b40..d196138eff 100644 --- a/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStubSettings.java +++ b/google-cloud-storage-control/src/main/java/com/google/storage/control/v2/stub/StorageControlStubSettings.java @@ -66,6 +66,8 @@ import com.google.storage.control.v2.CreateAnywhereCacheRequest; import com.google.storage.control.v2.CreateFolderRequest; import com.google.storage.control.v2.CreateManagedFolderRequest; +import com.google.storage.control.v2.DeleteFolderRecursiveMetadata; +import com.google.storage.control.v2.DeleteFolderRecursiveRequest; import com.google.storage.control.v2.DeleteFolderRequest; import com.google.storage.control.v2.DeleteManagedFolderRequest; import com.google.storage.control.v2.DisableAnywhereCacheRequest; @@ -196,6 +198,11 @@ public class StorageControlStubSettings extends StubSettings renameFolderSettings; private final OperationCallSettings renameFolderOperationSettings; + private final UnaryCallSettings + deleteFolderRecursiveSettings; + private final OperationCallSettings< + DeleteFolderRecursiveRequest, Empty, DeleteFolderRecursiveMetadata> + deleteFolderRecursiveOperationSettings; private final UnaryCallSettings getStorageLayoutSettings; private final UnaryCallSettings createManagedFolderSettings; @@ -442,6 +449,18 @@ public UnaryCallSettings renameFolderSettings() return renameFolderOperationSettings; } + /** Returns the object with the settings used for calls to deleteFolderRecursive. */ + public UnaryCallSettings + deleteFolderRecursiveSettings() { + return deleteFolderRecursiveSettings; + } + + /** Returns the object with the settings used for calls to deleteFolderRecursive. */ + public OperationCallSettings + deleteFolderRecursiveOperationSettings() { + return deleteFolderRecursiveOperationSettings; + } + /** Returns the object with the settings used for calls to getStorageLayout. */ public UnaryCallSettings getStorageLayoutSettings() { return getStorageLayoutSettings; @@ -694,6 +713,9 @@ protected StorageControlStubSettings(Builder settingsBuilder) throws IOException listFoldersSettings = settingsBuilder.listFoldersSettings().build(); renameFolderSettings = settingsBuilder.renameFolderSettings().build(); renameFolderOperationSettings = settingsBuilder.renameFolderOperationSettings().build(); + deleteFolderRecursiveSettings = settingsBuilder.deleteFolderRecursiveSettings().build(); + deleteFolderRecursiveOperationSettings = + settingsBuilder.deleteFolderRecursiveOperationSettings().build(); getStorageLayoutSettings = settingsBuilder.getStorageLayoutSettings().build(); createManagedFolderSettings = settingsBuilder.createManagedFolderSettings().build(); deleteManagedFolderSettings = settingsBuilder.deleteManagedFolderSettings().build(); @@ -739,6 +761,11 @@ public static class Builder extends StubSettings.Builder renameFolderSettings; private final OperationCallSettings.Builder renameFolderOperationSettings; + private final UnaryCallSettings.Builder + deleteFolderRecursiveSettings; + private final OperationCallSettings.Builder< + DeleteFolderRecursiveRequest, Empty, DeleteFolderRecursiveMetadata> + deleteFolderRecursiveOperationSettings; private final UnaryCallSettings.Builder getStorageLayoutSettings; private final UnaryCallSettings.Builder @@ -851,6 +878,8 @@ protected Builder(ClientContext clientContext) { listFoldersSettings = PagedCallSettings.newBuilder(LIST_FOLDERS_PAGE_STR_FACT); renameFolderSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); renameFolderOperationSettings = OperationCallSettings.newBuilder(); + deleteFolderRecursiveSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + deleteFolderRecursiveOperationSettings = OperationCallSettings.newBuilder(); getStorageLayoutSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); createManagedFolderSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); deleteManagedFolderSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); @@ -883,6 +912,7 @@ protected Builder(ClientContext clientContext) { getFolderSettings, listFoldersSettings, renameFolderSettings, + deleteFolderRecursiveSettings, getStorageLayoutSettings, createManagedFolderSettings, deleteManagedFolderSettings, @@ -916,6 +946,9 @@ protected Builder(StorageControlStubSettings settings) { listFoldersSettings = settings.listFoldersSettings.toBuilder(); renameFolderSettings = settings.renameFolderSettings.toBuilder(); renameFolderOperationSettings = settings.renameFolderOperationSettings.toBuilder(); + deleteFolderRecursiveSettings = settings.deleteFolderRecursiveSettings.toBuilder(); + deleteFolderRecursiveOperationSettings = + settings.deleteFolderRecursiveOperationSettings.toBuilder(); getStorageLayoutSettings = settings.getStorageLayoutSettings.toBuilder(); createManagedFolderSettings = settings.createManagedFolderSettings.toBuilder(); deleteManagedFolderSettings = settings.deleteManagedFolderSettings.toBuilder(); @@ -955,6 +988,7 @@ protected Builder(StorageControlStubSettings settings) { getFolderSettings, listFoldersSettings, renameFolderSettings, + deleteFolderRecursiveSettings, getStorageLayoutSettings, createManagedFolderSettings, deleteManagedFolderSettings, @@ -1028,6 +1062,11 @@ private static Builder initDefaults(Builder builder) { .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); + builder + .deleteFolderRecursiveSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); + builder .getStorageLayoutSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) @@ -1157,6 +1196,31 @@ private static Builder initDefaults(Builder builder) { .setTotalTimeoutDuration(Duration.ofMillis(300000L)) .build())); + builder + .deleteFolderRecursiveOperationSettings() + .setInitialCallSettings( + UnaryCallSettings + .newUnaryCallSettingsBuilder() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")) + .build()) + .setResponseTransformer( + ProtoOperationTransformers.ResponseTransformer.create(Empty.class)) + .setMetadataTransformer( + ProtoOperationTransformers.MetadataTransformer.create( + DeleteFolderRecursiveMetadata.class)) + .setPollingAlgorithm( + OperationTimedPollAlgorithm.create( + RetrySettings.newBuilder() + .setInitialRetryDelayDuration(Duration.ofMillis(5000L)) + .setRetryDelayMultiplier(1.5) + .setMaxRetryDelayDuration(Duration.ofMillis(45000L)) + .setInitialRpcTimeoutDuration(Duration.ZERO) + .setRpcTimeoutMultiplier(1.0) + .setMaxRpcTimeoutDuration(Duration.ZERO) + .setTotalTimeoutDuration(Duration.ofMillis(300000L)) + .build())); + builder .createAnywhereCacheOperationSettings() .setInitialCallSettings( @@ -1258,6 +1322,19 @@ public UnaryCallSettings.Builder renameFolderSet return renameFolderOperationSettings; } + /** Returns the builder for the settings used for calls to deleteFolderRecursive. */ + public UnaryCallSettings.Builder + deleteFolderRecursiveSettings() { + return deleteFolderRecursiveSettings; + } + + /** Returns the builder for the settings used for calls to deleteFolderRecursive. */ + public OperationCallSettings.Builder< + DeleteFolderRecursiveRequest, Empty, DeleteFolderRecursiveMetadata> + deleteFolderRecursiveOperationSettings() { + return deleteFolderRecursiveOperationSettings; + } + /** Returns the builder for the settings used for calls to getStorageLayout. */ public UnaryCallSettings.Builder getStorageLayoutSettings() { diff --git a/google-cloud-storage-control/src/main/resources/META-INF/native-image/com.google.storage.control.v2/reflect-config.json b/google-cloud-storage-control/src/main/resources/META-INF/native-image/com.google.storage.control.v2/reflect-config.json index 057c6226af..10825b5511 100644 --- a/google-cloud-storage-control/src/main/resources/META-INF/native-image/com.google.storage.control.v2/reflect-config.json +++ b/google-cloud-storage-control/src/main/resources/META-INF/native-image/com.google.storage.control.v2/reflect-config.json @@ -1889,6 +1889,42 @@ "allDeclaredClasses": true, "allPublicClasses": true }, + { + "name": "com.google.storage.control.v2.DeleteFolderRecursiveMetadata", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.storage.control.v2.DeleteFolderRecursiveMetadata$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.storage.control.v2.DeleteFolderRecursiveRequest", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.storage.control.v2.DeleteFolderRecursiveRequest$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, { "name": "com.google.storage.control.v2.DeleteFolderRequest", "queryAllDeclaredConstructors": true, diff --git a/google-cloud-storage-control/src/main/resources/com/google/storage/control/v2/gapic_metadata.json b/google-cloud-storage-control/src/main/resources/com/google/storage/control/v2/gapic_metadata.json index f86f4c1c4b..0ca951cf14 100644 --- a/google-cloud-storage-control/src/main/resources/com/google/storage/control/v2/gapic_metadata.json +++ b/google-cloud-storage-control/src/main/resources/com/google/storage/control/v2/gapic_metadata.json @@ -22,6 +22,9 @@ "DeleteFolder": { "methods": ["deleteFolder", "deleteFolder", "deleteFolder", "deleteFolderCallable"] }, + "DeleteFolderRecursive": { + "methods": ["deleteFolderRecursiveAsync", "deleteFolderRecursiveAsync", "deleteFolderRecursiveAsync", "deleteFolderRecursiveOperationCallable", "deleteFolderRecursiveCallable"] + }, "DeleteManagedFolder": { "methods": ["deleteManagedFolder", "deleteManagedFolder", "deleteManagedFolder", "deleteManagedFolderCallable"] }, diff --git a/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/MockStorageControlImpl.java b/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/MockStorageControlImpl.java index 0ed42b335b..83ad040c02 100644 --- a/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/MockStorageControlImpl.java +++ b/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/MockStorageControlImpl.java @@ -167,6 +167,28 @@ public void renameFolder( } } + @Override + public void deleteFolderRecursive( + DeleteFolderRecursiveRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof Operation) { + requests.add(request); + responseObserver.onNext(((Operation) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method DeleteFolderRecursive, expected %s or" + + " %s", + response == null ? "null" : response.getClass().getName(), + Operation.class.getName(), + Exception.class.getName()))); + } + } + @Override public void getStorageLayout( GetStorageLayoutRequest request, StreamObserver responseObserver) { diff --git a/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/StorageControlClientHttpJsonTest.java b/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/StorageControlClientHttpJsonTest.java index f8570a4be3..953fa9b1ee 100644 --- a/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/StorageControlClientHttpJsonTest.java +++ b/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/StorageControlClientHttpJsonTest.java @@ -103,6 +103,12 @@ public void renameFolderUnsupportedMethodTest() throws Exception { // This empty test is generated for technical reasons. } + @Test + public void deleteFolderRecursiveUnsupportedMethodTest() throws Exception { + // The deleteFolderRecursive() method is not supported in REST transport. + // This empty test is generated for technical reasons. + } + @Test public void getStorageLayoutUnsupportedMethodTest() throws Exception { // The getStorageLayout() method is not supported in REST transport. diff --git a/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/StorageControlClientTest.java b/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/StorageControlClientTest.java index adf6978f8c..1a158bdcc8 100644 --- a/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/StorageControlClientTest.java +++ b/google-cloud-storage-control/src/test/java/com/google/storage/control/v2/StorageControlClientTest.java @@ -540,6 +540,92 @@ public void renameFolderExceptionTest2() throws Exception { } } + @Test + public void deleteFolderRecursiveTest() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); + Operation resultOperation = + Operation.newBuilder() + .setName("deleteFolderRecursiveTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockStorageControl.addResponse(resultOperation); + + FolderName name = FolderName.of("[PROJECT]", "[BUCKET]", "[FOLDER]"); + + client.deleteFolderRecursiveAsync(name).get(); + + List actualRequests = mockStorageControl.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DeleteFolderRecursiveRequest actualRequest = + ((DeleteFolderRecursiveRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void deleteFolderRecursiveExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorageControl.addException(exception); + + try { + FolderName name = FolderName.of("[PROJECT]", "[BUCKET]", "[FOLDER]"); + client.deleteFolderRecursiveAsync(name).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + + @Test + public void deleteFolderRecursiveTest2() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); + Operation resultOperation = + Operation.newBuilder() + .setName("deleteFolderRecursiveTest") + .setDone(true) + .setResponse(Any.pack(expectedResponse)) + .build(); + mockStorageControl.addResponse(resultOperation); + + String name = "name3373707"; + + client.deleteFolderRecursiveAsync(name).get(); + + List actualRequests = mockStorageControl.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DeleteFolderRecursiveRequest actualRequest = + ((DeleteFolderRecursiveRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void deleteFolderRecursiveExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorageControl.addException(exception); + + try { + String name = "name3373707"; + client.deleteFolderRecursiveAsync(name).get(); + Assert.fail("No exception raised"); + } catch (ExecutionException e) { + Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + @Test public void getStorageLayoutTest() throws Exception { StorageLayout expectedResponse = diff --git a/grpc-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/StorageControlGrpc.java b/grpc-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/StorageControlGrpc.java index 453bd23c6c..c584ce15f7 100644 --- a/grpc-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/StorageControlGrpc.java +++ b/grpc-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/StorageControlGrpc.java @@ -249,6 +249,55 @@ private StorageControlGrpc() {} return getRenameFolderMethod; } + private static volatile io.grpc.MethodDescriptor< + com.google.storage.control.v2.DeleteFolderRecursiveRequest, + com.google.longrunning.Operation> + getDeleteFolderRecursiveMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "DeleteFolderRecursive", + requestType = com.google.storage.control.v2.DeleteFolderRecursiveRequest.class, + responseType = com.google.longrunning.Operation.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor< + com.google.storage.control.v2.DeleteFolderRecursiveRequest, + com.google.longrunning.Operation> + getDeleteFolderRecursiveMethod() { + io.grpc.MethodDescriptor< + com.google.storage.control.v2.DeleteFolderRecursiveRequest, + com.google.longrunning.Operation> + getDeleteFolderRecursiveMethod; + if ((getDeleteFolderRecursiveMethod = StorageControlGrpc.getDeleteFolderRecursiveMethod) + == null) { + synchronized (StorageControlGrpc.class) { + if ((getDeleteFolderRecursiveMethod = StorageControlGrpc.getDeleteFolderRecursiveMethod) + == null) { + StorageControlGrpc.getDeleteFolderRecursiveMethod = + getDeleteFolderRecursiveMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName( + generateFullMethodName(SERVICE_NAME, "DeleteFolderRecursive")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.storage.control.v2.DeleteFolderRecursiveRequest + .getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.longrunning.Operation.getDefaultInstance())) + .setSchemaDescriptor( + new StorageControlMethodDescriptorSupplier("DeleteFolderRecursive")) + .build(); + } + } + } + return getDeleteFolderRecursiveMethod; + } + private static volatile io.grpc.MethodDescriptor< com.google.storage.control.v2.GetStorageLayoutRequest, com.google.storage.control.v2.StorageLayout> @@ -1397,6 +1446,21 @@ default void renameFolder( getRenameFolderMethod(), responseObserver); } + /** + * + * + *
+     * Deletes a folder recursively. This operation is only applicable to a
+     * hierarchical namespace enabled bucket.
+     * 
+ */ + default void deleteFolderRecursive( + com.google.storage.control.v2.DeleteFolderRecursiveRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall( + getDeleteFolderRecursiveMethod(), responseObserver); + } + /** * * @@ -1839,6 +1903,23 @@ public void renameFolder( responseObserver); } + /** + * + * + *
+     * Deletes a folder recursively. This operation is only applicable to a
+     * hierarchical namespace enabled bucket.
+     * 
+ */ + public void deleteFolderRecursive( + com.google.storage.control.v2.DeleteFolderRecursiveRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getDeleteFolderRecursiveMethod(), getCallOptions()), + request, + responseObserver); + } + /** * * @@ -2294,6 +2375,21 @@ public com.google.longrunning.Operation renameFolder( getChannel(), getRenameFolderMethod(), getCallOptions(), request); } + /** + * + * + *
+     * Deletes a folder recursively. This operation is only applicable to a
+     * hierarchical namespace enabled bucket.
+     * 
+ */ + public com.google.longrunning.Operation deleteFolderRecursive( + com.google.storage.control.v2.DeleteFolderRecursiveRequest request) + throws io.grpc.StatusException { + return io.grpc.stub.ClientCalls.blockingV2UnaryCall( + getChannel(), getDeleteFolderRecursiveMethod(), getCallOptions(), request); + } + /** * * @@ -2695,6 +2791,20 @@ public com.google.longrunning.Operation renameFolder( getChannel(), getRenameFolderMethod(), getCallOptions(), request); } + /** + * + * + *
+     * Deletes a folder recursively. This operation is only applicable to a
+     * hierarchical namespace enabled bucket.
+     * 
+ */ + public com.google.longrunning.Operation deleteFolderRecursive( + com.google.storage.control.v2.DeleteFolderRecursiveRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getDeleteFolderRecursiveMethod(), getCallOptions(), request); + } + /** * * @@ -3077,6 +3187,20 @@ protected StorageControlFutureStub build( getChannel().newCall(getRenameFolderMethod(), getCallOptions()), request); } + /** + * + * + *
+     * Deletes a folder recursively. This operation is only applicable to a
+     * hierarchical namespace enabled bucket.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture + deleteFolderRecursive(com.google.storage.control.v2.DeleteFolderRecursiveRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getDeleteFolderRecursiveMethod(), getCallOptions()), request); + } + /** * * @@ -3400,27 +3524,28 @@ protected StorageControlFutureStub build( private static final int METHODID_GET_FOLDER = 2; private static final int METHODID_LIST_FOLDERS = 3; private static final int METHODID_RENAME_FOLDER = 4; - private static final int METHODID_GET_STORAGE_LAYOUT = 5; - private static final int METHODID_CREATE_MANAGED_FOLDER = 6; - private static final int METHODID_DELETE_MANAGED_FOLDER = 7; - private static final int METHODID_GET_MANAGED_FOLDER = 8; - private static final int METHODID_LIST_MANAGED_FOLDERS = 9; - private static final int METHODID_CREATE_ANYWHERE_CACHE = 10; - private static final int METHODID_UPDATE_ANYWHERE_CACHE = 11; - private static final int METHODID_DISABLE_ANYWHERE_CACHE = 12; - private static final int METHODID_PAUSE_ANYWHERE_CACHE = 13; - private static final int METHODID_RESUME_ANYWHERE_CACHE = 14; - private static final int METHODID_GET_ANYWHERE_CACHE = 15; - private static final int METHODID_LIST_ANYWHERE_CACHES = 16; - private static final int METHODID_GET_PROJECT_INTELLIGENCE_CONFIG = 17; - private static final int METHODID_UPDATE_PROJECT_INTELLIGENCE_CONFIG = 18; - private static final int METHODID_GET_FOLDER_INTELLIGENCE_CONFIG = 19; - private static final int METHODID_UPDATE_FOLDER_INTELLIGENCE_CONFIG = 20; - private static final int METHODID_GET_ORGANIZATION_INTELLIGENCE_CONFIG = 21; - private static final int METHODID_UPDATE_ORGANIZATION_INTELLIGENCE_CONFIG = 22; - private static final int METHODID_GET_IAM_POLICY = 23; - private static final int METHODID_SET_IAM_POLICY = 24; - private static final int METHODID_TEST_IAM_PERMISSIONS = 25; + private static final int METHODID_DELETE_FOLDER_RECURSIVE = 5; + private static final int METHODID_GET_STORAGE_LAYOUT = 6; + private static final int METHODID_CREATE_MANAGED_FOLDER = 7; + private static final int METHODID_DELETE_MANAGED_FOLDER = 8; + private static final int METHODID_GET_MANAGED_FOLDER = 9; + private static final int METHODID_LIST_MANAGED_FOLDERS = 10; + private static final int METHODID_CREATE_ANYWHERE_CACHE = 11; + private static final int METHODID_UPDATE_ANYWHERE_CACHE = 12; + private static final int METHODID_DISABLE_ANYWHERE_CACHE = 13; + private static final int METHODID_PAUSE_ANYWHERE_CACHE = 14; + private static final int METHODID_RESUME_ANYWHERE_CACHE = 15; + private static final int METHODID_GET_ANYWHERE_CACHE = 16; + private static final int METHODID_LIST_ANYWHERE_CACHES = 17; + private static final int METHODID_GET_PROJECT_INTELLIGENCE_CONFIG = 18; + private static final int METHODID_UPDATE_PROJECT_INTELLIGENCE_CONFIG = 19; + private static final int METHODID_GET_FOLDER_INTELLIGENCE_CONFIG = 20; + private static final int METHODID_UPDATE_FOLDER_INTELLIGENCE_CONFIG = 21; + private static final int METHODID_GET_ORGANIZATION_INTELLIGENCE_CONFIG = 22; + private static final int METHODID_UPDATE_ORGANIZATION_INTELLIGENCE_CONFIG = 23; + private static final int METHODID_GET_IAM_POLICY = 24; + private static final int METHODID_SET_IAM_POLICY = 25; + private static final int METHODID_TEST_IAM_PERMISSIONS = 26; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -3465,6 +3590,11 @@ public void invoke(Req request, io.grpc.stub.StreamObserver responseObserv (com.google.storage.control.v2.RenameFolderRequest) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_DELETE_FOLDER_RECURSIVE: + serviceImpl.deleteFolderRecursive( + (com.google.storage.control.v2.DeleteFolderRecursiveRequest) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; case METHODID_GET_STORAGE_LAYOUT: serviceImpl.getStorageLayout( (com.google.storage.control.v2.GetStorageLayoutRequest) request, @@ -3637,6 +3767,12 @@ public static final io.grpc.ServerServiceDefinition bindService(AsyncService ser new MethodHandlers< com.google.storage.control.v2.RenameFolderRequest, com.google.longrunning.Operation>(service, METHODID_RENAME_FOLDER))) + .addMethod( + getDeleteFolderRecursiveMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.storage.control.v2.DeleteFolderRecursiveRequest, + com.google.longrunning.Operation>(service, METHODID_DELETE_FOLDER_RECURSIVE))) .addMethod( getGetStorageLayoutMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall( @@ -3833,6 +3969,7 @@ public static io.grpc.ServiceDescriptor getServiceDescriptor() { .addMethod(getGetFolderMethod()) .addMethod(getListFoldersMethod()) .addMethod(getRenameFolderMethod()) + .addMethod(getDeleteFolderRecursiveMethod()) .addMethod(getGetStorageLayoutMethod()) .addMethod(getCreateManagedFolderMethod()) .addMethod(getDeleteManagedFolderMethod()) diff --git a/grpc-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageGrpc.java b/grpc-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageGrpc.java index 90065e3c1c..e3eb0230fc 100644 --- a/grpc-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageGrpc.java +++ b/grpc-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageGrpc.java @@ -1482,13 +1482,12 @@ default void readObject( * *
      * Reads an object's data.
-     * This bi-directional API reads data from an object, allowing you to
-     * request multiple data ranges within a single stream, even across
-     * several messages. If an error occurs with any request, the stream
-     * closes with a relevant error code. Since you can have multiple
-     * outstanding requests, the error response includes a
-     * `BidiReadObjectRangesError` field detailing the specific error for
-     * each pending `read_id`.
+     * This bi-directional API reads data from an object, allowing you to request
+     * multiple data ranges within a single stream, even across several messages.
+     * If an error occurs with any request, the stream closes with a relevant
+     * error code. Since you can have multiple outstanding requests, the error
+     * response includes a `BidiReadObjectError` proto in its `details` field,
+     * reporting the specific error, if any, for each pending `read_id`.
      * **IAM Permissions**:
      * Requires `storage.objects.get` IAM permission on the bucket.
      * 
@@ -2180,13 +2179,12 @@ public void readObject( * *
      * Reads an object's data.
-     * This bi-directional API reads data from an object, allowing you to
-     * request multiple data ranges within a single stream, even across
-     * several messages. If an error occurs with any request, the stream
-     * closes with a relevant error code. Since you can have multiple
-     * outstanding requests, the error response includes a
-     * `BidiReadObjectRangesError` field detailing the specific error for
-     * each pending `read_id`.
+     * This bi-directional API reads data from an object, allowing you to request
+     * multiple data ranges within a single stream, even across several messages.
+     * If an error occurs with any request, the stream closes with a relevant
+     * error code. Since you can have multiple outstanding requests, the error
+     * response includes a `BidiReadObjectError` proto in its `details` field,
+     * reporting the specific error, if any, for each pending `read_id`.
      * **IAM Permissions**:
      * Requires `storage.objects.get` IAM permission on the bucket.
      * 
@@ -2817,13 +2815,12 @@ public io.grpc.stub.BlockingClientCall * Reads an object's data. - * This bi-directional API reads data from an object, allowing you to - * request multiple data ranges within a single stream, even across - * several messages. If an error occurs with any request, the stream - * closes with a relevant error code. Since you can have multiple - * outstanding requests, the error response includes a - * `BidiReadObjectRangesError` field detailing the specific error for - * each pending `read_id`. + * This bi-directional API reads data from an object, allowing you to request + * multiple data ranges within a single stream, even across several messages. + * If an error occurs with any request, the stream closes with a relevant + * error code. Since you can have multiple outstanding requests, the error + * response includes a `BidiReadObjectError` proto in its `details` field, + * reporting the specific error, if any, for each pending `read_id`. * **IAM Permissions**: * Requires `storage.objects.get` IAM permission on the bucket. * diff --git a/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveMetadata.java b/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveMetadata.java new file mode 100644 index 0000000000..87699507d1 --- /dev/null +++ b/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveMetadata.java @@ -0,0 +1,909 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: google/storage/control/v2/storage_control.proto +// Protobuf Java Version: 4.33.2 + +package com.google.storage.control.v2; + +/** + * + * + *
+ * Message returned in the metadata field of the Operation resource for
+ * DeleteFolderRecursive operations.
+ * 
+ * + * Protobuf type {@code google.storage.control.v2.DeleteFolderRecursiveMetadata} + */ +@com.google.protobuf.Generated +public final class DeleteFolderRecursiveMetadata extends com.google.protobuf.GeneratedMessage + implements + // @@protoc_insertion_point(message_implements:google.storage.control.v2.DeleteFolderRecursiveMetadata) + DeleteFolderRecursiveMetadataOrBuilder { + private static final long serialVersionUID = 0L; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 2, + /* suffix= */ "", + "DeleteFolderRecursiveMetadata"); + } + + // Use DeleteFolderRecursiveMetadata.newBuilder() to construct. + private DeleteFolderRecursiveMetadata(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + + private DeleteFolderRecursiveMetadata() { + folderId_ = ""; + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.storage.control.v2.StorageControlProto + .internal_static_google_storage_control_v2_DeleteFolderRecursiveMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.storage.control.v2.StorageControlProto + .internal_static_google_storage_control_v2_DeleteFolderRecursiveMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.storage.control.v2.DeleteFolderRecursiveMetadata.class, + com.google.storage.control.v2.DeleteFolderRecursiveMetadata.Builder.class); + } + + private int bitField0_; + public static final int COMMON_METADATA_FIELD_NUMBER = 1; + private com.google.storage.control.v2.CommonLongRunningOperationMetadata commonMetadata_; + + /** + * + * + *
+   * Generic metadata for the long running operation.
+   * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + * @return Whether the commonMetadata field is set. + */ + @java.lang.Override + public boolean hasCommonMetadata() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+   * Generic metadata for the long running operation.
+   * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + * @return The commonMetadata. + */ + @java.lang.Override + public com.google.storage.control.v2.CommonLongRunningOperationMetadata getCommonMetadata() { + return commonMetadata_ == null + ? com.google.storage.control.v2.CommonLongRunningOperationMetadata.getDefaultInstance() + : commonMetadata_; + } + + /** + * + * + *
+   * Generic metadata for the long running operation.
+   * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + */ + @java.lang.Override + public com.google.storage.control.v2.CommonLongRunningOperationMetadataOrBuilder + getCommonMetadataOrBuilder() { + return commonMetadata_ == null + ? com.google.storage.control.v2.CommonLongRunningOperationMetadata.getDefaultInstance() + : commonMetadata_; + } + + public static final int FOLDER_ID_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private volatile java.lang.Object folderId_ = ""; + + /** + * + * + *
+   * The path of the folder recursively deleted.
+   * 
+ * + * string folder_id = 2; + * + * @return The folderId. + */ + @java.lang.Override + public java.lang.String getFolderId() { + java.lang.Object ref = folderId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + folderId_ = s; + return s; + } + } + + /** + * + * + *
+   * The path of the folder recursively deleted.
+   * 
+ * + * string folder_id = 2; + * + * @return The bytes for folderId. + */ + @java.lang.Override + public com.google.protobuf.ByteString getFolderIdBytes() { + java.lang.Object ref = folderId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + folderId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getCommonMetadata()); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(folderId_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, folderId_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getCommonMetadata()); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(folderId_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, folderId_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.storage.control.v2.DeleteFolderRecursiveMetadata)) { + return super.equals(obj); + } + com.google.storage.control.v2.DeleteFolderRecursiveMetadata other = + (com.google.storage.control.v2.DeleteFolderRecursiveMetadata) obj; + + if (hasCommonMetadata() != other.hasCommonMetadata()) return false; + if (hasCommonMetadata()) { + if (!getCommonMetadata().equals(other.getCommonMetadata())) return false; + } + if (!getFolderId().equals(other.getFolderId())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasCommonMetadata()) { + hash = (37 * hash) + COMMON_METADATA_FIELD_NUMBER; + hash = (53 * hash) + getCommonMetadata().hashCode(); + } + hash = (37 * hash) + FOLDER_ID_FIELD_NUMBER; + hash = (53 * hash) + getFolderId().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.storage.control.v2.DeleteFolderRecursiveMetadata prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+   * Message returned in the metadata field of the Operation resource for
+   * DeleteFolderRecursive operations.
+   * 
+ * + * Protobuf type {@code google.storage.control.v2.DeleteFolderRecursiveMetadata} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder + implements + // @@protoc_insertion_point(builder_implements:google.storage.control.v2.DeleteFolderRecursiveMetadata) + com.google.storage.control.v2.DeleteFolderRecursiveMetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.storage.control.v2.StorageControlProto + .internal_static_google_storage_control_v2_DeleteFolderRecursiveMetadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.storage.control.v2.StorageControlProto + .internal_static_google_storage_control_v2_DeleteFolderRecursiveMetadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.storage.control.v2.DeleteFolderRecursiveMetadata.class, + com.google.storage.control.v2.DeleteFolderRecursiveMetadata.Builder.class); + } + + // Construct using com.google.storage.control.v2.DeleteFolderRecursiveMetadata.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + internalGetCommonMetadataFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + commonMetadata_ = null; + if (commonMetadataBuilder_ != null) { + commonMetadataBuilder_.dispose(); + commonMetadataBuilder_ = null; + } + folderId_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.storage.control.v2.StorageControlProto + .internal_static_google_storage_control_v2_DeleteFolderRecursiveMetadata_descriptor; + } + + @java.lang.Override + public com.google.storage.control.v2.DeleteFolderRecursiveMetadata getDefaultInstanceForType() { + return com.google.storage.control.v2.DeleteFolderRecursiveMetadata.getDefaultInstance(); + } + + @java.lang.Override + public com.google.storage.control.v2.DeleteFolderRecursiveMetadata build() { + com.google.storage.control.v2.DeleteFolderRecursiveMetadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.storage.control.v2.DeleteFolderRecursiveMetadata buildPartial() { + com.google.storage.control.v2.DeleteFolderRecursiveMetadata result = + new com.google.storage.control.v2.DeleteFolderRecursiveMetadata(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.storage.control.v2.DeleteFolderRecursiveMetadata result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.commonMetadata_ = + commonMetadataBuilder_ == null ? commonMetadata_ : commonMetadataBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.folderId_ = folderId_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.storage.control.v2.DeleteFolderRecursiveMetadata) { + return mergeFrom((com.google.storage.control.v2.DeleteFolderRecursiveMetadata) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.storage.control.v2.DeleteFolderRecursiveMetadata other) { + if (other == com.google.storage.control.v2.DeleteFolderRecursiveMetadata.getDefaultInstance()) + return this; + if (other.hasCommonMetadata()) { + mergeCommonMetadata(other.getCommonMetadata()); + } + if (!other.getFolderId().isEmpty()) { + folderId_ = other.folderId_; + bitField0_ |= 0x00000002; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage( + internalGetCommonMetadataFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + folderId_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private com.google.storage.control.v2.CommonLongRunningOperationMetadata commonMetadata_; + private com.google.protobuf.SingleFieldBuilder< + com.google.storage.control.v2.CommonLongRunningOperationMetadata, + com.google.storage.control.v2.CommonLongRunningOperationMetadata.Builder, + com.google.storage.control.v2.CommonLongRunningOperationMetadataOrBuilder> + commonMetadataBuilder_; + + /** + * + * + *
+     * Generic metadata for the long running operation.
+     * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + * + * @return Whether the commonMetadata field is set. + */ + public boolean hasCommonMetadata() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+     * Generic metadata for the long running operation.
+     * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + * + * @return The commonMetadata. + */ + public com.google.storage.control.v2.CommonLongRunningOperationMetadata getCommonMetadata() { + if (commonMetadataBuilder_ == null) { + return commonMetadata_ == null + ? com.google.storage.control.v2.CommonLongRunningOperationMetadata.getDefaultInstance() + : commonMetadata_; + } else { + return commonMetadataBuilder_.getMessage(); + } + } + + /** + * + * + *
+     * Generic metadata for the long running operation.
+     * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + */ + public Builder setCommonMetadata( + com.google.storage.control.v2.CommonLongRunningOperationMetadata value) { + if (commonMetadataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + commonMetadata_ = value; + } else { + commonMetadataBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+     * Generic metadata for the long running operation.
+     * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + */ + public Builder setCommonMetadata( + com.google.storage.control.v2.CommonLongRunningOperationMetadata.Builder builderForValue) { + if (commonMetadataBuilder_ == null) { + commonMetadata_ = builderForValue.build(); + } else { + commonMetadataBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+     * Generic metadata for the long running operation.
+     * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + */ + public Builder mergeCommonMetadata( + com.google.storage.control.v2.CommonLongRunningOperationMetadata value) { + if (commonMetadataBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) + && commonMetadata_ != null + && commonMetadata_ + != com.google.storage.control.v2.CommonLongRunningOperationMetadata + .getDefaultInstance()) { + getCommonMetadataBuilder().mergeFrom(value); + } else { + commonMetadata_ = value; + } + } else { + commonMetadataBuilder_.mergeFrom(value); + } + if (commonMetadata_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + + /** + * + * + *
+     * Generic metadata for the long running operation.
+     * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + */ + public Builder clearCommonMetadata() { + bitField0_ = (bitField0_ & ~0x00000001); + commonMetadata_ = null; + if (commonMetadataBuilder_ != null) { + commonMetadataBuilder_.dispose(); + commonMetadataBuilder_ = null; + } + onChanged(); + return this; + } + + /** + * + * + *
+     * Generic metadata for the long running operation.
+     * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + */ + public com.google.storage.control.v2.CommonLongRunningOperationMetadata.Builder + getCommonMetadataBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return internalGetCommonMetadataFieldBuilder().getBuilder(); + } + + /** + * + * + *
+     * Generic metadata for the long running operation.
+     * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + */ + public com.google.storage.control.v2.CommonLongRunningOperationMetadataOrBuilder + getCommonMetadataOrBuilder() { + if (commonMetadataBuilder_ != null) { + return commonMetadataBuilder_.getMessageOrBuilder(); + } else { + return commonMetadata_ == null + ? com.google.storage.control.v2.CommonLongRunningOperationMetadata.getDefaultInstance() + : commonMetadata_; + } + } + + /** + * + * + *
+     * Generic metadata for the long running operation.
+     * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + */ + private com.google.protobuf.SingleFieldBuilder< + com.google.storage.control.v2.CommonLongRunningOperationMetadata, + com.google.storage.control.v2.CommonLongRunningOperationMetadata.Builder, + com.google.storage.control.v2.CommonLongRunningOperationMetadataOrBuilder> + internalGetCommonMetadataFieldBuilder() { + if (commonMetadataBuilder_ == null) { + commonMetadataBuilder_ = + new com.google.protobuf.SingleFieldBuilder< + com.google.storage.control.v2.CommonLongRunningOperationMetadata, + com.google.storage.control.v2.CommonLongRunningOperationMetadata.Builder, + com.google.storage.control.v2.CommonLongRunningOperationMetadataOrBuilder>( + getCommonMetadata(), getParentForChildren(), isClean()); + commonMetadata_ = null; + } + return commonMetadataBuilder_; + } + + private java.lang.Object folderId_ = ""; + + /** + * + * + *
+     * The path of the folder recursively deleted.
+     * 
+ * + * string folder_id = 2; + * + * @return The folderId. + */ + public java.lang.String getFolderId() { + java.lang.Object ref = folderId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + folderId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+     * The path of the folder recursively deleted.
+     * 
+ * + * string folder_id = 2; + * + * @return The bytes for folderId. + */ + public com.google.protobuf.ByteString getFolderIdBytes() { + java.lang.Object ref = folderId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + folderId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+     * The path of the folder recursively deleted.
+     * 
+ * + * string folder_id = 2; + * + * @param value The folderId to set. + * @return This builder for chaining. + */ + public Builder setFolderId(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + folderId_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * + * + *
+     * The path of the folder recursively deleted.
+     * 
+ * + * string folder_id = 2; + * + * @return This builder for chaining. + */ + public Builder clearFolderId() { + folderId_ = getDefaultInstance().getFolderId(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + + /** + * + * + *
+     * The path of the folder recursively deleted.
+     * 
+ * + * string folder_id = 2; + * + * @param value The bytes for folderId to set. + * @return This builder for chaining. + */ + public Builder setFolderIdBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + folderId_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:google.storage.control.v2.DeleteFolderRecursiveMetadata) + } + + // @@protoc_insertion_point(class_scope:google.storage.control.v2.DeleteFolderRecursiveMetadata) + private static final com.google.storage.control.v2.DeleteFolderRecursiveMetadata DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.storage.control.v2.DeleteFolderRecursiveMetadata(); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveMetadata getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DeleteFolderRecursiveMetadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.storage.control.v2.DeleteFolderRecursiveMetadata getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveMetadataOrBuilder.java b/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveMetadataOrBuilder.java new file mode 100644 index 0000000000..117d2df0e3 --- /dev/null +++ b/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveMetadataOrBuilder.java @@ -0,0 +1,92 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: google/storage/control/v2/storage_control.proto +// Protobuf Java Version: 4.33.2 + +package com.google.storage.control.v2; + +@com.google.protobuf.Generated +public interface DeleteFolderRecursiveMetadataOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.storage.control.v2.DeleteFolderRecursiveMetadata) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Generic metadata for the long running operation.
+   * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + * @return Whether the commonMetadata field is set. + */ + boolean hasCommonMetadata(); + + /** + * + * + *
+   * Generic metadata for the long running operation.
+   * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + * + * @return The commonMetadata. + */ + com.google.storage.control.v2.CommonLongRunningOperationMetadata getCommonMetadata(); + + /** + * + * + *
+   * Generic metadata for the long running operation.
+   * 
+ * + * .google.storage.control.v2.CommonLongRunningOperationMetadata common_metadata = 1; + */ + com.google.storage.control.v2.CommonLongRunningOperationMetadataOrBuilder + getCommonMetadataOrBuilder(); + + /** + * + * + *
+   * The path of the folder recursively deleted.
+   * 
+ * + * string folder_id = 2; + * + * @return The folderId. + */ + java.lang.String getFolderId(); + + /** + * + * + *
+   * The path of the folder recursively deleted.
+   * 
+ * + * string folder_id = 2; + * + * @return The bytes for folderId. + */ + com.google.protobuf.ByteString getFolderIdBytes(); +} diff --git a/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveRequest.java b/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveRequest.java new file mode 100644 index 0000000000..ac2a18d564 --- /dev/null +++ b/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveRequest.java @@ -0,0 +1,1136 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: google/storage/control/v2/storage_control.proto +// Protobuf Java Version: 4.33.2 + +package com.google.storage.control.v2; + +/** + * + * + *
+ * Request message for DeleteFolderRecursive.
+ * 
+ * + * Protobuf type {@code google.storage.control.v2.DeleteFolderRecursiveRequest} + */ +@com.google.protobuf.Generated +public final class DeleteFolderRecursiveRequest extends com.google.protobuf.GeneratedMessage + implements + // @@protoc_insertion_point(message_implements:google.storage.control.v2.DeleteFolderRecursiveRequest) + DeleteFolderRecursiveRequestOrBuilder { + private static final long serialVersionUID = 0L; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 2, + /* suffix= */ "", + "DeleteFolderRecursiveRequest"); + } + + // Use DeleteFolderRecursiveRequest.newBuilder() to construct. + private DeleteFolderRecursiveRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + + private DeleteFolderRecursiveRequest() { + name_ = ""; + requestId_ = ""; + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.storage.control.v2.StorageControlProto + .internal_static_google_storage_control_v2_DeleteFolderRecursiveRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.storage.control.v2.StorageControlProto + .internal_static_google_storage_control_v2_DeleteFolderRecursiveRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.storage.control.v2.DeleteFolderRecursiveRequest.class, + com.google.storage.control.v2.DeleteFolderRecursiveRequest.Builder.class); + } + + private int bitField0_; + public static final int NAME_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; + + /** + * + * + *
+   * Required. Name of the folder being deleted, however all of its contents
+   * will be deleted too. Format:
+   * `projects/{project}/buckets/{bucket}/folders/{folder}`
+   * 
+ * + * + * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + + /** + * + * + *
+   * Required. Name of the folder being deleted, however all of its contents
+   * will be deleted too. Format:
+   * `projects/{project}/buckets/{bucket}/folders/{folder}`
+   * 
+ * + * + * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IF_METAGENERATION_MATCH_FIELD_NUMBER = 2; + private long ifMetagenerationMatch_ = 0L; + + /** + * + * + *
+   * Optional. Makes the operation only succeed conditional on whether the root
+   * folder's current metageneration matches the given value.
+   * 
+ * + * optional int64 if_metageneration_match = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationMatch field is set. + */ + @java.lang.Override + public boolean hasIfMetagenerationMatch() { + return ((bitField0_ & 0x00000001) != 0); + } + + /** + * + * + *
+   * Optional. Makes the operation only succeed conditional on whether the root
+   * folder's current metageneration matches the given value.
+   * 
+ * + * optional int64 if_metageneration_match = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationMatch. + */ + @java.lang.Override + public long getIfMetagenerationMatch() { + return ifMetagenerationMatch_; + } + + public static final int IF_METAGENERATION_NOT_MATCH_FIELD_NUMBER = 3; + private long ifMetagenerationNotMatch_ = 0L; + + /** + * + * + *
+   * Optional. Makes the operation only succeed conditional on whether the root
+   * folder's current metageneration does not match the given value.
+   * 
+ * + * optional int64 if_metageneration_not_match = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationNotMatch field is set. + */ + @java.lang.Override + public boolean hasIfMetagenerationNotMatch() { + return ((bitField0_ & 0x00000002) != 0); + } + + /** + * + * + *
+   * Optional. Makes the operation only succeed conditional on whether the root
+   * folder's current metageneration does not match the given value.
+   * 
+ * + * optional int64 if_metageneration_not_match = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationNotMatch. + */ + @java.lang.Override + public long getIfMetagenerationNotMatch() { + return ifMetagenerationNotMatch_; + } + + public static final int REQUEST_ID_FIELD_NUMBER = 4; + + @SuppressWarnings("serial") + private volatile java.lang.Object requestId_ = ""; + + /** + * + * + *
+   * Optional. A unique identifier for this request. UUID is the recommended
+   * format, but other formats are still accepted.
+   * 
+ * + * + * string request_id = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.field_info) = { ... } + * + * + * @return The requestId. + */ + @java.lang.Override + public java.lang.String getRequestId() { + java.lang.Object ref = requestId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + requestId_ = s; + return s; + } + } + + /** + * + * + *
+   * Optional. A unique identifier for this request. UUID is the recommended
+   * format, but other formats are still accepted.
+   * 
+ * + * + * string request_id = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.field_info) = { ... } + * + * + * @return The bytes for requestId. + */ + @java.lang.Override + public com.google.protobuf.ByteString getRequestIdBytes() { + java.lang.Object ref = requestId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + requestId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, name_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeInt64(2, ifMetagenerationMatch_); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeInt64(3, ifMetagenerationNotMatch_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(requestId_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 4, requestId_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, name_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeInt64Size(2, ifMetagenerationMatch_); + } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeInt64Size(3, ifMetagenerationNotMatch_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(requestId_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(4, requestId_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.storage.control.v2.DeleteFolderRecursiveRequest)) { + return super.equals(obj); + } + com.google.storage.control.v2.DeleteFolderRecursiveRequest other = + (com.google.storage.control.v2.DeleteFolderRecursiveRequest) obj; + + if (!getName().equals(other.getName())) return false; + if (hasIfMetagenerationMatch() != other.hasIfMetagenerationMatch()) return false; + if (hasIfMetagenerationMatch()) { + if (getIfMetagenerationMatch() != other.getIfMetagenerationMatch()) return false; + } + if (hasIfMetagenerationNotMatch() != other.hasIfMetagenerationNotMatch()) return false; + if (hasIfMetagenerationNotMatch()) { + if (getIfMetagenerationNotMatch() != other.getIfMetagenerationNotMatch()) return false; + } + if (!getRequestId().equals(other.getRequestId())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + if (hasIfMetagenerationMatch()) { + hash = (37 * hash) + IF_METAGENERATION_MATCH_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getIfMetagenerationMatch()); + } + if (hasIfMetagenerationNotMatch()) { + hash = (37 * hash) + IF_METAGENERATION_NOT_MATCH_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getIfMetagenerationNotMatch()); + } + hash = (37 * hash) + REQUEST_ID_FIELD_NUMBER; + hash = (53 * hash) + getRequestId().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.storage.control.v2.DeleteFolderRecursiveRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * + * + *
+   * Request message for DeleteFolderRecursive.
+   * 
+ * + * Protobuf type {@code google.storage.control.v2.DeleteFolderRecursiveRequest} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder + implements + // @@protoc_insertion_point(builder_implements:google.storage.control.v2.DeleteFolderRecursiveRequest) + com.google.storage.control.v2.DeleteFolderRecursiveRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.storage.control.v2.StorageControlProto + .internal_static_google_storage_control_v2_DeleteFolderRecursiveRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.storage.control.v2.StorageControlProto + .internal_static_google_storage_control_v2_DeleteFolderRecursiveRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.storage.control.v2.DeleteFolderRecursiveRequest.class, + com.google.storage.control.v2.DeleteFolderRecursiveRequest.Builder.class); + } + + // Construct using com.google.storage.control.v2.DeleteFolderRecursiveRequest.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + name_ = ""; + ifMetagenerationMatch_ = 0L; + ifMetagenerationNotMatch_ = 0L; + requestId_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.storage.control.v2.StorageControlProto + .internal_static_google_storage_control_v2_DeleteFolderRecursiveRequest_descriptor; + } + + @java.lang.Override + public com.google.storage.control.v2.DeleteFolderRecursiveRequest getDefaultInstanceForType() { + return com.google.storage.control.v2.DeleteFolderRecursiveRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.google.storage.control.v2.DeleteFolderRecursiveRequest build() { + com.google.storage.control.v2.DeleteFolderRecursiveRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.storage.control.v2.DeleteFolderRecursiveRequest buildPartial() { + com.google.storage.control.v2.DeleteFolderRecursiveRequest result = + new com.google.storage.control.v2.DeleteFolderRecursiveRequest(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.storage.control.v2.DeleteFolderRecursiveRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.name_ = name_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.ifMetagenerationMatch_ = ifMetagenerationMatch_; + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.ifMetagenerationNotMatch_ = ifMetagenerationNotMatch_; + to_bitField0_ |= 0x00000002; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.requestId_ = requestId_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.storage.control.v2.DeleteFolderRecursiveRequest) { + return mergeFrom((com.google.storage.control.v2.DeleteFolderRecursiveRequest) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.storage.control.v2.DeleteFolderRecursiveRequest other) { + if (other == com.google.storage.control.v2.DeleteFolderRecursiveRequest.getDefaultInstance()) + return this; + if (!other.getName().isEmpty()) { + name_ = other.name_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.hasIfMetagenerationMatch()) { + setIfMetagenerationMatch(other.getIfMetagenerationMatch()); + } + if (other.hasIfMetagenerationNotMatch()) { + setIfMetagenerationNotMatch(other.getIfMetagenerationNotMatch()); + } + if (!other.getRequestId().isEmpty()) { + requestId_ = other.requestId_; + bitField0_ |= 0x00000008; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: + { + ifMetagenerationMatch_ = input.readInt64(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: + { + ifMetagenerationNotMatch_ = input.readInt64(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 34: + { + requestId_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } // case 34 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.lang.Object name_ = ""; + + /** + * + * + *
+     * Required. Name of the folder being deleted, however all of its contents
+     * will be deleted too. Format:
+     * `projects/{project}/buckets/{bucket}/folders/{folder}`
+     * 
+ * + * + * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+     * Required. Name of the folder being deleted, however all of its contents
+     * will be deleted too. Format:
+     * `projects/{project}/buckets/{bucket}/folders/{folder}`
+     * 
+ * + * + * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for name. + */ + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+     * Required. Name of the folder being deleted, however all of its contents
+     * will be deleted too. Format:
+     * `projects/{project}/buckets/{bucket}/folders/{folder}`
+     * 
+ * + * + * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + * + * + *
+     * Required. Name of the folder being deleted, however all of its contents
+     * will be deleted too. Format:
+     * `projects/{project}/buckets/{bucket}/folders/{folder}`
+     * 
+ * + * + * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return This builder for chaining. + */ + public Builder clearName() { + name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + + /** + * + * + *
+     * Required. Name of the folder being deleted, however all of its contents
+     * will be deleted too. Format:
+     * `projects/{project}/buckets/{bucket}/folders/{folder}`
+     * 
+ * + * + * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private long ifMetagenerationMatch_; + + /** + * + * + *
+     * Optional. Makes the operation only succeed conditional on whether the root
+     * folder's current metageneration matches the given value.
+     * 
+ * + * optional int64 if_metageneration_match = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationMatch field is set. + */ + @java.lang.Override + public boolean hasIfMetagenerationMatch() { + return ((bitField0_ & 0x00000002) != 0); + } + + /** + * + * + *
+     * Optional. Makes the operation only succeed conditional on whether the root
+     * folder's current metageneration matches the given value.
+     * 
+ * + * optional int64 if_metageneration_match = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationMatch. + */ + @java.lang.Override + public long getIfMetagenerationMatch() { + return ifMetagenerationMatch_; + } + + /** + * + * + *
+     * Optional. Makes the operation only succeed conditional on whether the root
+     * folder's current metageneration matches the given value.
+     * 
+ * + * optional int64 if_metageneration_match = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The ifMetagenerationMatch to set. + * @return This builder for chaining. + */ + public Builder setIfMetagenerationMatch(long value) { + + ifMetagenerationMatch_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + * + * + *
+     * Optional. Makes the operation only succeed conditional on whether the root
+     * folder's current metageneration matches the given value.
+     * 
+ * + * optional int64 if_metageneration_match = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearIfMetagenerationMatch() { + bitField0_ = (bitField0_ & ~0x00000002); + ifMetagenerationMatch_ = 0L; + onChanged(); + return this; + } + + private long ifMetagenerationNotMatch_; + + /** + * + * + *
+     * Optional. Makes the operation only succeed conditional on whether the root
+     * folder's current metageneration does not match the given value.
+     * 
+ * + * + * optional int64 if_metageneration_not_match = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationNotMatch field is set. + */ + @java.lang.Override + public boolean hasIfMetagenerationNotMatch() { + return ((bitField0_ & 0x00000004) != 0); + } + + /** + * + * + *
+     * Optional. Makes the operation only succeed conditional on whether the root
+     * folder's current metageneration does not match the given value.
+     * 
+ * + * + * optional int64 if_metageneration_not_match = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationNotMatch. + */ + @java.lang.Override + public long getIfMetagenerationNotMatch() { + return ifMetagenerationNotMatch_; + } + + /** + * + * + *
+     * Optional. Makes the operation only succeed conditional on whether the root
+     * folder's current metageneration does not match the given value.
+     * 
+ * + * + * optional int64 if_metageneration_not_match = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The ifMetagenerationNotMatch to set. + * @return This builder for chaining. + */ + public Builder setIfMetagenerationNotMatch(long value) { + + ifMetagenerationNotMatch_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + * + * + *
+     * Optional. Makes the operation only succeed conditional on whether the root
+     * folder's current metageneration does not match the given value.
+     * 
+ * + * + * optional int64 if_metageneration_not_match = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearIfMetagenerationNotMatch() { + bitField0_ = (bitField0_ & ~0x00000004); + ifMetagenerationNotMatch_ = 0L; + onChanged(); + return this; + } + + private java.lang.Object requestId_ = ""; + + /** + * + * + *
+     * Optional. A unique identifier for this request. UUID is the recommended
+     * format, but other formats are still accepted.
+     * 
+ * + * + * string request_id = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.field_info) = { ... } + * + * + * @return The requestId. + */ + public java.lang.String getRequestId() { + java.lang.Object ref = requestId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + requestId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + + /** + * + * + *
+     * Optional. A unique identifier for this request. UUID is the recommended
+     * format, but other formats are still accepted.
+     * 
+ * + * + * string request_id = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.field_info) = { ... } + * + * + * @return The bytes for requestId. + */ + public com.google.protobuf.ByteString getRequestIdBytes() { + java.lang.Object ref = requestId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + requestId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + * + * + *
+     * Optional. A unique identifier for this request. UUID is the recommended
+     * format, but other formats are still accepted.
+     * 
+ * + * + * string request_id = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.field_info) = { ... } + * + * + * @param value The requestId to set. + * @return This builder for chaining. + */ + public Builder setRequestId(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + requestId_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + /** + * + * + *
+     * Optional. A unique identifier for this request. UUID is the recommended
+     * format, but other formats are still accepted.
+     * 
+ * + * + * string request_id = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.field_info) = { ... } + * + * + * @return This builder for chaining. + */ + public Builder clearRequestId() { + requestId_ = getDefaultInstance().getRequestId(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + return this; + } + + /** + * + * + *
+     * Optional. A unique identifier for this request. UUID is the recommended
+     * format, but other formats are still accepted.
+     * 
+ * + * + * string request_id = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.field_info) = { ... } + * + * + * @param value The bytes for requestId to set. + * @return This builder for chaining. + */ + public Builder setRequestIdBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + requestId_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:google.storage.control.v2.DeleteFolderRecursiveRequest) + } + + // @@protoc_insertion_point(class_scope:google.storage.control.v2.DeleteFolderRecursiveRequest) + private static final com.google.storage.control.v2.DeleteFolderRecursiveRequest DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.storage.control.v2.DeleteFolderRecursiveRequest(); + } + + public static com.google.storage.control.v2.DeleteFolderRecursiveRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DeleteFolderRecursiveRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.storage.control.v2.DeleteFolderRecursiveRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveRequestOrBuilder.java b/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveRequestOrBuilder.java new file mode 100644 index 0000000000..4c06a0c04a --- /dev/null +++ b/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/DeleteFolderRecursiveRequestOrBuilder.java @@ -0,0 +1,154 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: google/storage/control/v2/storage_control.proto +// Protobuf Java Version: 4.33.2 + +package com.google.storage.control.v2; + +@com.google.protobuf.Generated +public interface DeleteFolderRecursiveRequestOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.storage.control.v2.DeleteFolderRecursiveRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Required. Name of the folder being deleted, however all of its contents
+   * will be deleted too. Format:
+   * `projects/{project}/buckets/{bucket}/folders/{folder}`
+   * 
+ * + * + * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The name. + */ + java.lang.String getName(); + + /** + * + * + *
+   * Required. Name of the folder being deleted, however all of its contents
+   * will be deleted too. Format:
+   * `projects/{project}/buckets/{bucket}/folders/{folder}`
+   * 
+ * + * + * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for name. + */ + com.google.protobuf.ByteString getNameBytes(); + + /** + * + * + *
+   * Optional. Makes the operation only succeed conditional on whether the root
+   * folder's current metageneration matches the given value.
+   * 
+ * + * optional int64 if_metageneration_match = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationMatch field is set. + */ + boolean hasIfMetagenerationMatch(); + + /** + * + * + *
+   * Optional. Makes the operation only succeed conditional on whether the root
+   * folder's current metageneration matches the given value.
+   * 
+ * + * optional int64 if_metageneration_match = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationMatch. + */ + long getIfMetagenerationMatch(); + + /** + * + * + *
+   * Optional. Makes the operation only succeed conditional on whether the root
+   * folder's current metageneration does not match the given value.
+   * 
+ * + * optional int64 if_metageneration_not_match = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationNotMatch field is set. + */ + boolean hasIfMetagenerationNotMatch(); + + /** + * + * + *
+   * Optional. Makes the operation only succeed conditional on whether the root
+   * folder's current metageneration does not match the given value.
+   * 
+ * + * optional int64 if_metageneration_not_match = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationNotMatch. + */ + long getIfMetagenerationNotMatch(); + + /** + * + * + *
+   * Optional. A unique identifier for this request. UUID is the recommended
+   * format, but other formats are still accepted.
+   * 
+ * + * + * string request_id = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.field_info) = { ... } + * + * + * @return The requestId. + */ + java.lang.String getRequestId(); + + /** + * + * + *
+   * Optional. A unique identifier for this request. UUID is the recommended
+   * format, but other formats are still accepted.
+   * 
+ * + * + * string request_id = 4 [(.google.api.field_behavior) = OPTIONAL, (.google.api.field_info) = { ... } + * + * + * @return The bytes for requestId. + */ + com.google.protobuf.ByteString getRequestIdBytes(); +} diff --git a/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/StorageControlProto.java b/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/StorageControlProto.java index 33448e0a50..91ed0a0600 100644 --- a/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/StorageControlProto.java +++ b/proto-google-cloud-storage-control-v2/src/main/java/com/google/storage/control/v2/StorageControlProto.java @@ -72,6 +72,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_storage_control_v2_RenameFolderRequest_descriptor; static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_google_storage_control_v2_RenameFolderRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_storage_control_v2_DeleteFolderRecursiveRequest_descriptor; + static final com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_google_storage_control_v2_DeleteFolderRecursiveRequest_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_storage_control_v2_CommonLongRunningOperationMetadata_descriptor; static final com.google.protobuf.GeneratedMessage.FieldAccessorTable @@ -80,6 +84,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_storage_control_v2_RenameFolderMetadata_descriptor; static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_google_storage_control_v2_RenameFolderMetadata_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_storage_control_v2_DeleteFolderRecursiveMetadata_descriptor; + static final com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_google_storage_control_v2_DeleteFolderRecursiveMetadata_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_storage_control_v2_StorageLayout_descriptor; static final com.google.protobuf.GeneratedMessage.FieldAccessorTable @@ -289,6 +297,15 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\033if_metageneration_not_match\030\005 \001(\003H\001\210\001\001\022\037\n\n" + "request_id\030\006 \001(\tB\013\340A\001\342\214\317\327\010\002\010\001B\032\n" + "\030_if_metageneration_matchB\036\n" + + "\034_if_metageneration_not_match\"\212\002\n" + + "\034DeleteFolderRecursiveRequest\0223\n" + + "\004name\030\001 \001(\tB%\340A\002\372A\037\n" + + "\035storage.googleapis.com/Folder\022)\n" + + "\027if_metageneration_match\030\002 \001(\003B\003\340A\001H\000\210\001\001\022-\n" + + "\033if_metageneration_not_match\030\003" + + " \001(\003B\003\340A\001H\001\210\001\001\022\037\n\n" + + "request_id\030\004 \001(\tB\013\340A\001\342\214\317\327\010\002\010\001B\032\n" + + "\030_if_metageneration_matchB\036\n" + "\034_if_metageneration_not_match\"\232\002\n" + "\"CommonLongRunningOperationMetadata\0224\n" + "\013create_time\030\001 \001(\0132\032.google.protobuf.TimestampB\003\340A\003\0221\n" @@ -299,24 +316,28 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\026requested_cancellation\030\005 \001(\010B\003\340A\003\022\035\n" + "\020progress_percent\030\006 \001(\005B\003\340A\003\"\247\001\n" + "\024RenameFolderMetadata\022V\n" - + "\017common_metadata\030\001 \001(\0132=.google.storage.cont" - + "rol.v2.CommonLongRunningOperationMetadata\022\030\n" + + "\017common_metadata\030\001" + + " \001(\0132=.google.storage.control.v2.CommonLongRunningOperationMetadata\022\030\n" + "\020source_folder_id\030\002 \001(\t\022\035\n" - + "\025destination_folder_id\030\003 \001(\t\"\370\003\n\r" + + "\025destination_folder_id\030\003 \001(\t\"\212\001\n" + + "\035DeleteFolderRecursiveMetadata\022V\n" + + "\017common_metadata\030\001 \001(\0132=.google.stor" + + "age.control.v2.CommonLongRunningOperationMetadata\022\021\n" + + "\tfolder_id\030\002 \001(\t\"\370\003\n\r" + "StorageLayout\022\021\n" + "\004name\030\001 \001(\tB\003\340A\003\022\025\n" + "\010location\030\002 \001(\tB\003\340A\003\022\032\n\r" + "location_type\030\003 \001(\tB\003\340A\003\022d\n" - + "\027custom_placement_config\030\004 \001(\0132>.google.storage.con" - + "trol.v2.StorageLayout.CustomPlacementConfigB\003\340A\003\022c\n" - + "\026hierarchical_namespace\030\005 \001(\013" - + "2>.google.storage.control.v2.StorageLayout.HierarchicalNamespaceB\003\340A\003\032/\n" + + "\027custom_placement_config\030\004 \001(\0132>.google.s" + + "torage.control.v2.StorageLayout.CustomPlacementConfigB\003\340A\003\022c\n" + + "\026hierarchical_namespace\030\005 \001(\0132>.google.storage.control.v2.S" + + "torageLayout.HierarchicalNamespaceB\003\340A\003\032/\n" + "\025CustomPlacementConfig\022\026\n" + "\016data_locations\030\001 \003(\t\032(\n" + "\025HierarchicalNamespace\022\017\n" + "\007enabled\030\001 \001(\010:{\352Ax\n" - + "$storage.googleapis.com/StorageLay" - + "out\0221projects/{project}/buckets/{bucket}/storageLayout*\016storageLayouts2\r" + + "$storage.googleapis.com/StorageLayout\0221projects/{project}/bucket" + + "s/{bucket}/storageLayout*\016storageLayouts2\r" + "storageLayout\"\206\001\n" + "\027GetStorageLayoutRequest\022:\n" + "\004name\030\001 \001(\tB,\340A\002\372A&\n" @@ -327,10 +348,10 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\004name\030\001 \001(\tB\003\340A\010\022\033\n" + "\016metageneration\030\003 \001(\003B\003\340A\003\0224\n" + "\013create_time\030\004 \001(\0132\032.google.protobuf.TimestampB\003\340A\003\0224\n" - + "\013update_time\030\005 " - + "\001(\0132\032.google.protobuf.TimestampB\003\340A\003:\221\001\352A\215\001\n" - + "$storage.googleapis.com/ManagedFolder\022Fprojects/{project}/buckets/{bucket}/m" - + "anagedFolders/{managed_folder=**}*\016managedFolders2\r" + + "\013update_time\030\005" + + " \001(\0132\032.google.protobuf.TimestampB\003\340A\003:\221\001\352A\215\001\n" + + "$storage.googleapis.com/ManagedFolder\022Fprojects/{project}/buckets/" + + "{bucket}/managedFolders/{managed_folder=**}*\016managedFolders2\r" + "managedFolder\"\202\002\n" + "\027GetManagedFolderRequest\022:\n" + "\004name\030\006 \001(\tB,\340A\002\372A&\n" @@ -343,8 +364,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\032CreateManagedFolderRequest\022<\n" + "\006parent\030\001 \001(" + "\tB,\340A\002\372A&\022$storage.googleapis.com/ManagedFolder\022E\n" - + "\016managed_folder\030\002 \001" - + "(\0132(.google.storage.control.v2.ManagedFolderB\003\340A\002\022\036\n" + + "\016managed_folder\030\002" + + " \001(\0132(.google.storage.control.v2.ManagedFolderB\003\340A\002\022\036\n" + "\021managed_folder_id\030\003 \001(\tB\003\340A\002\022\037\n\n" + "request_id\030\004 \001(\tB\013\340A\001\342\214\317\327\010\002\010\001\"\236\002\n" + "\032DeleteManagedFolderRequest\022:\n" @@ -368,8 +389,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + " \003(\0132(.google.storage.control.v2.ManagedFolder\022\027\n" + "\017next_page_token\030\002 \001(\t\"\260\002\n" + "\033CreateAnywhereCacheMetadata\022V\n" - + "\017common_metadata\030\001 \001(\0132=.google.storage.contr" - + "ol.v2.CommonLongRunningOperationMetadata\022\036\n" + + "\017common_metadata\030\001 \001(\0132=.google.sto" + + "rage.control.v2.CommonLongRunningOperationMetadata\022\036\n" + "\021anywhere_cache_id\030\002 \001(\tH\000\210\001\001\022\021\n" + "\004zone\030\006 \001(\tH\001\210\001\001\022+\n" + "\003ttl\030\003 \001(\0132\031.google.protobuf.DurationH\002\210\001\001\022\035\n" @@ -400,14 +421,14 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\013update_time\030\007" + " \001(\0132\032.google.protobuf.TimestampB\003\340A\003\022\033\n" + "\016pending_update\030\010 \001(\010B\003\340A\003:\216\001\352A\212\001\n" - + "$storage.googleapis.com/AnywhereCache\022Cprojects/{project}/b" - + "uckets/{bucket}/anywhereCaches/{anywhere_cache}*\016anywhereCaches2\r" + + "$storage.googleapis.com/AnywhereCache\022Cprojects/{" + + "project}/buckets/{bucket}/anywhereCaches/{anywhere_cache}*\016anywhereCaches2\r" + "anywhereCache\"\302\001\n" + "\032CreateAnywhereCacheRequest\022<\n" + "\006parent\030\001 \001(" + "\tB,\340A\002\372A&\022$storage.googleapis.com/AnywhereCache\022E\n" - + "\016anywhere_cache\030\003 \001(\0132(.go" - + "ogle.storage.control.v2.AnywhereCacheB\003\340A\002\022\037\n\n" + + "\016anywhere_cache\030\003" + + " \001(\0132(.google.storage.control.v2.AnywhereCacheB\003\340A\002\022\037\n\n" + "request_id\030\004 \001(\tB\013\340A\001\342\214\317\327\010\002\010\001\"\272\001\n" + "\032UpdateAnywhereCacheRequest\022E\n" + "\016anywhere_cache\030\001" @@ -421,8 +442,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "request_id\030\002 \001(\tB\013\340A\001\342\214\317\327\010\002\010\001\"x\n" + "\031PauseAnywhereCacheRequest\022:\n" + "\004name\030\001 \001(\tB,\340A\002\372A&\n" - + "$storage.googleapis.com/AnywhereCache\022\037\n" - + "\n" + + "$storage.googleapis.com/AnywhereCache\022\037\n\n" + "request_id\030\002 \001(\tB\013\340A\001\342\214\317\327\010\002\010\001\"y\n" + "\032ResumeAnywhereCacheRequest\022:\n" + "\004name\030\001 \001(\tB,\340A\002\372A&\n" @@ -433,8 +453,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "$storage.googleapis.com/AnywhereCache\022\037\n\n" + "request_id\030\002 \001(\tB\013\340A\001\342\214\317\327\010\002\010\001\"\241\001\n" + "\031ListAnywhereCachesRequest\022<\n" - + "\006parent\030\001 \001(\tB" - + ",\340A\002\372A&\022$storage.googleapis.com/AnywhereCache\022\021\n" + + "\006parent\030\001 \001(" + + "\tB,\340A\002\372A&\022$storage.googleapis.com/AnywhereCache\022\021\n" + "\tpage_size\030\002 \001(\005\022\022\n\n" + "page_token\030\003 \001(\t\022\037\n\n" + "request_id\030\004 \001(\tB\013\340A\001\342\214\317\327\010\002\010\001\"x\n" @@ -444,24 +464,26 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\017next_page_token\030\002 \001(\t\"\216\016\n" + "\022IntelligenceConfig\022\021\n" + "\004name\030\001 \001(\tB\003\340A\010\022X\n" - + "\016edition_config\030\002 \001(\0162;.google.stora" - + "ge.control.v2.IntelligenceConfig.EditionConfigB\003\340A\001\0224\n" + + "\016edition_config\030\002 \001(\0162;.go" + + "ogle.storage.control.v2.IntelligenceConfig.EditionConfigB\003\340A\001\0224\n" + "\013update_time\030\003 \001(\0132\032.google.protobuf.TimestampB\003\340A\003\022I\n" - + "\006filter\030\004 \001(" - + "\01324.google.storage.control.v2.IntelligenceConfig.FilterB\003\340A\001\022u\n" - + "\035effective_intelligence_config\030\005 \001(\0132I.google.storage.con" - + "trol.v2.IntelligenceConfig.EffectiveIntelligenceConfigB\003\340A\003\022O\n" - + "\014trial_config\030\007 \001(" - + "\01329.google.storage.control.v2.IntelligenceConfig.TrialConfig\032\374\004\n" + + "\006filter\030\004" + + " \001(\01324.google.storage.control.v2.IntelligenceConfig.FilterB\003\340A\001\022u\n" + + "\035effective_intelligence_config\030\005 \001(\0132I.google.s" + + "torage.control.v2.IntelligenceConfig.EffectiveIntelligenceConfigB\003\340A\003\022O\n" + + "\014trial_config\030\007" + + " \001(\01329.google.storage.control.v2.IntelligenceConfig.TrialConfig\032\374\004\n" + "\006Filter\022v\n" - + " included_cloud_storage_locations\030\001 \001(\0132J.goog" - + "le.storage.control.v2.IntelligenceConfig.Filter.CloudStorageLocationsH\000\022v\n" - + " excluded_cloud_storage_locations\030\002 \001(\0132J.goog" - + "le.storage.control.v2.IntelligenceConfig.Filter.CloudStorageLocationsH\000\022r\n" - + "\036included_cloud_storage_buckets\030\003 \001(\0132H.google" - + ".storage.control.v2.IntelligenceConfig.Filter.CloudStorageBucketsH\001\022r\n" - + "\036excluded_cloud_storage_buckets\030\004 \001(\0132H.google.sto" - + "rage.control.v2.IntelligenceConfig.Filter.CloudStorageBucketsH\001\032/\n" + + " included_cloud_storage_locations\030\001 " + + "\001(\0132J.google.storage.control.v2.Intellig" + + "enceConfig.Filter.CloudStorageLocationsH\000\022v\n" + + " excluded_cloud_storage_locations\030\002 " + + "\001(\0132J.google.storage.control.v2.Intellig" + + "enceConfig.Filter.CloudStorageLocationsH\000\022r\n" + + "\036included_cloud_storage_buckets\030\003 \001(" + + "\0132H.google.storage.control.v2.IntelligenceConfig.Filter.CloudStorageBucketsH\001\022r\n" + + "\036excluded_cloud_storage_buckets\030\004 \001(\0132H." + + "google.storage.control.v2.IntelligenceConfig.Filter.CloudStorageBucketsH\001\032/\n" + "\025CloudStorageLocations\022\026\n" + "\tlocations\030\001 \003(\tB\003\340A\001\0325\n" + "\023CloudStorageBuckets\022\036\n" @@ -469,26 +491,25 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\027cloud_storage_locationsB\027\n" + "\025cloud_storage_buckets\032\212\002\n" + "\033EffectiveIntelligenceConfig\022z\n" - + "\021effective_edition\030\001 \001(\0162Z.google.storage.control.v2.IntelligenceC" - + "onfig.EffectiveIntelligenceConfig.EffectiveEditionB\003\340A\003\022 \n" + + "\021effective_edition\030\001 \001(\0162Z.google.storage.control.v2.Int" + + "elligenceConfig.EffectiveIntelligenceConfig.EffectiveEditionB\003\340A\003\022 \n" + "\023intelligence_config\030\002 \001(\tB\003\340A\003\"M\n" + "\020EffectiveEdition\022!\n" + "\035EFFECTIVE_EDITION_UNSPECIFIED\020\000\022\010\n" + "\004NONE\020\001\022\014\n" + "\010STANDARD\020\002\032C\n" + "\013TrialConfig\0224\n" - + "\013expire_time\030\003 \001(\0132\032.google.protobuf.TimestampB\003\340A\003\"c\n" - + "\r" + + "\013expire_time\030\003 \001(\0132\032.google.protobuf.TimestampB\003\340A\003\"c\n\r" + "EditionConfig\022\036\n" + "\032EDITION_CONFIG_UNSPECIFIED\020\000\022\013\n" + "\007INHERIT\020\001\022\014\n" + "\010DISABLED\020\002\022\014\n" + "\010STANDARD\020\003\022\t\n" + "\005TRIAL\020\005:\213\002\352A\207\002\n" - + ")storage.googleapis.com/IntelligenceConfig\0228folders/{f" - + "older}/locations/{location}/intelligenceConfig\022;organizations/{org}/locations/{l" - + "ocation}/intelligenceConfig\022:projects/{project}/locations/{location}/intelligenc" - + "eConfig*\023intelligenceConfigs2\022intelligenceConfig\"\325\001\n" + + ")storage.googleapis.com/IntelligenceConfig\0228" + + "folders/{folder}/locations/{location}/intelligenceConfig\022;organizations/{org}/lo" + + "cations/{location}/intelligenceConfig\022:projects/{project}/locations/{location}/i" + + "ntelligenceConfig*\023intelligenceConfigs2\022intelligenceConfig\"\325\001\n" + "+UpdateOrganizationIntelligenceConfigRequest\022O\n" + "\023intelligence_config\030\001" + " \001(\0132-.google.storage.control.v2.IntelligenceConfigB\003\340A\002\0224\n" @@ -502,8 +523,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + " \001(\0132\032.google.protobuf.FieldMaskB\003\340A\002\022\037\n\n" + "request_id\030\003 \001(\tB\013\340A\001\342\214\317\327\010\002\010\001\"\320\001\n" + "&UpdateProjectIntelligenceConfigRequest\022O\n" - + "\023intelligence_config\030\001 \001(\0132-.google.stor" - + "age.control.v2.IntelligenceConfigB\003\340A\002\0224\n" + + "\023intelligence_config\030\001 \001(\0132-.g" + + "oogle.storage.control.v2.IntelligenceConfigB\003\340A\002\0224\n" + "\013update_mask\030\002" + " \001(\0132\032.google.protobuf.FieldMaskB\003\340A\002\022\037\n\n" + "request_id\030\003 \001(\tB\013\340A\001\342\214\317\327\010\002\010\001\"k\n" @@ -515,123 +536,131 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + ")storage.googleapis.com/IntelligenceConfig\"f\n" + "#GetProjectIntelligenceConfigRequest\022?\n" + "\004name\030\001 \001(\tB1\340A\002\372A+\n" - + ")storage.googleapis.com/IntelligenceConfig2\356*\n" + + ")storage.googleapis.com/IntelligenceConfig2\322,\n" + "\016StorageControl\022\232\001\n" - + "\014CreateFolder\022..google.storage.control.v2.CreateFolderRe" - + "quest\032!.google.storage.control.v2.Folder\"7\332A\027parent,folder,folder_id\212\323\344\223\002\027\022\025\n" + + "\014CreateFolder\022..google.storage.control.v2.Crea" + + "teFolderRequest\032!.google.storage.control" + + ".v2.Folder\"7\332A\027parent,folder,folder_id\212\323\344\223\002\027\022\025\n" + "\006parent\022\013{bucket=**}\022\217\001\n" - + "\014DeleteFolder\022..google.storage.control.v2.DeleteFolderReque" - + "st\032\026.google.protobuf.Empty\"7\332A\004name\212\323\344\223\002*\022(\n" + + "\014DeleteFolder\022..google.storage.control.v2.DeleteF" + + "olderRequest\032\026.google.protobuf.Empty\"7\332A\004name\212\323\344\223\002*\022(\n" + "\004name\022 {bucket=projects/*/buckets/*}/**\022\224\001\n" - + "\tGetFolder\022+.google.storage.contr" - + "ol.v2.GetFolderRequest\032!.google.storage.control.v2.Folder\"7\332A\004name\212\323\344\223\002*\022(\n" + + "\tGetFolder\022+.google.storage.control.v2.GetFolderRequest\032!.googl" + + "e.storage.control.v2.Folder\"7\332A\004name\212\323\344\223\002*\022(\n" + "\004name\022 {bucket=projects/*/buckets/*}/**\022\224\001\n" - + "\013ListFolders\022-.google.storage.control.v2.L" - + "istFoldersRequest\032..google.storage.contr" - + "ol.v2.ListFoldersResponse\"&\332A\006parent\212\323\344\223\002\027\022\025\n" + + "\013ListFolders\022-.google.storage.control.v2.ListFoldersRequest\032..google.sto" + + "rage.control.v2.ListFoldersResponse\"&\332A\006parent\212\323\344\223\002\027\022\025\n" + "\006parent\022\013{bucket=**}\022\315\001\n" - + "\014RenameFolder\022..google.storage.control.v2.RenameFol" - + "derRequest\032\035.google.longrunning.Operation\"n\312A\036\n" - + "\006Folder\022\024RenameFolderMetadata\332A\032name,destination_folder_id\212\323\344\223\002*\022(\n" + + "\014RenameFolder\022..google.storage.control.v2" + + ".RenameFolderRequest\032\035.google.longrunning.Operation\"n\312A\036\n" + + "\006Folder\022\024RenameFolderMe" + + "tadata\332A\032name,destination_folder_id\212\323\344\223\002*\022(\n" + + "\004name\022 {bucket=projects/*/buckets/*}/**\022\341\001\n" + + "\025DeleteFolderRecursive\0227.google.storage.control.v2.DeleteFolderRecursiveR" + + "equest\032\035.google.longrunning.Operation\"p\312A6\n" + + "\025google.protobuf.Empty\022\035DeleteFolderRecursiveMetadata\332A\004name\212\323\344\223\002*\022(\n" + "\004name\022 {bucket=projects/*/buckets/*}/**\022\251\001\n" - + "\020GetStorageLayout\0222.google.storage.control." - + "v2.GetStorageLayoutRequest\032(.google.stor" - + "age.control.v2.StorageLayout\"7\332A\004name\212\323\344\223\002*\022(\n" + + "\020GetStorageLayout\0222.google.storage.control.v2" + + ".GetStorageLayoutRequest\032(.google.storag" + + "e.control.v2.StorageLayout\"7\332A\004name\212\323\344\223\002*\022(\n" + "\004name\022 {bucket=projects/*/buckets/*}/**\022\277\001\n" - + "\023CreateManagedFolder\0225.google.storage.control.v2.CreateManagedFolderReq" - + "uest\032(.google.storage.control.v2.Managed" - + "Folder\"G\332A\'parent,managed_folder,managed_folder_id\212\323\344\223\002\027\022\025\n" + + "\023CreateManagedFolder\0225.google.storage.control.v2.CreateManagedFolderReque" + + "st\032(.google.storage.control.v2.ManagedFo" + + "lder\"G\332A\'parent,managed_folder,managed_folder_id\212\323\344\223\002\027\022\025\n" + "\006parent\022\013{bucket=**}\022\235\001\n" - + "\023DeleteManagedFolder\0225.google.storage" - + ".control.v2.DeleteManagedFolderRequest\032\026.google.protobuf.Empty\"7\332A\004name\212\323\344\223\002*\022(\n" + + "\023DeleteManagedFolder\0225.google.storage.c" + + "ontrol.v2.DeleteManagedFolderRequest\032\026.google.protobuf.Empty\"7\332A\004name\212\323\344\223\002*\022(\n" + "\004name\022 {bucket=projects/*/buckets/*}/**\022\251\001\n" - + "\020GetManagedFolder\0222.google.storage.control.v2.GetManagedFolderRequest\032(.googl" - + "e.storage.control.v2.ManagedFolder\"7\332A\004name\212\323\344\223\002*\022(\n" + + "\020GetManagedFolder\0222.google.storage.cont" + + "rol.v2.GetManagedFolderRequest\032(.google." + + "storage.control.v2.ManagedFolder\"7\332A\004name\212\323\344\223\002*\022(\n" + "\004name\022 {bucket=projects/*/buckets/*}/**\022\251\001\n" - + "\022ListManagedFolders\0224.google.storage.control.v2.ListManagedFolder" - + "sRequest\0325.google.storage.control.v2.Lis" - + "tManagedFoldersResponse\"&\332A\006parent\212\323\344\223\002\027\022\025\n" + + "\022ListManagedFolders\0224.google.storage.control.v2.ListManagedFoldersR" + + "equest\0325.google.storage.control.v2.ListM" + + "anagedFoldersResponse\"&\332A\006parent\212\323\344\223\002\027\022\025\n" + "\006parent\022\013{bucket=**}\022\321\001\n" - + "\023CreateAnywhereCache\0225.google.storage.control.v2.Crea" - + "teAnywhereCacheRequest\032\035.google.longrunning.Operation\"d\312A,\n\r" - + "AnywhereCache\022\033Creat" - + "eAnywhereCacheMetadata\332A\025parent,anywhere_cache\212\323\344\223\002\027\022\025\n" + + "\023CreateAnywhereCache\0225.google.storage.control.v2.Create" + + "AnywhereCacheRequest\032\035.google.longrunning.Operation\"d\312A,\n\r" + + "AnywhereCache\022\033CreateA" + + "nywhereCacheMetadata\332A\025parent,anywhere_cache\212\323\344\223\002\027\022\025\n" + "\006parent\022\013{bucket=**}\022\371\001\n" - + "\023UpdateAnywhereCache\0225.google.storage.con" - + "trol.v2.UpdateAnywhereCacheRequest\032\035.google.longrunning.Operation\"\213\001\312A,\n\r" - + "Anywher" - + "eCache\022\033UpdateAnywhereCacheMetadata\332A\032anywhere_cache,update_mask\212\323\344\223\0029\0227\n" + + "\023UpdateAnywhereCache\0225.google.storage.contr" + + "ol.v2.UpdateAnywhereCacheRequest\032\035.google.longrunning.Operation\"\213\001\312A,\n\r" + + "AnywhereC" + + "ache\022\033UpdateAnywhereCacheMetadata\332A\032anywhere_cache,update_mask\212\323\344\223\0029\0227\n" + "\023anywhere_cache.name\022 {bucket=projects/*/buckets/*}/**\022\261\001\n" - + "\024DisableAnywhereCache\0226.google.storage.control.v2.DisableAnywhereCach" - + "eRequest\032(.google.storage.control.v2.AnywhereCache\"7\332A\004name\212\323\344\223\002*\022(\n" + + "\024DisableAnywhereCache\0226.google.storage.control.v2.DisableAnywhereCacheR" + + "equest\032(.google.storage.control.v2.AnywhereCache\"7\332A\004name\212\323\344\223\002*\022(\n" + "\004name\022 {bucket=projects/*/buckets/*}/**\022\255\001\n" - + "\022PauseAnywhereCache\0224.google.storage.control.v2.P" - + "auseAnywhereCacheRequest\032(.google.storag" - + "e.control.v2.AnywhereCache\"7\332A\004name\212\323\344\223\002*\022(\n" + + "\022PauseAnywhereCache\0224.google.storage.control.v2.Pau" + + "seAnywhereCacheRequest\032(.google.storage." + + "control.v2.AnywhereCache\"7\332A\004name\212\323\344\223\002*\022(\n" + "\004name\022 {bucket=projects/*/buckets/*}/**\022\257\001\n" - + "\023ResumeAnywhereCache\0225.google.storage.control.v2.ResumeAnywhereCacheReque" - + "st\032(.google.storage.control.v2.AnywhereCache\"7\332A\004name\212\323\344\223\002*\022(\n" + + "\023ResumeAnywhereCache\0225.google.storage.control.v2.ResumeAnywhereCacheRequest" + + "\032(.google.storage.control.v2.AnywhereCache\"7\332A\004name\212\323\344\223\002*\022(\n" + "\004name\022 {bucket=projects/*/buckets/*}/**\022\251\001\n" - + "\020GetAnywhereCache\0222.google.storage.control.v2.GetAnywhe" - + "reCacheRequest\032(.google.storage.control.v2.AnywhereCache\"7\332A\004name\212\323\344\223\002*\022(\n" + + "\020GetAnywhereCache\0222.google.storage.control.v2.GetAnywhere" + + "CacheRequest\032(.google.storage.control.v2.AnywhereCache\"7\332A\004name\212\323\344\223\002*\022(\n" + "\004name\022 {bucket=projects/*/buckets/*}/**\022\251\001\n" - + "\022ListAnywhereCaches\0224.google.storage.contro" - + "l.v2.ListAnywhereCachesRequest\0325.google." - + "storage.control.v2.ListAnywhereCachesResponse\"&\332A\006parent\212\323\344\223\002\027\022\025\n" + + "\022ListAnywhereCaches\0224.google.storage.control." + + "v2.ListAnywhereCachesRequest\0325.google.st" + + "orage.control.v2.ListAnywhereCachesResponse\"&\332A\006parent\212\323\344\223\002\027\022\025\n" + "\006parent\022\013{bucket=**}\022\322\001\n" - + "\034GetProjectIntelligenceConfig\022>.google.storage.control.v2.GetProjectInt" - + "elligenceConfigRequest\032-.google.storage." - + "control.v2.IntelligenceConfig\"C\332A\004name\202\323" - + "\344\223\0026\0224/v2/{name=projects/*/locations/*/intelligenceConfig}\022\235\002\n" - + "\037UpdateProjectIntelligenceConfig\022A.google.storage.control." - + "v2.UpdateProjectIntelligenceConfigRequest\032-.google.storage.control.v2.Intelligen" - + "ceConfig\"\207\001\332A\037intelligence_config,update" - + "_mask\202\323\344\223\002_2H/v2/{intelligence_config.na" - + "me=projects/*/locations/*/intelligenceConfig}:\023intelligence_config\022\317\001\n" - + "\033GetFolderIntelligenceConfig\022=.google.storage.cont" - + "rol.v2.GetFolderIntelligenceConfigRequest\032-.google.storage.control.v2.Intelligen" - + "ceConfig\"B\332A\004name\202\323\344\223\0025\0223/v2/{name=folders/*/locations/*/intelligenceConfig}\022\232\002\n" - + "\036UpdateFolderIntelligenceConfig\022@.google.storage.control.v2.UpdateFolderIntellig" - + "enceConfigRequest\032-.google.storage.contr" - + "ol.v2.IntelligenceConfig\"\206\001\332A\037intelligen" - + "ce_config,update_mask\202\323\344\223\002^2G/v2/{intell" - + "igence_config.name=folders/*/locations/*" - + "/intelligenceConfig}:\023intelligence_config\022\341\001\n" - + "!GetOrganizationIntelligenceConfig\022C.google.storage.control.v2.GetOrganizat" - + "ionIntelligenceConfigRequest\032-.google.st" - + "orage.control.v2.IntelligenceConfig\"H\332A\004" - + "name\202\323\344\223\002;\0229/v2/{name=organizations/*/locations/*/intelligenceConfig}\022\254\002\n" - + "$UpdateOrganizationIntelligenceConfig\022F.google." - + "storage.control.v2.UpdateOrganizationIntelligenceConfigRequest\032-.google.storage." - + "control.v2.IntelligenceConfig\"\214\001\332A\037intel" - + "ligence_config,update_mask\202\323\344\223\002d2M/v2/{i" - + "ntelligence_config.name=organizations/*/" - + "locations/*/intelligenceConfig}:\023intelligence_config\022\243\001\n" - + "\014GetIamPolicy\022\".google.i" - + "am.v1.GetIamPolicyRequest\032\025.google.iam.v1.Policy\"X\332A\010resource\212\323\344\223\002G\022\027\n" + + "\034GetProjectIntelligenceConfig\022>.google.storage.control.v2.GetProjectIntel" + + "ligenceConfigRequest\032-.google.storage.co" + + "ntrol.v2.IntelligenceConfig\"C\332A\004name\202\323\344\223" + + "\0026\0224/v2/{name=projects/*/locations/*/intelligenceConfig}\022\235\002\n" + + "\037UpdateProjectIntelligenceConfig\022A.google.storage.control.v2" + + ".UpdateProjectIntelligenceConfigRequest\032-.google.storage.control.v2.Intelligence" + + "Config\"\207\001\332A\037intelligence_config,update_m" + + "ask\202\323\344\223\002_2H/v2/{intelligence_config.name" + + "=projects/*/locations/*/intelligenceConfig}:\023intelligence_config\022\317\001\n" + + "\033GetFolderIntelligenceConfig\022=.google.storage.contro" + + "l.v2.GetFolderIntelligenceConfigRequest\032-.google.storage.control.v2.Intelligence" + + "Config\"B\332A\004name\202\323\344\223\0025\0223/v2/{name=folders/*/locations/*/intelligenceConfig}\022\232\002\n" + + "\036UpdateFolderIntelligenceConfig\022@.google.s" + + "torage.control.v2.UpdateFolderIntelligenceConfigRequest\032-.google.storage.control" + + ".v2.IntelligenceConfig\"\206\001\332A\037intelligence" + + "_config,update_mask\202\323\344\223\002^2G/v2/{intellig" + + "ence_config.name=folders/*/locations/*/i" + + "ntelligenceConfig}:\023intelligence_config\022\341\001\n" + + "!GetOrganizationIntelligenceConfig\022C.google.storage.control.v2.GetOrganizatio" + + "nIntelligenceConfigRequest\032-.google.stor" + + "age.control.v2.IntelligenceConfig\"H\332A\004na" + + "me\202\323\344\223\002;\0229/v2/{name=organizations/*/locations/*/intelligenceConfig}\022\254\002\n" + + "$UpdateOrganizationIntelligenceConfig\022F.google.st" + + "orage.control.v2.UpdateOrganizationIntelligenceConfigRequest\032-.google.storage.co" + + "ntrol.v2.IntelligenceConfig\"\214\001\332A\037intelli" + + "gence_config,update_mask\202\323\344\223\002d2M/v2/{int" + + "elligence_config.name=organizations/*/lo" + + "cations/*/intelligenceConfig}:\023intelligence_config\022\243\001\n" + + "\014GetIamPolicy\022\".google.iam" + + ".v1.GetIamPolicyRequest\032\025.google.iam.v1.Policy\"X\332A\010resource\212\323\344\223\002G\022\027\n" + "\010resource\022\013{bucket=**}\022,\n" + "\010resource\022 {bucket=projects/*/buckets/*}/**\022\252\001\n" - + "\014SetIamPolicy\022\".google.iam.v1.SetIamPolicyRequest\032\025.google" - + ".iam.v1.Policy\"_\332A\017resource,policy\212\323\344\223\002G\022\027\n" + + "\014SetIamPolicy\022\".google.iam.v1.SetIamPolicyRequest\032\025.google.i" + + "am.v1.Policy\"_\332A\017resource,policy\212\323\344\223\002G\022\027\n" + "\010resource\022\013{bucket=**}\022,\n" + "\010resource\022 {bucket=projects/*/buckets/*}/**\022\226\002\n" - + "\022TestIamPermissions\022(.google.iam.v1.TestIamPe" - + "rmissionsRequest\032).google.iam.v1.TestIam" - + "PermissionsResponse\"\252\001\332A\024resource,permissions\212\323\344\223\002\214\001\022\027\n" + + "\022TestIamPermissions\022(.google.iam.v1.TestIamPerm" + + "issionsRequest\032).google.iam.v1.TestIamPe" + + "rmissionsResponse\"\252\001\332A\024resource,permissions\212\323\344\223\002\214\001\022\027\n" + "\010resource\022\013{bucket=**}\0224\n" + "\010resource\022({bucket=projects/*/buckets/*}/objects/**\022;\n" - + "\010resource\022/{bucket=project" - + "s/*/buckets/*}/managedFolders/**\032\247\002\312A\026st" - + "orage.googleapis.com\322A\212\002https://www.goog" - + "leapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.re" - + "ad-only,https://www.googleapis.com/auth/devstorage.full_control,https://www.goog" - + "leapis.com/auth/devstorage.read_only,htt" - + "ps://www.googleapis.com/auth/devstorage.read_writeB\246\002\n" - + "\035com.google.storage.control.v2B\023StorageControlProtoP\001Z=cloud.googl" - + "e.com/go/storage/control/apiv2/controlpb" - + ";controlpb\252\002\037Google.Cloud.Storage.Contro" - + "l.V2\312\002\037Google\\Cloud\\Storage\\Control\\V2\352\002#Google::Cloud::Storage::Control::V2\352AD\n" - + "\035storage.googleapis.com/Bucket\022#projects/{project}/buckets/{bucket}b\006proto3" + + "\010resource\022/{bucket=projects/" + + "*/buckets/*}/managedFolders/**\032\247\002\312A\026stor" + + "age.googleapis.com\322A\212\002https://www.google" + + "apis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read" + + "-only,https://www.googleapis.com/auth/devstorage.full_control,https://www.google" + + "apis.com/auth/devstorage.read_only,https" + + "://www.googleapis.com/auth/devstorage.read_writeB\246\002\n" + + "\035com.google.storage.control.v2B\023StorageControlProtoP\001Z=cloud.google." + + "com/go/storage/control/apiv2/controlpb;c" + + "ontrolpb\252\002\037Google.Cloud.Storage.Control.", + "V2\312\002\037Google\\Cloud\\Storage\\Control\\V2\352\002#G" + + "oogle::Cloud::Storage::Control::V2\352AD\n\035s" + + "torage.googleapis.com/Bucket\022#projects/{" + + "project}/buckets/{bucket}b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -725,8 +754,16 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "IfMetagenerationNotMatch", "RequestId", }); - internal_static_google_storage_control_v2_CommonLongRunningOperationMetadata_descriptor = + internal_static_google_storage_control_v2_DeleteFolderRecursiveRequest_descriptor = getDescriptor().getMessageType(8); + internal_static_google_storage_control_v2_DeleteFolderRecursiveRequest_fieldAccessorTable = + new com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_google_storage_control_v2_DeleteFolderRecursiveRequest_descriptor, + new java.lang.String[] { + "Name", "IfMetagenerationMatch", "IfMetagenerationNotMatch", "RequestId", + }); + internal_static_google_storage_control_v2_CommonLongRunningOperationMetadata_descriptor = + getDescriptor().getMessageType(9); internal_static_google_storage_control_v2_CommonLongRunningOperationMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_CommonLongRunningOperationMetadata_descriptor, @@ -739,15 +776,23 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "ProgressPercent", }); internal_static_google_storage_control_v2_RenameFolderMetadata_descriptor = - getDescriptor().getMessageType(9); + getDescriptor().getMessageType(10); internal_static_google_storage_control_v2_RenameFolderMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_RenameFolderMetadata_descriptor, new java.lang.String[] { "CommonMetadata", "SourceFolderId", "DestinationFolderId", }); + internal_static_google_storage_control_v2_DeleteFolderRecursiveMetadata_descriptor = + getDescriptor().getMessageType(11); + internal_static_google_storage_control_v2_DeleteFolderRecursiveMetadata_fieldAccessorTable = + new com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_google_storage_control_v2_DeleteFolderRecursiveMetadata_descriptor, + new java.lang.String[] { + "CommonMetadata", "FolderId", + }); internal_static_google_storage_control_v2_StorageLayout_descriptor = - getDescriptor().getMessageType(10); + getDescriptor().getMessageType(12); internal_static_google_storage_control_v2_StorageLayout_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_StorageLayout_descriptor, @@ -771,7 +816,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Enabled", }); internal_static_google_storage_control_v2_GetStorageLayoutRequest_descriptor = - getDescriptor().getMessageType(11); + getDescriptor().getMessageType(13); internal_static_google_storage_control_v2_GetStorageLayoutRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_GetStorageLayoutRequest_descriptor, @@ -779,7 +824,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", "Prefix", "RequestId", }); internal_static_google_storage_control_v2_ManagedFolder_descriptor = - getDescriptor().getMessageType(12); + getDescriptor().getMessageType(14); internal_static_google_storage_control_v2_ManagedFolder_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_ManagedFolder_descriptor, @@ -787,7 +832,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", "Metageneration", "CreateTime", "UpdateTime", }); internal_static_google_storage_control_v2_GetManagedFolderRequest_descriptor = - getDescriptor().getMessageType(13); + getDescriptor().getMessageType(15); internal_static_google_storage_control_v2_GetManagedFolderRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_GetManagedFolderRequest_descriptor, @@ -795,7 +840,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", "IfMetagenerationMatch", "IfMetagenerationNotMatch", "RequestId", }); internal_static_google_storage_control_v2_CreateManagedFolderRequest_descriptor = - getDescriptor().getMessageType(14); + getDescriptor().getMessageType(16); internal_static_google_storage_control_v2_CreateManagedFolderRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_CreateManagedFolderRequest_descriptor, @@ -803,7 +848,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Parent", "ManagedFolder", "ManagedFolderId", "RequestId", }); internal_static_google_storage_control_v2_DeleteManagedFolderRequest_descriptor = - getDescriptor().getMessageType(15); + getDescriptor().getMessageType(17); internal_static_google_storage_control_v2_DeleteManagedFolderRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_DeleteManagedFolderRequest_descriptor, @@ -815,7 +860,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "RequestId", }); internal_static_google_storage_control_v2_ListManagedFoldersRequest_descriptor = - getDescriptor().getMessageType(16); + getDescriptor().getMessageType(18); internal_static_google_storage_control_v2_ListManagedFoldersRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_ListManagedFoldersRequest_descriptor, @@ -823,7 +868,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Parent", "PageSize", "PageToken", "Prefix", "RequestId", }); internal_static_google_storage_control_v2_ListManagedFoldersResponse_descriptor = - getDescriptor().getMessageType(17); + getDescriptor().getMessageType(19); internal_static_google_storage_control_v2_ListManagedFoldersResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_ListManagedFoldersResponse_descriptor, @@ -831,7 +876,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "ManagedFolders", "NextPageToken", }); internal_static_google_storage_control_v2_CreateAnywhereCacheMetadata_descriptor = - getDescriptor().getMessageType(18); + getDescriptor().getMessageType(20); internal_static_google_storage_control_v2_CreateAnywhereCacheMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_CreateAnywhereCacheMetadata_descriptor, @@ -839,7 +884,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "CommonMetadata", "AnywhereCacheId", "Zone", "Ttl", "AdmissionPolicy", }); internal_static_google_storage_control_v2_UpdateAnywhereCacheMetadata_descriptor = - getDescriptor().getMessageType(19); + getDescriptor().getMessageType(21); internal_static_google_storage_control_v2_UpdateAnywhereCacheMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_UpdateAnywhereCacheMetadata_descriptor, @@ -847,7 +892,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "CommonMetadata", "AnywhereCacheId", "Zone", "Ttl", "AdmissionPolicy", }); internal_static_google_storage_control_v2_AnywhereCache_descriptor = - getDescriptor().getMessageType(20); + getDescriptor().getMessageType(22); internal_static_google_storage_control_v2_AnywhereCache_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_AnywhereCache_descriptor, @@ -862,7 +907,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "PendingUpdate", }); internal_static_google_storage_control_v2_CreateAnywhereCacheRequest_descriptor = - getDescriptor().getMessageType(21); + getDescriptor().getMessageType(23); internal_static_google_storage_control_v2_CreateAnywhereCacheRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_CreateAnywhereCacheRequest_descriptor, @@ -870,7 +915,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Parent", "AnywhereCache", "RequestId", }); internal_static_google_storage_control_v2_UpdateAnywhereCacheRequest_descriptor = - getDescriptor().getMessageType(22); + getDescriptor().getMessageType(24); internal_static_google_storage_control_v2_UpdateAnywhereCacheRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_UpdateAnywhereCacheRequest_descriptor, @@ -878,7 +923,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "AnywhereCache", "UpdateMask", "RequestId", }); internal_static_google_storage_control_v2_DisableAnywhereCacheRequest_descriptor = - getDescriptor().getMessageType(23); + getDescriptor().getMessageType(25); internal_static_google_storage_control_v2_DisableAnywhereCacheRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_DisableAnywhereCacheRequest_descriptor, @@ -886,7 +931,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", "RequestId", }); internal_static_google_storage_control_v2_PauseAnywhereCacheRequest_descriptor = - getDescriptor().getMessageType(24); + getDescriptor().getMessageType(26); internal_static_google_storage_control_v2_PauseAnywhereCacheRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_PauseAnywhereCacheRequest_descriptor, @@ -894,7 +939,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", "RequestId", }); internal_static_google_storage_control_v2_ResumeAnywhereCacheRequest_descriptor = - getDescriptor().getMessageType(25); + getDescriptor().getMessageType(27); internal_static_google_storage_control_v2_ResumeAnywhereCacheRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_ResumeAnywhereCacheRequest_descriptor, @@ -902,7 +947,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", "RequestId", }); internal_static_google_storage_control_v2_GetAnywhereCacheRequest_descriptor = - getDescriptor().getMessageType(26); + getDescriptor().getMessageType(28); internal_static_google_storage_control_v2_GetAnywhereCacheRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_GetAnywhereCacheRequest_descriptor, @@ -910,7 +955,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", "RequestId", }); internal_static_google_storage_control_v2_ListAnywhereCachesRequest_descriptor = - getDescriptor().getMessageType(27); + getDescriptor().getMessageType(29); internal_static_google_storage_control_v2_ListAnywhereCachesRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_ListAnywhereCachesRequest_descriptor, @@ -918,7 +963,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Parent", "PageSize", "PageToken", "RequestId", }); internal_static_google_storage_control_v2_ListAnywhereCachesResponse_descriptor = - getDescriptor().getMessageType(28); + getDescriptor().getMessageType(30); internal_static_google_storage_control_v2_ListAnywhereCachesResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_ListAnywhereCachesResponse_descriptor, @@ -926,7 +971,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "AnywhereCaches", "NextPageToken", }); internal_static_google_storage_control_v2_IntelligenceConfig_descriptor = - getDescriptor().getMessageType(29); + getDescriptor().getMessageType(31); internal_static_google_storage_control_v2_IntelligenceConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_IntelligenceConfig_descriptor, @@ -986,7 +1031,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "ExpireTime", }); internal_static_google_storage_control_v2_UpdateOrganizationIntelligenceConfigRequest_descriptor = - getDescriptor().getMessageType(30); + getDescriptor().getMessageType(32); internal_static_google_storage_control_v2_UpdateOrganizationIntelligenceConfigRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_UpdateOrganizationIntelligenceConfigRequest_descriptor, @@ -994,7 +1039,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "IntelligenceConfig", "UpdateMask", "RequestId", }); internal_static_google_storage_control_v2_UpdateFolderIntelligenceConfigRequest_descriptor = - getDescriptor().getMessageType(31); + getDescriptor().getMessageType(33); internal_static_google_storage_control_v2_UpdateFolderIntelligenceConfigRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_UpdateFolderIntelligenceConfigRequest_descriptor, @@ -1002,7 +1047,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "IntelligenceConfig", "UpdateMask", "RequestId", }); internal_static_google_storage_control_v2_UpdateProjectIntelligenceConfigRequest_descriptor = - getDescriptor().getMessageType(32); + getDescriptor().getMessageType(34); internal_static_google_storage_control_v2_UpdateProjectIntelligenceConfigRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_UpdateProjectIntelligenceConfigRequest_descriptor, @@ -1010,7 +1055,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "IntelligenceConfig", "UpdateMask", "RequestId", }); internal_static_google_storage_control_v2_GetOrganizationIntelligenceConfigRequest_descriptor = - getDescriptor().getMessageType(33); + getDescriptor().getMessageType(35); internal_static_google_storage_control_v2_GetOrganizationIntelligenceConfigRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_GetOrganizationIntelligenceConfigRequest_descriptor, @@ -1018,7 +1063,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", }); internal_static_google_storage_control_v2_GetFolderIntelligenceConfigRequest_descriptor = - getDescriptor().getMessageType(34); + getDescriptor().getMessageType(36); internal_static_google_storage_control_v2_GetFolderIntelligenceConfigRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_GetFolderIntelligenceConfigRequest_descriptor, @@ -1026,7 +1071,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Name", }); internal_static_google_storage_control_v2_GetProjectIntelligenceConfigRequest_descriptor = - getDescriptor().getMessageType(35); + getDescriptor().getMessageType(37); internal_static_google_storage_control_v2_GetProjectIntelligenceConfigRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_google_storage_control_v2_GetProjectIntelligenceConfigRequest_descriptor, diff --git a/proto-google-cloud-storage-control-v2/src/main/proto/google/storage/control/v2/storage_control.proto b/proto-google-cloud-storage-control-v2/src/main/proto/google/storage/control/v2/storage_control.proto index 4a3bda4e5b..015ad010b0 100644 --- a/proto-google-cloud-storage-control-v2/src/main/proto/google/storage/control/v2/storage_control.proto +++ b/proto-google-cloud-storage-control-v2/src/main/proto/google/storage/control/v2/storage_control.proto @@ -1,4 +1,4 @@ -// Copyright 2025 Google LLC +// Copyright 2026 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -112,6 +112,23 @@ service StorageControl { }; } + // Deletes a folder recursively. This operation is only applicable to a + // hierarchical namespace enabled bucket. + rpc DeleteFolderRecursive(DeleteFolderRecursiveRequest) + returns (google.longrunning.Operation) { + option (google.api.routing) = { + routing_parameters { + field: "name" + path_template: "{bucket=projects/*/buckets/*}/**" + } + }; + option (google.api.method_signature) = "name"; + option (google.longrunning.operation_info) = { + response_type: "google.protobuf.Empty" + metadata_type: "DeleteFolderRecursiveMetadata" + }; + } + // Returns the storage layout configuration for a given bucket. rpc GetStorageLayout(GetStorageLayoutRequest) returns (StorageLayout) { option (google.api.routing) = { @@ -586,6 +603,34 @@ message RenameFolderRequest { ]; } +// Request message for DeleteFolderRecursive. +message DeleteFolderRecursiveRequest { + // Required. Name of the folder being deleted, however all of its contents + // will be deleted too. Format: + // `projects/{project}/buckets/{bucket}/folders/{folder}` + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { type: "storage.googleapis.com/Folder" } + ]; + + // Optional. Makes the operation only succeed conditional on whether the root + // folder's current metageneration matches the given value. + optional int64 if_metageneration_match = 2 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Makes the operation only succeed conditional on whether the root + // folder's current metageneration does not match the given value. + optional int64 if_metageneration_not_match = 3 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. A unique identifier for this request. UUID is the recommended + // format, but other formats are still accepted. + string request_id = 4 [ + (google.api.field_info).format = UUID4, + (google.api.field_behavior) = OPTIONAL + ]; +} + // The message contains metadata that is common to all Storage Control // long-running operations, present in its `google.longrunning.Operation` // messages, and accessible via `metadata.common_metadata`. @@ -626,6 +671,16 @@ message RenameFolderMetadata { string destination_folder_id = 3; } +// Message returned in the metadata field of the Operation resource for +// DeleteFolderRecursive operations. +message DeleteFolderRecursiveMetadata { + // Generic metadata for the long running operation. + CommonLongRunningOperationMetadata common_metadata = 1; + + // The path of the folder recursively deleted. + string folder_id = 2; +} + // The storage layout configuration of a bucket. message StorageLayout { option (google.api.resource) = { diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiReadObjectSpec.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiReadObjectSpec.java index f23720cafd..7acba521fc 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiReadObjectSpec.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiReadObjectSpec.java @@ -439,7 +439,7 @@ public com.google.storage.v2.CommonObjectRequestParams getCommonObjectRequestPar * optional .google.protobuf.FieldMask read_mask = 12 [deprecated = true]; * * @deprecated google.storage.v2.BidiReadObjectSpec.read_mask is deprecated. See - * google/storage/v2/storage.proto;l=1187 + * google/storage/v2/storage.proto;l=1189 * @return Whether the readMask field is set. */ @java.lang.Override @@ -464,7 +464,7 @@ public boolean hasReadMask() { * optional .google.protobuf.FieldMask read_mask = 12 [deprecated = true]; * * @deprecated google.storage.v2.BidiReadObjectSpec.read_mask is deprecated. See - * google/storage/v2/storage.proto;l=1187 + * google/storage/v2/storage.proto;l=1189 * @return The readMask. */ @java.lang.Override @@ -2097,7 +2097,7 @@ public Builder clearCommonObjectRequestParams() { * optional .google.protobuf.FieldMask read_mask = 12 [deprecated = true]; * * @deprecated google.storage.v2.BidiReadObjectSpec.read_mask is deprecated. See - * google/storage/v2/storage.proto;l=1187 + * google/storage/v2/storage.proto;l=1189 * @return Whether the readMask field is set. */ @java.lang.Deprecated @@ -2121,7 +2121,7 @@ public boolean hasReadMask() { * optional .google.protobuf.FieldMask read_mask = 12 [deprecated = true]; * * @deprecated google.storage.v2.BidiReadObjectSpec.read_mask is deprecated. See - * google/storage/v2/storage.proto;l=1187 + * google/storage/v2/storage.proto;l=1189 * @return The readMask. */ @java.lang.Deprecated diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiReadObjectSpecOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiReadObjectSpecOrBuilder.java index 6c1520f785..334f9313cc 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiReadObjectSpecOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiReadObjectSpecOrBuilder.java @@ -276,7 +276,7 @@ public interface BidiReadObjectSpecOrBuilder * optional .google.protobuf.FieldMask read_mask = 12 [deprecated = true]; * * @deprecated google.storage.v2.BidiReadObjectSpec.read_mask is deprecated. See - * google/storage/v2/storage.proto;l=1187 + * google/storage/v2/storage.proto;l=1189 * @return Whether the readMask field is set. */ @java.lang.Deprecated @@ -298,7 +298,7 @@ public interface BidiReadObjectSpecOrBuilder * optional .google.protobuf.FieldMask read_mask = 12 [deprecated = true]; * * @deprecated google.storage.v2.BidiReadObjectSpec.read_mask is deprecated. See - * google/storage/v2/storage.proto;l=1187 + * google/storage/v2/storage.proto;l=1189 * @return The readMask. */ @java.lang.Deprecated diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ComposeObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ComposeObjectRequest.java index 8064bfa109..e7c97137ae 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ComposeObjectRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ComposeObjectRequest.java @@ -2254,6 +2254,41 @@ public com.google.storage.v2.ObjectChecksumsOrBuilder getObjectChecksumsOrBuilde : objectChecksums_; } + public static final int DELETE_SOURCE_OBJECTS_FIELD_NUMBER = 11; + private boolean deleteSourceObjects_ = false; + + /** + * + * + *
+   * Whether the source objects should be deleted in the compose request.
+   * 
+ * + * optional bool delete_source_objects = 11; + * + * @return Whether the deleteSourceObjects field is set. + */ + @java.lang.Override + public boolean hasDeleteSourceObjects() { + return ((bitField0_ & 0x00000020) != 0); + } + + /** + * + * + *
+   * Whether the source objects should be deleted in the compose request.
+   * 
+ * + * optional bool delete_source_objects = 11; + * + * @return The deleteSourceObjects. + */ + @java.lang.Override + public boolean getDeleteSourceObjects() { + return deleteSourceObjects_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -2292,6 +2327,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (((bitField0_ & 0x00000010) != 0)) { output.writeMessage(10, getObjectChecksums()); } + if (((bitField0_ & 0x00000020) != 0)) { + output.writeBool(11, deleteSourceObjects_); + } getUnknownFields().writeTo(output); } @@ -2327,6 +2365,9 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000010) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getObjectChecksums()); } + if (((bitField0_ & 0x00000020) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeBoolSize(11, deleteSourceObjects_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -2367,6 +2408,10 @@ public boolean equals(final java.lang.Object obj) { if (hasObjectChecksums()) { if (!getObjectChecksums().equals(other.getObjectChecksums())) return false; } + if (hasDeleteSourceObjects() != other.hasDeleteSourceObjects()) return false; + if (hasDeleteSourceObjects()) { + if (getDeleteSourceObjects() != other.getDeleteSourceObjects()) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -2406,6 +2451,10 @@ public int hashCode() { hash = (37 * hash) + OBJECT_CHECKSUMS_FIELD_NUMBER; hash = (53 * hash) + getObjectChecksums().hashCode(); } + if (hasDeleteSourceObjects()) { + hash = (37 * hash) + DELETE_SOURCE_OBJECTS_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getDeleteSourceObjects()); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -2584,6 +2633,7 @@ public Builder clear() { objectChecksumsBuilder_.dispose(); objectChecksumsBuilder_ = null; } + deleteSourceObjects_ = false; return this; } @@ -2665,6 +2715,10 @@ private void buildPartial0(com.google.storage.v2.ComposeObjectRequest result) { objectChecksumsBuilder_ == null ? objectChecksums_ : objectChecksumsBuilder_.build(); to_bitField0_ |= 0x00000010; } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.deleteSourceObjects_ = deleteSourceObjects_; + to_bitField0_ |= 0x00000020; + } result.bitField0_ |= to_bitField0_; } @@ -2732,6 +2786,9 @@ public Builder mergeFrom(com.google.storage.v2.ComposeObjectRequest other) { if (other.hasObjectChecksums()) { mergeObjectChecksums(other.getObjectChecksums()); } + if (other.hasDeleteSourceObjects()) { + setDeleteSourceObjects(other.getDeleteSourceObjects()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -2818,6 +2875,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000080; break; } // case 82 + case 88: + { + deleteSourceObjects_ = input.readBool(); + bitField0_ |= 0x00000100; + break; + } // case 88 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -4340,6 +4403,78 @@ public com.google.storage.v2.ObjectChecksumsOrBuilder getObjectChecksumsOrBuilde return objectChecksumsBuilder_; } + private boolean deleteSourceObjects_; + + /** + * + * + *
+     * Whether the source objects should be deleted in the compose request.
+     * 
+ * + * optional bool delete_source_objects = 11; + * + * @return Whether the deleteSourceObjects field is set. + */ + @java.lang.Override + public boolean hasDeleteSourceObjects() { + return ((bitField0_ & 0x00000100) != 0); + } + + /** + * + * + *
+     * Whether the source objects should be deleted in the compose request.
+     * 
+ * + * optional bool delete_source_objects = 11; + * + * @return The deleteSourceObjects. + */ + @java.lang.Override + public boolean getDeleteSourceObjects() { + return deleteSourceObjects_; + } + + /** + * + * + *
+     * Whether the source objects should be deleted in the compose request.
+     * 
+ * + * optional bool delete_source_objects = 11; + * + * @param value The deleteSourceObjects to set. + * @return This builder for chaining. + */ + public Builder setDeleteSourceObjects(boolean value) { + + deleteSourceObjects_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + + /** + * + * + *
+     * Whether the source objects should be deleted in the compose request.
+     * 
+ * + * optional bool delete_source_objects = 11; + * + * @return This builder for chaining. + */ + public Builder clearDeleteSourceObjects() { + bitField0_ = (bitField0_ & ~0x00000100); + deleteSourceObjects_ = false; + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:google.storage.v2.ComposeObjectRequest) } diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ComposeObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ComposeObjectRequestOrBuilder.java index a5e00ab0d5..c6df27b12e 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ComposeObjectRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ComposeObjectRequestOrBuilder.java @@ -353,4 +353,30 @@ com.google.storage.v2.ComposeObjectRequest.SourceObjectOrBuilder getSourceObject * */ com.google.storage.v2.ObjectChecksumsOrBuilder getObjectChecksumsOrBuilder(); + + /** + * + * + *
+   * Whether the source objects should be deleted in the compose request.
+   * 
+ * + * optional bool delete_source_objects = 11; + * + * @return Whether the deleteSourceObjects field is set. + */ + boolean hasDeleteSourceObjects(); + + /** + * + * + *
+   * Whether the source objects should be deleted in the compose request.
+   * 
+ * + * optional bool delete_source_objects = 11; + * + * @return The deleteSourceObjects. + */ + boolean getDeleteSourceObjects(); } diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectContexts.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectContexts.java index 7540bb8cf3..ccd83b4965 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectContexts.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectContexts.java @@ -120,6 +120,9 @@ public int getCustomCount() { * *
    * Optional. User-defined object contexts.
+   * The maximum key or value size is `256` characters.
+   * The maximum number of entries is `50`.
+   * The maximum total serialized size of all entries is `25KiB`.
    * 
* * @@ -147,6 +150,9 @@ public boolean containsCustom(java.lang.String key) { * *
    * Optional. User-defined object contexts.
+   * The maximum key or value size is `256` characters.
+   * The maximum number of entries is `50`.
+   * The maximum total serialized size of all entries is `25KiB`.
    * 
* * @@ -164,6 +170,9 @@ public boolean containsCustom(java.lang.String key) { * *
    * Optional. User-defined object contexts.
+   * The maximum key or value size is `256` characters.
+   * The maximum number of entries is `50`.
+   * The maximum total serialized size of all entries is `25KiB`.
    * 
* * @@ -188,6 +197,9 @@ public boolean containsCustom(java.lang.String key) { * *
    * Optional. User-defined object contexts.
+   * The maximum key or value size is `256` characters.
+   * The maximum number of entries is `50`.
+   * The maximum total serialized size of all entries is `25KiB`.
    * 
* * @@ -617,6 +629,9 @@ public int getCustomCount() { * *
      * Optional. User-defined object contexts.
+     * The maximum key or value size is `256` characters.
+     * The maximum number of entries is `50`.
+     * The maximum total serialized size of all entries is `25KiB`.
      * 
* * @@ -644,6 +659,9 @@ public boolean containsCustom(java.lang.String key) { * *
      * Optional. User-defined object contexts.
+     * The maximum key or value size is `256` characters.
+     * The maximum number of entries is `50`.
+     * The maximum total serialized size of all entries is `25KiB`.
      * 
* * @@ -661,6 +679,9 @@ public boolean containsCustom(java.lang.String key) { * *
      * Optional. User-defined object contexts.
+     * The maximum key or value size is `256` characters.
+     * The maximum number of entries is `50`.
+     * The maximum total serialized size of all entries is `25KiB`.
      * 
* * @@ -685,6 +706,9 @@ public boolean containsCustom(java.lang.String key) { * *
      * Optional. User-defined object contexts.
+     * The maximum key or value size is `256` characters.
+     * The maximum number of entries is `50`.
+     * The maximum total serialized size of all entries is `25KiB`.
      * 
* * @@ -715,6 +739,9 @@ public Builder clearCustom() { * *
      * Optional. User-defined object contexts.
+     * The maximum key or value size is `256` characters.
+     * The maximum number of entries is `50`.
+     * The maximum total serialized size of all entries is `25KiB`.
      * 
* * @@ -742,6 +769,9 @@ public Builder removeCustom(java.lang.String key) { * *
      * Optional. User-defined object contexts.
+     * The maximum key or value size is `256` characters.
+     * The maximum number of entries is `50`.
+     * The maximum total serialized size of all entries is `25KiB`.
      * 
* * @@ -766,6 +796,9 @@ public Builder putCustom( * *
      * Optional. User-defined object contexts.
+     * The maximum key or value size is `256` characters.
+     * The maximum number of entries is `50`.
+     * The maximum total serialized size of all entries is `25KiB`.
      * 
* * @@ -790,6 +823,9 @@ public Builder putAllCustom( * *
      * Optional. User-defined object contexts.
+     * The maximum key or value size is `256` characters.
+     * The maximum number of entries is `50`.
+     * The maximum total serialized size of all entries is `25KiB`.
      * 
* * diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectContextsOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectContextsOrBuilder.java index 0a67146e15..ce825834ce 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectContextsOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectContextsOrBuilder.java @@ -31,6 +31,9 @@ public interface ObjectContextsOrBuilder * *
    * Optional. User-defined object contexts.
+   * The maximum key or value size is `256` characters.
+   * The maximum number of entries is `50`.
+   * The maximum total serialized size of all entries is `25KiB`.
    * 
* * @@ -44,6 +47,9 @@ public interface ObjectContextsOrBuilder * *
    * Optional. User-defined object contexts.
+   * The maximum key or value size is `256` characters.
+   * The maximum number of entries is `50`.
+   * The maximum total serialized size of all entries is `25KiB`.
    * 
* * @@ -61,6 +67,9 @@ public interface ObjectContextsOrBuilder * *
    * Optional. User-defined object contexts.
+   * The maximum key or value size is `256` characters.
+   * The maximum number of entries is `50`.
+   * The maximum total serialized size of all entries is `25KiB`.
    * 
* * @@ -74,6 +83,9 @@ public interface ObjectContextsOrBuilder * *
    * Optional. User-defined object contexts.
+   * The maximum key or value size is `256` characters.
+   * The maximum number of entries is `50`.
+   * The maximum total serialized size of all entries is `25KiB`.
    * 
* * @@ -91,6 +103,9 @@ com.google.storage.v2.ObjectCustomContextPayload getCustomOrDefault( * *
    * Optional. User-defined object contexts.
+   * The maximum key or value size is `256` characters.
+   * The maximum number of entries is `50`.
+   * The maximum total serialized size of all entries is `25KiB`.
    * 
* * diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadRange.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadRange.java index 1aff8b2993..ba607d4e6b 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadRange.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadRange.java @@ -82,8 +82,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { * length is 15 bytes, a `ReadObjectRequest` with `read_offset` = -5 and * `read_length` = 3 would return bytes 10 through 12 of the object. * Requesting a negative offset with magnitude larger than the size of the - * object returns the entire object. A `read_offset` larger than the size - * of the object results in an `OutOfRange` error. + * object is equivalent to `read_offset` = 0. A `read_offset` larger than the + * size of the object results in an `OutOfRange` error. * * * int64 read_offset = 1 [(.google.api.field_behavior) = REQUIRED]; @@ -105,9 +105,9 @@ public long getReadOffset() { * Optional. The maximum number of data bytes the server is allowed to return * across all response messages with the same `read_id`. A `read_length` of * zero indicates to read until the resource end, and a negative `read_length` - * causes an error. If the stream returns fewer bytes than allowed by the - * `read_length` and no error occurred, the stream includes all data from the - * `read_offset` to the resource end. + * causes an `OutOfRange` error. If the stream returns fewer bytes than + * allowed by the `read_length` and no error occurred, the stream includes all + * data from the `read_offset` to the resource end. * * * int64 read_length = 2 [(.google.api.field_behavior) = OPTIONAL]; @@ -503,8 +503,8 @@ public Builder mergeFrom( * length is 15 bytes, a `ReadObjectRequest` with `read_offset` = -5 and * `read_length` = 3 would return bytes 10 through 12 of the object. * Requesting a negative offset with magnitude larger than the size of the - * object returns the entire object. A `read_offset` larger than the size - * of the object results in an `OutOfRange` error. + * object is equivalent to `read_offset` = 0. A `read_offset` larger than the + * size of the object results in an `OutOfRange` error. * * * int64 read_offset = 1 [(.google.api.field_behavior) = REQUIRED]; @@ -528,8 +528,8 @@ public long getReadOffset() { * length is 15 bytes, a `ReadObjectRequest` with `read_offset` = -5 and * `read_length` = 3 would return bytes 10 through 12 of the object. * Requesting a negative offset with magnitude larger than the size of the - * object returns the entire object. A `read_offset` larger than the size - * of the object results in an `OutOfRange` error. + * object is equivalent to `read_offset` = 0. A `read_offset` larger than the + * size of the object results in an `OutOfRange` error. * * * int64 read_offset = 1 [(.google.api.field_behavior) = REQUIRED]; @@ -557,8 +557,8 @@ public Builder setReadOffset(long value) { * length is 15 bytes, a `ReadObjectRequest` with `read_offset` = -5 and * `read_length` = 3 would return bytes 10 through 12 of the object. * Requesting a negative offset with magnitude larger than the size of the - * object returns the entire object. A `read_offset` larger than the size - * of the object results in an `OutOfRange` error. + * object is equivalent to `read_offset` = 0. A `read_offset` larger than the + * size of the object results in an `OutOfRange` error. * * * int64 read_offset = 1 [(.google.api.field_behavior) = REQUIRED]; @@ -581,9 +581,9 @@ public Builder clearReadOffset() { * Optional. The maximum number of data bytes the server is allowed to return * across all response messages with the same `read_id`. A `read_length` of * zero indicates to read until the resource end, and a negative `read_length` - * causes an error. If the stream returns fewer bytes than allowed by the - * `read_length` and no error occurred, the stream includes all data from the - * `read_offset` to the resource end. + * causes an `OutOfRange` error. If the stream returns fewer bytes than + * allowed by the `read_length` and no error occurred, the stream includes all + * data from the `read_offset` to the resource end. * * * int64 read_length = 2 [(.google.api.field_behavior) = OPTIONAL]; @@ -602,9 +602,9 @@ public long getReadLength() { * Optional. The maximum number of data bytes the server is allowed to return * across all response messages with the same `read_id`. A `read_length` of * zero indicates to read until the resource end, and a negative `read_length` - * causes an error. If the stream returns fewer bytes than allowed by the - * `read_length` and no error occurred, the stream includes all data from the - * `read_offset` to the resource end. + * causes an `OutOfRange` error. If the stream returns fewer bytes than + * allowed by the `read_length` and no error occurred, the stream includes all + * data from the `read_offset` to the resource end. * * * int64 read_length = 2 [(.google.api.field_behavior) = OPTIONAL]; @@ -627,9 +627,9 @@ public Builder setReadLength(long value) { * Optional. The maximum number of data bytes the server is allowed to return * across all response messages with the same `read_id`. A `read_length` of * zero indicates to read until the resource end, and a negative `read_length` - * causes an error. If the stream returns fewer bytes than allowed by the - * `read_length` and no error occurred, the stream includes all data from the - * `read_offset` to the resource end. + * causes an `OutOfRange` error. If the stream returns fewer bytes than + * allowed by the `read_length` and no error occurred, the stream includes all + * data from the `read_offset` to the resource end. * * * int64 read_length = 2 [(.google.api.field_behavior) = OPTIONAL]; diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadRangeOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadRangeOrBuilder.java index f798a6ea4f..d7c2c416ec 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadRangeOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadRangeOrBuilder.java @@ -38,8 +38,8 @@ public interface ReadRangeOrBuilder * length is 15 bytes, a `ReadObjectRequest` with `read_offset` = -5 and * `read_length` = 3 would return bytes 10 through 12 of the object. * Requesting a negative offset with magnitude larger than the size of the - * object returns the entire object. A `read_offset` larger than the size - * of the object results in an `OutOfRange` error. + * object is equivalent to `read_offset` = 0. A `read_offset` larger than the + * size of the object results in an `OutOfRange` error. * * * int64 read_offset = 1 [(.google.api.field_behavior) = REQUIRED]; @@ -55,9 +55,9 @@ public interface ReadRangeOrBuilder * Optional. The maximum number of data bytes the server is allowed to return * across all response messages with the same `read_id`. A `read_length` of * zero indicates to read until the resource end, and a negative `read_length` - * causes an error. If the stream returns fewer bytes than allowed by the - * `read_length` and no error occurred, the stream includes all data from the - * `read_offset` to the resource end. + * causes an `OutOfRange` error. If the stream returns fewer bytes than + * allowed by the `read_length` and no error occurred, the stream includes all + * data from the `read_offset` to the resource end. * * * int64 read_length = 2 [(.google.api.field_behavior) = OPTIONAL]; diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageProto.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageProto.java index 1be2610f87..161be5a97e 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageProto.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StorageProto.java @@ -453,7 +453,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\035predefined_default_object_acl\030\t \001(\tB\003\340A\001\0224\n" + "\013update_mask\030\006 \001(\0132\032.google.protobuf.FieldMaskB\003\340A\002B\032\n" + "\030_if_metageneration_matchB\036\n" - + "\034_if_metageneration_not_match\"\226\006\n" + + "\034_if_metageneration_not_match\"\324\006\n" + "\024ComposeObjectRequest\0223\n" + "\013destination\030\001 \001(\0132\031.google.storage.v2.ObjectB\003\340A\002\022Q\n" + "\016source_objects\030\002" @@ -466,18 +466,19 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\034common_object_request_params\030\007 " + "\001(\0132,.google.storage.v2.CommonObjectRequestParamsB\003\340A\001\022A\n" + "\020object_checksums\030\n" - + " \001(\0132\".google.storage.v2.ObjectChecksumsB\003\340A\001\032\370\001\n" + + " \001(\0132\".google.storage.v2.ObjectChecksumsB\003\340A\001\022\"\n" + + "\025delete_source_objects\030\013 \001(\010H\002\210\001\001\032\370\001\n" + "\014SourceObject\022\021\n" - + "\004name\030\001 \001(\tB\003\340A\002\022\027\n" - + "\n" + + "\004name\030\001 \001(\tB\003\340A\002\022\027\n\n" + "generation\030\002 \001(\003B\003\340A\001\022k\n" - + "\024object_preconditions\030\003 \001(\0132H.google.storage.v2.Compose" - + "ObjectRequest.SourceObject.ObjectPreconditionsB\003\340A\001\032O\n" + + "\024object_preconditions\030\003 \001(\0132H.google.storage.v2.ComposeObje" + + "ctRequest.SourceObject.ObjectPreconditionsB\003\340A\001\032O\n" + "\023ObjectPreconditions\022 \n" + "\023if_generation_match\030\001 \001(\003H\000\210\001\001B\026\n" + "\024_if_generation_matchB\026\n" + "\024_if_generation_matchB\032\n" - + "\030_if_metageneration_match\"\333\003\n" + + "\030_if_metageneration_matchB\030\n" + + "\026_delete_source_objects\"\333\003\n" + "\023DeleteObjectRequest\0225\n" + "\006bucket\030\001 \001(\tB%\340A\002\372A\037\n" + "\035storage.googleapis.com/Bucket\022\023\n" @@ -504,8 +505,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\027if_metageneration_match\030\006 \001(\003H\002\210\001\001\022(\n" + "\033if_metageneration_not_match\030\007 \001(\003H\003\210\001\001\022\034\n" + "\017copy_source_acl\030\t \001(\010H\004\210\001\001\022W\n" - + "\034common_object_request_params\030\010 \001(\0132,.g" - + "oogle.storage.v2.CommonObjectRequestParamsB\003\340A\001B\026\n" + + "\034common_object_request_params\030\010" + + " \001(\0132,.google.storage.v2.CommonObjectRequestParamsB\003\340A\001B\026\n" + "\024_if_generation_matchB\032\n" + "\030_if_generation_not_matchB\032\n" + "\030_if_metageneration_matchB\036\n" @@ -519,7 +520,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\035storage.googleapis.com/Bucket\022\023\n" + "\006object\030\002 \001(\tB\003\340A\002\022\027\n\n" + "generation\030\003 \001(\003B\003\340A\001\022\030\n" - + "\013read_offset\030\004 \001(\003B\003\340A\001\022\027\n\n" + + "\013read_offset\030\004 \001(\003B\003\340A\001\022\027\n" + + "\n" + "read_limit\030\005 \001(\003B\003\340A\001\022 \n" + "\023if_generation_match\030\006 \001(\003H\000\210\001\001\022$\n" + "\027if_generation_not_match\030\007 \001(\003H\001\210\001\001\022$\n" @@ -543,8 +545,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\027if_generation_not_match\030\005 \001(\003H\002\210\001\001\022$\n" + "\027if_metageneration_match\030\006 \001(\003H\003\210\001\001\022(\n" + "\033if_metageneration_not_match\030\007 \001(\003H\004\210\001\001\022W\n" - + "\034common_object_request_params\030\010 \001(\0132," - + ".google.storage.v2.CommonObjectRequestParamsB\003\340A\001\0222\n" + + "\034common_object_request_params\030\010" + + " \001(\0132,.google.storage.v2.CommonObjectRequestParamsB\003\340A\001\0222\n" + "\tread_mask\030\n" + " \001(\0132\032.google.protobuf.FieldMaskH\005\210\001\001\022\032\n\r" + "restore_token\030\014 \001(\tB\003\340A\001B\017\n\r" @@ -568,8 +570,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\027if_generation_not_match\030\005 \001(\003H\001\210\001\001\022$\n" + "\027if_metageneration_match\030\006 \001(\003H\002\210\001\001\022(\n" + "\033if_metageneration_not_match\030\007 \001(\003H\003\210\001\001\022W\n" - + "\034common_object_request_params\030\010 \001(\0132,.goo" - + "gle.storage.v2.CommonObjectRequestParamsB\003\340A\001\0226\n" + + "\034common_object_request_params\030\010" + + " \001(\0132,.google.storage.v2.CommonObjectRequestParamsB\003\340A\001\0226\n" + "\tread_mask\030\014" + " \001(\0132\032.google.protobuf.FieldMaskB\002\030\001H\004\210\001\001\022;\n" + "\013read_handle\030\r" @@ -583,8 +585,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\014_read_handleB\020\n" + "\016_routing_token\"\225\001\n" + "\025BidiReadObjectRequest\022D\n" - + "\020read_object_spec\030\001 \001" - + "(\0132%.google.storage.v2.BidiReadObjectSpecB\003\340A\001\0226\n" + + "\020read_object_spec\030\001" + + " \001(\0132%.google.storage.v2.BidiReadObjectSpecB\003\340A\001\0226\n" + "\013read_ranges\030\010" + " \003(\0132\034.google.storage.v2.ReadRangeB\003\340A\001\"\275\001\n" + "\026BidiReadObjectResponse\022>\n" @@ -601,7 +603,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + " \001(\0132\".google.storage.v2.BidiWriteHandleH\001\210\001\001\022\027\n\n" + "generation\030\003 \001(\003H\002\210\001\001B\020\n" + "\016_routing_tokenB\017\n\r" - + "_write_handleB\r\n" + + "_write_handleB\r" + + "\n" + "\013_generation\"S\n" + "\023BidiReadObjectError\022<\n" + "\021read_range_errors\030\001 \003(\0132!.google.storage.v2.ReadRangeError\"E\n" @@ -637,16 +640,16 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\013_appendable\"\225\003\n" + "\022WriteObjectRequest\022\023\n" + "\tupload_id\030\001 \001(\tH\000\022?\n" - + "\021write_object_spec\030\002" - + " \001(\0132\".google.storage.v2.WriteObjectSpecH\000\022\031\n" + + "\021write_object_spec\030\002 \001" + + "(\0132\".google.storage.v2.WriteObjectSpecH\000\022\031\n" + "\014write_offset\030\003 \001(\003B\003\340A\002\022>\n" + "\020checksummed_data\030\004" + " \001(\0132\".google.storage.v2.ChecksummedDataH\001\022A\n" - + "\020object_checksums\030\006" - + " \001(\0132\".google.storage.v2.ObjectChecksumsB\003\340A\001\022\031\n" + + "\020object_checksums\030\006 \001(\0132\"." + + "google.storage.v2.ObjectChecksumsB\003\340A\001\022\031\n" + "\014finish_write\030\007 \001(\010B\003\340A\001\022W\n" - + "\034common_object_request_params\030\010 \001(" - + "\0132,.google.storage.v2.CommonObjectRequestParamsB\003\340A\001B\017\n\r" + + "\034common_object_request_params\030\010" + + " \001(\0132,.google.storage.v2.CommonObjectRequestParamsB\003\340A\001B\017\n\r" + "first_messageB\006\n" + "\004data\"n\n" + "\023WriteObjectResponse\022\030\n" @@ -661,8 +664,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\027if_metageneration_match\030\004 \001(\003H\000\210\001\001\022(\n" + "\033if_metageneration_not_match\030\005 \001(\003H\001\210\001\001\022\032\n\r" + "routing_token\030\006 \001(\tH\002\210\001\001\022=\n" - + "\014write_handle\030\007 \001(" - + "\0132\".google.storage.v2.BidiWriteHandleH\003\210\001\001B\032\n" + + "\014write_handle\030\007" + + " \001(\0132\".google.storage.v2.BidiWriteHandleH\003\210\001\001B\032\n" + "\030_if_metageneration_matchB\036\n" + "\034_if_metageneration_not_matchB\020\n" + "\016_routing_tokenB\017\n\r" @@ -713,8 +716,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "_read_mask\"\212\001\n" + "\027QueryWriteStatusRequest\022\026\n" + "\tupload_id\030\001 \001(\tB\003\340A\002\022W\n" - + "\034common_object_request_params\030\002 \001(\0132,.goog" - + "le.storage.v2.CommonObjectRequestParamsB\003\340A\001\"s\n" + + "\034common_object_request_params\030\002" + + " \001(\0132,.google.storage.v2.CommonObjectRequestParamsB\003\340A\001\"s\n" + "\030QueryWriteStatusResponse\022\030\n" + "\016persisted_size\030\001 \001(\003H\000\022-\n" + "\010resource\030\002 \001(\0132\031.google.storage.v2.ObjectH\000B\016\n" @@ -725,10 +728,10 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\035storage.googleapis.com/Bucket\022F\n" + "\023destination_kms_key\030\033 \001(\tB)\340A\001\372A#\n" + "!cloudkms.googleapis.com/CryptoKey\0223\n" - + "\013destination\030\001 \001(\0132\031.google.storage.v2.ObjectB\003\340A\001\022<\n\r" - + "source_bucket\030\002 \001(\tB%\340A\002\372A\037\n" - + "\035storage.googleapis.com/Bucket\022\032\n" + + "\013destination\030\001 \001(\0132\031.google.storage.v2.ObjectB\003\340A\001\022<\n" + "\r" + + "source_bucket\030\002 \001(\tB%\340A\002\372A\037\n" + + "\035storage.googleapis.com/Bucket\022\032\n\r" + "source_object\030\003 \001(\tB\003\340A\002\022\036\n" + "\021source_generation\030\004 \001(\003B\003\340A\001\022\032\n\r" + "rewrite_token\030\005 \001(\tB\003\340A\001\022\'\n" @@ -747,8 +750,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + " copy_source_encryption_algorithm\030\020 \001(\tB\003\340A\001\022-\n" + " copy_source_encryption_key_bytes\030\025 \001(\014B\003\340A\001\0224\n" + "\'copy_source_encryption_key_sha256_bytes\030\026 \001(\014B\003\340A\001\022W\n" - + "\034common_object_request_params\030\023" - + " \001(\0132,.google.storage.v2.CommonObjectRequestParamsB\003\340A\001\022A\n" + + "\034common_object_request_params\030\023 \001(\0132,.google.s" + + "torage.v2.CommonObjectRequestParamsB\003\340A\001\022A\n" + "\020object_checksums\030\035" + " \001(\0132\".google.storage.v2.ObjectChecksumsB\003\340A\001B\026\n" + "\024_if_generation_matchB\032\n" @@ -794,8 +797,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\032StartResumableWriteRequest\022B\n" + "\021write_object_spec\030\001" + " \001(\0132\".google.storage.v2.WriteObjectSpecB\003\340A\002\022W\n" - + "\034common_object_request_params\030\003 \001(\0132,.google." - + "storage.v2.CommonObjectRequestParamsB\003\340A\001\022A\n" + + "\034common_object_request_params\030\003" + + " \001(\0132,.google.storage.v2.CommonObjectRequestParamsB\003\340A\001\022A\n" + "\020object_checksums\030\005" + " \001(\0132\".google.storage.v2.ObjectChecksumsB\003\340A\001\"0\n" + "\033StartResumableWriteResponse\022\021\n" @@ -847,14 +850,13 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\007project\030\003 \001(\tB3\340A\005\372A-\n" + "+cloudresourcemanager.googleapis.com/Project\022\033\n" + "\016metageneration\030\004 \001(\003B\003\340A\003\022\025\n" - + "\010location\030\005 \001(\tB\003\340A\005\022\032\n" - + "\r" + + "\010location\030\005 \001(\tB\003\340A\005\022\032\n\r" + "location_type\030\006 \001(\tB\003\340A\003\022\032\n\r" + "storage_class\030\007 \001(\tB\003\340A\001\022\020\n" + "\003rpo\030\033 \001(\tB\003\340A\001\0228\n" + "\003acl\030\010 \003(\0132&.google.storage.v2.BucketAccessControlB\003\340A\001\022G\n" - + "\022default_object_acl\030\t \003(\0132&." - + "google.storage.v2.ObjectAccessControlB\003\340A\001\022;\n" + + "\022default_object_acl\030\t" + + " \003(\0132&.google.storage.v2.ObjectAccessControlB\003\340A\001\022;\n" + "\tlifecycle\030\n" + " \001(\0132#.google.storage.v2.Bucket.LifecycleB\003\340A\001\0224\n" + "\013create_time\030\013 \001(\0132\032.google.protobuf.TimestampB\003\340A\003\0221\n" @@ -862,34 +864,34 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\013update_time\030\r" + " \001(\0132\032.google.protobuf.TimestampB\003\340A\003\022%\n" + "\030default_event_based_hold\030\016 \001(\010B\003\340A\001\022:\n" - + "\006labels\030\017 \003(\0132%." - + "google.storage.v2.Bucket.LabelsEntryB\003\340A\001\0227\n" - + "\007website\030\020" - + " \001(\0132!.google.storage.v2.Bucket.WebsiteB\003\340A\001\022=\n\n" - + "versioning\030\021 \001(\0132$" - + ".google.storage.v2.Bucket.VersioningB\003\340A\001\0227\n" + + "\006labels\030\017" + + " \003(\0132%.google.storage.v2.Bucket.LabelsEntryB\003\340A\001\0227\n" + + "\007website\030\020 \001(\013" + + "2!.google.storage.v2.Bucket.WebsiteB\003\340A\001\022=\n\n" + + "versioning\030\021" + + " \001(\0132$.google.storage.v2.Bucket.VersioningB\003\340A\001\0227\n" + "\007logging\030\022 \001(\0132!.google.storage.v2.Bucket.LoggingB\003\340A\001\022,\n" + "\005owner\030\023 \001(\0132\030.google.storage.v2.OwnerB\003\340A\003\022=\n\n" + "encryption\030\024" + " \001(\0132$.google.storage.v2.Bucket.EncryptionB\003\340A\001\0227\n" + "\007billing\030\025 \001(\0132!.google.storage.v2.Bucket.BillingB\003\340A\001\022H\n" - + "\020retention_policy\030\026" - + " \001(\0132).google.storage.v2.Bucket.RetentionPolicyB\003\340A\001\022<\n\n" - + "iam_config\030\027 \001(\0132#" - + ".google.storage.v2.Bucket.IamConfigB\003\340A\001\022\032\n\r" + + "\020retention_policy\030\026 \001(\0132).googl" + + "e.storage.v2.Bucket.RetentionPolicyB\003\340A\001\022<\n\n" + + "iam_config\030\027" + + " \001(\0132#.google.storage.v2.Bucket.IamConfigB\003\340A\001\022\032\n\r" + "satisfies_pzs\030\031 \001(\010B\003\340A\001\022U\n" - + "\027custom_placement_config\030\032" - + " \001(\0132/.google.storage.v2.Bucket.CustomPlacementConfigB\003\340A\001\022;\n" - + "\tautoclass\030\034" - + " \001(\0132#.google.storage.v2.Bucket.AutoclassB\003\340A\001\022T\n" - + "\026hierarchical_namespace\030 " - + " \001(\0132/.google.storage.v2.Bucket.HierarchicalNamespaceB\003\340A\001\022K\n" - + "\022soft_delete_policy\030\037" - + " \001(\0132*.google.storage.v2.Bucket.SoftDeletePolicyB\003\340A\001\022H\n" + + "\027custom_placement_config\030\032 " + + "\001(\0132/.google.storage.v2.Bucket.CustomPlacementConfigB\003\340A\001\022;\n" + + "\tautoclass\030\034 \001(\0132#.g" + + "oogle.storage.v2.Bucket.AutoclassB\003\340A\001\022T\n" + + "\026hierarchical_namespace\030 \001(\0132/.google." + + "storage.v2.Bucket.HierarchicalNamespaceB\003\340A\001\022K\n" + + "\022soft_delete_policy\030\037 \001(\0132*.googl" + + "e.storage.v2.Bucket.SoftDeletePolicyB\003\340A\001\022H\n" + "\020object_retention\030!" + " \001(\0132).google.storage.v2.Bucket.ObjectRetentionB\003\340A\001\022?\n" - + "\tip_filter\030& \001(\0132\".googl" - + "e.storage.v2.Bucket.IpFilterB\003\340A\001H\000\210\001\001\032&\n" + + "\tip_filter\030&" + + " \001(\0132\".google.storage.v2.Bucket.IpFilterB\003\340A\001H\000\210\001\001\032&\n" + "\007Billing\022\033\n" + "\016requester_pays\030\001 \001(\010B\003\340A\001\032l\n" + "\004Cors\022\023\n" @@ -900,14 +902,15 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "Encryption\022B\n" + "\017default_kms_key\030\001 \001(\tB)\340A\001\372A#\n" + "!cloudkms.googleapis.com/CryptoKey\022\215\001\n" - + ",google_managed_encryption_enforcement_config\030\002" - + " \001(\0132M.google.storage.v2.Bucket.Encryp", - "tion.GoogleManagedEncryptionEnforcementConfigB\003\340A\001H\000\210\001\001\022\221\001\n" - + ".customer_managed_encryption_enforcement_config\030\003 \001(\0132O.googl" - + "e.storage.v2.Bucket.Encryption.CustomerM" - + "anagedEncryptionEnforcementConfigB\003\340A\001H\001\210\001\001\022\223\001\n" - + "/customer_supplied_encryption_enforcement_config\030\004 \001(\0132P.google.storage.v" - + "2.Bucket.Encryption.CustomerSuppliedEncryptionEnforcementConfigB\003\340A\001H\002\210\001\001\032\252\001\n" + + ",google_managed_encrypt", + "ion_enforcement_config\030\002 \001(\0132M.google.storage.v2.Bucket.Encryption.GoogleManaged" + + "EncryptionEnforcementConfigB\003\340A\001H\000\210\001\001\022\221\001\n" + + ".customer_managed_encryption_enforcement_config\030\003" + + " \001(\0132O.google.storage.v2.Bucke" + + "t.Encryption.CustomerManagedEncryptionEnforcementConfigB\003\340A\001H\001\210\001\001\022\223\001\n" + + "/customer_supplied_encryption_enforcement_config\030\004 " + + "\001(\0132P.google.storage.v2.Bucket.Encryptio" + + "n.CustomerSuppliedEncryptionEnforcementConfigB\003\340A\001H\002\210\001\001\032\252\001\n" + "(GoogleManagedEncryptionEnforcementConfig\022\035\n" + "\020restriction_mode\030\003 \001(\tH\000\210\001\001\0227\n" + "\016effective_time\030\002" @@ -930,21 +933,21 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "/_customer_managed_encryption_enforcement_configB2\n" + "0_customer_supplied_encryption_enforcement_config\032\200\002\n" + "\tIamConfig\022f\n" - + "\033uniform_bucket_level_access\030\001 \001(\013" - + "2<.google.storage.v2.Bucket.IamConfig.UniformBucketLevelAccessB\003\340A\001\022%\n" + + "\033uniform_bucket_level_access\030\001 \001(\0132<.google.storage." + + "v2.Bucket.IamConfig.UniformBucketLevelAccessB\003\340A\001\022%\n" + "\030public_access_prevention\030\003 \001(\tB\003\340A\001\032d\n" + "\030UniformBucketLevelAccess\022\024\n" + "\007enabled\030\001 \001(\010B\003\340A\001\0222\n" + "\tlock_time\030\002" + " \001(\0132\032.google.protobuf.TimestampB\003\340A\001\032\252\006\n" + "\tLifecycle\022;\n" - + "\004rule\030\001 \003(\0132(.g" - + "oogle.storage.v2.Bucket.Lifecycle.RuleB\003\340A\001\032\337\005\n" + + "\004rule\030\001" + + " \003(\0132(.google.storage.v2.Bucket.Lifecycle.RuleB\003\340A\001\032\337\005\n" + "\004Rule\022D\n" - + "\006action\030\001 \001(\0132/.google.st" - + "orage.v2.Bucket.Lifecycle.Rule.ActionB\003\340A\001\022J\n" - + "\tcondition\030\002 \001(\01322.google.storage.v" - + "2.Bucket.Lifecycle.Rule.ConditionB\003\340A\001\0327\n" + + "\006action\030\001" + + " \001(\0132/.google.storage.v2.Bucket.Lifecycle.Rule.ActionB\003\340A\001\022J\n" + + "\tcondition\030\002 " + + "\001(\01322.google.storage.v2.Bucket.Lifecycle.Rule.ConditionB\003\340A\001\0327\n" + "\006Action\022\021\n" + "\004type\030\001 \001(\tB\003\340A\001\022\032\n\r" + "storage_class\030\002 \001(\tB\003\340A\001\032\213\004\n" @@ -1001,10 +1004,10 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "#_terminal_storage_class_update_time\032\375\003\n" + "\010IpFilter\022\021\n" + "\004mode\030\001 \001(\tH\000\210\001\001\022Z\n" - + "\025public_network_source\030\002" - + " \001(\01326.google.storage.v2.Bucket.IpFilter.PublicNetworkSourceH\001\210\001\001\022U\n" - + "\023vpc_network_sources\030\003 \003(\01323.google.storage" - + ".v2.Bucket.IpFilter.VpcNetworkSourceB\003\340A\001\022!\n" + + "\025public_network_source\030\002 \001(\01326.go" + + "ogle.storage.v2.Bucket.IpFilter.PublicNetworkSourceH\001\210\001\001\022U\n" + + "\023vpc_network_sources\030\003" + + " \003(\01323.google.storage.v2.Bucket.IpFilter.VpcNetworkSourceB\003\340A\001\022!\n" + "\024allow_cross_org_vpcs\030\004 \001(\010B\003\340A\001\022+\n" + "\036allow_all_service_agent_access\030\005 \001(\010H\002\210\001\001\032:\n" + "\023PublicNetworkSource\022#\n" @@ -1021,8 +1024,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\013LabelsEntry\022\013\n" + "\003key\030\001 \001(\t\022\r\n" + "\005value\030\002 \001(\t:\0028\001:X\352AU\n" - + "\035storage.googleapis.com/Bucket\022#projec" - + "ts/{project}/buckets/{bucket}*\007buckets2\006bucketB\014\n\n" + + "\035storage.googlea" + + "pis.com/Bucket\022#projects/{project}/buckets/{bucket}*\007buckets2\006bucketB\014\n\n" + "_ip_filter\"\366\001\n" + "\023BucketAccessControl\022\021\n" + "\004role\030\001 \001(\tB\003\340A\001\022\017\n" @@ -1049,12 +1052,12 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\013update_time\030\003" + " \001(\0132\032.google.protobuf.TimestampB\003\340A\003\"\262\001\n" + "\016ObjectContexts\022B\n" - + "\006custom\030\001" - + " \003(\0132-.google.storage.v2.ObjectContexts.CustomEntryB\003\340A\001\032\\\n" + + "\006custom\030\001 \003(\0132-.goo" + + "gle.storage.v2.ObjectContexts.CustomEntryB\003\340A\001\032\\\n" + "\013CustomEntry\022\013\n" + "\003key\030\001 \001(\t\022<\n" - + "\005value\030\002 \001(\0132-.google.sto" - + "rage.v2.ObjectCustomContextPayload:\0028\001\"V\n" + + "\005value\030\002" + + " \001(\0132-.google.storage.v2.ObjectCustomContextPayload:\0028\001\"V\n" + "\022CustomerEncryption\022!\n" + "\024encryption_algorithm\030\001 \001(\tB\003\340A\001\022\035\n" + "\020key_sha256_bytes\030\003 \001(\014B\003\340A\001\"\221\016\n" @@ -1063,10 +1066,10 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\006bucket\030\002 \001(\tB%\340A\005\372A\037\n" + "\035storage.googleapis.com/Bucket\022\021\n" + "\004etag\030\033 \001(\tB\003\340A\001\022\027\n\n" - + "generation\030\003 \001(\003B\003\340A\005\022\037\n\r" - + "restore_token\030# \001(\tB\003\340A\003H\000\210\001\001\022\033\n" - + "\016metageneration\030\004 \001(\003B\003\340A\003\022\032\n" + + "generation\030\003 \001(\003B\003\340A\005\022\037\n" + "\r" + + "restore_token\030# \001(\tB\003\340A\003H\000\210\001\001\022\033\n" + + "\016metageneration\030\004 \001(\003B\003\340A\003\022\032\n\r" + "storage_class\030\005 \001(\tB\003\340A\001\022\021\n" + "\004size\030\006 \001(\003B\003\340A\003\022\035\n" + "\020content_encoding\030\007 \001(\tB\003\340A\001\022 \n" @@ -1093,8 +1096,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\016temporary_hold\030\024 \001(\010B\003\340A\001\022>\n" + "\025retention_expire_time\030\025" + " \001(\0132\032.google.protobuf.TimestampB\003\340A\001\022>\n" - + "\010metadata\030\026 \003(\013" - + "2\'.google.storage.v2.Object.MetadataEntryB\003\340A\001\0228\n" + + "\010metadata\030\026" + + " \003(\0132\'.google.storage.v2.Object.MetadataEntryB\003\340A\001\0228\n" + "\010contexts\030& \001(\0132!.google.storage.v2.ObjectContextsB\003\340A\001\022\035\n" + "\020event_based_hold\030\027 \001(\010H\001\210\001\001\022,\n" + "\005owner\030\030 \001(\0132\030.google.storage.v2.OwnerB\003\340A\003\022G\n" @@ -1105,8 +1108,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + " \001(\0132\032.google.protobuf.TimestampB\003\340A\003H\002\210\001\001\022>\n" + "\020hard_delete_time\030\035" + " \001(\0132\032.google.protobuf.TimestampB\003\340A\003H\003\210\001\001\022;\n" - + "\tretention\030\036" - + " \001(\0132#.google.storage.v2.Object.RetentionB\003\340A\001\032\274\001\n" + + "\tretention\030\036 \001(\0132#." + + "google.storage.v2.Object.RetentionB\003\340A\001\032\274\001\n" + "\tRetention\022;\n" + "\004mode\030\001" + " \001(\0162(.google.storage.v2.Object.Retention.ModeB\003\340A\001\022:\n" @@ -1117,8 +1120,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\010UNLOCKED\020\001\022\n\n" + "\006LOCKED\020\002\032/\n\r" + "MetadataEntry\022\013\n" - + "\003key\030\001 \001(\t\022\r" - + "\n" + + "\003key\030\001 \001(\t\022\r\n" + "\005value\030\002 \001(\t:\0028\001B\020\n" + "\016_restore_tokenB\023\n" + "\021_event_based_holdB\023\n" @@ -1150,98 +1152,96 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\003end\030\002 \001(\003\022\027\n" + "\017complete_length\030\003 \001(\0032\237\037\n" + "\007Storage\022r\n" - + "\014DeleteBucket\022&.google" - + ".storage.v2.DeleteBucketRequest\032\026.google.protobuf.Empty\"\"\332A\004name\212\323\344\223\002\025\022\023\n" + + "\014DeleteBucket\022&.google.storage.v2.Delete" + + "BucketRequest\032\026.google.protobuf.Empty\"\"\332A\004name\212\323\344\223\002\025\022\023\n" + "\004name\022\013{bucket=**}\022o\n" - + "\tGetBucket\022#.google.storag" - + "e.v2.GetBucketRequest\032\031.google.storage.v2.Bucket\"\"\332A\004name\212\323\344\223\002\025\022\023\n" + + "\tGetBucket\022#.google.storage.v2.GetBucketRequ" + + "est\032\031.google.storage.v2.Bucket\"\"\332A\004name\212\323\344\223\002\025\022\023\n" + "\004name\022\013{bucket=**}\022\253\001\n" - + "\014CreateBucket\022&.google.storage.v2.CreateBucketRequest\032\031.google.storage.v" - + "2.Bucket\"X\332A\027parent,bucket,bucket_id\212\323\344\223\0028\022\026\n" + + "\014CreateBucket\022&.google.storage.v2.CreateBucketRequ" + + "est\032\031.google.storage.v2.Bucket\"X\332A\027parent,bucket,bucket_id\212\323\344\223\0028\022\026\n" + "\006parent\022\014{project=**}\022\036\n" + "\016bucket.project\022\014{project=**}\022\205\001\n" - + "\013ListBuckets\022%.google.storage.v2.ListBucketsRequest\032&.goog" - + "le.storage.v2.ListBucketsResponse\"\'\332A\006parent\212\323\344\223\002\030\022\026\n" + + "\013ListBuckets\022%.google.storage.v2.Lis" + + "tBucketsRequest\032&.google.storage.v2.ListBucketsResponse\"\'\332A\006parent\212\323\344\223\002\030\022\026\n" + "\006parent\022\014{project=**}\022\223\001\n" - + "\031LockBucketRetentionPolicy\0223.google.storag" - + "e.v2.LockBucketRetentionPolicyRequest\032\031." - + "google.storage.v2.Bucket\"&\332A\006bucket\212\323\344\223\002\027\022\025\n" + + "\031LockBucketRetentionPolicy\0223.google.storage.v2.LockBucketRet" + + "entionPolicyRequest\032\031.google.storage.v2.Bucket\"&\332A\006bucket\212\323\344\223\002\027\022\025\n" + "\006bucket\022\013{bucket=**}\022\243\001\n" - + "\014GetIamPolicy\022\".google.iam.v1.GetIamPolicyRequest\032\025." - + "google.iam.v1.Policy\"X\332A\010resource\212\323\344\223\002G\022\027\n" + + "\014GetIamPolicy\022\".google.iam.v1." + + "GetIamPolicyRequest\032\025.google.iam.v1.Policy\"X\332A\010resource\212\323\344\223\002G\022\027\n" + "\010resource\022\013{bucket=**}\022,\n" + "\010resource\022 {bucket=projects/*/buckets/*}/**\022\252\001\n" - + "\014SetIamPolicy\022\".google.iam.v1.SetIamPolicyRequ" - + "est\032\025.google.iam.v1.Policy\"_\332A\017resource,policy\212\323\344\223\002G\022\027\n" + + "\014SetIamPolicy\022\".google.i" + + "am.v1.SetIamPolicyRequest\032\025.google.iam.v1.Policy\"_\332A\017resource,policy\212\323\344\223\002G\022\027\n" + "\010resource\022\013{bucket=**}\022,\n" + "\010resource\022 {bucket=projects/*/buckets/*}/**\022\226\002\n" - + "\022TestIamPermissions\022(.google.iam.v1.TestIamPermissionsRequest\032).google.ia" - + "m.v1.TestIamPermissionsResponse\"\252\001\332A\024resource,permissions\212\323\344\223\002\214\001\022\027\n" + + "\022TestIamPermissions\022(.google.iam.v1.TestIamPermissi" + + "onsRequest\032).google.iam.v1.TestIamPermis" + + "sionsResponse\"\252\001\332A\024resource,permissions\212\323\344\223\002\214\001\022\027\n" + "\010resource\022\013{bucket=**}\0224\n" + "\010resource\022({bucket=projects/*/buckets/*}/objects/**\022;\n" + "\010resource\022/{bucket=projects/*/buckets/*}/managedFolders/**\022\212\001\n" - + "\014UpdateBucket\022&.google.storage.v" - + "2.UpdateBucketRequest\032\031.google.storage.v2.Bucket\"7\332A\022bucket,update_mask\212\323\344\223\002\034\022\032\n" + + "\014UpdateBucket\022&.google.storage.v2.UpdateBucketRequ" + + "est\032\031.google.storage.v2.Bucket\"7\332A\022bucket,update_mask\212\323\344\223\002\034\022\032\n" + "\013bucket.name\022\013{bucket=**}\022~\n\r" - + "ComposeObject\022\'.google.storage.v2.ComposeObjectRequ" - + "est\032\031.google.storage.v2.Object\")\212\323\344\223\002#\022!\n" + + "ComposeObject\022\'.google.storag" + + "e.v2.ComposeObjectRequest\032\031.google.storage.v2.Object\")\212\323\344\223\002#\022!\n" + "\022destination.bucket\022\013{bucket=**}\022\230\001\n" - + "\014De" - + "leteObject\022&.google.storage.v2.DeleteObjectRequest\032\026.google.protobuf.Empty\"H\332A\r" + + "\014DeleteObject\022&.googl" + + "e.storage.v2.DeleteObjectRequest\032\026.google.protobuf.Empty\"H\332A\r" + "bucket,object\332A\030bucket,object,generation\212\323\344\223\002\027\022\025\n" + "\006bucket\022\013{bucket=**}\022\215\001\n\r" - + "RestoreObject\022\'.google.storage.v2.RestoreObject" - + "Request\032\031.google.storage.v2.Object\"8\332A\030bucket,object,generation\212\323\344\223\002\027\022\025\n" + + "RestoreObject\022\'.google.storage.v2.RestoreObjectRequest\032\031.google.s" + + "torage.v2.Object\"8\332A\030bucket,object,generation\212\323\344\223\002\027\022\025\n" + "\006bucket\022\013{bucket=**}\022\272\001\n" - + "\024CancelResumableWrite\022..google.storage.v2.CancelResumableWriteRe" - + "quest\032/.google.storage.v2.CancelResumableWriteResponse\"A\332A" - + "\tupload_id\212\323\344\223\002/\022-\n" + + "\024CancelResumableWrite\022..google.storage.v2." + + "CancelResumableWriteRequest\032/.google.sto" + + "rage.v2.CancelResumableWriteResponse\"A\332A\tupload_id\212\323\344\223\002/\022-\n" + "\tupload_id\022 {bucket=projects/*/buckets/*}/**\022\225\001\n" - + "\tGetObject\022#.google.storage.v2.GetO" - + "bjectRequest\032\031.google.storage.v2.Object\"H\332A\r" + + "\tGetObject\022#." + + "google.storage.v2.GetObjectRequest\032\031.google.storage.v2.Object\"H\332A\r" + "bucket,object\332A\030bucket,object,generation\212\323\344\223\002\027\022\025\n" + "\006bucket\022\013{bucket=**}\022\245\001\n\n" - + "ReadObject\022$.google.storage.v2.ReadObjectR" - + "equest\032%.google.storage.v2.ReadObjectResponse\"H\332A\r" + + "ReadObject\022$.google." + + "storage.v2.ReadObjectRequest\032%.google.storage.v2.ReadObjectResponse\"H\332A\r" + "bucket,object\332A\030bucket,object,generation\212\323\344\223\002\027\022\025\n" + "\006bucket\022\013{bucket=**}0\001\022\231\001\n" - + "\016BidiReadObject\022(.google.storage.v2" - + ".BidiReadObjectRequest\032).google.storage.v2.BidiReadObjectResponse\".\212\323\344\223\002(\022&\n" + + "\016BidiReadObject\022(.google.storage.v2.BidiReadObjectReq" + + "uest\032).google.storage.v2.BidiReadObjectResponse\".\212\323\344\223\002(\022&\n" + "\027read_object_spec.bucket\022\013{bucket=**}(\0010\001\022\214\001\n" - + "\014UpdateObject\022&.google.storage.v2.Updat" - + "eObjectRequest\032\031.google.storage.v2.Object\"9\332A\022object,update_mask\212\323\344\223\002\036\022\034\n\r" + + "\014UpdateObject\022&.google.storage.v2.UpdateObjectRequest\032\031.g" + + "oogle.storage.v2.Object\"9\332A\022object,update_mask\212\323\344\223\002\036\022\034\n\r" + "object.bucket\022\013{bucket=**}\022`\n" - + "\013WriteObject\022%.google.storage.v2.WriteObjectRequest\032&.goo" - + "gle.storage.v2.WriteObjectResponse\"\000(\001\022n\n" - + "\017BidiWriteObject\022).google.storage.v2.Bi" - + "diWriteObjectRequest\032*.google.storage.v2.BidiWriteObjectResponse\"\000(\0010\001\022\204\001\n" - + "\013ListObjects\022%.google.storage.v2.ListObjectsRe" - + "quest\032&.google.storage.v2.ListObjectsResponse\"&\332A\006parent\212\323\344\223\002\027\022\025\n" + + "\013WriteObject\022%.google.storage.v2.Wr" + + "iteObjectRequest\032&.google.storage.v2.WriteObjectResponse\"\000(\001\022n\n" + + "\017BidiWriteObject\022).google.storage.v2.BidiWriteObjectReque" + + "st\032*.google.storage.v2.BidiWriteObjectResponse\"\000(\0010\001\022\204\001\n" + + "\013ListObjects\022%.google.storage.v2.ListObjectsRequest\032&.google.sto" + + "rage.v2.ListObjectsResponse\"&\332A\006parent\212\323\344\223\002\027\022\025\n" + "\006parent\022\013{bucket=**}\022\230\001\n\r" - + "RewriteObject\022\'.google.storage" - + ".v2.RewriteObjectRequest\032\".google.storage.v2.RewriteResponse\":\212\323\344\223\0024\022\017\n\r" + + "RewriteObject\022\'.google.storage.v2.RewriteObjectR" + + "equest\032\".google.storage.v2.RewriteResponse\":\212\323\344\223\0024\022\017\n\r" + "source_bucket\022!\n" + "\022destination_bucket\022\013{bucket=**}\022\256\001\n" - + "\023StartResumableWrite\022-.google.storage.v2.StartResumableWriteRequest\032..google" - + ".storage.v2.StartResumableWriteResponse\"8\212\323\344\223\0022\0220\n" + + "\023StartResumableWrite\022-.google.storage.v2.StartResumabl" + + "eWriteRequest\032..google.storage.v2.StartResumableWriteResponse\"8\212\323\344\223\0022\0220\n" + "!write_object_spec.resource.bucket\022\013{bucket=**}\022\256\001\n" - + "\020QueryWriteStatus\022*.google.storage.v2.QueryWriteStatusReque" - + "st\032+.google.storage.v2.QueryWriteStatusResponse\"A\332A" + + "\020QueryWriteStatus\022*.google.storage.v2" + + ".QueryWriteStatusRequest\032+.google.storage.v2.QueryWriteStatusResponse\"A\332A" + "\tupload_id\212\323\344\223\002/\022-\n" + "\tupload_id\022 {bucket=projects/*/buckets/*}/**\022\226\001\n\n" - + "MoveObject\022$.google.storage.v2.MoveObject" - + "Request\032\031.google.storage.v2.Object\"G\332A\'b" - + "ucket,source_object,destination_object\212\323\344\223\002\027\022\025\n" - + "\006bucket\022\013{bucket=**}\032\247\002\312A\026storage" - + ".googleapis.com\322A\212\002https://www.googleapi" - + "s.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-on" - + "ly,https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapi" - + "s.com/auth/devstorage.read_only,https://" - + "www.googleapis.com/auth/devstorage.read_writeB\342\001\n" - + "\025com.google.storage.v2B\014Storage" - + "ProtoP\001Z>cloud.google.com/go/storage/internal/apiv2/storagepb;storagepb\352Ax\n" - + "!cloudkms.googleapis.com/CryptoKey\022Sprojects/" - + "{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}b\006proto3" + + "MoveObject\022$.google.storage.v2.MoveObjectRequest\032\031.google.s" + + "torage.v2.Object\"G\332A\'bucket,source_object,destination_object\212\323\344\223\002\027\022\025\n" + + "\006bucket\022\013{bucket=**}\032\247\002\312A\026storage.googleapis.com\322A\212" + + "\002https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/" + + "cloud-platform.read-only,https://www.googleapis.com/auth/devstorage.full_control" + + ",https://www.googleapis.com/auth/devstor" + + "age.read_only,https://www.googleapis.com/auth/devstorage.read_writeB\342\001\n" + + "\025com.google.storage.v2B\014StorageProtoP\001Z>cloud.goo" + + "gle.com/go/storage/internal/apiv2/storagepb;storagepb\352Ax\n" + + "!cloudkms.googleapis.com/CryptoKey\022Sprojects/{project}/location" + + "s/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -1340,6 +1340,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "KmsKey", "CommonObjectRequestParams", "ObjectChecksums", + "DeleteSourceObjects", }); internal_static_google_storage_v2_ComposeObjectRequest_SourceObject_descriptor = internal_static_google_storage_v2_ComposeObjectRequest_descriptor.getNestedType(0); diff --git a/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto b/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto index 95eb2832d3..d16c0f91d8 100644 --- a/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto +++ b/proto-google-cloud-storage-v2/src/main/proto/google/storage/v2/storage.proto @@ -1,4 +1,4 @@ -// Copyright 2025 Google LLC +// Copyright 2026 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -410,13 +410,12 @@ service Storage { // Reads an object's data. // - // This bi-directional API reads data from an object, allowing you to - // request multiple data ranges within a single stream, even across - // several messages. If an error occurs with any request, the stream - // closes with a relevant error code. Since you can have multiple - // outstanding requests, the error response includes a - // `BidiReadObjectRangesError` field detailing the specific error for - // each pending `read_id`. + // This bi-directional API reads data from an object, allowing you to request + // multiple data ranges within a single stream, even across several messages. + // If an error occurs with any request, the stream closes with a relevant + // error code. Since you can have multiple outstanding requests, the error + // response includes a `BidiReadObjectError` proto in its `details` field, + // reporting the specific error, if any, for each pending `read_id`. // // **IAM Permissions**: // @@ -883,6 +882,9 @@ message ComposeObjectRequest { // the combined checksums of the component objects. ObjectChecksums object_checksums = 10 [(google.api.field_behavior) = OPTIONAL]; + + // Whether the source objects should be deleted in the compose request. + optional bool delete_source_objects = 11; } // Request message for deleting an object. @@ -1296,16 +1298,16 @@ message ReadRange { // length is 15 bytes, a `ReadObjectRequest` with `read_offset` = -5 and // `read_length` = 3 would return bytes 10 through 12 of the object. // Requesting a negative offset with magnitude larger than the size of the - // object returns the entire object. A `read_offset` larger than the size - // of the object results in an `OutOfRange` error. + // object is equivalent to `read_offset` = 0. A `read_offset` larger than the + // size of the object results in an `OutOfRange` error. int64 read_offset = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. The maximum number of data bytes the server is allowed to return // across all response messages with the same `read_id`. A `read_length` of // zero indicates to read until the resource end, and a negative `read_length` - // causes an error. If the stream returns fewer bytes than allowed by the - // `read_length` and no error occurred, the stream includes all data from the - // `read_offset` to the resource end. + // causes an `OutOfRange` error. If the stream returns fewer bytes than + // allowed by the `read_length` and no error occurred, the stream includes all + // data from the `read_offset` to the resource end. int64 read_length = 2 [(google.api.field_behavior) = OPTIONAL]; // Required. Read identifier provided by the client. When the client issues @@ -2825,6 +2827,9 @@ message ObjectCustomContextPayload { // All contexts of an object grouped by type. message ObjectContexts { // Optional. User-defined object contexts. + // The maximum key or value size is `256` characters. + // The maximum number of entries is `50`. + // The maximum total serialized size of all entries is `25KiB`. map custom = 1 [(google.api.field_behavior) = OPTIONAL]; } From ed2ddb79c215fb7a9400e4168d10a7516ca2e664 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Feb 2026 07:32:43 +0000 Subject: [PATCH 05/12] deps: update dependency node to v24 (#3368) --- .github/workflows/renovate_config_check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/renovate_config_check.yaml b/.github/workflows/renovate_config_check.yaml index 47b9e87c98..3214e1dab3 100644 --- a/.github/workflows/renovate_config_check.yaml +++ b/.github/workflows/renovate_config_check.yaml @@ -16,7 +16,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: '22' + node-version: '24' - name: Install Renovate and Config Validator run: | From 10ec1b6f738457820ba9ee55f46196e7de5108e4 Mon Sep 17 00:00:00 2001 From: Dhriti07 <56169283+Dhriti07@users.noreply.github.com> Date: Wed, 11 Feb 2026 19:55:59 +0530 Subject: [PATCH 06/12] chore: Ignore tests that are failing due to Public access prevention (#3489) Co-authored-by: Dhriti Chopra --- .../test/java/com/google/cloud/storage/it/ITAccessTest.java | 5 +++++ .../java/com/google/cloud/storage/it/ITBucketAclTest.java | 3 +++ .../java/com/google/cloud/storage/it/ITObjectAclTest.java | 3 +++ .../test/java/com/google/cloud/storage/it/ITObjectTest.java | 2 ++ .../java/com/google/cloud/storage/it/ITSignedUrlTest.java | 2 ++ 5 files changed, 15 insertions(+) diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITAccessTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITAccessTest.java index 04d74ebcff..69a417ce94 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITAccessTest.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITAccessTest.java @@ -59,6 +59,7 @@ import java.util.Optional; import java.util.function.Predicate; import java.util.stream.Collectors; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -137,6 +138,7 @@ public void bucket_defaultAcl_list_bucket404() { } @Test + @Ignore("TODO: fix b/468377909 to enable test again") public void bucket_defaultAcl_create() throws Exception { BucketInfo bucketInfo = BucketInfo.newBuilder(generator.randomBucketName()).build(); try (TemporaryBucket tempB = @@ -355,6 +357,7 @@ private void doTestUniformBucketLevelAccessAclImpact(IamConfiguration iamConfigu } @Test + @Ignore("TODO: fix b/468377909 to enable test again") public void testEnableAndDisableUniformBucketLevelAccessOnExistingBucket() throws Exception { String bpoBucket = generator.randomBucketName(); BucketInfo.IamConfiguration ublaDisabledIamConfiguration = @@ -462,6 +465,7 @@ public void testEnforcedPublicAccessPreventionOnBucket() throws Exception { } @Test + @Ignore("TODO: fix b/468377909 to enable test again") public void testUnspecifiedPublicAccessPreventionOnBucket() throws Exception { String papBucket = generator.randomBucketName(); BucketInfo bucketInfo = @@ -630,6 +634,7 @@ public void testRetentionPolicyNoLock() throws Exception { } @Test + @Ignore("TODO: fix b/468377909 to enable test again.") @SuppressWarnings({"unchecked", "deprecation"}) public void testEnableAndDisableBucketPolicyOnlyOnExistingBucket() throws Exception { String bpoBucket = generator.randomBucketName(); diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITBucketAclTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITBucketAclTest.java index 1b05a0a1d6..47be90d8ea 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITBucketAclTest.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITBucketAclTest.java @@ -46,6 +46,7 @@ import java.util.Optional; import java.util.function.Predicate; import java.util.stream.Collectors; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -114,6 +115,7 @@ public void bucket_acl_list_bucket404() { } @Test + @Ignore("TODO: fix b/468377909 to enable test again") public void bucket_acl_create() throws Exception { BucketInfo bucketInfo = BucketInfo.newBuilder(generator.randomBucketName()).build(); try (TemporaryBucket tempB = @@ -213,6 +215,7 @@ public void bucket_acl_update_bucket404() { /** Update of an acl that doesn't exist should create it */ @Test + @Ignore("TODO: fix b/468377909 to enable test again") public void bucket_acl_404_acl_update() throws Exception { BucketInfo bucketInfo = BucketInfo.newBuilder(generator.randomBucketName()).build(); try (TemporaryBucket tempB = diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectAclTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectAclTest.java index 65a43cab81..bc39569875 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectAclTest.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectAclTest.java @@ -51,6 +51,7 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -183,6 +184,7 @@ public void object_acl_404_acl_get() { /** Update of an acl that doesn't exist should create it */ @Test + @Ignore("TODO: fix b/468377909 to enable test again") public void object_acl_404_acl_update() { Blob mgen1 = tmpObject(); @@ -231,6 +233,7 @@ public void object_acl_200_list() { } @Test + @Ignore("TODO: fix b/468377909 to enable test again") public void object_acl_200_create() { Blob mgen1 = tmpObject(); diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectTest.java index dc2797616f..83a7aeb5a9 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectTest.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITObjectTest.java @@ -98,6 +98,7 @@ import java.util.stream.StreamSupport; import javax.crypto.spec.SecretKeySpec; import org.checkerframework.checker.nullness.qual.NonNull; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -891,6 +892,7 @@ public void copyBlob_classChange_multipleChunks() { } @Test + @Ignore("TODO: fix b/468377909 to enable test again") public void testCopyBlobWithPredefinedAcl() { String sourceBlobName = generator.randomObjectName() + "-source"; diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITSignedUrlTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITSignedUrlTest.java index abef72a5b9..b3acc25c70 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITSignedUrlTest.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITSignedUrlTest.java @@ -63,6 +63,7 @@ import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -196,6 +197,7 @@ public void testV4SignedUrl() throws IOException { } @Test + @Ignore("TODO: fix b/468377909 to enable test again") public void testSignedPostPolicyV4() throws Exception { PostFieldsV4 fields = PostFieldsV4.newBuilder().setAcl("public-read").build(); From a8a2ae89060d8c62c1b04221d64f3506a4683ba2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Feb 2026 15:17:55 +0000 Subject: [PATCH 07/12] chore(deps): update storage release dependencies (#3478) --- samples/install-without-bom/pom.xml | 6 +++--- samples/snippets/pom.xml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 0cfb1d4a83..3e5612b66f 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -30,12 +30,12 @@ com.google.cloud google-cloud-storage - 2.62.0 + 2.62.1 com.google.cloud google-cloud-storage-control - 2.62.0 + 2.62.1 @@ -78,7 +78,7 @@ com.google.cloud google-cloud-storage - 2.62.0 + 2.62.1 tests test diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 614e0fe6b1..42a9336161 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -31,7 +31,7 @@ com.google.cloud libraries-bom - 26.74.0 + 26.75.0 pom import @@ -99,7 +99,7 @@ com.google.cloud google-cloud-storage - 2.62.0 + 2.62.1 tests test From 412b5fbe7e724e1220561f04a59251746c8a99a2 Mon Sep 17 00:00:00 2001 From: Blake Li Date: Wed, 11 Feb 2026 10:50:30 -0500 Subject: [PATCH 08/12] feat: next release from main branch is 2.63.0 (#3486) --- .github/release-please.yml | 55 +++++++++++++++++++-------------- .github/sync-repo-settings.yaml | 17 ++++++++++ 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/.github/release-please.yml b/.github/release-please.yml index f8ded3a6dd..ad350e77c3 100644 --- a/.github/release-please.yml +++ b/.github/release-please.yml @@ -2,28 +2,35 @@ bumpMinorPreMajor: true handleGHRelease: true releaseType: java-yoshi extraFiles: - - README.md - - .readme-partials.yaml + - README.md + - .readme-partials.yaml branches: - - branch: 1.113.14-sp - releaseType: java-lts - - branch: 1.106.1-patch - - branch: 1.111.3-patch - - branch: java7 - - branch: 2.1.x - - branch: 2.6.x - releaseType: java-backport - - branch: 2.15.x - releaseType: java-backport - - branch: 2.22.x - releaseType: java-backport - - branch: 2.30.x - releaseType: java-backport - - branch: 2.38.x - releaseType: java-backport - - branch: 2.47.x - releaseType: java-backport - - branch: 2.49.x - releaseType: java-backport - - branch: protobuf-4.x-rc - manifest: true + - branch: 1.113.14-sp + releaseType: java-lts + - branch: 1.106.1-patch + - branch: 1.111.3-patch + - branch: java7 + - branch: 2.1.x + - branch: 2.6.x + releaseType: java-backport + - branch: 2.15.x + releaseType: java-backport + - branch: 2.22.x + releaseType: java-backport + - branch: 2.30.x + releaseType: java-backport + - branch: 2.38.x + releaseType: java-backport + - branch: 2.47.x + releaseType: java-backport + - branch: 2.49.x + releaseType: java-backport + - branch: protobuf-4.x-rc + manifest: true + - bumpMinorPreMajor: true + handleGHRelease: true + releaseType: java-backport + extraFiles: + - README.md + - .readme-partials.yaml + branch: 2.62.x diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index d953e4f76b..625d087c5e 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -197,6 +197,23 @@ branchProtectionRules: - 'Kokoro - Test: Java 17 GraalVM Native Image' - javadoc - unmanaged_dependency_check + - pattern: 2.62.x + isAdminEnforced: true + requiredApprovingReviewCount: 1 + requiresCodeOwnerReviews: true + requiresStrictStatusChecks: false + requiredStatusCheckContexts: + - dependencies (17) + - lint + - clirr + - units (8) + - units (11) + - 'Kokoro - Test: Integration' + - cla/google + - 'Kokoro - Test: Java GraalVM Native Image' + - 'Kokoro - Test: Java 17 GraalVM Native Image' + - javadoc + - unmanaged_dependency_check permissionRules: - team: yoshi-admins permission: admin From 3343d436a38e70a58bebd9459ee3f5800f346435 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Feb 2026 23:00:27 +0000 Subject: [PATCH 09/12] test(deps): update cross product test dependencies (#3426) --- google-cloud-storage/pom.xml | 6 +++--- pom.xml | 2 +- samples/install-without-bom/pom.xml | 4 ++-- samples/snapshot/pom.xml | 4 ++-- samples/snippets/pom.xml | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml index 60e6d52525..781aa873d6 100644 --- a/google-cloud-storage/pom.xml +++ b/google-cloud-storage/pom.xml @@ -16,7 +16,7 @@ google-cloud-storage - 1.125.1 + 1.130.0 @@ -263,14 +263,14 @@ com.google.api.grpc proto-google-cloud-kms-v1 - 0.174.0 + 0.178.0 test com.google.cloud google-cloud-kms - 2.83.0 + 2.87.0 test diff --git a/pom.xml b/pom.xml index 0b6eb11e29..cbb9ed7394 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ com.google.cloud google-cloud-pubsub - 1.143.1 + 1.148.0 test diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 3e5612b66f..f9c78d80d8 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -66,13 +66,13 @@ com.google.cloud google-cloud-pubsub - 1.143.1 + 1.148.0 test com.google.cloud google-cloud-kms - 2.83.0 + 2.87.0 test diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 2f7b0317f0..676b4ccb3a 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -58,13 +58,13 @@ com.google.cloud google-cloud-pubsub - 1.143.1 + 1.148.0 test com.google.cloud google-cloud-kms - 2.83.0 + 2.87.0 test diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 42a9336161..ebb21c6938 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -76,13 +76,13 @@ com.google.cloud google-cloud-pubsub - 1.143.1 + 1.148.0 test com.google.cloud google-cloud-kms - 2.83.0 + 2.87.0 test From 418457c4076a79351b0717d16f1a4c9c54ebe957 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 12 Feb 2026 04:47:44 +0000 Subject: [PATCH 10/12] test(deps): update test libraries (#3370) --- google-cloud-storage/pom.xml | 2 +- pom.xml | 2 +- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml index 781aa873d6..a843f78262 100644 --- a/google-cloud-storage/pom.xml +++ b/google-cloud-storage/pom.xml @@ -367,7 +367,7 @@ ch.qos.logback logback-classic - 1.3.15 + 1.3.16 test diff --git a/pom.xml b/pom.xml index cbb9ed7394..cd6d6bd2cc 100644 --- a/pom.xml +++ b/pom.xml @@ -69,7 +69,7 @@ org.junit junit-bom - 5.14.0 + 5.14.2 pom import diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index f9c78d80d8..54013dc953 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -92,7 +92,7 @@ ch.qos.logback logback-classic - 1.3.15 + 1.3.16 test diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 676b4ccb3a..537742a95c 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -84,7 +84,7 @@ ch.qos.logback logback-classic - 1.3.15 + 1.3.16 test diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index ebb21c6938..b74016858f 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -113,7 +113,7 @@ ch.qos.logback logback-classic - 1.3.15 + 1.3.16 test From ea31bf149ab7aa0e194d648689594c2b96b7f1b1 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 12 Feb 2026 12:27:38 +0530 Subject: [PATCH 11/12] chore(main): release 2.62.2-SNAPSHOT (#3477) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: cloud-java-bot --- .github/workflows/renovate_config_check.yaml | 2 +- README.md | 6 +++--- gapic-google-cloud-storage-v2/pom.xml | 4 ++-- google-cloud-storage-bom/pom.xml | 16 ++++++++-------- google-cloud-storage-control/pom.xml | 4 ++-- google-cloud-storage/pom.xml | 4 ++-- .../PathTraversalBlockedException.java | 3 ++- grpc-google-cloud-storage-control-v2/pom.xml | 4 ++-- grpc-google-cloud-storage-v2/pom.xml | 4 ++-- pom.xml | 16 ++++++++-------- proto-google-cloud-storage-control-v2/pom.xml | 4 ++-- proto-google-cloud-storage-v2/pom.xml | 4 ++-- samples/snapshot/pom.xml | 6 +++--- storage-shared-benchmarking/pom.xml | 4 ++-- versions.txt | 14 +++++++------- 15 files changed, 48 insertions(+), 47 deletions(-) diff --git a/.github/workflows/renovate_config_check.yaml b/.github/workflows/renovate_config_check.yaml index 3214e1dab3..47b9e87c98 100644 --- a/.github/workflows/renovate_config_check.yaml +++ b/.github/workflows/renovate_config_check.yaml @@ -16,7 +16,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: '24' + node-version: '22' - name: Install Renovate and Config Validator run: | diff --git a/README.md b/README.md index 10d43fd263..6bb67ac053 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: com.google.cloud libraries-bom - 26.74.0 + 26.75.0 pom import @@ -46,12 +46,12 @@ If you are using Maven without the BOM, add this to your dependencies: com.google.cloud google-cloud-storage - 2.62.0 + 2.62.1 com.google.cloud google-cloud-storage-control - 2.62.0 + 2.62.1 ``` diff --git a/gapic-google-cloud-storage-v2/pom.xml b/gapic-google-cloud-storage-v2/pom.xml index c75efd93a2..e6b48fcf8e 100644 --- a/gapic-google-cloud-storage-v2/pom.xml +++ b/gapic-google-cloud-storage-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc gapic-google-cloud-storage-v2 - 2.62.1 + 2.62.2-SNAPSHOT gapic-google-cloud-storage-v2 GRPC library for gapic-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.62.1 + 2.62.2-SNAPSHOT diff --git a/google-cloud-storage-bom/pom.xml b/google-cloud-storage-bom/pom.xml index 23fd9da1df..806b78782d 100644 --- a/google-cloud-storage-bom/pom.xml +++ b/google-cloud-storage-bom/pom.xml @@ -19,7 +19,7 @@ 4.0.0 com.google.cloud google-cloud-storage-bom - 2.62.1 + 2.62.2-SNAPSHOT pom com.google.cloud @@ -69,37 +69,37 @@ com.google.cloud google-cloud-storage - 2.62.1 + 2.62.2-SNAPSHOT com.google.api.grpc gapic-google-cloud-storage-v2 - 2.62.1 + 2.62.2-SNAPSHOT com.google.api.grpc grpc-google-cloud-storage-v2 - 2.62.1 + 2.62.2-SNAPSHOT com.google.api.grpc proto-google-cloud-storage-v2 - 2.62.1 + 2.62.2-SNAPSHOT com.google.cloud google-cloud-storage-control - 2.62.1 + 2.62.2-SNAPSHOT com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.62.1 + 2.62.2-SNAPSHOT com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.62.1 + 2.62.2-SNAPSHOT diff --git a/google-cloud-storage-control/pom.xml b/google-cloud-storage-control/pom.xml index df4b13965c..23d778d403 100644 --- a/google-cloud-storage-control/pom.xml +++ b/google-cloud-storage-control/pom.xml @@ -5,13 +5,13 @@ 4.0.0 com.google.cloud google-cloud-storage-control - 2.62.1 + 2.62.2-SNAPSHOT google-cloud-storage-control GRPC library for google-cloud-storage-control com.google.cloud google-cloud-storage-parent - 2.62.1 + 2.62.2-SNAPSHOT diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml index a843f78262..ee1b5c6b06 100644 --- a/google-cloud-storage/pom.xml +++ b/google-cloud-storage/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-storage - 2.62.1 + 2.62.2-SNAPSHOT jar Google Cloud Storage https://github.com/googleapis/java-storage @@ -12,7 +12,7 @@ com.google.cloud google-cloud-storage-parent - 2.62.1 + 2.62.2-SNAPSHOT google-cloud-storage diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/PathTraversalBlockedException.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/PathTraversalBlockedException.java index 78d733e809..787142a7e8 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/PathTraversalBlockedException.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/transfermanager/PathTraversalBlockedException.java @@ -29,7 +29,8 @@ public PathTraversalBlockedException(String objectName, Path targetDirectory) { super( String.format( Locale.US, - "Download of object '%s' was blocked because it would escape the target directory '%s'.", + "Download of object '%s' was blocked because it would escape the target directory" + + " '%s'.", objectName, targetDirectory)); } diff --git a/grpc-google-cloud-storage-control-v2/pom.xml b/grpc-google-cloud-storage-control-v2/pom.xml index bf4de751cc..148db88a6e 100644 --- a/grpc-google-cloud-storage-control-v2/pom.xml +++ b/grpc-google-cloud-storage-control-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.62.1 + 2.62.2-SNAPSHOT grpc-google-cloud-storage-control-v2 GRPC library for google-cloud-storage com.google.cloud google-cloud-storage-parent - 2.62.1 + 2.62.2-SNAPSHOT diff --git a/grpc-google-cloud-storage-v2/pom.xml b/grpc-google-cloud-storage-v2/pom.xml index abd2205fcd..951c65bf0b 100644 --- a/grpc-google-cloud-storage-v2/pom.xml +++ b/grpc-google-cloud-storage-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-storage-v2 - 2.62.1 + 2.62.2-SNAPSHOT grpc-google-cloud-storage-v2 GRPC library for grpc-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.62.1 + 2.62.2-SNAPSHOT diff --git a/pom.xml b/pom.xml index cd6d6bd2cc..0a452ae1c7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-storage-parent pom - 2.62.1 + 2.62.2-SNAPSHOT Storage Parent https://github.com/googleapis/java-storage @@ -82,7 +82,7 @@ com.google.cloud google-cloud-storage - 2.62.1 + 2.62.2-SNAPSHOT com.google.apis @@ -104,32 +104,32 @@ com.google.api.grpc proto-google-cloud-storage-v2 - 2.62.1 + 2.62.2-SNAPSHOT com.google.api.grpc grpc-google-cloud-storage-v2 - 2.62.1 + 2.62.2-SNAPSHOT com.google.api.grpc gapic-google-cloud-storage-v2 - 2.62.1 + 2.62.2-SNAPSHOT com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.62.1 + 2.62.2-SNAPSHOT com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.62.1 + 2.62.2-SNAPSHOT com.google.cloud google-cloud-storage-control - 2.62.1 + 2.62.2-SNAPSHOT com.google.cloud diff --git a/proto-google-cloud-storage-control-v2/pom.xml b/proto-google-cloud-storage-control-v2/pom.xml index 2e9d6a0abe..8f6cdc02ba 100644 --- a/proto-google-cloud-storage-control-v2/pom.xml +++ b/proto-google-cloud-storage-control-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.62.1 + 2.62.2-SNAPSHOT proto-google-cloud-storage-control-v2 Proto library for proto-google-cloud-storage-control-v2 com.google.cloud google-cloud-storage-parent - 2.62.1 + 2.62.2-SNAPSHOT diff --git a/proto-google-cloud-storage-v2/pom.xml b/proto-google-cloud-storage-v2/pom.xml index 5e420ccc84..919a031ee9 100644 --- a/proto-google-cloud-storage-v2/pom.xml +++ b/proto-google-cloud-storage-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-storage-v2 - 2.62.1 + 2.62.2-SNAPSHOT proto-google-cloud-storage-v2 PROTO library for proto-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.62.1 + 2.62.2-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 537742a95c..7896de0a8b 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,12 +28,12 @@ com.google.cloud google-cloud-storage - 2.62.1 + 2.62.2-SNAPSHOT com.google.cloud google-cloud-storage-control - 2.62.1 + 2.62.2-SNAPSHOT compile @@ -70,7 +70,7 @@ com.google.cloud google-cloud-storage - 2.62.1 + 2.62.2-SNAPSHOT tests test diff --git a/storage-shared-benchmarking/pom.xml b/storage-shared-benchmarking/pom.xml index 29a7d8da02..e350e87d87 100644 --- a/storage-shared-benchmarking/pom.xml +++ b/storage-shared-benchmarking/pom.xml @@ -10,7 +10,7 @@ com.google.cloud google-cloud-storage-parent - 2.62.1 + 2.62.2-SNAPSHOT @@ -31,7 +31,7 @@ com.google.cloud google-cloud-storage - 2.62.1 + 2.62.2-SNAPSHOT tests diff --git a/versions.txt b/versions.txt index 1755700986..5cd00a0a21 100644 --- a/versions.txt +++ b/versions.txt @@ -1,10 +1,10 @@ # Format: # module:released-version:current-version -google-cloud-storage:2.62.1:2.62.1 -gapic-google-cloud-storage-v2:2.62.1:2.62.1 -grpc-google-cloud-storage-v2:2.62.1:2.62.1 -proto-google-cloud-storage-v2:2.62.1:2.62.1 -google-cloud-storage-control:2.62.1:2.62.1 -proto-google-cloud-storage-control-v2:2.62.1:2.62.1 -grpc-google-cloud-storage-control-v2:2.62.1:2.62.1 +google-cloud-storage:2.62.1:2.62.2-SNAPSHOT +gapic-google-cloud-storage-v2:2.62.1:2.62.2-SNAPSHOT +grpc-google-cloud-storage-v2:2.62.1:2.62.2-SNAPSHOT +proto-google-cloud-storage-v2:2.62.1:2.62.2-SNAPSHOT +google-cloud-storage-control:2.62.1:2.62.2-SNAPSHOT +proto-google-cloud-storage-control-v2:2.62.1:2.62.2-SNAPSHOT +grpc-google-cloud-storage-control-v2:2.62.1:2.62.2-SNAPSHOT From 192ec10609096906195370c5839328f09da0ddd7 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 10:18:14 +0530 Subject: [PATCH 12/12] chore(main): release 2.63.0 (#3491) --- CHANGELOG.md | 21 +++++++++++++++++++ README.md | 6 +++--- gapic-google-cloud-storage-v2/pom.xml | 4 ++-- google-cloud-storage-bom/pom.xml | 16 +++++++------- google-cloud-storage-control/pom.xml | 4 ++-- google-cloud-storage/pom.xml | 4 ++-- grpc-google-cloud-storage-control-v2/pom.xml | 4 ++-- grpc-google-cloud-storage-v2/pom.xml | 4 ++-- pom.xml | 16 +++++++------- proto-google-cloud-storage-control-v2/pom.xml | 4 ++-- proto-google-cloud-storage-v2/pom.xml | 4 ++-- samples/snapshot/pom.xml | 6 +++--- storage-shared-benchmarking/pom.xml | 4 ++-- versions.txt | 14 ++++++------- 14 files changed, 66 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 364dc87ac9..f77a0ad443 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## [2.63.0](https://github.com/googleapis/java-storage/compare/v2.62.1...v2.63.0) (2026-02-12) + + +### Features + +* Add a DeleteFolderRecursive API definition ([87642bd](https://github.com/googleapis/java-storage/commit/87642bd58759a61f5fdf04b1765b77297ea443ea)) +* Added a new field `ComposeObjectRequest.delete_source_objects` field ([87642bd](https://github.com/googleapis/java-storage/commit/87642bd58759a61f5fdf04b1765b77297ea443ea)) +* Next release from main branch is 2.63.0 ([#3486](https://github.com/googleapis/java-storage/issues/3486)) ([412b5fb](https://github.com/googleapis/java-storage/commit/412b5fbe7e724e1220561f04a59251746c8a99a2)) + + +### Bug Fixes + +* **deps:** Update the Java code generator (gapic-generator-java) to 2.66.1 ([87642bd](https://github.com/googleapis/java-storage/commit/87642bd58759a61f5fdf04b1765b77297ea443ea)) +* Validate blob paths to prevent directory traversal in TransferManager downloads ([#3455](https://github.com/googleapis/java-storage/issues/3455)) ([49abf75](https://github.com/googleapis/java-storage/commit/49abf7559028d890e1c4848a5a356f266f6788be)) + + +### Dependencies + +* Update dependency com.google.cloud:sdk-platform-java-config to v3.56.1 ([#3484](https://github.com/googleapis/java-storage/issues/3484)) ([3a5deee](https://github.com/googleapis/java-storage/commit/3a5deee364175fc8c879cb22f176354a62117d22)) +* Update dependency node to v24 ([#3368](https://github.com/googleapis/java-storage/issues/3368)) ([ed2ddb7](https://github.com/googleapis/java-storage/commit/ed2ddb79c215fb7a9400e4168d10a7516ca2e664)) + ## [2.62.1](https://github.com/googleapis/java-storage/compare/v2.62.0...v2.62.1) (2026-01-28) diff --git a/README.md b/README.md index 6bb67ac053..1b561f9fad 100644 --- a/README.md +++ b/README.md @@ -66,13 +66,13 @@ implementation 'com.google.cloud:google-cloud-storage' If you are using Gradle without BOM, add this to your dependencies: ```Groovy -implementation 'com.google.cloud:google-cloud-storage:2.62.1' +implementation 'com.google.cloud:google-cloud-storage:2.63.0' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-storage" % "2.62.1" +libraryDependencies += "com.google.cloud" % "google-cloud-storage" % "2.63.0" ``` ## Authentication @@ -466,7 +466,7 @@ Java is a registered trademark of Oracle and/or its affiliates. [javadocs]: https://cloud.google.com/java/docs/reference/google-cloud-storage/latest/history [stability-image]: https://img.shields.io/badge/stability-stable-green [maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-storage.svg -[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-storage/2.62.1 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-storage/2.63.0 [authentication]: https://github.com/googleapis/google-cloud-java#authentication [auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes [predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles diff --git a/gapic-google-cloud-storage-v2/pom.xml b/gapic-google-cloud-storage-v2/pom.xml index e6b48fcf8e..a2a7c1e11c 100644 --- a/gapic-google-cloud-storage-v2/pom.xml +++ b/gapic-google-cloud-storage-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc gapic-google-cloud-storage-v2 - 2.62.2-SNAPSHOT + 2.63.0 gapic-google-cloud-storage-v2 GRPC library for gapic-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.62.2-SNAPSHOT + 2.63.0 diff --git a/google-cloud-storage-bom/pom.xml b/google-cloud-storage-bom/pom.xml index 806b78782d..b4e6dabef0 100644 --- a/google-cloud-storage-bom/pom.xml +++ b/google-cloud-storage-bom/pom.xml @@ -19,7 +19,7 @@ 4.0.0 com.google.cloud google-cloud-storage-bom - 2.62.2-SNAPSHOT + 2.63.0 pom com.google.cloud @@ -69,37 +69,37 @@ com.google.cloud google-cloud-storage - 2.62.2-SNAPSHOT + 2.63.0 com.google.api.grpc gapic-google-cloud-storage-v2 - 2.62.2-SNAPSHOT + 2.63.0 com.google.api.grpc grpc-google-cloud-storage-v2 - 2.62.2-SNAPSHOT + 2.63.0 com.google.api.grpc proto-google-cloud-storage-v2 - 2.62.2-SNAPSHOT + 2.63.0 com.google.cloud google-cloud-storage-control - 2.62.2-SNAPSHOT + 2.63.0 com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.62.2-SNAPSHOT + 2.63.0 com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.62.2-SNAPSHOT + 2.63.0 diff --git a/google-cloud-storage-control/pom.xml b/google-cloud-storage-control/pom.xml index 23d778d403..c621899271 100644 --- a/google-cloud-storage-control/pom.xml +++ b/google-cloud-storage-control/pom.xml @@ -5,13 +5,13 @@ 4.0.0 com.google.cloud google-cloud-storage-control - 2.62.2-SNAPSHOT + 2.63.0 google-cloud-storage-control GRPC library for google-cloud-storage-control com.google.cloud google-cloud-storage-parent - 2.62.2-SNAPSHOT + 2.63.0 diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml index ee1b5c6b06..4af1ce1d21 100644 --- a/google-cloud-storage/pom.xml +++ b/google-cloud-storage/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-storage - 2.62.2-SNAPSHOT + 2.63.0 jar Google Cloud Storage https://github.com/googleapis/java-storage @@ -12,7 +12,7 @@ com.google.cloud google-cloud-storage-parent - 2.62.2-SNAPSHOT + 2.63.0 google-cloud-storage diff --git a/grpc-google-cloud-storage-control-v2/pom.xml b/grpc-google-cloud-storage-control-v2/pom.xml index 148db88a6e..0eb835e311 100644 --- a/grpc-google-cloud-storage-control-v2/pom.xml +++ b/grpc-google-cloud-storage-control-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.62.2-SNAPSHOT + 2.63.0 grpc-google-cloud-storage-control-v2 GRPC library for google-cloud-storage com.google.cloud google-cloud-storage-parent - 2.62.2-SNAPSHOT + 2.63.0 diff --git a/grpc-google-cloud-storage-v2/pom.xml b/grpc-google-cloud-storage-v2/pom.xml index 951c65bf0b..cad6293fb7 100644 --- a/grpc-google-cloud-storage-v2/pom.xml +++ b/grpc-google-cloud-storage-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-storage-v2 - 2.62.2-SNAPSHOT + 2.63.0 grpc-google-cloud-storage-v2 GRPC library for grpc-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.62.2-SNAPSHOT + 2.63.0 diff --git a/pom.xml b/pom.xml index 0a452ae1c7..1b45001c44 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-storage-parent pom - 2.62.2-SNAPSHOT + 2.63.0 Storage Parent https://github.com/googleapis/java-storage @@ -82,7 +82,7 @@ com.google.cloud google-cloud-storage - 2.62.2-SNAPSHOT + 2.63.0 com.google.apis @@ -104,32 +104,32 @@ com.google.api.grpc proto-google-cloud-storage-v2 - 2.62.2-SNAPSHOT + 2.63.0 com.google.api.grpc grpc-google-cloud-storage-v2 - 2.62.2-SNAPSHOT + 2.63.0 com.google.api.grpc gapic-google-cloud-storage-v2 - 2.62.2-SNAPSHOT + 2.63.0 com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.62.2-SNAPSHOT + 2.63.0 com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.62.2-SNAPSHOT + 2.63.0 com.google.cloud google-cloud-storage-control - 2.62.2-SNAPSHOT + 2.63.0 com.google.cloud diff --git a/proto-google-cloud-storage-control-v2/pom.xml b/proto-google-cloud-storage-control-v2/pom.xml index 8f6cdc02ba..c6b56457ae 100644 --- a/proto-google-cloud-storage-control-v2/pom.xml +++ b/proto-google-cloud-storage-control-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.62.2-SNAPSHOT + 2.63.0 proto-google-cloud-storage-control-v2 Proto library for proto-google-cloud-storage-control-v2 com.google.cloud google-cloud-storage-parent - 2.62.2-SNAPSHOT + 2.63.0 diff --git a/proto-google-cloud-storage-v2/pom.xml b/proto-google-cloud-storage-v2/pom.xml index 919a031ee9..5dfb7ab6ca 100644 --- a/proto-google-cloud-storage-v2/pom.xml +++ b/proto-google-cloud-storage-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-storage-v2 - 2.62.2-SNAPSHOT + 2.63.0 proto-google-cloud-storage-v2 PROTO library for proto-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.62.2-SNAPSHOT + 2.63.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 7896de0a8b..6046ac299a 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,12 +28,12 @@ com.google.cloud google-cloud-storage - 2.62.2-SNAPSHOT + 2.63.0 com.google.cloud google-cloud-storage-control - 2.62.2-SNAPSHOT + 2.63.0 compile @@ -70,7 +70,7 @@ com.google.cloud google-cloud-storage - 2.62.2-SNAPSHOT + 2.63.0 tests test diff --git a/storage-shared-benchmarking/pom.xml b/storage-shared-benchmarking/pom.xml index e350e87d87..ade5695240 100644 --- a/storage-shared-benchmarking/pom.xml +++ b/storage-shared-benchmarking/pom.xml @@ -10,7 +10,7 @@ com.google.cloud google-cloud-storage-parent - 2.62.2-SNAPSHOT + 2.63.0 @@ -31,7 +31,7 @@ com.google.cloud google-cloud-storage - 2.62.2-SNAPSHOT + 2.63.0 tests diff --git a/versions.txt b/versions.txt index 5cd00a0a21..782ebabd92 100644 --- a/versions.txt +++ b/versions.txt @@ -1,10 +1,10 @@ # Format: # module:released-version:current-version -google-cloud-storage:2.62.1:2.62.2-SNAPSHOT -gapic-google-cloud-storage-v2:2.62.1:2.62.2-SNAPSHOT -grpc-google-cloud-storage-v2:2.62.1:2.62.2-SNAPSHOT -proto-google-cloud-storage-v2:2.62.1:2.62.2-SNAPSHOT -google-cloud-storage-control:2.62.1:2.62.2-SNAPSHOT -proto-google-cloud-storage-control-v2:2.62.1:2.62.2-SNAPSHOT -grpc-google-cloud-storage-control-v2:2.62.1:2.62.2-SNAPSHOT +google-cloud-storage:2.63.0:2.63.0 +gapic-google-cloud-storage-v2:2.63.0:2.63.0 +grpc-google-cloud-storage-v2:2.63.0:2.63.0 +proto-google-cloud-storage-v2:2.63.0:2.63.0 +google-cloud-storage-control:2.63.0:2.63.0 +proto-google-cloud-storage-control-v2:2.63.0:2.63.0 +grpc-google-cloud-storage-control-v2:2.63.0:2.63.0