From 63eb31ae60d82ad83e2c39d0793bc74c93317d93 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 20:14:31 -0500 Subject: [PATCH 01/17] chore(main): release 2.46.1-SNAPSHOT (#2844) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- 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 +++++++------- 12 files changed, 42 insertions(+), 42 deletions(-) diff --git a/gapic-google-cloud-storage-v2/pom.xml b/gapic-google-cloud-storage-v2/pom.xml index d37bf3f82d..b674e8214b 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.46.0-beta + 2.46.1-beta-SNAPSHOT gapic-google-cloud-storage-v2 GRPC library for gapic-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.46.0 + 2.46.1-SNAPSHOT diff --git a/google-cloud-storage-bom/pom.xml b/google-cloud-storage-bom/pom.xml index 627f7d7a13..2ad826d158 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.46.0 + 2.46.1-SNAPSHOT pom com.google.cloud @@ -69,37 +69,37 @@ com.google.cloud google-cloud-storage - 2.46.0 + 2.46.1-SNAPSHOT com.google.api.grpc gapic-google-cloud-storage-v2 - 2.46.0-beta + 2.46.1-beta-SNAPSHOT com.google.api.grpc grpc-google-cloud-storage-v2 - 2.46.0-beta + 2.46.1-beta-SNAPSHOT com.google.api.grpc proto-google-cloud-storage-v2 - 2.46.0-beta + 2.46.1-beta-SNAPSHOT com.google.cloud google-cloud-storage-control - 2.46.0 + 2.46.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.46.0 + 2.46.1-SNAPSHOT com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.46.0 + 2.46.1-SNAPSHOT diff --git a/google-cloud-storage-control/pom.xml b/google-cloud-storage-control/pom.xml index 6ada8686e0..6e4a088a1f 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.46.0 + 2.46.1-SNAPSHOT google-cloud-storage-control GRPC library for google-cloud-storage-control com.google.cloud google-cloud-storage-parent - 2.46.0 + 2.46.1-SNAPSHOT diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml index 9e780ec298..ff0450854e 100644 --- a/google-cloud-storage/pom.xml +++ b/google-cloud-storage/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-storage - 2.46.0 + 2.46.1-SNAPSHOT jar Google Cloud Storage https://github.com/googleapis/java-storage @@ -12,7 +12,7 @@ com.google.cloud google-cloud-storage-parent - 2.46.0 + 2.46.1-SNAPSHOT google-cloud-storage diff --git a/grpc-google-cloud-storage-control-v2/pom.xml b/grpc-google-cloud-storage-control-v2/pom.xml index 21af1ce86f..06e56634a9 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.46.0 + 2.46.1-SNAPSHOT grpc-google-cloud-storage-control-v2 GRPC library for google-cloud-storage com.google.cloud google-cloud-storage-parent - 2.46.0 + 2.46.1-SNAPSHOT diff --git a/grpc-google-cloud-storage-v2/pom.xml b/grpc-google-cloud-storage-v2/pom.xml index ef457a44b5..9a8decac02 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.46.0-beta + 2.46.1-beta-SNAPSHOT grpc-google-cloud-storage-v2 GRPC library for grpc-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.46.0 + 2.46.1-SNAPSHOT diff --git a/pom.xml b/pom.xml index e2c8f1fcda..a9eac0e424 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-storage-parent pom - 2.46.0 + 2.46.1-SNAPSHOT Storage Parent https://github.com/googleapis/java-storage @@ -123,7 +123,7 @@ com.google.cloud google-cloud-storage - 2.46.0 + 2.46.1-SNAPSHOT com.google.apis @@ -145,32 +145,32 @@ com.google.api.grpc proto-google-cloud-storage-v2 - 2.46.0-beta + 2.46.1-beta-SNAPSHOT com.google.api.grpc grpc-google-cloud-storage-v2 - 2.46.0-beta + 2.46.1-beta-SNAPSHOT com.google.api.grpc gapic-google-cloud-storage-v2 - 2.46.0-beta + 2.46.1-beta-SNAPSHOT com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.46.0 + 2.46.1-SNAPSHOT com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.46.0 + 2.46.1-SNAPSHOT com.google.cloud google-cloud-storage-control - 2.46.0 + 2.46.1-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 570ef5d7c7..414c51791d 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.46.0 + 2.46.1-SNAPSHOT proto-google-cloud-storage-control-v2 Proto library for proto-google-cloud-storage-control-v2 com.google.cloud google-cloud-storage-parent - 2.46.0 + 2.46.1-SNAPSHOT diff --git a/proto-google-cloud-storage-v2/pom.xml b/proto-google-cloud-storage-v2/pom.xml index cac0db77d7..ca878a15d9 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.46.0-beta + 2.46.1-beta-SNAPSHOT proto-google-cloud-storage-v2 PROTO library for proto-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.46.0 + 2.46.1-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index c7235dbd03..bcd0d4ed1a 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,12 +28,12 @@ com.google.cloud google-cloud-storage - 2.46.0 + 2.46.1-SNAPSHOT com.google.cloud google-cloud-storage-control - 2.46.0 + 2.46.1-SNAPSHOT compile @@ -64,7 +64,7 @@ com.google.cloud google-cloud-storage - 2.46.0 + 2.46.1-SNAPSHOT tests test diff --git a/storage-shared-benchmarking/pom.xml b/storage-shared-benchmarking/pom.xml index 41a711ecf2..1c34f2316f 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.46.0 + 2.46.1-SNAPSHOT @@ -31,7 +31,7 @@ com.google.cloud google-cloud-storage - 2.46.0 + 2.46.1-SNAPSHOT tests diff --git a/versions.txt b/versions.txt index fe6840580c..862a0a0ca5 100644 --- a/versions.txt +++ b/versions.txt @@ -1,10 +1,10 @@ # Format: # module:released-version:current-version -google-cloud-storage:2.46.0:2.46.0 -gapic-google-cloud-storage-v2:2.46.0-beta:2.46.0-beta -grpc-google-cloud-storage-v2:2.46.0-beta:2.46.0-beta -proto-google-cloud-storage-v2:2.46.0-beta:2.46.0-beta -google-cloud-storage-control:2.46.0:2.46.0 -proto-google-cloud-storage-control-v2:2.46.0:2.46.0 -grpc-google-cloud-storage-control-v2:2.46.0:2.46.0 +google-cloud-storage:2.46.0:2.46.1-SNAPSHOT +gapic-google-cloud-storage-v2:2.46.0-beta:2.46.1-beta-SNAPSHOT +grpc-google-cloud-storage-v2:2.46.0-beta:2.46.1-beta-SNAPSHOT +proto-google-cloud-storage-v2:2.46.0-beta:2.46.1-beta-SNAPSHOT +google-cloud-storage-control:2.46.0:2.46.1-SNAPSHOT +proto-google-cloud-storage-control-v2:2.46.0:2.46.1-SNAPSHOT +grpc-google-cloud-storage-control-v2:2.46.0:2.46.1-SNAPSHOT From c18bddedbc589b6857d4d162f07cf196d193ec02 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 17 Dec 2024 17:29:05 +0100 Subject: [PATCH 02/17] chore(deps): update storage release dependencies to v2.46.0 (#2845) --- samples/install-without-bom/pom.xml | 6 +++--- samples/snippets/pom.xml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 464e55405b..ad78220d0a 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.45.0 + 2.46.0 com.google.cloud google-cloud-storage-control - 2.45.0 + 2.46.0 @@ -72,7 +72,7 @@ com.google.cloud google-cloud-storage - 2.45.0 + 2.46.0 tests test diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 0370729e59..0c6d141416 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -83,7 +83,7 @@ com.google.cloud google-cloud-storage - 2.45.0 + 2.46.0 tests test From 8cdb0476465cda5310654cba75dd4af18fd4b193 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 17 Dec 2024 17:29:33 +0100 Subject: [PATCH 03/17] test(deps): update dependency org.junit:junit-bom to v5.11.4 (#2848) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a9eac0e424..603217cdcd 100644 --- a/pom.xml +++ b/pom.xml @@ -69,7 +69,7 @@ org.junit junit-bom - 5.11.3 + 5.11.4 pom import From ca6e153327cc8486894c653a504be96de099d756 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 17 Dec 2024 17:30:15 +0100 Subject: [PATCH 04/17] test(deps): update cross product test dependencies (#2849) --- google-cloud-storage/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml index ff0450854e..665a854dc6 100644 --- a/google-cloud-storage/pom.xml +++ b/google-cloud-storage/pom.xml @@ -224,14 +224,14 @@ com.google.api.grpc proto-google-cloud-kms-v1 - 0.148.0 + 0.149.0 test com.google.cloud google-cloud-kms - 2.57.0 + 2.58.0 test From c1dac837387ffc40f00344c8fb0e86e09d009358 Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Tue, 17 Dec 2024 15:30:35 -0500 Subject: [PATCH 05/17] fix: fix interrupt spiral in grpc ReadObject drainQueue (#2850) If our thread is interrupted while attempting to drainQueue poll will throw an InterruptedException, instead of setting the flag back on the thread immediately we need to defer setting it until we complete our draining. If we don't defer setting it, we can never actually drain our queue. --- .../GapicUnbufferedReadableByteChannel.java | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicUnbufferedReadableByteChannel.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicUnbufferedReadableByteChannel.java index 2efc340c26..aa2bc9f60f 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicUnbufferedReadableByteChannel.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicUnbufferedReadableByteChannel.java @@ -234,35 +234,42 @@ public void close() throws IOException { } private void drainQueue() throws IOException { - IOException ioException = null; - while (queue.nonEmpty()) { - try { - java.lang.Object queueValue = queue.poll(); - if (queueValue instanceof ReadObjectResponse) { - ReadObjectResponse resp = (ReadObjectResponse) queueValue; - ResponseContentLifecycleHandle handle = rclm.get(resp); - handle.close(); - } else if (queueValue == EOF_MARKER || queueValue instanceof Throwable) { - break; - } - } catch (IOException e) { - if (ioException == null) { - ioException = e; - } else if (ioException != e) { - ioException.addSuppressed(e); + boolean shouldInterupt = false; + try { + IOException ioException = null; + while (queue.nonEmpty()) { + try { + java.lang.Object queueValue = queue.poll(); + if (queueValue instanceof ReadObjectResponse) { + ReadObjectResponse resp = (ReadObjectResponse) queueValue; + ResponseContentLifecycleHandle handle = rclm.get(resp); + handle.close(); + } else if (queueValue == EOF_MARKER || queueValue instanceof Throwable) { + break; + } + } catch (IOException e) { + if (ioException == null) { + ioException = e; + } else if (ioException != e) { + ioException.addSuppressed(e); + } + } catch (InterruptedException e) { + shouldInterupt = true; + if (ioException == null) { + ioException = new InterruptedIOException(); + } else { + ioException.addSuppressed(e); + } } - } catch (InterruptedException e) { + } + if (ioException != null) { + throw ioException; + } + } finally { + if (shouldInterupt) { Thread.currentThread().interrupt(); - if (ioException == null) { - ioException = new InterruptedIOException(); - } else { - ioException.addSuppressed(e); - } } } - if (ioException != null) { - throw ioException; - } } ApiFuture getResult() { From 77a2e8af341528a4ff3c34a880a7983f828b8cfd Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Tue, 17 Dec 2024 17:26:50 -0500 Subject: [PATCH 06/17] fix: de-beta storage-v2 artifacts (#2852) --- gapic-google-cloud-storage-v2/pom.xml | 2 +- google-cloud-storage-bom/pom.xml | 6 +++--- grpc-google-cloud-storage-v2/pom.xml | 2 +- pom.xml | 6 +++--- proto-google-cloud-storage-v2/pom.xml | 2 +- versions.txt | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/gapic-google-cloud-storage-v2/pom.xml b/gapic-google-cloud-storage-v2/pom.xml index b674e8214b..260248eed4 100644 --- a/gapic-google-cloud-storage-v2/pom.xml +++ b/gapic-google-cloud-storage-v2/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.google.api.grpc gapic-google-cloud-storage-v2 - 2.46.1-beta-SNAPSHOT + 2.46.1-SNAPSHOT gapic-google-cloud-storage-v2 GRPC library for gapic-google-cloud-storage-v2 diff --git a/google-cloud-storage-bom/pom.xml b/google-cloud-storage-bom/pom.xml index 2ad826d158..a904c8d173 100644 --- a/google-cloud-storage-bom/pom.xml +++ b/google-cloud-storage-bom/pom.xml @@ -74,17 +74,17 @@ com.google.api.grpc gapic-google-cloud-storage-v2 - 2.46.1-beta-SNAPSHOT + 2.46.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-storage-v2 - 2.46.1-beta-SNAPSHOT + 2.46.1-SNAPSHOT com.google.api.grpc proto-google-cloud-storage-v2 - 2.46.1-beta-SNAPSHOT + 2.46.1-SNAPSHOT com.google.cloud diff --git a/grpc-google-cloud-storage-v2/pom.xml b/grpc-google-cloud-storage-v2/pom.xml index 9a8decac02..c7c7e50df9 100644 --- a/grpc-google-cloud-storage-v2/pom.xml +++ b/grpc-google-cloud-storage-v2/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-storage-v2 - 2.46.1-beta-SNAPSHOT + 2.46.1-SNAPSHOT grpc-google-cloud-storage-v2 GRPC library for grpc-google-cloud-storage-v2 diff --git a/pom.xml b/pom.xml index 603217cdcd..5754bf8fa1 100644 --- a/pom.xml +++ b/pom.xml @@ -145,17 +145,17 @@ com.google.api.grpc proto-google-cloud-storage-v2 - 2.46.1-beta-SNAPSHOT + 2.46.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-storage-v2 - 2.46.1-beta-SNAPSHOT + 2.46.1-SNAPSHOT com.google.api.grpc gapic-google-cloud-storage-v2 - 2.46.1-beta-SNAPSHOT + 2.46.1-SNAPSHOT com.google.api.grpc diff --git a/proto-google-cloud-storage-v2/pom.xml b/proto-google-cloud-storage-v2/pom.xml index ca878a15d9..477f45aa0a 100644 --- a/proto-google-cloud-storage-v2/pom.xml +++ b/proto-google-cloud-storage-v2/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.google.api.grpc proto-google-cloud-storage-v2 - 2.46.1-beta-SNAPSHOT + 2.46.1-SNAPSHOT proto-google-cloud-storage-v2 PROTO library for proto-google-cloud-storage-v2 diff --git a/versions.txt b/versions.txt index 862a0a0ca5..77f664c89c 100644 --- a/versions.txt +++ b/versions.txt @@ -2,9 +2,9 @@ # module:released-version:current-version google-cloud-storage:2.46.0:2.46.1-SNAPSHOT -gapic-google-cloud-storage-v2:2.46.0-beta:2.46.1-beta-SNAPSHOT -grpc-google-cloud-storage-v2:2.46.0-beta:2.46.1-beta-SNAPSHOT -proto-google-cloud-storage-v2:2.46.0-beta:2.46.1-beta-SNAPSHOT +gapic-google-cloud-storage-v2:2.46.0:2.46.1-SNAPSHOT +grpc-google-cloud-storage-v2:2.46.0:2.46.1-SNAPSHOT +proto-google-cloud-storage-v2:2.46.0:2.46.1-SNAPSHOT google-cloud-storage-control:2.46.0:2.46.1-SNAPSHOT proto-google-cloud-storage-control-v2:2.46.0:2.46.1-SNAPSHOT grpc-google-cloud-storage-control-v2:2.46.0:2.46.1-SNAPSHOT From 46e964f17267b190a481268c25e385ddb70cb48b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 19 Dec 2024 22:05:49 +0100 Subject: [PATCH 07/17] chore(deps): update dependency com.google.cloud:libraries-bom to v26.52.0 (#2851) --- samples/snippets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 0c6d141416..1639090fa8 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -31,7 +31,7 @@ com.google.cloud libraries-bom - 26.51.0 + 26.52.0 pom import From 093cb8759d5cfaafa6fd9df43de1bb91c1285f35 Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Mon, 6 Jan 2025 14:36:33 -0500 Subject: [PATCH 08/17] fix: update request handling of gRPC based CopyWriter (#2858) --- .../google/cloud/storage/GapicCopyWriter.java | 7 +-- .../google/cloud/storage/GrpcStorageImpl.java | 26 ++++++---- .../google/cloud/storage/it/ITObjectTest.java | 52 ++++++++++++------- 3 files changed, 55 insertions(+), 30 deletions(-) diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicCopyWriter.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicCopyWriter.java index 038ff46672..9d6a1f870a 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicCopyWriter.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/GapicCopyWriter.java @@ -31,6 +31,7 @@ final class GapicCopyWriter extends CopyWriter { private final GrpcStorageOptions options; private final UnaryCallable callable; private final ResultRetryAlgorithm alg; + private final RewriteObjectRequest originalRequest; private final RewriteResponse initialResponse; private RewriteResponse mostRecentResponse; @@ -39,6 +40,7 @@ final class GapicCopyWriter extends CopyWriter { GrpcStorageImpl storage, UnaryCallable callable, ResultRetryAlgorithm alg, + RewriteObjectRequest originalRequest, RewriteResponse initialResponse) { this.storage = storage; this.options = storage.getOptions(); @@ -46,6 +48,7 @@ final class GapicCopyWriter extends CopyWriter { this.alg = alg; this.initialResponse = initialResponse; this.mostRecentResponse = initialResponse; + this.originalRequest = originalRequest; } @Override @@ -76,9 +79,7 @@ public long getTotalBytesCopied() { public void copyChunk() { if (!isDone()) { RewriteObjectRequest req = - RewriteObjectRequest.newBuilder() - .setRewriteToken(mostRecentResponse.getRewriteToken()) - .build(); + originalRequest.toBuilder().setRewriteToken(mostRecentResponse.getRewriteToken()).build(); GrpcCallContext retryContext = Retrying.newCallContext(); mostRecentResponse = Retrying.run(options, alg, () -> callable.call(req, retryContext), Decoder.identity()); diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageImpl.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageImpl.java index d7472f5ff9..428f85bc73 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageImpl.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageImpl.java @@ -656,17 +656,24 @@ public CopyWriter copy(CopyRequest copyRequest) { RewriteObjectRequest.newBuilder() .setDestinationName(dstProto.getName()) .setDestinationBucket(dstProto.getBucket()) - // destination_kms_key comes from dstOpts - // according to the docs in the protos, it is illegal to populate the following fields, - // clear them out if they are set - // destination_predefined_acl comes from dstOpts - // if_*_match come from srcOpts and dstOpts - // copy_source_encryption_* come from srcOpts - // common_object_request_params come from dstOpts - .setDestination(dstProto.toBuilder().clearName().clearBucket().clearKmsKey().build()) .setSourceBucket(srcProto.getBucket()) .setSourceObject(srcProto.getName()); + // according to the docs in the protos, it is illegal to populate the following fields, + // clear them out if they are set + // * destination_kms_key comes from dstOpts + // * destination_predefined_acl comes from dstOpts + // * if_*_match come from srcOpts and dstOpts + // * copy_source_encryption_* come from srcOpts + // * common_object_request_params come from dstOpts + Object cleanedDst = dstProto.toBuilder().clearName().clearBucket().clearKmsKey().build(); + // only set the destination if it is not equal to the default instance + // otherwise we will clobber default values populated in the gcs server side for the object + // metadata + if (!cleanedDst.equals(Object.getDefaultInstance())) { + b.setDestination(cleanedDst); + } + if (src.getGeneration() != null) { b.setSourceGeneration(src.getGeneration()); } @@ -685,7 +692,8 @@ public CopyWriter copy(CopyRequest copyRequest) { getOptions(), retryAlgorithmManager.getFor(req), () -> callable.call(req, retryContext), - (resp) -> new GapicCopyWriter(this, callable, retryAlgorithmManager.idempotent(), resp)); + (resp) -> + new GapicCopyWriter(this, callable, retryAlgorithmManager.idempotent(), req, resp)); } @Override 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 7a88da5e48..ed68113296 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 @@ -39,6 +39,7 @@ import com.google.cloud.storage.Bucket; import com.google.cloud.storage.BucketInfo; import com.google.cloud.storage.CopyWriter; +import com.google.cloud.storage.DataGenerator; import com.google.cloud.storage.PackagePrivateMethodWorkarounds; import com.google.cloud.storage.Storage; import com.google.cloud.storage.Storage.BlobField; @@ -562,7 +563,6 @@ public void testListBlobsCurrentDirectoryIncludesBothObjectsAndSyntheticDirector } @Test - // When gRPC support is added for matchGlob, enable this test for gRPC. public void testListBlobsWithMatchGlob() throws Exception { BucketInfo bucketInfo = BucketInfo.newBuilder(generator.randomBucketName()).build(); try (TemporaryBucket tempBucket = @@ -848,8 +848,6 @@ public void testComposeBlobFail() { } @Test - // Bucket attribute extration on allowlist bug b/246634709 - @Exclude(transports = Transport.GRPC) public void testCopyBlob() { String sourceBlobName = generator.randomObjectName() + "-source"; @@ -872,8 +870,35 @@ public void testCopyBlob() { } @Test - // Bucket attribute extration on allowlist bug b/246634709 - @Exclude(transports = Transport.GRPC) + public void copyBlob_classChange_multipleChunks() { + + String sourceBlobName = generator.randomObjectName() + "-source"; + BlobId source = BlobId.of(bucket.getName(), sourceBlobName); + ImmutableMap metadata = ImmutableMap.of("k", "v"); + BlobInfo blob = BlobInfo.newBuilder(source).setMetadata(metadata).build(); + int _5MiB = 5 * 1024 * 1024; + byte[] bytes = DataGenerator.base64Characters().genBytes(_5MiB); + Blob remoteBlob = storage.create(blob, bytes); + assertThat(remoteBlob).isNotNull(); + String targetBlobName = generator.randomObjectName() + "-target"; + CopyRequest req = + CopyRequest.newBuilder() + .setSource(source) + .setTarget( + BlobInfo.newBuilder(bucket, targetBlobName) + // change the storage class to force GCS to copy bytes + .setStorageClass(StorageClass.NEARLINE) + .build(), + BlobTargetOption.doesNotExist()) + .setMegabytesCopiedPerChunk(2L) + .build(); + CopyWriter copyWriter = storage.copy(req); + BlobInfo remoteBlob2 = copyWriter.getResult(); + assertThat(copyWriter.isDone()).isTrue(); + assertThat(remoteBlob2).isNotNull(); + } + + @Test public void testCopyBlobWithPredefinedAcl() { String sourceBlobName = generator.randomObjectName() + "-source"; @@ -903,8 +928,6 @@ public void testCopyBlobWithPredefinedAcl() { } @Test - // Bucket attribute extration on allowlist bug b/246634709 - @Exclude(transports = Transport.GRPC) public void testCopyBlobWithEncryptionKeys() { String sourceBlobName = generator.randomObjectName() + "-source"; @@ -955,8 +978,6 @@ public void testCopyBlobWithEncryptionKeys() { } @Test - // Bucket attribute extration on allowlist bug b/246634709 - @Exclude(transports = Transport.GRPC) public void testCopyBlobUpdateMetadata() { String sourceBlobName = generator.randomObjectName() + "-source"; @@ -981,9 +1002,7 @@ public void testCopyBlobUpdateMetadata() { assertTrue(storage.delete(bucket.getName(), targetBlobName)); } - // Re-enable this test when it stops failing - // @Test - @Exclude(transports = Transport.GRPC) + @Test public void testCopyBlobUpdateStorageClass() { String sourceBlobName = generator.randomObjectName() + "-source"; BlobId source = BlobId.of(bucket.getName(), sourceBlobName); @@ -1007,8 +1026,6 @@ public void testCopyBlobUpdateStorageClass() { } @Test - // Bucket attribute extration on allowlist bug b/246634709 - @Exclude(transports = Transport.GRPC) public void testCopyBlobNoContentType() { String sourceBlobName = generator.randomObjectName() + "-source"; @@ -1022,7 +1039,9 @@ public void testCopyBlobNoContentType() { CopyWriter copyWriter = storage.copy(req); assertEquals(bucket.getName(), copyWriter.getResult().getBucket()); assertEquals(targetBlobName, copyWriter.getResult().getName()); - assertNull(copyWriter.getResult().getContentType()); + assertTrue( + copyWriter.getResult().getContentType() == null + || copyWriter.getResult().getContentType().isEmpty()); assertEquals(metadata, copyWriter.getResult().getMetadata()); assertTrue(copyWriter.isDone()); assertTrue(remoteSourceBlob.delete()); @@ -1030,9 +1049,6 @@ public void testCopyBlobNoContentType() { } @Test - // Verified against testbench - // Bucket attribute extration on allowlist bug b/246634709 - @Exclude(transports = Transport.GRPC) public void testCopyBlobFail() { String sourceBlobName = "test-copy-blob-source-fail"; From 1863c654b05e0bf1bacd9dfe07d6619c0ca5228e Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Mon, 6 Jan 2025 14:38:28 -0500 Subject: [PATCH 09/17] test: update ITObjectTest to be parallel friendly (#2859) Reduced wall time from ~2m to ~50 seconds Add a versioned bucket type available for injection with `@BucketFixture(VERSIONED)` rather than needing to create multiple times per test. --- .../google/cloud/storage/it/ITObjectTest.java | 356 ++++++++++-------- .../it/runner/annotations/BucketType.java | 4 +- .../it/runner/registry/BackendResources.java | 18 + 3 files changed, 218 insertions(+), 160 deletions(-) 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 ed68113296..46a1099a34 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 @@ -63,6 +63,7 @@ import com.google.cloud.storage.it.runner.annotations.CrossRun; import com.google.cloud.storage.it.runner.annotations.CrossRun.Exclude; import com.google.cloud.storage.it.runner.annotations.Inject; +import com.google.cloud.storage.it.runner.annotations.ParallelFriendly; import com.google.cloud.storage.it.runner.registry.Generator; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -91,6 +92,7 @@ import java.util.Random; import java.util.Set; import java.util.concurrent.ExecutionException; +import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; import java.util.stream.StreamSupport; @@ -102,6 +104,7 @@ @CrossRun( transports = {Transport.HTTP, Transport.GRPC}, backends = {Backend.PROD}) +@ParallelFriendly public class ITObjectTest { private static final String CONTENT_TYPE = "text/plain"; @@ -130,6 +133,10 @@ public class ITObjectTest { @BucketFixture(BucketType.REQUESTER_PAYS) public BucketInfo requesterPaysBucket; + @Inject + @BucketFixture(BucketType.VERSIONED) + public BucketInfo versionedBucket; + @Inject public Storage storage; @Test @@ -320,7 +327,7 @@ public void testGetBlobFail() { @Test public void testGetBlobFailNonExistingGeneration() { - String blobName = "test-get-blob-fail-non-existing-generation"; + String blobName = generator.randomObjectName(); BlobInfo blob = BlobInfo.newBuilder(bucket, blobName).build(); Blob remoteBlob = storage.create(blob); assertNotNull(remoteBlob); @@ -423,98 +430,132 @@ public void testListBlobRequesterPays() throws InterruptedException { @Test public void testListBlobsVersioned() throws ExecutionException, InterruptedException { - String bucketName = generator.randomBucketName(); - Bucket bucket = - storage.create(BucketInfo.newBuilder(bucketName).setVersioningEnabled(true).build()); - try { - String[] blobNames = {"test-list-blobs-versioned-blob1", "test-list-blobs-versioned-blob2"}; - BlobInfo blob1 = - BlobInfo.newBuilder(bucket, blobNames[0]).setContentType(CONTENT_TYPE).build(); - BlobInfo blob2 = - BlobInfo.newBuilder(bucket, blobNames[1]).setContentType(CONTENT_TYPE).build(); - Blob remoteBlob1 = storage.create(blob1); - Blob remoteBlob2 = storage.create(blob2); - Blob remoteBlob3 = storage.create(blob2); - assertNotNull(remoteBlob1); - assertNotNull(remoteBlob2); - assertNotNull(remoteBlob3); - Page page = + String bucketName = versionedBucket.getName(); + String baseName = generator.randomObjectName(); + String[] blobNames = {baseName + "-blob1", baseName + "-blob2"}; + BlobInfo blob1 = + BlobInfo.newBuilder(versionedBucket, blobNames[0]).setContentType(CONTENT_TYPE).build(); + BlobInfo blob2 = + BlobInfo.newBuilder(versionedBucket, blobNames[1]).setContentType(CONTENT_TYPE).build(); + Blob remoteBlob1 = storage.create(blob1); + Blob remoteBlob2 = storage.create(blob2); + Blob remoteBlob3 = storage.create(blob2); + assertNotNull(remoteBlob1); + assertNotNull(remoteBlob2); + assertNotNull(remoteBlob3); + Page page = + storage.list( + bucketName, BlobListOption.prefix(baseName + "-blob"), BlobListOption.versions(true)); + // https://cloud.google.com/storage/docs/consistency#strongly_consistent_operations + // enabling versioning on an existing bucket seems to have some backpressure on when new + // versions can safely be made, but listing is not eventually consistent. + + // TODO: make hermetic + // Listing blobs is eventually consistent, we loop until the list is of the expected size. The + // test fails if timeout is reached. + while (Iterators.size(page.iterateAll().iterator()) != 3) { + Thread.sleep(500); + page = storage.list( - bucketName, - BlobListOption.prefix("test-list-blobs-versioned-blob"), - BlobListOption.versions(true)); - // https://cloud.google.com/storage/docs/consistency#strongly_consistent_operations - // enabling versioning on an existing bucket seems to have some backpressure on when new - // versions can safely be made, but listing is not eventually consistent. - - // TODO: make hermetic - // Listing blobs is eventually consistent, we loop until the list is of the expected size. The - // test fails if timeout is reached. - while (Iterators.size(page.iterateAll().iterator()) != 3) { - Thread.sleep(500); - page = - storage.list( - bucketName, - BlobListOption.prefix("test-list-blobs-versioned-blob"), - BlobListOption.versions(true)); - } - Set blobSet = ImmutableSet.of(blobNames[0], blobNames[1]); - Iterator iterator = page.iterateAll().iterator(); - while (iterator.hasNext()) { - Blob remoteBlob = iterator.next(); - assertEquals(bucketName, remoteBlob.getBucket()); - assertTrue(blobSet.contains(remoteBlob.getName())); - assertNotNull(remoteBlob.getGeneration()); - } - } finally { - BucketCleaner.doCleanup(bucketName, storage); + bucketName, BlobListOption.prefix(baseName + "-blob"), BlobListOption.versions(true)); + } + Set blobSet = ImmutableSet.of(blobNames[0], blobNames[1]); + Iterator iterator = page.iterateAll().iterator(); + while (iterator.hasNext()) { + Blob remoteBlob = iterator.next(); + assertEquals(bucketName, remoteBlob.getBucket()); + assertTrue(blobSet.contains(remoteBlob.getName())); + assertNotNull(remoteBlob.getGeneration()); } } @Test - public void testListBlobsWithOffset() throws ExecutionException, InterruptedException { - String bucketName = generator.randomBucketName(); - Bucket bucket = - storage.create(BucketInfo.newBuilder(bucketName).setVersioningEnabled(true).build()); - try { - List blobNames = - ImmutableList.of("startOffset_blob1", "startOffset_blob2", "blob3_endOffset"); - BlobInfo blob1 = - BlobInfo.newBuilder(bucket, blobNames.get(0)).setContentType(CONTENT_TYPE).build(); - BlobInfo blob2 = - BlobInfo.newBuilder(bucket, blobNames.get(1)).setContentType(CONTENT_TYPE).build(); - BlobInfo blob3 = - BlobInfo.newBuilder(bucket, blobNames.get(2)).setContentType(CONTENT_TYPE).build(); - - Blob remoteBlob1 = storage.create(blob1); - Blob remoteBlob2 = storage.create(blob2); - Blob remoteBlob3 = storage.create(blob3); - assertNotNull(remoteBlob1); - assertNotNull(remoteBlob2); - assertNotNull(remoteBlob3); - - // Listing blobs without BlobListOptions. - Page page1 = storage.list(bucketName); - assertEquals(3, Iterators.size(page1.iterateAll().iterator())); - - // Listing blobs with startOffset. - Page page2 = storage.list(bucketName, BlobListOption.startOffset("startOffset")); - assertEquals(2, Iterators.size(page2.iterateAll().iterator())); - - // Listing blobs with endOffset. - Page page3 = storage.list(bucketName, BlobListOption.endOffset("endOffset")); - assertEquals(1, Iterators.size(page3.iterateAll().iterator())); - - // Listing blobs with startOffset and endOffset. - Page page4 = - storage.list( - bucketName, - BlobListOption.startOffset("startOffset"), - BlobListOption.endOffset("endOffset")); - assertEquals(0, Iterators.size(page4.iterateAll().iterator())); - } finally { - BucketCleaner.doCleanup(bucketName, storage); - } + public void testListBlobsWithOffset() throws Exception { + String bucketName = bucket.getName(); + String baseName = generator.randomObjectName(); + + List blobs = + IntStream.rangeClosed(0, 2) + .mapToObj(i -> baseName + "-" + i) + .map(n -> BlobInfo.newBuilder(bucket, n).build()) + .map(info -> storage.create(info, BlobTargetOption.doesNotExist())) + .map(BlobInfo::getBlobId) + .collect(Collectors.toList()); + + assertAll( + () -> { + // Listing blobs without BlobListOptions. + Page page1 = storage.list(bucketName, BlobListOption.prefix(baseName)); + assertThat( + page1 + .streamAll() + .map(BlobInfo::getBlobId) + .map(BlobId::toGsUtilUriWithGeneration) + .collect(Collectors.toList())) + .isEqualTo( + blobs.stream() + .map(BlobId::toGsUtilUriWithGeneration) + .collect(Collectors.toList())); + }, + () -> { + // Listing blobs starting from 1. + Page page2 = + storage.list( + bucketName, + BlobListOption.prefix(baseName), + BlobListOption.startOffset(blobs.get(1).getName())); + assertThat( + page2 + .streamAll() + .map(BlobInfo::getBlobId) + .map(BlobId::toGsUtilUriWithGeneration) + .collect(Collectors.toList())) + .isEqualTo( + blobs.stream() + .skip(1) + .map(BlobId::toGsUtilUriWithGeneration) + .collect(Collectors.toList())); + }, + () -> { + // Listing blobs until 2. + Page page3 = + storage.list( + bucketName, + BlobListOption.prefix(baseName), + BlobListOption.endOffset(blobs.get(2).getName())); + assertThat( + page3 + .streamAll() + .map(BlobInfo::getBlobId) + .map(BlobId::toGsUtilUriWithGeneration) + .collect(Collectors.toList())) + .isEqualTo( + blobs.stream() + .limit(2) + .map(BlobId::toGsUtilUriWithGeneration) + .collect(Collectors.toList())); + }, + () -> { + // Listing blobs with startOffset and endOffset. + Page page4 = + storage.list( + bucketName, + BlobListOption.prefix(baseName), + BlobListOption.startOffset(blobs.get(1).getName()), + BlobListOption.endOffset(blobs.get(2).getName())); + assertThat( + page4 + .streamAll() + .map(BlobInfo::getBlobId) + .map(BlobId::toGsUtilUriWithGeneration) + .collect(Collectors.toList())) + .isEqualTo( + blobs.stream() + .skip(1) + .limit(1) + .map(BlobId::toGsUtilUriWithGeneration) + .collect(Collectors.toList())); + }); } @Test @@ -547,7 +588,7 @@ public void testListBlobsCurrentDirectoryIncludesBothObjectsAndSyntheticDirector ImmutableSet actual = blobs.stream() .map(Blob::asBlobInfo) - .map(info -> PackagePrivateMethodWorkarounds.noAcl(info)) + .map(PackagePrivateMethodWorkarounds::noAcl) .collect(ImmutableSet.toImmutableSet()); // obj1Gen1 is "in subdirectory" and we don't expect to receive it as a result when listing @@ -564,54 +605,47 @@ public void testListBlobsCurrentDirectoryIncludesBothObjectsAndSyntheticDirector @Test public void testListBlobsWithMatchGlob() throws Exception { - BucketInfo bucketInfo = BucketInfo.newBuilder(generator.randomBucketName()).build(); - try (TemporaryBucket tempBucket = - TemporaryBucket.newBuilder().setBucketInfo(bucketInfo).setStorage(storage).build()) { - BucketInfo bucket = tempBucket.getBucket(); - assertNotNull(storage.create(BlobInfo.newBuilder(bucket, "foo/bar").build())); - assertNotNull(storage.create(BlobInfo.newBuilder(bucket, "foo/baz").build())); - assertNotNull(storage.create(BlobInfo.newBuilder(bucket, "foo/foobar").build())); - assertNotNull(storage.create(BlobInfo.newBuilder(bucket, "foobar").build())); - - Page page1 = storage.list(bucket.getName(), BlobListOption.matchGlob("foo*bar")); - Page page2 = storage.list(bucket.getName(), BlobListOption.matchGlob("foo**bar")); - Page page3 = storage.list(bucket.getName(), BlobListOption.matchGlob("**/foobar")); - Page page4 = storage.list(bucket.getName(), BlobListOption.matchGlob("*/ba[rz]")); - Page page5 = storage.list(bucket.getName(), BlobListOption.matchGlob("*/ba[!a-y]")); - Page page6 = - storage.list(bucket.getName(), BlobListOption.matchGlob("**/{foobar,baz}")); - Page page7 = - storage.list(bucket.getName(), BlobListOption.matchGlob("foo/{foo*,*baz}")); - assertAll( - () -> - assertThat(Iterables.transform(page1.iterateAll(), blob -> blob.getName())) - .containsExactly("foobar") - .inOrder(), - () -> - assertThat(Iterables.transform(page2.iterateAll(), blob -> blob.getName())) - .containsExactly("foo/bar", "foo/foobar", "foobar") - .inOrder(), - () -> - assertThat(Iterables.transform(page3.iterateAll(), blob -> blob.getName())) - .containsExactly("foo/foobar", "foobar") - .inOrder(), - () -> - assertThat(Iterables.transform(page4.iterateAll(), blob -> blob.getName())) - .containsExactly("foo/bar", "foo/baz") - .inOrder(), - () -> - assertThat(Iterables.transform(page5.iterateAll(), blob -> blob.getName())) - .containsExactly("foo/baz") - .inOrder(), - () -> - assertThat(Iterables.transform(page6.iterateAll(), blob -> blob.getName())) - .containsExactly("foo/baz", "foo/foobar", "foobar") - .inOrder(), - () -> - assertThat(Iterables.transform(page7.iterateAll(), blob -> blob.getName())) - .containsExactly("foo/baz", "foo/foobar") - .inOrder()); - } + assertNotNull(storage.create(BlobInfo.newBuilder(bucket, "foo/bar").build())); + assertNotNull(storage.create(BlobInfo.newBuilder(bucket, "foo/baz").build())); + assertNotNull(storage.create(BlobInfo.newBuilder(bucket, "foo/foobar").build())); + assertNotNull(storage.create(BlobInfo.newBuilder(bucket, "foobar").build())); + + Page page1 = storage.list(bucket.getName(), BlobListOption.matchGlob("foo*bar")); + Page page2 = storage.list(bucket.getName(), BlobListOption.matchGlob("foo**bar")); + Page page3 = storage.list(bucket.getName(), BlobListOption.matchGlob("**/foobar")); + Page page4 = storage.list(bucket.getName(), BlobListOption.matchGlob("*/ba[rz]")); + Page page5 = storage.list(bucket.getName(), BlobListOption.matchGlob("*/ba[!a-y]")); + Page page6 = storage.list(bucket.getName(), BlobListOption.matchGlob("**/{foobar,baz}")); + Page page7 = storage.list(bucket.getName(), BlobListOption.matchGlob("foo/{foo*,*baz}")); + assertAll( + () -> + assertThat(Iterables.transform(page1.iterateAll(), BlobInfo::getName)) + .containsExactly("foobar") + .inOrder(), + () -> + assertThat(Iterables.transform(page2.iterateAll(), BlobInfo::getName)) + .containsExactly("foo/bar", "foo/foobar", "foobar") + .inOrder(), + () -> + assertThat(Iterables.transform(page3.iterateAll(), BlobInfo::getName)) + .containsExactly("foo/foobar", "foobar") + .inOrder(), + () -> + assertThat(Iterables.transform(page4.iterateAll(), BlobInfo::getName)) + .containsExactly("foo/bar", "foo/baz") + .inOrder(), + () -> + assertThat(Iterables.transform(page5.iterateAll(), BlobInfo::getName)) + .containsExactly("foo/baz") + .inOrder(), + () -> + assertThat(Iterables.transform(page6.iterateAll(), BlobInfo::getName)) + .containsExactly("foo/baz", "foo/foobar", "foobar") + .inOrder(), + () -> + assertThat(Iterables.transform(page7.iterateAll(), BlobInfo::getName)) + .containsExactly("foo/baz", "foo/foobar") + .inOrder()); } @Test @@ -623,7 +657,7 @@ public void testListBlobsMultiplePages() { .mapToObj(i -> String.format("%s/%2d", basePath, i)) .map(name -> BlobInfo.newBuilder(bucket, name).build()) .map(info -> storage.create(info, BlobTargetOption.doesNotExist())) - .map(info1 -> PackagePrivateMethodWorkarounds.noAcl(info1)) + .map(PackagePrivateMethodWorkarounds::noAcl) .collect(ImmutableList.toImmutableList()); Page page = @@ -631,7 +665,7 @@ public void testListBlobsMultiplePages() { ImmutableList actual = ImmutableList.copyOf(page.iterateAll()).stream() - .map(info -> PackagePrivateMethodWorkarounds.noAcl(info)) + .map(PackagePrivateMethodWorkarounds::noAcl) .collect(ImmutableList.toImmutableList()); try { @@ -644,7 +678,7 @@ public void testListBlobsMultiplePages() { @Test public void testUpdateBlob() { - String blobName = "test-update-blob"; + String blobName = generator.randomObjectName(); BlobInfo blob = BlobInfo.newBuilder(bucket, blobName).build(); Blob remoteBlob = storage.create(blob); assertNotNull(remoteBlob); @@ -657,7 +691,7 @@ public void testUpdateBlob() { @Test public void testUpdateBlobReplaceMetadata() { - String blobName = "test-update-blob-replace-metadata"; + String blobName = generator.randomObjectName(); ImmutableMap metadata = ImmutableMap.of("k1", "a"); ImmutableMap newMetadata = ImmutableMap.of("k2", "b"); BlobInfo blob = @@ -678,7 +712,7 @@ public void testUpdateBlobReplaceMetadata() { @Test public void testUpdateBlobMergeMetadata() { - String blobName = "test-update-blob-merge-metadata"; + String blobName = generator.randomObjectName(); ImmutableMap metadata = ImmutableMap.of("k1", "a"); ImmutableMap newMetadata = ImmutableMap.of("k2", "b"); ImmutableMap expectedMetadata = ImmutableMap.of("k1", "a", "k2", "b"); @@ -699,7 +733,7 @@ public void testUpdateBlobMergeMetadata() { @Test public void testUpdateBlobUnsetMetadata() { - String blobName = "test-update-blob-unset-metadata"; + String blobName = generator.randomObjectName(); ImmutableMap metadata = ImmutableMap.of("k1", "a", "k2", "b"); Map newMetadata = new HashMap<>(); newMetadata.put("k1", "a"); @@ -721,7 +755,7 @@ public void testUpdateBlobUnsetMetadata() { @Test public void testUpdateBlobFail() { - String blobName = "test-update-blob-fail"; + String blobName = generator.randomObjectName(); BlobInfo blob = BlobInfo.newBuilder(bucket, blobName).build(); Blob remoteBlob = storage.create(blob); assertNotNull(remoteBlob); @@ -737,13 +771,13 @@ public void testUpdateBlobFail() { @Test public void testDeleteNonExistingBlob() { - String blobName = "test-delete-non-existing-blob"; + String blobName = generator.randomObjectName(); assertFalse(storage.delete(bucket.getName(), blobName)); } @Test public void testDeleteBlobNonExistingGeneration() { - String blobName = "test-delete-blob-non-existing-generation"; + String blobName = generator.randomObjectName(); BlobInfo blob = BlobInfo.newBuilder(bucket, blobName).build(); assertNotNull(storage.create(blob)); try { @@ -756,7 +790,7 @@ public void testDeleteBlobNonExistingGeneration() { @Test public void testDeleteBlobFail() { - String blobName = "test-delete-blob-fail"; + String blobName = generator.randomObjectName(); BlobInfo blob = BlobInfo.newBuilder(bucket, blobName).build(); Blob remoteBlob = storage.create(blob); assertNotNull(remoteBlob); @@ -771,15 +805,16 @@ public void testDeleteBlobFail() { @Test public void testComposeBlob() { - String sourceBlobName1 = "test-compose-blob-source-1"; - String sourceBlobName2 = "test-compose-blob-source-2"; + String baseName = generator.randomObjectName(); + String sourceBlobName1 = baseName + "-1"; + String sourceBlobName2 = baseName + "-2"; BlobInfo sourceBlob1 = BlobInfo.newBuilder(bucket, sourceBlobName1).build(); BlobInfo sourceBlob2 = BlobInfo.newBuilder(bucket, sourceBlobName2).build(); Blob remoteSourceBlob1 = storage.create(sourceBlob1, BLOB_BYTE_CONTENT); Blob remoteSourceBlob2 = storage.create(sourceBlob2, BLOB_BYTE_CONTENT); assertNotNull(remoteSourceBlob1); assertNotNull(remoteSourceBlob2); - String targetBlobName = "test-compose-blob-target"; + String targetBlobName = baseName + "-target"; BlobInfo targetBlob = BlobInfo.newBuilder(bucket, targetBlobName).build(); ComposeRequest req = ComposeRequest.of(ImmutableList.of(sourceBlobName1, sourceBlobName2), targetBlob); @@ -796,15 +831,16 @@ public void testComposeBlob() { @Test public void testComposeBlobWithContentType() { - String sourceBlobName1 = "test-compose-blob-with-content-type-source-1"; - String sourceBlobName2 = "test-compose-blob-with-content-type-source-2"; + String baseName = generator.randomObjectName(); + String sourceBlobName1 = baseName + "-source-1"; + String sourceBlobName2 = baseName + "-source-2"; BlobInfo sourceBlob1 = BlobInfo.newBuilder(bucket, sourceBlobName1).build(); BlobInfo sourceBlob2 = BlobInfo.newBuilder(bucket, sourceBlobName2).build(); Blob remoteSourceBlob1 = storage.create(sourceBlob1, BLOB_BYTE_CONTENT); Blob remoteSourceBlob2 = storage.create(sourceBlob2, BLOB_BYTE_CONTENT); assertNotNull(remoteSourceBlob1); assertNotNull(remoteSourceBlob2); - String targetBlobName = "test-compose-blob-with-content-type-target"; + String targetBlobName = baseName + "-target"; BlobInfo targetBlob = BlobInfo.newBuilder(bucket, targetBlobName).setContentType(CONTENT_TYPE).build(); ComposeRequest req = @@ -823,15 +859,16 @@ public void testComposeBlobWithContentType() { @Test public void testComposeBlobFail() { - String sourceBlobName1 = "test-compose-blob-fail-source-1"; - String sourceBlobName2 = "test-compose-blob-fail-source-2"; + String baseName = generator.randomObjectName(); + String sourceBlobName1 = baseName + "-source-1"; + String sourceBlobName2 = baseName + "-source-2"; BlobInfo sourceBlob1 = BlobInfo.newBuilder(bucket, sourceBlobName1).build(); BlobInfo sourceBlob2 = BlobInfo.newBuilder(bucket, sourceBlobName2).build(); Blob remoteSourceBlob1 = storage.create(sourceBlob1); Blob remoteSourceBlob2 = storage.create(sourceBlob2); assertNotNull(remoteSourceBlob1); assertNotNull(remoteSourceBlob2); - String targetBlobName = "test-compose-blob-fail-target"; + String targetBlobName = baseName + "-target"; BlobInfo targetBlob = BlobInfo.newBuilder(bucket, targetBlobName).build(); ComposeRequest req = ComposeRequest.newBuilder() @@ -1051,11 +1088,12 @@ public void testCopyBlobNoContentType() { @Test public void testCopyBlobFail() { - String sourceBlobName = "test-copy-blob-source-fail"; + String baseName = generator.randomObjectName(); + String sourceBlobName = baseName + "-source-fail"; BlobId source = BlobId.of(bucket.getName(), sourceBlobName, -1L); Blob remoteSourceBlob = storage.create(BlobInfo.newBuilder(source).build(), BLOB_BYTE_CONTENT); assertNotNull(remoteSourceBlob); - String targetBlobName = "test-copy-blob-target-fail"; + String targetBlobName = baseName + "-target-fail"; BlobInfo target = BlobInfo.newBuilder(bucket, targetBlobName).setContentType(CONTENT_TYPE).build(); CopyRequest req = @@ -1086,7 +1124,7 @@ public void testCopyBlobFail() { @Test public void testReadAndWriteChannelWithEncryptionKey() throws IOException { - String blobName = "test-read-write-channel-with-customer-key-blob"; + String blobName = generator.randomObjectName(); BlobInfo blob = BlobInfo.newBuilder(bucket, blobName).build(); byte[] stringBytes; try (WriteChannel writer = storage.writer(blob, BlobWriteOption.encryptionKey(BASE64_KEY))) { diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/annotations/BucketType.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/annotations/BucketType.java index c333523573..6a7a8251d7 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/annotations/BucketType.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/annotations/BucketType.java @@ -23,5 +23,7 @@ public enum BucketType { /** A bucket created using all GCS defaults except that it has requester_pays enabled. */ REQUESTER_PAYS, /** A bucket created with Hierarchical Namespace enabled */ - HNS + HNS, + /** A bucket created using all GCS default except that object versioning is enabled */ + VERSIONED } diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/BackendResources.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/BackendResources.java index 237a5c67e7..a00d4e616e 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/BackendResources.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/BackendResources.java @@ -114,6 +114,8 @@ static BackendResources of(Backend backend) { case TEST_BENCH: optionsBuilder = StorageOptions.grpc() + .setGrpcInterceptorProvider( + GrpcPlainRequestLoggingInterceptor.getInterceptorProvider()) .setCredentials(NoCredentials.getInstance()) .setHost(Registry.getInstance().testBench().getGRPCBaseUri()) .setProjectId("test-project-id"); @@ -190,6 +192,17 @@ static BackendResources of(Backend backend) { storageJson.get().getStorage(), ctrl.get().getCtrl()); }); + TestRunScopedInstance bucketVersioned = + TestRunScopedInstance.of( + "BUCKET_VERSIONED_" + backend.name(), + () -> { + String bucketName = String.format("java-storage-grpc-v-%s", UUID.randomUUID()); + protectedBucketNames.add(bucketName); + return new BucketInfoShim( + BucketInfo.newBuilder(bucketName).setVersioningEnabled(true).build(), + storageJson.get().getStorage(), + ctrl.get().getCtrl()); + }); TestRunScopedInstance bucketHns = TestRunScopedInstance.of( "BUCKET_HNS_" + backend.name(), @@ -246,6 +259,11 @@ static BackendResources of(Backend backend) { BucketInfo.class, bucketHns, backendIs(backend).and(bucketTypeIs(BucketType.HNS))), + RegistryEntry.of( + 62, + BucketInfo.class, + bucketVersioned, + backendIs(backend).and(bucketTypeIs(BucketType.VERSIONED))), RegistryEntry.of( 70, BucketInfo.class, bucket, backendIs(backend).and(isDefaultBucket())), RegistryEntry.of( From dd889ea0d0a57490ef106ab92ba557f26d414406 Mon Sep 17 00:00:00 2001 From: Sydney Munro <97561403+sydney-munro@users.noreply.github.com> Date: Mon, 6 Jan 2025 15:21:30 -0800 Subject: [PATCH 10/17] feat: introductory beta level support for OpenTelemetry tracing on c.g.c.storage.Storage methods (#2837) --- .../clirr-ignored-differences.xml | 13 + google-cloud-storage/pom.xml | 9 + .../cloud/storage/GrpcStorageOptions.java | 70 +- .../cloud/storage/HttpStorageOptions.java | 45 +- .../cloud/storage/OtelStorageDecorator.java | 1733 +++++++++++++++++ ...lelCompositeUploadWritableByteChannel.java | 5 +- .../google/cloud/storage/StorageOptions.java | 14 + .../cloud/storage/ITOpenTelemetryTest.java | 91 + .../storage/ITOpenTelemetryTestbenchTest.java | 217 +++ .../storage/it/runner/registry/TestBench.java | 2 +- .../cloud/storage/otel/TestExporter.java | 50 + 11 files changed, 2230 insertions(+), 19 deletions(-) create mode 100644 google-cloud-storage/src/main/java/com/google/cloud/storage/OtelStorageDecorator.java create mode 100644 google-cloud-storage/src/test/java/com/google/cloud/storage/ITOpenTelemetryTest.java create mode 100644 google-cloud-storage/src/test/java/com/google/cloud/storage/ITOpenTelemetryTestbenchTest.java create mode 100644 google-cloud-storage/src/test/java/com/google/cloud/storage/otel/TestExporter.java diff --git a/google-cloud-storage/clirr-ignored-differences.xml b/google-cloud-storage/clirr-ignored-differences.xml index d81c37bb24..0b19230fdd 100644 --- a/google-cloud-storage/clirr-ignored-differences.xml +++ b/google-cloud-storage/clirr-ignored-differences.xml @@ -96,4 +96,17 @@ boolean equals(java.lang.Object) + + 7013 + com/google/cloud/storage/StorageOptions$Builder + com.google.cloud.storage.StorageOptions$Builder setOpenTelemetry(io.opentelemetry.api.OpenTelemetry) + + + + 7013 + com/google/cloud/storage/StorageOptions + io.opentelemetry.api.OpenTelemetry getOpenTelemetry() + + + diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml index 665a854dc6..a246beb313 100644 --- a/google-cloud-storage/pom.xml +++ b/google-cloud-storage/pom.xml @@ -83,6 +83,10 @@ io.opencensus opencensus-api + + io.opentelemetry + opentelemetry-context + com.google.api.grpc proto-google-iam-v1 @@ -205,6 +209,11 @@ grpc-googleapis runtime + + io.opentelemetry + opentelemetry-sdk-trace + test + - 7012 - com/google/storage/v2/* - * *RetentionDuration*(*) + com/google/storage/v2/*OrBuilder + * get*(*) - 7012 - com/google/storage/v2/* - * *ObjectChecksums*(*) + com/google/storage/v2/*OrBuilder + boolean contains*(*) - 7012 - com/google/storage/v2/Bucket* - * *TerminalStorageClass*(*) + com/google/storage/v2/*OrBuilder + boolean has*(*) - - - 7012 - com/google/storage/v2/ListObjectsRequestOrBuilder - * *MatchGlob*(*) - - - - - 8001 - com/google/storage/v2/*Notification* - - - - - 6011 - com/google/storage/v2/* - RETENTION_PERIOD_FIELD_NUMBER - - - 7002 - com/google/storage/v2/* - * *RetentionPeriod*(*) - - - - - 7012 - com/google/storage/v2/* - * *SoftDeletePolicy*(*) - - - 7012 - com/google/storage/v2/* - * *SoftDeleted*(*) - - - - 7012 - com/google/storage/v2/* - * *SoftDeleteTime*(*) - - - 7012 - com/google/storage/v2/* - * *HardDeleteTime*(*) - - - - 7012 - com/google/storage/v2/* - * *HierarchicalNamespace*(*) - - - - 7012 - com/google/storage/v2/* - * *IncludeFoldersAsPrefixes*(*) - - - + 7006 com/google/storage/v2/** @@ -140,162 +77,4 @@ * setUnknownFields(*) ** - - - - 8001 - com/google/storage/v2/CreateHmacKeyRequest - - - 8001 - com/google/storage/v2/CreateHmacKeyRequest$Builder - - - 8001 - com/google/storage/v2/CreateHmacKeyRequestOrBuilder - - - 8001 - com/google/storage/v2/CreateHmacKeyResponse - - - 8001 - com/google/storage/v2/CreateHmacKeyResponse$Builder - - - 8001 - com/google/storage/v2/CreateHmacKeyResponseOrBuilder - - - 8001 - com/google/storage/v2/DeleteHmacKeyRequest - - - 8001 - com/google/storage/v2/DeleteHmacKeyRequest$Builder - - - 8001 - com/google/storage/v2/DeleteHmacKeyRequestOrBuilder - - - 8001 - com/google/storage/v2/GetHmacKeyRequest - - - 8001 - com/google/storage/v2/GetHmacKeyRequest$Builder - - - 8001 - com/google/storage/v2/GetHmacKeyRequestOrBuilder - - - 8001 - com/google/storage/v2/GetServiceAccountRequest - - - 8001 - com/google/storage/v2/GetServiceAccountRequest$Builder - - - 8001 - com/google/storage/v2/GetServiceAccountRequestOrBuilder - - - 8001 - com/google/storage/v2/HmacKeyMetadata - - - 8001 - com/google/storage/v2/HmacKeyMetadata$Builder - - - 8001 - com/google/storage/v2/HmacKeyMetadataOrBuilder - - - 8001 - com/google/storage/v2/ListHmacKeysRequest - - - 8001 - com/google/storage/v2/ListHmacKeysRequest$Builder - - - 8001 - com/google/storage/v2/ListHmacKeysRequestOrBuilder - - - 8001 - com/google/storage/v2/ListHmacKeysResponse - - - 8001 - com/google/storage/v2/ListHmacKeysResponse$Builder - - - 8001 - com/google/storage/v2/ListHmacKeysResponseOrBuilder - - - 8001 - com/google/storage/v2/ServiceAccount - - - 8001 - com/google/storage/v2/ServiceAccount$Builder - - - 8001 - com/google/storage/v2/ServiceAccountOrBuilder - - - 8001 - com/google/storage/v2/UpdateHmacKeyRequest - - - 8001 - com/google/storage/v2/UpdateHmacKeyRequest$Builder - - - 8001 - com/google/storage/v2/UpdateHmacKeyRequestOrBuilder - - - - 7012 - com/google/storage/v2/GetObjectRequestOrBuilder - java.lang.String getRestoreToken() - - - 7012 - com/google/storage/v2/GetObjectRequestOrBuilder - com.google.protobuf.ByteString getRestoreTokenBytes() - - - 7012 - com/google/storage/v2/ObjectOrBuilder - java.lang.String getRestoreToken() - - - 7012 - com/google/storage/v2/ObjectOrBuilder - com.google.protobuf.ByteString getRestoreTokenBytes() - - - 7012 - com/google/storage/v2/ObjectOrBuilder - boolean hasRestoreToken() - - - 7012 - com/google/storage/v2/RestoreObjectRequestOrBuilder - java.lang.String getRestoreToken() - - - 7012 - com/google/storage/v2/RestoreObjectRequestOrBuilder - com.google.protobuf.ByteString getRestoreTokenBytes() - diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectRequest.java index 1789c09e63..446166b92c 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -376,7 +376,8 @@ public com.google.storage.v2.ChecksummedDataOrBuilder getChecksummedDataOrBuilde *
    * Checksums for the complete object. If the checksums computed by the service
    * don't match the specified checksums the call will fail. May only be
-   * provided in last request (with finish_write set).
+   * provided in the first request or the
+   * last request (with finish_write set).
    * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -393,7 +394,8 @@ public boolean hasObjectChecksums() { *
    * Checksums for the complete object. If the checksums computed by the service
    * don't match the specified checksums the call will fail. May only be
-   * provided in last request (with finish_write set).
+   * provided in the first request or the
+   * last request (with finish_write set).
    * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -412,7 +414,8 @@ public com.google.storage.v2.ObjectChecksums getObjectChecksums() { *
    * Checksums for the complete object. If the checksums computed by the service
    * don't match the specified checksums the call will fail. May only be
-   * provided in last request (with finish_write set).
+   * provided in the first request or the
+   * last request (with finish_write set).
    * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -1870,7 +1873,8 @@ public com.google.storage.v2.ChecksummedDataOrBuilder getChecksummedDataOrBuilde *
      * Checksums for the complete object. If the checksums computed by the service
      * don't match the specified checksums the call will fail. May only be
-     * provided in last request (with finish_write set).
+     * provided in the first request or the
+     * last request (with finish_write set).
      * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -1886,7 +1890,8 @@ public boolean hasObjectChecksums() { *
      * Checksums for the complete object. If the checksums computed by the service
      * don't match the specified checksums the call will fail. May only be
-     * provided in last request (with finish_write set).
+     * provided in the first request or the
+     * last request (with finish_write set).
      * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -1908,7 +1913,8 @@ public com.google.storage.v2.ObjectChecksums getObjectChecksums() { *
      * Checksums for the complete object. If the checksums computed by the service
      * don't match the specified checksums the call will fail. May only be
-     * provided in last request (with finish_write set).
+     * provided in the first request or the
+     * last request (with finish_write set).
      * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -1932,7 +1938,8 @@ public Builder setObjectChecksums(com.google.storage.v2.ObjectChecksums value) { *
      * Checksums for the complete object. If the checksums computed by the service
      * don't match the specified checksums the call will fail. May only be
-     * provided in last request (with finish_write set).
+     * provided in the first request or the
+     * last request (with finish_write set).
      * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -1954,7 +1961,8 @@ public Builder setObjectChecksums( *
      * Checksums for the complete object. If the checksums computed by the service
      * don't match the specified checksums the call will fail. May only be
-     * provided in last request (with finish_write set).
+     * provided in the first request or the
+     * last request (with finish_write set).
      * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -1983,7 +1991,8 @@ public Builder mergeObjectChecksums(com.google.storage.v2.ObjectChecksums value) *
      * Checksums for the complete object. If the checksums computed by the service
      * don't match the specified checksums the call will fail. May only be
-     * provided in last request (with finish_write set).
+     * provided in the first request or the
+     * last request (with finish_write set).
      * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -2004,7 +2013,8 @@ public Builder clearObjectChecksums() { *
      * Checksums for the complete object. If the checksums computed by the service
      * don't match the specified checksums the call will fail. May only be
-     * provided in last request (with finish_write set).
+     * provided in the first request or the
+     * last request (with finish_write set).
      * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -2020,7 +2030,8 @@ public com.google.storage.v2.ObjectChecksums.Builder getObjectChecksumsBuilder() *
      * Checksums for the complete object. If the checksums computed by the service
      * don't match the specified checksums the call will fail. May only be
-     * provided in last request (with finish_write set).
+     * provided in the first request or the
+     * last request (with finish_write set).
      * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -2040,7 +2051,8 @@ public com.google.storage.v2.ObjectChecksumsOrBuilder getObjectChecksumsOrBuilde *
      * Checksums for the complete object. If the checksums computed by the service
      * don't match the specified checksums the call will fail. May only be
-     * provided in last request (with finish_write set).
+     * provided in the first request or the
+     * last request (with finish_write set).
      * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectRequestOrBuilder.java index f753ed4c97..a6b7717b04 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -171,7 +171,8 @@ public interface BidiWriteObjectRequestOrBuilder *
    * Checksums for the complete object. If the checksums computed by the service
    * don't match the specified checksums the call will fail. May only be
-   * provided in last request (with finish_write set).
+   * provided in the first request or the
+   * last request (with finish_write set).
    * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -185,7 +186,8 @@ public interface BidiWriteObjectRequestOrBuilder *
    * Checksums for the complete object. If the checksums computed by the service
    * don't match the specified checksums the call will fail. May only be
-   * provided in last request (with finish_write set).
+   * provided in the first request or the
+   * last request (with finish_write set).
    * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; @@ -199,7 +201,8 @@ public interface BidiWriteObjectRequestOrBuilder *
    * Checksums for the complete object. If the checksums computed by the service
    * don't match the specified checksums the call will fail. May only be
-   * provided in last request (with finish_write set).
+   * provided in the first request or the
+   * last request (with finish_write set).
    * 
* * .google.storage.v2.ObjectChecksums object_checksums = 6; diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectResponse.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectResponse.java index 02e1add58e..81f05d58eb 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectResponse.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectResponseOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectResponseOrBuilder.java index 14ad9c399d..a0f4c7a225 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectResponseOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BidiWriteObjectResponseOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Bucket.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Bucket.java index 1ba32f5adc..d31e01cdca 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Bucket.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Bucket.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketAccessControl.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketAccessControl.java index f5615b9e0b..dee0ee1e84 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketAccessControl.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketAccessControl.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketAccessControlOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketAccessControlOrBuilder.java index d36deeaade..b21f1d5b24 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketAccessControlOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketAccessControlOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketName.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketName.java index fec84c528e..21fab29aec 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketName.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketName.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketOrBuilder.java index 100fb297bc..b3c43adc0e 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/BucketOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteRequest.java index 83ff3ab5a0..844faf5f49 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteRequestOrBuilder.java index c885ae70a1..7a3ebdcb65 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteResponse.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteResponse.java index 0fcd7c4627..927e3a79ce 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteResponse.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteResponseOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteResponseOrBuilder.java index 5319d9f7be..1875e4b50f 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteResponseOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CancelResumableWriteResponseOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ChecksummedData.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ChecksummedData.java index 980c953261..c9449b2f94 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ChecksummedData.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ChecksummedData.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ChecksummedDataOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ChecksummedDataOrBuilder.java index d460f3bbf3..5cc5e2eb10 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ChecksummedDataOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ChecksummedDataOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParams.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParams.java index dbebd8c5c8..9a77a390ee 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParams.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParams.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParamsOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParamsOrBuilder.java index 8c3a1434f7..42fc75c80e 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParamsOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CommonObjectRequestParamsOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. 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 0b4708d44b..7778184840 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 @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. 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 2d4f31a607..c3ba71b2b4 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 @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ContentRange.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ContentRange.java index e75b803d76..40fcccb28b 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ContentRange.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ContentRange.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ContentRangeOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ContentRangeOrBuilder.java index aabf2d1e1e..e4746e9057 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ContentRangeOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ContentRangeOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CreateBucketRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CreateBucketRequest.java index c57d7be4ff..81b12a4c62 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CreateBucketRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CreateBucketRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CreateBucketRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CreateBucketRequestOrBuilder.java index be2f1526d5..cf207b24a4 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CreateBucketRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CreateBucketRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CryptoKeyName.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CryptoKeyName.java index cc44f3f4f7..1279232462 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CryptoKeyName.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CryptoKeyName.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryption.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryption.java index 70985c406a..416b431df9 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryption.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryption.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryptionOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryptionOrBuilder.java index 5342f6364c..e39a77180b 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryptionOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/CustomerEncryptionOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteBucketRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteBucketRequest.java index fd5ffe60e4..e30fd812e6 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteBucketRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteBucketRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteBucketRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteBucketRequestOrBuilder.java index 53c84304d1..d77a073b0e 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteBucketRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteBucketRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteObjectRequest.java index a98b8fe650..f7bdfd5add 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteObjectRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteObjectRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteObjectRequestOrBuilder.java index cfc160c647..e9d16317ef 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteObjectRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/DeleteObjectRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetBucketRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetBucketRequest.java index 6581322dba..6687c61f5f 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetBucketRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetBucketRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetBucketRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetBucketRequestOrBuilder.java index cd8c7e15ce..d6b5e6e8f5 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetBucketRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetBucketRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetObjectRequest.java index 02295dd465..b090f8e1fa 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetObjectRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetObjectRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetObjectRequestOrBuilder.java index 9ab4ce921d..3a811077cd 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetObjectRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/GetObjectRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsRequest.java index 577d775d5f..3062677fbd 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsRequestOrBuilder.java index 8f97b9c459..0fc6f74527 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsResponse.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsResponse.java index 6ca9c8c766..6fe4bb4162 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsResponse.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsResponseOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsResponseOrBuilder.java index 2415434a72..106bf1455f 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsResponseOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListBucketsResponseOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequest.java index 31b5e59421..2e79836826 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequestOrBuilder.java index b8f236951e..06def222b9 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsResponse.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsResponse.java index 3a5b62e89b..c4cdd7cc6d 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsResponse.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsResponseOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsResponseOrBuilder.java index e011a48b6c..afd8aef61b 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsResponseOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ListObjectsResponseOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/LockBucketRetentionPolicyRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/LockBucketRetentionPolicyRequest.java index b838adf5d0..cd28dfff2e 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/LockBucketRetentionPolicyRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/LockBucketRetentionPolicyRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/LockBucketRetentionPolicyRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/LockBucketRetentionPolicyRequestOrBuilder.java index 2944567bb4..d41ab01bed 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/LockBucketRetentionPolicyRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/LockBucketRetentionPolicyRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/MoveObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/MoveObjectRequest.java new file mode 100644 index 0000000000..a7d32c2b6f --- /dev/null +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/MoveObjectRequest.java @@ -0,0 +1,2309 @@ +/* + * Copyright 2025 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! +// source: google/storage/v2/storage.proto + +// Protobuf Java Version: 3.25.5 +package com.google.storage.v2; + +/** + * + * + *
+ * Request message for MoveObject.
+ * 
+ * + * Protobuf type {@code google.storage.v2.MoveObjectRequest} + */ +public final class MoveObjectRequest extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.storage.v2.MoveObjectRequest) + MoveObjectRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use MoveObjectRequest.newBuilder() to construct. + private MoveObjectRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private MoveObjectRequest() { + bucket_ = ""; + sourceObject_ = ""; + destinationObject_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new MoveObjectRequest(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.storage.v2.StorageProto + .internal_static_google_storage_v2_MoveObjectRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.storage.v2.StorageProto + .internal_static_google_storage_v2_MoveObjectRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.storage.v2.MoveObjectRequest.class, + com.google.storage.v2.MoveObjectRequest.Builder.class); + } + + private int bitField0_; + public static final int BUCKET_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object bucket_ = ""; + /** + * + * + *
+   * Required. Name of the bucket in which the object resides.
+   * 
+ * + * + * string bucket = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bucket. + */ + @java.lang.Override + public java.lang.String getBucket() { + java.lang.Object ref = bucket_; + 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(); + bucket_ = s; + return s; + } + } + /** + * + * + *
+   * Required. Name of the bucket in which the object resides.
+   * 
+ * + * + * string bucket = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for bucket. + */ + @java.lang.Override + public com.google.protobuf.ByteString getBucketBytes() { + java.lang.Object ref = bucket_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + bucket_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SOURCE_OBJECT_FIELD_NUMBER = 2; + + @SuppressWarnings("serial") + private volatile java.lang.Object sourceObject_ = ""; + /** + * + * + *
+   * Required. Name of the source object.
+   * 
+ * + * string source_object = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The sourceObject. + */ + @java.lang.Override + public java.lang.String getSourceObject() { + java.lang.Object ref = sourceObject_; + 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(); + sourceObject_ = s; + return s; + } + } + /** + * + * + *
+   * Required. Name of the source object.
+   * 
+ * + * string source_object = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for sourceObject. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSourceObjectBytes() { + java.lang.Object ref = sourceObject_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + sourceObject_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DESTINATION_OBJECT_FIELD_NUMBER = 3; + + @SuppressWarnings("serial") + private volatile java.lang.Object destinationObject_ = ""; + /** + * + * + *
+   * Required. Name of the destination object.
+   * 
+ * + * string destination_object = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The destinationObject. + */ + @java.lang.Override + public java.lang.String getDestinationObject() { + java.lang.Object ref = destinationObject_; + 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(); + destinationObject_ = s; + return s; + } + } + /** + * + * + *
+   * Required. Name of the destination object.
+   * 
+ * + * string destination_object = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for destinationObject. + */ + @java.lang.Override + public com.google.protobuf.ByteString getDestinationObjectBytes() { + java.lang.Object ref = destinationObject_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + destinationObject_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IF_SOURCE_GENERATION_MATCH_FIELD_NUMBER = 4; + private long ifSourceGenerationMatch_ = 0L; + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current generation matches the given value. `if_source_generation_match`
+   * and `if_source_generation_not_match` conditions are mutually exclusive:
+   * it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_source_generation_match = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceGenerationMatch field is set. + */ + @java.lang.Override + public boolean hasIfSourceGenerationMatch() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current generation matches the given value. `if_source_generation_match`
+   * and `if_source_generation_not_match` conditions are mutually exclusive:
+   * it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_source_generation_match = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceGenerationMatch. + */ + @java.lang.Override + public long getIfSourceGenerationMatch() { + return ifSourceGenerationMatch_; + } + + public static final int IF_SOURCE_GENERATION_NOT_MATCH_FIELD_NUMBER = 5; + private long ifSourceGenerationNotMatch_ = 0L; + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current generation does not match the given value.
+   * `if_source_generation_match` and `if_source_generation_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_generation_not_match = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceGenerationNotMatch field is set. + */ + @java.lang.Override + public boolean hasIfSourceGenerationNotMatch() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current generation does not match the given value.
+   * `if_source_generation_match` and `if_source_generation_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_generation_not_match = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceGenerationNotMatch. + */ + @java.lang.Override + public long getIfSourceGenerationNotMatch() { + return ifSourceGenerationNotMatch_; + } + + public static final int IF_SOURCE_METAGENERATION_MATCH_FIELD_NUMBER = 6; + private long ifSourceMetagenerationMatch_ = 0L; + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current metageneration matches the given value.
+   * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_metageneration_match = 6 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceMetagenerationMatch field is set. + */ + @java.lang.Override + public boolean hasIfSourceMetagenerationMatch() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current metageneration matches the given value.
+   * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_metageneration_match = 6 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceMetagenerationMatch. + */ + @java.lang.Override + public long getIfSourceMetagenerationMatch() { + return ifSourceMetagenerationMatch_; + } + + public static final int IF_SOURCE_METAGENERATION_NOT_MATCH_FIELD_NUMBER = 7; + private long ifSourceMetagenerationNotMatch_ = 0L; + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current metageneration does not match the given value.
+   * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_metageneration_not_match = 7 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceMetagenerationNotMatch field is set. + */ + @java.lang.Override + public boolean hasIfSourceMetagenerationNotMatch() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current metageneration does not match the given value.
+   * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_metageneration_not_match = 7 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceMetagenerationNotMatch. + */ + @java.lang.Override + public long getIfSourceMetagenerationNotMatch() { + return ifSourceMetagenerationNotMatch_; + } + + public static final int IF_GENERATION_MATCH_FIELD_NUMBER = 8; + private long ifGenerationMatch_ = 0L; + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current generation matches the given value. Setting to 0 makes the
+   * operation succeed only if there are no live versions of the object.
+   * `if_generation_match` and `if_generation_not_match` conditions are mutually
+   * exclusive: it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_generation_match = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return Whether the ifGenerationMatch field is set. + */ + @java.lang.Override + public boolean hasIfGenerationMatch() { + return ((bitField0_ & 0x00000010) != 0); + } + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current generation matches the given value. Setting to 0 makes the
+   * operation succeed only if there are no live versions of the object.
+   * `if_generation_match` and `if_generation_not_match` conditions are mutually
+   * exclusive: it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_generation_match = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The ifGenerationMatch. + */ + @java.lang.Override + public long getIfGenerationMatch() { + return ifGenerationMatch_; + } + + public static final int IF_GENERATION_NOT_MATCH_FIELD_NUMBER = 9; + private long ifGenerationNotMatch_ = 0L; + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current generation does not match the given value. If no live
+   * object exists, the precondition fails. Setting to 0 makes the operation
+   * succeed only if there is a live version of the object.
+   * `if_generation_match` and `if_generation_not_match` conditions are mutually
+   * exclusive: it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_generation_not_match = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifGenerationNotMatch field is set. + */ + @java.lang.Override + public boolean hasIfGenerationNotMatch() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current generation does not match the given value. If no live
+   * object exists, the precondition fails. Setting to 0 makes the operation
+   * succeed only if there is a live version of the object.
+   * `if_generation_match` and `if_generation_not_match` conditions are mutually
+   * exclusive: it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_generation_not_match = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifGenerationNotMatch. + */ + @java.lang.Override + public long getIfGenerationNotMatch() { + return ifGenerationNotMatch_; + } + + public static final int IF_METAGENERATION_MATCH_FIELD_NUMBER = 10; + private long ifMetagenerationMatch_ = 0L; + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current metageneration matches the given value.
+   * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+   * mutually exclusive: it's an error for both of them to be set in the
+   * request.
+   * 
+ * + * optional int64 if_metageneration_match = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationMatch field is set. + */ + @java.lang.Override + public boolean hasIfMetagenerationMatch() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current metageneration matches the given value.
+   * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+   * mutually exclusive: it's an error for both of them to be set in the
+   * request.
+   * 
+ * + * optional int64 if_metageneration_match = 10 [(.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 = 11; + private long ifMetagenerationNotMatch_ = 0L; + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current metageneration does not match the given value.
+   * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+   * mutually exclusive: it's an error for both of them to be set in the
+   * request.
+   * 
+ * + * + * optional int64 if_metageneration_not_match = 11 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationNotMatch field is set. + */ + @java.lang.Override + public boolean hasIfMetagenerationNotMatch() { + return ((bitField0_ & 0x00000080) != 0); + } + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current metageneration does not match the given value.
+   * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+   * mutually exclusive: it's an error for both of them to be set in the
+   * request.
+   * 
+ * + * + * optional int64 if_metageneration_not_match = 11 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationNotMatch. + */ + @java.lang.Override + public long getIfMetagenerationNotMatch() { + return ifMetagenerationNotMatch_; + } + + 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.GeneratedMessageV3.isStringEmpty(bucket_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, bucket_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceObject_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, sourceObject_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destinationObject_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, destinationObject_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeInt64(4, ifSourceGenerationMatch_); + } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeInt64(5, ifSourceGenerationNotMatch_); + } + if (((bitField0_ & 0x00000004) != 0)) { + output.writeInt64(6, ifSourceMetagenerationMatch_); + } + if (((bitField0_ & 0x00000008) != 0)) { + output.writeInt64(7, ifSourceMetagenerationNotMatch_); + } + if (((bitField0_ & 0x00000010) != 0)) { + output.writeInt64(8, ifGenerationMatch_); + } + if (((bitField0_ & 0x00000020) != 0)) { + output.writeInt64(9, ifGenerationNotMatch_); + } + if (((bitField0_ & 0x00000040) != 0)) { + output.writeInt64(10, ifMetagenerationMatch_); + } + if (((bitField0_ & 0x00000080) != 0)) { + output.writeInt64(11, ifMetagenerationNotMatch_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bucket_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, bucket_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceObject_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, sourceObject_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(destinationObject_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, destinationObject_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeInt64Size(4, ifSourceGenerationMatch_); + } + if (((bitField0_ & 0x00000002) != 0)) { + size += + com.google.protobuf.CodedOutputStream.computeInt64Size(5, ifSourceGenerationNotMatch_); + } + if (((bitField0_ & 0x00000004) != 0)) { + size += + com.google.protobuf.CodedOutputStream.computeInt64Size(6, ifSourceMetagenerationMatch_); + } + if (((bitField0_ & 0x00000008) != 0)) { + size += + com.google.protobuf.CodedOutputStream.computeInt64Size( + 7, ifSourceMetagenerationNotMatch_); + } + if (((bitField0_ & 0x00000010) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeInt64Size(8, ifGenerationMatch_); + } + if (((bitField0_ & 0x00000020) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeInt64Size(9, ifGenerationNotMatch_); + } + if (((bitField0_ & 0x00000040) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeInt64Size(10, ifMetagenerationMatch_); + } + if (((bitField0_ & 0x00000080) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeInt64Size(11, ifMetagenerationNotMatch_); + } + 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.v2.MoveObjectRequest)) { + return super.equals(obj); + } + com.google.storage.v2.MoveObjectRequest other = (com.google.storage.v2.MoveObjectRequest) obj; + + if (!getBucket().equals(other.getBucket())) return false; + if (!getSourceObject().equals(other.getSourceObject())) return false; + if (!getDestinationObject().equals(other.getDestinationObject())) return false; + if (hasIfSourceGenerationMatch() != other.hasIfSourceGenerationMatch()) return false; + if (hasIfSourceGenerationMatch()) { + if (getIfSourceGenerationMatch() != other.getIfSourceGenerationMatch()) return false; + } + if (hasIfSourceGenerationNotMatch() != other.hasIfSourceGenerationNotMatch()) return false; + if (hasIfSourceGenerationNotMatch()) { + if (getIfSourceGenerationNotMatch() != other.getIfSourceGenerationNotMatch()) return false; + } + if (hasIfSourceMetagenerationMatch() != other.hasIfSourceMetagenerationMatch()) return false; + if (hasIfSourceMetagenerationMatch()) { + if (getIfSourceMetagenerationMatch() != other.getIfSourceMetagenerationMatch()) return false; + } + if (hasIfSourceMetagenerationNotMatch() != other.hasIfSourceMetagenerationNotMatch()) + return false; + if (hasIfSourceMetagenerationNotMatch()) { + if (getIfSourceMetagenerationNotMatch() != other.getIfSourceMetagenerationNotMatch()) + return false; + } + if (hasIfGenerationMatch() != other.hasIfGenerationMatch()) return false; + if (hasIfGenerationMatch()) { + if (getIfGenerationMatch() != other.getIfGenerationMatch()) return false; + } + if (hasIfGenerationNotMatch() != other.hasIfGenerationNotMatch()) return false; + if (hasIfGenerationNotMatch()) { + if (getIfGenerationNotMatch() != other.getIfGenerationNotMatch()) 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 (!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) + BUCKET_FIELD_NUMBER; + hash = (53 * hash) + getBucket().hashCode(); + hash = (37 * hash) + SOURCE_OBJECT_FIELD_NUMBER; + hash = (53 * hash) + getSourceObject().hashCode(); + hash = (37 * hash) + DESTINATION_OBJECT_FIELD_NUMBER; + hash = (53 * hash) + getDestinationObject().hashCode(); + if (hasIfSourceGenerationMatch()) { + hash = (37 * hash) + IF_SOURCE_GENERATION_MATCH_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getIfSourceGenerationMatch()); + } + if (hasIfSourceGenerationNotMatch()) { + hash = (37 * hash) + IF_SOURCE_GENERATION_NOT_MATCH_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getIfSourceGenerationNotMatch()); + } + if (hasIfSourceMetagenerationMatch()) { + hash = (37 * hash) + IF_SOURCE_METAGENERATION_MATCH_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getIfSourceMetagenerationMatch()); + } + if (hasIfSourceMetagenerationNotMatch()) { + hash = (37 * hash) + IF_SOURCE_METAGENERATION_NOT_MATCH_FIELD_NUMBER; + hash = + (53 * hash) + com.google.protobuf.Internal.hashLong(getIfSourceMetagenerationNotMatch()); + } + if (hasIfGenerationMatch()) { + hash = (37 * hash) + IF_GENERATION_MATCH_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getIfGenerationMatch()); + } + if (hasIfGenerationNotMatch()) { + hash = (37 * hash) + IF_GENERATION_NOT_MATCH_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getIfGenerationNotMatch()); + } + 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 = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.storage.v2.MoveObjectRequest parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.storage.v2.MoveObjectRequest 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.v2.MoveObjectRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.storage.v2.MoveObjectRequest 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.v2.MoveObjectRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.storage.v2.MoveObjectRequest parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.storage.v2.MoveObjectRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.storage.v2.MoveObjectRequest parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.storage.v2.MoveObjectRequest parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.storage.v2.MoveObjectRequest parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.storage.v2.MoveObjectRequest parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.storage.v2.MoveObjectRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.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.v2.MoveObjectRequest 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.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Request message for MoveObject.
+   * 
+ * + * Protobuf type {@code google.storage.v2.MoveObjectRequest} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.storage.v2.MoveObjectRequest) + com.google.storage.v2.MoveObjectRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.storage.v2.StorageProto + .internal_static_google_storage_v2_MoveObjectRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.storage.v2.StorageProto + .internal_static_google_storage_v2_MoveObjectRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.storage.v2.MoveObjectRequest.class, + com.google.storage.v2.MoveObjectRequest.Builder.class); + } + + // Construct using com.google.storage.v2.MoveObjectRequest.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + bucket_ = ""; + sourceObject_ = ""; + destinationObject_ = ""; + ifSourceGenerationMatch_ = 0L; + ifSourceGenerationNotMatch_ = 0L; + ifSourceMetagenerationMatch_ = 0L; + ifSourceMetagenerationNotMatch_ = 0L; + ifGenerationMatch_ = 0L; + ifGenerationNotMatch_ = 0L; + ifMetagenerationMatch_ = 0L; + ifMetagenerationNotMatch_ = 0L; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.storage.v2.StorageProto + .internal_static_google_storage_v2_MoveObjectRequest_descriptor; + } + + @java.lang.Override + public com.google.storage.v2.MoveObjectRequest getDefaultInstanceForType() { + return com.google.storage.v2.MoveObjectRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.google.storage.v2.MoveObjectRequest build() { + com.google.storage.v2.MoveObjectRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.storage.v2.MoveObjectRequest buildPartial() { + com.google.storage.v2.MoveObjectRequest result = + new com.google.storage.v2.MoveObjectRequest(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.storage.v2.MoveObjectRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.bucket_ = bucket_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.sourceObject_ = sourceObject_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.destinationObject_ = destinationObject_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000008) != 0)) { + result.ifSourceGenerationMatch_ = ifSourceGenerationMatch_; + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.ifSourceGenerationNotMatch_ = ifSourceGenerationNotMatch_; + to_bitField0_ |= 0x00000002; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.ifSourceMetagenerationMatch_ = ifSourceMetagenerationMatch_; + to_bitField0_ |= 0x00000004; + } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.ifSourceMetagenerationNotMatch_ = ifSourceMetagenerationNotMatch_; + to_bitField0_ |= 0x00000008; + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.ifGenerationMatch_ = ifGenerationMatch_; + to_bitField0_ |= 0x00000010; + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.ifGenerationNotMatch_ = ifGenerationNotMatch_; + to_bitField0_ |= 0x00000020; + } + if (((from_bitField0_ & 0x00000200) != 0)) { + result.ifMetagenerationMatch_ = ifMetagenerationMatch_; + to_bitField0_ |= 0x00000040; + } + if (((from_bitField0_ & 0x00000400) != 0)) { + result.ifMetagenerationNotMatch_ = ifMetagenerationNotMatch_; + to_bitField0_ |= 0x00000080; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.storage.v2.MoveObjectRequest) { + return mergeFrom((com.google.storage.v2.MoveObjectRequest) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.storage.v2.MoveObjectRequest other) { + if (other == com.google.storage.v2.MoveObjectRequest.getDefaultInstance()) return this; + if (!other.getBucket().isEmpty()) { + bucket_ = other.bucket_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getSourceObject().isEmpty()) { + sourceObject_ = other.sourceObject_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.getDestinationObject().isEmpty()) { + destinationObject_ = other.destinationObject_; + bitField0_ |= 0x00000004; + onChanged(); + } + if (other.hasIfSourceGenerationMatch()) { + setIfSourceGenerationMatch(other.getIfSourceGenerationMatch()); + } + if (other.hasIfSourceGenerationNotMatch()) { + setIfSourceGenerationNotMatch(other.getIfSourceGenerationNotMatch()); + } + if (other.hasIfSourceMetagenerationMatch()) { + setIfSourceMetagenerationMatch(other.getIfSourceMetagenerationMatch()); + } + if (other.hasIfSourceMetagenerationNotMatch()) { + setIfSourceMetagenerationNotMatch(other.getIfSourceMetagenerationNotMatch()); + } + if (other.hasIfGenerationMatch()) { + setIfGenerationMatch(other.getIfGenerationMatch()); + } + if (other.hasIfGenerationNotMatch()) { + setIfGenerationNotMatch(other.getIfGenerationNotMatch()); + } + if (other.hasIfMetagenerationMatch()) { + setIfMetagenerationMatch(other.getIfMetagenerationMatch()); + } + if (other.hasIfMetagenerationNotMatch()) { + setIfMetagenerationNotMatch(other.getIfMetagenerationNotMatch()); + } + 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: + { + bucket_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: + { + sourceObject_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: + { + destinationObject_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 32: + { + ifSourceGenerationMatch_ = input.readInt64(); + bitField0_ |= 0x00000008; + break; + } // case 32 + case 40: + { + ifSourceGenerationNotMatch_ = input.readInt64(); + bitField0_ |= 0x00000010; + break; + } // case 40 + case 48: + { + ifSourceMetagenerationMatch_ = input.readInt64(); + bitField0_ |= 0x00000020; + break; + } // case 48 + case 56: + { + ifSourceMetagenerationNotMatch_ = input.readInt64(); + bitField0_ |= 0x00000040; + break; + } // case 56 + case 64: + { + ifGenerationMatch_ = input.readInt64(); + bitField0_ |= 0x00000080; + break; + } // case 64 + case 72: + { + ifGenerationNotMatch_ = input.readInt64(); + bitField0_ |= 0x00000100; + break; + } // case 72 + case 80: + { + ifMetagenerationMatch_ = input.readInt64(); + bitField0_ |= 0x00000200; + break; + } // case 80 + case 88: + { + ifMetagenerationNotMatch_ = input.readInt64(); + bitField0_ |= 0x00000400; + break; + } // case 88 + 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 bucket_ = ""; + /** + * + * + *
+     * Required. Name of the bucket in which the object resides.
+     * 
+ * + * + * string bucket = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bucket. + */ + public java.lang.String getBucket() { + java.lang.Object ref = bucket_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + bucket_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Required. Name of the bucket in which the object resides.
+     * 
+ * + * + * string bucket = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for bucket. + */ + public com.google.protobuf.ByteString getBucketBytes() { + java.lang.Object ref = bucket_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + bucket_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Required. Name of the bucket in which the object resides.
+     * 
+ * + * + * string bucket = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @param value The bucket to set. + * @return This builder for chaining. + */ + public Builder setBucket(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bucket_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. Name of the bucket in which the object resides.
+     * 
+ * + * + * string bucket = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return This builder for chaining. + */ + public Builder clearBucket() { + bucket_ = getDefaultInstance().getBucket(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * + * + *
+     * Required. Name of the bucket in which the object resides.
+     * 
+ * + * + * string bucket = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @param value The bytes for bucket to set. + * @return This builder for chaining. + */ + public Builder setBucketBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + bucket_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object sourceObject_ = ""; + /** + * + * + *
+     * Required. Name of the source object.
+     * 
+ * + * string source_object = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The sourceObject. + */ + public java.lang.String getSourceObject() { + java.lang.Object ref = sourceObject_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sourceObject_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Required. Name of the source object.
+     * 
+ * + * string source_object = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for sourceObject. + */ + public com.google.protobuf.ByteString getSourceObjectBytes() { + java.lang.Object ref = sourceObject_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + sourceObject_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Required. Name of the source object.
+     * 
+ * + * string source_object = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @param value The sourceObject to set. + * @return This builder for chaining. + */ + public Builder setSourceObject(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + sourceObject_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. Name of the source object.
+     * 
+ * + * string source_object = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return This builder for chaining. + */ + public Builder clearSourceObject() { + sourceObject_ = getDefaultInstance().getSourceObject(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * + * + *
+     * Required. Name of the source object.
+     * 
+ * + * string source_object = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @param value The bytes for sourceObject to set. + * @return This builder for chaining. + */ + public Builder setSourceObjectBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + sourceObject_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.lang.Object destinationObject_ = ""; + /** + * + * + *
+     * Required. Name of the destination object.
+     * 
+ * + * string destination_object = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The destinationObject. + */ + public java.lang.String getDestinationObject() { + java.lang.Object ref = destinationObject_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + destinationObject_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Required. Name of the destination object.
+     * 
+ * + * string destination_object = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for destinationObject. + */ + public com.google.protobuf.ByteString getDestinationObjectBytes() { + java.lang.Object ref = destinationObject_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + destinationObject_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Required. Name of the destination object.
+     * 
+ * + * string destination_object = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @param value The destinationObject to set. + * @return This builder for chaining. + */ + public Builder setDestinationObject(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + destinationObject_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. Name of the destination object.
+     * 
+ * + * string destination_object = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return This builder for chaining. + */ + public Builder clearDestinationObject() { + destinationObject_ = getDefaultInstance().getDestinationObject(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + /** + * + * + *
+     * Required. Name of the destination object.
+     * 
+ * + * string destination_object = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @param value The bytes for destinationObject to set. + * @return This builder for chaining. + */ + public Builder setDestinationObjectBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + destinationObject_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + private long ifSourceGenerationMatch_; + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current generation matches the given value. `if_source_generation_match`
+     * and `if_source_generation_not_match` conditions are mutually exclusive:
+     * it's an error for both of them to be set in the request.
+     * 
+ * + * + * optional int64 if_source_generation_match = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceGenerationMatch field is set. + */ + @java.lang.Override + public boolean hasIfSourceGenerationMatch() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current generation matches the given value. `if_source_generation_match`
+     * and `if_source_generation_not_match` conditions are mutually exclusive:
+     * it's an error for both of them to be set in the request.
+     * 
+ * + * + * optional int64 if_source_generation_match = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceGenerationMatch. + */ + @java.lang.Override + public long getIfSourceGenerationMatch() { + return ifSourceGenerationMatch_; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current generation matches the given value. `if_source_generation_match`
+     * and `if_source_generation_not_match` conditions are mutually exclusive:
+     * it's an error for both of them to be set in the request.
+     * 
+ * + * + * optional int64 if_source_generation_match = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The ifSourceGenerationMatch to set. + * @return This builder for chaining. + */ + public Builder setIfSourceGenerationMatch(long value) { + + ifSourceGenerationMatch_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current generation matches the given value. `if_source_generation_match`
+     * and `if_source_generation_not_match` conditions are mutually exclusive:
+     * it's an error for both of them to be set in the request.
+     * 
+ * + * + * optional int64 if_source_generation_match = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearIfSourceGenerationMatch() { + bitField0_ = (bitField0_ & ~0x00000008); + ifSourceGenerationMatch_ = 0L; + onChanged(); + return this; + } + + private long ifSourceGenerationNotMatch_; + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current generation does not match the given value.
+     * `if_source_generation_match` and `if_source_generation_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_generation_not_match = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceGenerationNotMatch field is set. + */ + @java.lang.Override + public boolean hasIfSourceGenerationNotMatch() { + return ((bitField0_ & 0x00000010) != 0); + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current generation does not match the given value.
+     * `if_source_generation_match` and `if_source_generation_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_generation_not_match = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceGenerationNotMatch. + */ + @java.lang.Override + public long getIfSourceGenerationNotMatch() { + return ifSourceGenerationNotMatch_; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current generation does not match the given value.
+     * `if_source_generation_match` and `if_source_generation_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_generation_not_match = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The ifSourceGenerationNotMatch to set. + * @return This builder for chaining. + */ + public Builder setIfSourceGenerationNotMatch(long value) { + + ifSourceGenerationNotMatch_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current generation does not match the given value.
+     * `if_source_generation_match` and `if_source_generation_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_generation_not_match = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearIfSourceGenerationNotMatch() { + bitField0_ = (bitField0_ & ~0x00000010); + ifSourceGenerationNotMatch_ = 0L; + onChanged(); + return this; + } + + private long ifSourceMetagenerationMatch_; + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current metageneration matches the given value.
+     * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_metageneration_match = 6 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceMetagenerationMatch field is set. + */ + @java.lang.Override + public boolean hasIfSourceMetagenerationMatch() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current metageneration matches the given value.
+     * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_metageneration_match = 6 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceMetagenerationMatch. + */ + @java.lang.Override + public long getIfSourceMetagenerationMatch() { + return ifSourceMetagenerationMatch_; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current metageneration matches the given value.
+     * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_metageneration_match = 6 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The ifSourceMetagenerationMatch to set. + * @return This builder for chaining. + */ + public Builder setIfSourceMetagenerationMatch(long value) { + + ifSourceMetagenerationMatch_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current metageneration matches the given value.
+     * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_metageneration_match = 6 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearIfSourceMetagenerationMatch() { + bitField0_ = (bitField0_ & ~0x00000020); + ifSourceMetagenerationMatch_ = 0L; + onChanged(); + return this; + } + + private long ifSourceMetagenerationNotMatch_; + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current metageneration does not match the given value.
+     * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_metageneration_not_match = 7 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceMetagenerationNotMatch field is set. + */ + @java.lang.Override + public boolean hasIfSourceMetagenerationNotMatch() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current metageneration does not match the given value.
+     * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_metageneration_not_match = 7 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceMetagenerationNotMatch. + */ + @java.lang.Override + public long getIfSourceMetagenerationNotMatch() { + return ifSourceMetagenerationNotMatch_; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current metageneration does not match the given value.
+     * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_metageneration_not_match = 7 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The ifSourceMetagenerationNotMatch to set. + * @return This builder for chaining. + */ + public Builder setIfSourceMetagenerationNotMatch(long value) { + + ifSourceMetagenerationNotMatch_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the source object's
+     * current metageneration does not match the given value.
+     * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+     * conditions are mutually exclusive: it's an error for both of them to be set
+     * in the request.
+     * 
+ * + * + * optional int64 if_source_metageneration_not_match = 7 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearIfSourceMetagenerationNotMatch() { + bitField0_ = (bitField0_ & ~0x00000040); + ifSourceMetagenerationNotMatch_ = 0L; + onChanged(); + return this; + } + + private long ifGenerationMatch_; + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current generation matches the given value. Setting to 0 makes the
+     * operation succeed only if there are no live versions of the object.
+     * `if_generation_match` and `if_generation_not_match` conditions are mutually
+     * exclusive: it's an error for both of them to be set in the request.
+     * 
+ * + * optional int64 if_generation_match = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifGenerationMatch field is set. + */ + @java.lang.Override + public boolean hasIfGenerationMatch() { + return ((bitField0_ & 0x00000080) != 0); + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current generation matches the given value. Setting to 0 makes the
+     * operation succeed only if there are no live versions of the object.
+     * `if_generation_match` and `if_generation_not_match` conditions are mutually
+     * exclusive: it's an error for both of them to be set in the request.
+     * 
+ * + * optional int64 if_generation_match = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifGenerationMatch. + */ + @java.lang.Override + public long getIfGenerationMatch() { + return ifGenerationMatch_; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current generation matches the given value. Setting to 0 makes the
+     * operation succeed only if there are no live versions of the object.
+     * `if_generation_match` and `if_generation_not_match` conditions are mutually
+     * exclusive: it's an error for both of them to be set in the request.
+     * 
+ * + * optional int64 if_generation_match = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The ifGenerationMatch to set. + * @return This builder for chaining. + */ + public Builder setIfGenerationMatch(long value) { + + ifGenerationMatch_ = value; + bitField0_ |= 0x00000080; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current generation matches the given value. Setting to 0 makes the
+     * operation succeed only if there are no live versions of the object.
+     * `if_generation_match` and `if_generation_not_match` conditions are mutually
+     * exclusive: it's an error for both of them to be set in the request.
+     * 
+ * + * optional int64 if_generation_match = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearIfGenerationMatch() { + bitField0_ = (bitField0_ & ~0x00000080); + ifGenerationMatch_ = 0L; + onChanged(); + return this; + } + + private long ifGenerationNotMatch_; + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current generation does not match the given value. If no live
+     * object exists, the precondition fails. Setting to 0 makes the operation
+     * succeed only if there is a live version of the object.
+     * `if_generation_match` and `if_generation_not_match` conditions are mutually
+     * exclusive: it's an error for both of them to be set in the request.
+     * 
+ * + * optional int64 if_generation_not_match = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifGenerationNotMatch field is set. + */ + @java.lang.Override + public boolean hasIfGenerationNotMatch() { + return ((bitField0_ & 0x00000100) != 0); + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current generation does not match the given value. If no live
+     * object exists, the precondition fails. Setting to 0 makes the operation
+     * succeed only if there is a live version of the object.
+     * `if_generation_match` and `if_generation_not_match` conditions are mutually
+     * exclusive: it's an error for both of them to be set in the request.
+     * 
+ * + * optional int64 if_generation_not_match = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifGenerationNotMatch. + */ + @java.lang.Override + public long getIfGenerationNotMatch() { + return ifGenerationNotMatch_; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current generation does not match the given value. If no live
+     * object exists, the precondition fails. Setting to 0 makes the operation
+     * succeed only if there is a live version of the object.
+     * `if_generation_match` and `if_generation_not_match` conditions are mutually
+     * exclusive: it's an error for both of them to be set in the request.
+     * 
+ * + * optional int64 if_generation_not_match = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The ifGenerationNotMatch to set. + * @return This builder for chaining. + */ + public Builder setIfGenerationNotMatch(long value) { + + ifGenerationNotMatch_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current generation does not match the given value. If no live
+     * object exists, the precondition fails. Setting to 0 makes the operation
+     * succeed only if there is a live version of the object.
+     * `if_generation_match` and `if_generation_not_match` conditions are mutually
+     * exclusive: it's an error for both of them to be set in the request.
+     * 
+ * + * optional int64 if_generation_not_match = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearIfGenerationNotMatch() { + bitField0_ = (bitField0_ & ~0x00000100); + ifGenerationNotMatch_ = 0L; + onChanged(); + return this; + } + + private long ifMetagenerationMatch_; + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current metageneration matches the given value.
+     * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+     * mutually exclusive: it's an error for both of them to be set in the
+     * request.
+     * 
+ * + * optional int64 if_metageneration_match = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationMatch field is set. + */ + @java.lang.Override + public boolean hasIfMetagenerationMatch() { + return ((bitField0_ & 0x00000200) != 0); + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current metageneration matches the given value.
+     * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+     * mutually exclusive: it's an error for both of them to be set in the
+     * request.
+     * 
+ * + * optional int64 if_metageneration_match = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationMatch. + */ + @java.lang.Override + public long getIfMetagenerationMatch() { + return ifMetagenerationMatch_; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current metageneration matches the given value.
+     * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+     * mutually exclusive: it's an error for both of them to be set in the
+     * request.
+     * 
+ * + * optional int64 if_metageneration_match = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The ifMetagenerationMatch to set. + * @return This builder for chaining. + */ + public Builder setIfMetagenerationMatch(long value) { + + ifMetagenerationMatch_ = value; + bitField0_ |= 0x00000200; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current metageneration matches the given value.
+     * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+     * mutually exclusive: it's an error for both of them to be set in the
+     * request.
+     * 
+ * + * optional int64 if_metageneration_match = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearIfMetagenerationMatch() { + bitField0_ = (bitField0_ & ~0x00000200); + ifMetagenerationMatch_ = 0L; + onChanged(); + return this; + } + + private long ifMetagenerationNotMatch_; + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current metageneration does not match the given value.
+     * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+     * mutually exclusive: it's an error for both of them to be set in the
+     * request.
+     * 
+ * + * + * optional int64 if_metageneration_not_match = 11 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationNotMatch field is set. + */ + @java.lang.Override + public boolean hasIfMetagenerationNotMatch() { + return ((bitField0_ & 0x00000400) != 0); + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current metageneration does not match the given value.
+     * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+     * mutually exclusive: it's an error for both of them to be set in the
+     * request.
+     * 
+ * + * + * optional int64 if_metageneration_not_match = 11 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationNotMatch. + */ + @java.lang.Override + public long getIfMetagenerationNotMatch() { + return ifMetagenerationNotMatch_; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current metageneration does not match the given value.
+     * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+     * mutually exclusive: it's an error for both of them to be set in the
+     * request.
+     * 
+ * + * + * optional int64 if_metageneration_not_match = 11 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The ifMetagenerationNotMatch to set. + * @return This builder for chaining. + */ + public Builder setIfMetagenerationNotMatch(long value) { + + ifMetagenerationNotMatch_ = value; + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Makes the operation conditional on whether the destination
+     * object's current metageneration does not match the given value.
+     * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+     * mutually exclusive: it's an error for both of them to be set in the
+     * request.
+     * 
+ * + * + * optional int64 if_metageneration_not_match = 11 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearIfMetagenerationNotMatch() { + bitField0_ = (bitField0_ & ~0x00000400); + ifMetagenerationNotMatch_ = 0L; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.storage.v2.MoveObjectRequest) + } + + // @@protoc_insertion_point(class_scope:google.storage.v2.MoveObjectRequest) + private static final com.google.storage.v2.MoveObjectRequest DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.storage.v2.MoveObjectRequest(); + } + + public static com.google.storage.v2.MoveObjectRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public MoveObjectRequest 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.v2.MoveObjectRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/MoveObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/MoveObjectRequestOrBuilder.java new file mode 100644 index 0000000000..c3da279ba3 --- /dev/null +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/MoveObjectRequestOrBuilder.java @@ -0,0 +1,391 @@ +/* + * Copyright 2025 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! +// source: google/storage/v2/storage.proto + +// Protobuf Java Version: 3.25.5 +package com.google.storage.v2; + +public interface MoveObjectRequestOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.storage.v2.MoveObjectRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Required. Name of the bucket in which the object resides.
+   * 
+ * + * + * string bucket = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bucket. + */ + java.lang.String getBucket(); + /** + * + * + *
+   * Required. Name of the bucket in which the object resides.
+   * 
+ * + * + * string bucket = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... } + * + * + * @return The bytes for bucket. + */ + com.google.protobuf.ByteString getBucketBytes(); + + /** + * + * + *
+   * Required. Name of the source object.
+   * 
+ * + * string source_object = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The sourceObject. + */ + java.lang.String getSourceObject(); + /** + * + * + *
+   * Required. Name of the source object.
+   * 
+ * + * string source_object = 2 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for sourceObject. + */ + com.google.protobuf.ByteString getSourceObjectBytes(); + + /** + * + * + *
+   * Required. Name of the destination object.
+   * 
+ * + * string destination_object = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The destinationObject. + */ + java.lang.String getDestinationObject(); + /** + * + * + *
+   * Required. Name of the destination object.
+   * 
+ * + * string destination_object = 3 [(.google.api.field_behavior) = REQUIRED]; + * + * @return The bytes for destinationObject. + */ + com.google.protobuf.ByteString getDestinationObjectBytes(); + + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current generation matches the given value. `if_source_generation_match`
+   * and `if_source_generation_not_match` conditions are mutually exclusive:
+   * it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_source_generation_match = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceGenerationMatch field is set. + */ + boolean hasIfSourceGenerationMatch(); + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current generation matches the given value. `if_source_generation_match`
+   * and `if_source_generation_not_match` conditions are mutually exclusive:
+   * it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_source_generation_match = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceGenerationMatch. + */ + long getIfSourceGenerationMatch(); + + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current generation does not match the given value.
+   * `if_source_generation_match` and `if_source_generation_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_generation_not_match = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceGenerationNotMatch field is set. + */ + boolean hasIfSourceGenerationNotMatch(); + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current generation does not match the given value.
+   * `if_source_generation_match` and `if_source_generation_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_generation_not_match = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceGenerationNotMatch. + */ + long getIfSourceGenerationNotMatch(); + + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current metageneration matches the given value.
+   * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_metageneration_match = 6 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceMetagenerationMatch field is set. + */ + boolean hasIfSourceMetagenerationMatch(); + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current metageneration matches the given value.
+   * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_metageneration_match = 6 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceMetagenerationMatch. + */ + long getIfSourceMetagenerationMatch(); + + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current metageneration does not match the given value.
+   * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_metageneration_not_match = 7 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifSourceMetagenerationNotMatch field is set. + */ + boolean hasIfSourceMetagenerationNotMatch(); + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the source object's
+   * current metageneration does not match the given value.
+   * `if_source_metageneration_match` and `if_source_metageneration_not_match`
+   * conditions are mutually exclusive: it's an error for both of them to be set
+   * in the request.
+   * 
+ * + * + * optional int64 if_source_metageneration_not_match = 7 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifSourceMetagenerationNotMatch. + */ + long getIfSourceMetagenerationNotMatch(); + + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current generation matches the given value. Setting to 0 makes the
+   * operation succeed only if there are no live versions of the object.
+   * `if_generation_match` and `if_generation_not_match` conditions are mutually
+   * exclusive: it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_generation_match = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return Whether the ifGenerationMatch field is set. + */ + boolean hasIfGenerationMatch(); + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current generation matches the given value. Setting to 0 makes the
+   * operation succeed only if there are no live versions of the object.
+   * `if_generation_match` and `if_generation_not_match` conditions are mutually
+   * exclusive: it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_generation_match = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * @return The ifGenerationMatch. + */ + long getIfGenerationMatch(); + + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current generation does not match the given value. If no live
+   * object exists, the precondition fails. Setting to 0 makes the operation
+   * succeed only if there is a live version of the object.
+   * `if_generation_match` and `if_generation_not_match` conditions are mutually
+   * exclusive: it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_generation_not_match = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifGenerationNotMatch field is set. + */ + boolean hasIfGenerationNotMatch(); + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current generation does not match the given value. If no live
+   * object exists, the precondition fails. Setting to 0 makes the operation
+   * succeed only if there is a live version of the object.
+   * `if_generation_match` and `if_generation_not_match` conditions are mutually
+   * exclusive: it's an error for both of them to be set in the request.
+   * 
+ * + * optional int64 if_generation_not_match = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifGenerationNotMatch. + */ + long getIfGenerationNotMatch(); + + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current metageneration matches the given value.
+   * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+   * mutually exclusive: it's an error for both of them to be set in the
+   * request.
+   * 
+ * + * optional int64 if_metageneration_match = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationMatch field is set. + */ + boolean hasIfMetagenerationMatch(); + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current metageneration matches the given value.
+   * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+   * mutually exclusive: it's an error for both of them to be set in the
+   * request.
+   * 
+ * + * optional int64 if_metageneration_match = 10 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationMatch. + */ + long getIfMetagenerationMatch(); + + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current metageneration does not match the given value.
+   * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+   * mutually exclusive: it's an error for both of them to be set in the
+   * request.
+   * 
+ * + * + * optional int64 if_metageneration_not_match = 11 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the ifMetagenerationNotMatch field is set. + */ + boolean hasIfMetagenerationNotMatch(); + /** + * + * + *
+   * Optional. Makes the operation conditional on whether the destination
+   * object's current metageneration does not match the given value.
+   * `if_metageneration_match` and `if_metageneration_not_match` conditions are
+   * mutually exclusive: it's an error for both of them to be set in the
+   * request.
+   * 
+ * + * + * optional int64 if_metageneration_not_match = 11 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The ifMetagenerationNotMatch. + */ + long getIfMetagenerationNotMatch(); +} diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Object.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Object.java index 73e9eb52c6..70207fd5d9 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Object.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Object.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -791,6 +791,62 @@ public com.google.protobuf.TimestampOrBuilder getDeleteTimeOrBuilder() { return deleteTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : deleteTime_; } + public static final int FINALIZE_TIME_FIELD_NUMBER = 36; + private com.google.protobuf.Timestamp finalizeTime_; + /** + * + * + *
+   * Output only. The time when the object was finalized.
+   * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return Whether the finalizeTime field is set. + */ + @java.lang.Override + public boolean hasFinalizeTime() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+   * Output only. The time when the object was finalized.
+   * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return The finalizeTime. + */ + @java.lang.Override + public com.google.protobuf.Timestamp getFinalizeTime() { + return finalizeTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : finalizeTime_; + } + /** + * + * + *
+   * Output only. The time when the object was finalized.
+   * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + @java.lang.Override + public com.google.protobuf.TimestampOrBuilder getFinalizeTimeOrBuilder() { + return finalizeTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : finalizeTime_; + } + public static final int CONTENT_TYPE_FIELD_NUMBER = 13; @SuppressWarnings("serial") @@ -864,7 +920,7 @@ public com.google.protobuf.ByteString getContentTypeBytes() { */ @java.lang.Override public boolean hasCreateTime() { - return ((bitField0_ & 0x00000004) != 0); + return ((bitField0_ & 0x00000008) != 0); } /** * @@ -937,7 +993,7 @@ public int getComponentCount() { */ @java.lang.Override public boolean hasChecksums() { - return ((bitField0_ & 0x00000008) != 0); + return ((bitField0_ & 0x00000010) != 0); } /** * @@ -1005,7 +1061,7 @@ public com.google.storage.v2.ObjectChecksumsOrBuilder getChecksumsOrBuilder() { */ @java.lang.Override public boolean hasUpdateTime() { - return ((bitField0_ & 0x00000010) != 0); + return ((bitField0_ & 0x00000020) != 0); } /** * @@ -1119,7 +1175,7 @@ public com.google.protobuf.ByteString getKmsKeyBytes() { */ @java.lang.Override public boolean hasUpdateStorageClassTime() { - return ((bitField0_ & 0x00000020) != 0); + return ((bitField0_ & 0x00000040) != 0); } /** * @@ -1203,7 +1259,7 @@ public boolean getTemporaryHold() { */ @java.lang.Override public boolean hasRetentionExpireTime() { - return ((bitField0_ & 0x00000040) != 0); + return ((bitField0_ & 0x00000080) != 0); } /** * @@ -1377,7 +1433,7 @@ public java.lang.String getMetadataOrThrow(java.lang.String key) { */ @java.lang.Override public boolean hasEventBasedHold() { - return ((bitField0_ & 0x00000080) != 0); + return ((bitField0_ & 0x00000100) != 0); } /** * @@ -1421,7 +1477,7 @@ public boolean getEventBasedHold() { */ @java.lang.Override public boolean hasOwner() { - return ((bitField0_ & 0x00000100) != 0); + return ((bitField0_ & 0x00000200) != 0); } /** * @@ -1470,7 +1526,7 @@ public com.google.storage.v2.OwnerOrBuilder getOwnerOrBuilder() { */ @java.lang.Override public boolean hasCustomerEncryption() { - return ((bitField0_ & 0x00000200) != 0); + return ((bitField0_ & 0x00000400) != 0); } /** * @@ -1522,7 +1578,7 @@ public com.google.storage.v2.CustomerEncryptionOrBuilder getCustomerEncryptionOr */ @java.lang.Override public boolean hasCustomTime() { - return ((bitField0_ & 0x00000400) != 0); + return ((bitField0_ & 0x00000800) != 0); } /** * @@ -1573,7 +1629,7 @@ public com.google.protobuf.TimestampOrBuilder getCustomTimeOrBuilder() { */ @java.lang.Override public boolean hasSoftDeleteTime() { - return ((bitField0_ & 0x00000800) != 0); + return ((bitField0_ & 0x00001000) != 0); } /** * @@ -1638,7 +1694,7 @@ public com.google.protobuf.TimestampOrBuilder getSoftDeleteTimeOrBuilder() { */ @java.lang.Override public boolean hasHardDeleteTime() { - return ((bitField0_ & 0x00001000) != 0); + return ((bitField0_ & 0x00002000) != 0); } /** * @@ -1736,56 +1792,59 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(contentType_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 13, contentType_); } - if (((bitField0_ & 0x00000004) != 0)) { + if (((bitField0_ & 0x00000008) != 0)) { output.writeMessage(14, getCreateTime()); } if (componentCount_ != 0) { output.writeInt32(15, componentCount_); } - if (((bitField0_ & 0x00000008) != 0)) { + if (((bitField0_ & 0x00000010) != 0)) { output.writeMessage(16, getChecksums()); } - if (((bitField0_ & 0x00000010) != 0)) { + if (((bitField0_ & 0x00000020) != 0)) { output.writeMessage(17, getUpdateTime()); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kmsKey_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 18, kmsKey_); } - if (((bitField0_ & 0x00000020) != 0)) { + if (((bitField0_ & 0x00000040) != 0)) { output.writeMessage(19, getUpdateStorageClassTime()); } if (temporaryHold_ != false) { output.writeBool(20, temporaryHold_); } - if (((bitField0_ & 0x00000040) != 0)) { + if (((bitField0_ & 0x00000080) != 0)) { output.writeMessage(21, getRetentionExpireTime()); } com.google.protobuf.GeneratedMessageV3.serializeStringMapTo( output, internalGetMetadata(), MetadataDefaultEntryHolder.defaultEntry, 22); - if (((bitField0_ & 0x00000080) != 0)) { + if (((bitField0_ & 0x00000100) != 0)) { output.writeBool(23, eventBasedHold_); } - if (((bitField0_ & 0x00000100) != 0)) { + if (((bitField0_ & 0x00000200) != 0)) { output.writeMessage(24, getOwner()); } - if (((bitField0_ & 0x00000200) != 0)) { + if (((bitField0_ & 0x00000400) != 0)) { output.writeMessage(25, getCustomerEncryption()); } - if (((bitField0_ & 0x00000400) != 0)) { + if (((bitField0_ & 0x00000800) != 0)) { output.writeMessage(26, getCustomTime()); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(etag_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 27, etag_); } - if (((bitField0_ & 0x00000800) != 0)) { + if (((bitField0_ & 0x00001000) != 0)) { output.writeMessage(28, getSoftDeleteTime()); } - if (((bitField0_ & 0x00001000) != 0)) { + if (((bitField0_ & 0x00002000) != 0)) { output.writeMessage(29, getHardDeleteTime()); } if (((bitField0_ & 0x00000001) != 0)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 35, restoreToken_); } + if (((bitField0_ & 0x00000004) != 0)) { + output.writeMessage(36, getFinalizeTime()); + } getUnknownFields().writeTo(output); } @@ -1834,29 +1893,29 @@ public int getSerializedSize() { if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(contentType_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, contentType_); } - if (((bitField0_ & 0x00000004) != 0)) { + if (((bitField0_ & 0x00000008) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(14, getCreateTime()); } if (componentCount_ != 0) { size += com.google.protobuf.CodedOutputStream.computeInt32Size(15, componentCount_); } - if (((bitField0_ & 0x00000008) != 0)) { + if (((bitField0_ & 0x00000010) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(16, getChecksums()); } - if (((bitField0_ & 0x00000010) != 0)) { + if (((bitField0_ & 0x00000020) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(17, getUpdateTime()); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kmsKey_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(18, kmsKey_); } - if (((bitField0_ & 0x00000020) != 0)) { + if (((bitField0_ & 0x00000040) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(19, getUpdateStorageClassTime()); } if (temporaryHold_ != false) { size += com.google.protobuf.CodedOutputStream.computeBoolSize(20, temporaryHold_); } - if (((bitField0_ & 0x00000040) != 0)) { + if (((bitField0_ & 0x00000080) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(21, getRetentionExpireTime()); } @@ -1870,30 +1929,33 @@ public int getSerializedSize() { .build(); size += com.google.protobuf.CodedOutputStream.computeMessageSize(22, metadata__); } - if (((bitField0_ & 0x00000080) != 0)) { + if (((bitField0_ & 0x00000100) != 0)) { size += com.google.protobuf.CodedOutputStream.computeBoolSize(23, eventBasedHold_); } - if (((bitField0_ & 0x00000100) != 0)) { + if (((bitField0_ & 0x00000200) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(24, getOwner()); } - if (((bitField0_ & 0x00000200) != 0)) { + if (((bitField0_ & 0x00000400) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(25, getCustomerEncryption()); } - if (((bitField0_ & 0x00000400) != 0)) { + if (((bitField0_ & 0x00000800) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(26, getCustomTime()); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(etag_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(27, etag_); } - if (((bitField0_ & 0x00000800) != 0)) { + if (((bitField0_ & 0x00001000) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(28, getSoftDeleteTime()); } - if (((bitField0_ & 0x00001000) != 0)) { + if (((bitField0_ & 0x00002000) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(29, getHardDeleteTime()); } if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(35, restoreToken_); } + if (((bitField0_ & 0x00000004) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(36, getFinalizeTime()); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -1929,6 +1991,10 @@ public boolean equals(final java.lang.Object obj) { if (hasDeleteTime()) { if (!getDeleteTime().equals(other.getDeleteTime())) return false; } + if (hasFinalizeTime() != other.hasFinalizeTime()) return false; + if (hasFinalizeTime()) { + if (!getFinalizeTime().equals(other.getFinalizeTime())) return false; + } if (!getContentType().equals(other.getContentType())) return false; if (hasCreateTime() != other.hasCreateTime()) return false; if (hasCreateTime()) { @@ -2023,6 +2089,10 @@ public int hashCode() { hash = (37 * hash) + DELETE_TIME_FIELD_NUMBER; hash = (53 * hash) + getDeleteTime().hashCode(); } + if (hasFinalizeTime()) { + hash = (37 * hash) + FINALIZE_TIME_FIELD_NUMBER; + hash = (53 * hash) + getFinalizeTime().hashCode(); + } hash = (37 * hash) + CONTENT_TYPE_FIELD_NUMBER; hash = (53 * hash) + getContentType().hashCode(); if (hasCreateTime()) { @@ -2240,6 +2310,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { getAclFieldBuilder(); getDeleteTimeFieldBuilder(); + getFinalizeTimeFieldBuilder(); getCreateTimeFieldBuilder(); getChecksumsFieldBuilder(); getUpdateTimeFieldBuilder(); @@ -2281,6 +2352,11 @@ public Builder clear() { deleteTimeBuilder_.dispose(); deleteTimeBuilder_ = null; } + finalizeTime_ = null; + if (finalizeTimeBuilder_ != null) { + finalizeTimeBuilder_.dispose(); + finalizeTimeBuilder_ = null; + } contentType_ = ""; createTime_ = null; if (createTimeBuilder_ != null) { @@ -2427,75 +2503,80 @@ private void buildPartial0(com.google.storage.v2.Object result) { to_bitField0_ |= 0x00000002; } if (((from_bitField0_ & 0x00004000) != 0)) { - result.contentType_ = contentType_; + result.finalizeTime_ = + finalizeTimeBuilder_ == null ? finalizeTime_ : finalizeTimeBuilder_.build(); + to_bitField0_ |= 0x00000004; } if (((from_bitField0_ & 0x00008000) != 0)) { - result.createTime_ = createTimeBuilder_ == null ? createTime_ : createTimeBuilder_.build(); - to_bitField0_ |= 0x00000004; + result.contentType_ = contentType_; } if (((from_bitField0_ & 0x00010000) != 0)) { - result.componentCount_ = componentCount_; + result.createTime_ = createTimeBuilder_ == null ? createTime_ : createTimeBuilder_.build(); + to_bitField0_ |= 0x00000008; } if (((from_bitField0_ & 0x00020000) != 0)) { - result.checksums_ = checksumsBuilder_ == null ? checksums_ : checksumsBuilder_.build(); - to_bitField0_ |= 0x00000008; + result.componentCount_ = componentCount_; } if (((from_bitField0_ & 0x00040000) != 0)) { - result.updateTime_ = updateTimeBuilder_ == null ? updateTime_ : updateTimeBuilder_.build(); + result.checksums_ = checksumsBuilder_ == null ? checksums_ : checksumsBuilder_.build(); to_bitField0_ |= 0x00000010; } if (((from_bitField0_ & 0x00080000) != 0)) { - result.kmsKey_ = kmsKey_; + result.updateTime_ = updateTimeBuilder_ == null ? updateTime_ : updateTimeBuilder_.build(); + to_bitField0_ |= 0x00000020; } if (((from_bitField0_ & 0x00100000) != 0)) { + result.kmsKey_ = kmsKey_; + } + if (((from_bitField0_ & 0x00200000) != 0)) { result.updateStorageClassTime_ = updateStorageClassTimeBuilder_ == null ? updateStorageClassTime_ : updateStorageClassTimeBuilder_.build(); - to_bitField0_ |= 0x00000020; + to_bitField0_ |= 0x00000040; } - if (((from_bitField0_ & 0x00200000) != 0)) { + if (((from_bitField0_ & 0x00400000) != 0)) { result.temporaryHold_ = temporaryHold_; } - if (((from_bitField0_ & 0x00400000) != 0)) { + if (((from_bitField0_ & 0x00800000) != 0)) { result.retentionExpireTime_ = retentionExpireTimeBuilder_ == null ? retentionExpireTime_ : retentionExpireTimeBuilder_.build(); - to_bitField0_ |= 0x00000040; + to_bitField0_ |= 0x00000080; } - if (((from_bitField0_ & 0x00800000) != 0)) { + if (((from_bitField0_ & 0x01000000) != 0)) { result.metadata_ = internalGetMetadata(); result.metadata_.makeImmutable(); } - if (((from_bitField0_ & 0x01000000) != 0)) { - result.eventBasedHold_ = eventBasedHold_; - to_bitField0_ |= 0x00000080; - } if (((from_bitField0_ & 0x02000000) != 0)) { - result.owner_ = ownerBuilder_ == null ? owner_ : ownerBuilder_.build(); + result.eventBasedHold_ = eventBasedHold_; to_bitField0_ |= 0x00000100; } if (((from_bitField0_ & 0x04000000) != 0)) { + result.owner_ = ownerBuilder_ == null ? owner_ : ownerBuilder_.build(); + to_bitField0_ |= 0x00000200; + } + if (((from_bitField0_ & 0x08000000) != 0)) { result.customerEncryption_ = customerEncryptionBuilder_ == null ? customerEncryption_ : customerEncryptionBuilder_.build(); - to_bitField0_ |= 0x00000200; - } - if (((from_bitField0_ & 0x08000000) != 0)) { - result.customTime_ = customTimeBuilder_ == null ? customTime_ : customTimeBuilder_.build(); to_bitField0_ |= 0x00000400; } if (((from_bitField0_ & 0x10000000) != 0)) { - result.softDeleteTime_ = - softDeleteTimeBuilder_ == null ? softDeleteTime_ : softDeleteTimeBuilder_.build(); + result.customTime_ = customTimeBuilder_ == null ? customTime_ : customTimeBuilder_.build(); to_bitField0_ |= 0x00000800; } if (((from_bitField0_ & 0x20000000) != 0)) { + result.softDeleteTime_ = + softDeleteTimeBuilder_ == null ? softDeleteTime_ : softDeleteTimeBuilder_.build(); + to_bitField0_ |= 0x00001000; + } + if (((from_bitField0_ & 0x40000000) != 0)) { result.hardDeleteTime_ = hardDeleteTimeBuilder_ == null ? hardDeleteTime_ : hardDeleteTimeBuilder_.build(); - to_bitField0_ |= 0x00001000; + to_bitField0_ |= 0x00002000; } result.bitField0_ |= to_bitField0_; } @@ -2629,9 +2710,12 @@ public Builder mergeFrom(com.google.storage.v2.Object other) { if (other.hasDeleteTime()) { mergeDeleteTime(other.getDeleteTime()); } + if (other.hasFinalizeTime()) { + mergeFinalizeTime(other.getFinalizeTime()); + } if (!other.getContentType().isEmpty()) { contentType_ = other.contentType_; - bitField0_ |= 0x00004000; + bitField0_ |= 0x00008000; onChanged(); } if (other.hasCreateTime()) { @@ -2648,7 +2732,7 @@ public Builder mergeFrom(com.google.storage.v2.Object other) { } if (!other.getKmsKey().isEmpty()) { kmsKey_ = other.kmsKey_; - bitField0_ |= 0x00080000; + bitField0_ |= 0x00100000; onChanged(); } if (other.hasUpdateStorageClassTime()) { @@ -2661,7 +2745,7 @@ public Builder mergeFrom(com.google.storage.v2.Object other) { mergeRetentionExpireTime(other.getRetentionExpireTime()); } internalGetMutableMetadata().mergeFrom(other.internalGetMetadata()); - bitField0_ |= 0x00800000; + bitField0_ |= 0x01000000; if (other.hasEventBasedHold()) { setEventBasedHold(other.getEventBasedHold()); } @@ -2788,57 +2872,57 @@ public Builder mergeFrom( case 106: { contentType_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00004000; + bitField0_ |= 0x00008000; break; } // case 106 case 114: { input.readMessage(getCreateTimeFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00008000; + bitField0_ |= 0x00010000; break; } // case 114 case 120: { componentCount_ = input.readInt32(); - bitField0_ |= 0x00010000; + bitField0_ |= 0x00020000; break; } // case 120 case 130: { input.readMessage(getChecksumsFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00020000; + bitField0_ |= 0x00040000; break; } // case 130 case 138: { input.readMessage(getUpdateTimeFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00040000; + bitField0_ |= 0x00080000; break; } // case 138 case 146: { kmsKey_ = input.readStringRequireUtf8(); - bitField0_ |= 0x00080000; + bitField0_ |= 0x00100000; break; } // case 146 case 154: { input.readMessage( getUpdateStorageClassTimeFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00100000; + bitField0_ |= 0x00200000; break; } // case 154 case 160: { temporaryHold_ = input.readBool(); - bitField0_ |= 0x00200000; + bitField0_ |= 0x00400000; break; } // case 160 case 170: { input.readMessage( getRetentionExpireTimeFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x00400000; + bitField0_ |= 0x00800000; break; } // case 170 case 178: @@ -2850,32 +2934,32 @@ public Builder mergeFrom( internalGetMutableMetadata() .getMutableMap() .put(metadata__.getKey(), metadata__.getValue()); - bitField0_ |= 0x00800000; + bitField0_ |= 0x01000000; break; } // case 178 case 184: { eventBasedHold_ = input.readBool(); - bitField0_ |= 0x01000000; + bitField0_ |= 0x02000000; break; } // case 184 case 194: { input.readMessage(getOwnerFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x02000000; + bitField0_ |= 0x04000000; break; } // case 194 case 202: { input.readMessage( getCustomerEncryptionFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x04000000; + bitField0_ |= 0x08000000; break; } // case 202 case 210: { input.readMessage(getCustomTimeFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x08000000; + bitField0_ |= 0x10000000; break; } // case 210 case 218: @@ -2887,13 +2971,13 @@ public Builder mergeFrom( case 226: { input.readMessage(getSoftDeleteTimeFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x10000000; + bitField0_ |= 0x20000000; break; } // case 226 case 234: { input.readMessage(getHardDeleteTimeFieldBuilder().getBuilder(), extensionRegistry); - bitField0_ |= 0x20000000; + bitField0_ |= 0x40000000; break; } // case 234 case 282: @@ -2902,6 +2986,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000010; break; } // case 282 + case 290: + { + input.readMessage(getFinalizeTimeFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00004000; + break; + } // case 290 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -4756,6 +4846,209 @@ public com.google.protobuf.TimestampOrBuilder getDeleteTimeOrBuilder() { return deleteTimeBuilder_; } + private com.google.protobuf.Timestamp finalizeTime_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + finalizeTimeBuilder_; + /** + * + * + *
+     * Output only. The time when the object was finalized.
+     * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return Whether the finalizeTime field is set. + */ + public boolean hasFinalizeTime() { + return ((bitField0_ & 0x00004000) != 0); + } + /** + * + * + *
+     * Output only. The time when the object was finalized.
+     * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return The finalizeTime. + */ + public com.google.protobuf.Timestamp getFinalizeTime() { + if (finalizeTimeBuilder_ == null) { + return finalizeTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : finalizeTime_; + } else { + return finalizeTimeBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Output only. The time when the object was finalized.
+     * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder setFinalizeTime(com.google.protobuf.Timestamp value) { + if (finalizeTimeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + finalizeTime_ = value; + } else { + finalizeTimeBuilder_.setMessage(value); + } + bitField0_ |= 0x00004000; + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The time when the object was finalized.
+     * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder setFinalizeTime(com.google.protobuf.Timestamp.Builder builderForValue) { + if (finalizeTimeBuilder_ == null) { + finalizeTime_ = builderForValue.build(); + } else { + finalizeTimeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00004000; + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The time when the object was finalized.
+     * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder mergeFinalizeTime(com.google.protobuf.Timestamp value) { + if (finalizeTimeBuilder_ == null) { + if (((bitField0_ & 0x00004000) != 0) + && finalizeTime_ != null + && finalizeTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) { + getFinalizeTimeBuilder().mergeFrom(value); + } else { + finalizeTime_ = value; + } + } else { + finalizeTimeBuilder_.mergeFrom(value); + } + if (finalizeTime_ != null) { + bitField0_ |= 0x00004000; + onChanged(); + } + return this; + } + /** + * + * + *
+     * Output only. The time when the object was finalized.
+     * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public Builder clearFinalizeTime() { + bitField0_ = (bitField0_ & ~0x00004000); + finalizeTime_ = null; + if (finalizeTimeBuilder_ != null) { + finalizeTimeBuilder_.dispose(); + finalizeTimeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * Output only. The time when the object was finalized.
+     * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.protobuf.Timestamp.Builder getFinalizeTimeBuilder() { + bitField0_ |= 0x00004000; + onChanged(); + return getFinalizeTimeFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Output only. The time when the object was finalized.
+     * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + public com.google.protobuf.TimestampOrBuilder getFinalizeTimeOrBuilder() { + if (finalizeTimeBuilder_ != null) { + return finalizeTimeBuilder_.getMessageOrBuilder(); + } else { + return finalizeTime_ == null + ? com.google.protobuf.Timestamp.getDefaultInstance() + : finalizeTime_; + } + } + /** + * + * + *
+     * Output only. The time when the object was finalized.
+     * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder> + getFinalizeTimeFieldBuilder() { + if (finalizeTimeBuilder_ == null) { + finalizeTimeBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Timestamp, + com.google.protobuf.Timestamp.Builder, + com.google.protobuf.TimestampOrBuilder>( + getFinalizeTime(), getParentForChildren(), isClean()); + finalizeTime_ = null; + } + return finalizeTimeBuilder_; + } + private java.lang.Object contentType_ = ""; /** * @@ -4827,7 +5120,7 @@ public Builder setContentType(java.lang.String value) { throw new NullPointerException(); } contentType_ = value; - bitField0_ |= 0x00004000; + bitField0_ |= 0x00008000; onChanged(); return this; } @@ -4847,7 +5140,7 @@ public Builder setContentType(java.lang.String value) { */ public Builder clearContentType() { contentType_ = getDefaultInstance().getContentType(); - bitField0_ = (bitField0_ & ~0x00004000); + bitField0_ = (bitField0_ & ~0x00008000); onChanged(); return this; } @@ -4872,7 +5165,7 @@ public Builder setContentTypeBytes(com.google.protobuf.ByteString value) { } checkByteStringIsUtf8(value); contentType_ = value; - bitField0_ |= 0x00004000; + bitField0_ |= 0x00008000; onChanged(); return this; } @@ -4897,7 +5190,7 @@ public Builder setContentTypeBytes(com.google.protobuf.ByteString value) { * @return Whether the createTime field is set. */ public boolean hasCreateTime() { - return ((bitField0_ & 0x00008000) != 0); + return ((bitField0_ & 0x00010000) != 0); } /** * @@ -4941,7 +5234,7 @@ public Builder setCreateTime(com.google.protobuf.Timestamp value) { } else { createTimeBuilder_.setMessage(value); } - bitField0_ |= 0x00008000; + bitField0_ |= 0x00010000; onChanged(); return this; } @@ -4962,7 +5255,7 @@ public Builder setCreateTime(com.google.protobuf.Timestamp.Builder builderForVal } else { createTimeBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00008000; + bitField0_ |= 0x00010000; onChanged(); return this; } @@ -4979,7 +5272,7 @@ public Builder setCreateTime(com.google.protobuf.Timestamp.Builder builderForVal */ public Builder mergeCreateTime(com.google.protobuf.Timestamp value) { if (createTimeBuilder_ == null) { - if (((bitField0_ & 0x00008000) != 0) + if (((bitField0_ & 0x00010000) != 0) && createTime_ != null && createTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) { getCreateTimeBuilder().mergeFrom(value); @@ -4990,7 +5283,7 @@ public Builder mergeCreateTime(com.google.protobuf.Timestamp value) { createTimeBuilder_.mergeFrom(value); } if (createTime_ != null) { - bitField0_ |= 0x00008000; + bitField0_ |= 0x00010000; onChanged(); } return this; @@ -5007,7 +5300,7 @@ public Builder mergeCreateTime(com.google.protobuf.Timestamp value) { * */ public Builder clearCreateTime() { - bitField0_ = (bitField0_ & ~0x00008000); + bitField0_ = (bitField0_ & ~0x00010000); createTime_ = null; if (createTimeBuilder_ != null) { createTimeBuilder_.dispose(); @@ -5028,7 +5321,7 @@ public Builder clearCreateTime() { * */ public com.google.protobuf.Timestamp.Builder getCreateTimeBuilder() { - bitField0_ |= 0x00008000; + bitField0_ |= 0x00010000; onChanged(); return getCreateTimeFieldBuilder().getBuilder(); } @@ -5113,7 +5406,7 @@ public int getComponentCount() { public Builder setComponentCount(int value) { componentCount_ = value; - bitField0_ |= 0x00010000; + bitField0_ |= 0x00020000; onChanged(); return this; } @@ -5130,7 +5423,7 @@ public Builder setComponentCount(int value) { * @return This builder for chaining. */ public Builder clearComponentCount() { - bitField0_ = (bitField0_ & ~0x00010000); + bitField0_ = (bitField0_ & ~0x00020000); componentCount_ = 0; onChanged(); return this; @@ -5160,7 +5453,7 @@ public Builder clearComponentCount() { * @return Whether the checksums field is set. */ public boolean hasChecksums() { - return ((bitField0_ & 0x00020000) != 0); + return ((bitField0_ & 0x00040000) != 0); } /** * @@ -5212,7 +5505,7 @@ public Builder setChecksums(com.google.storage.v2.ObjectChecksums value) { } else { checksumsBuilder_.setMessage(value); } - bitField0_ |= 0x00020000; + bitField0_ |= 0x00040000; onChanged(); return this; } @@ -5237,7 +5530,7 @@ public Builder setChecksums(com.google.storage.v2.ObjectChecksums.Builder builde } else { checksumsBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00020000; + bitField0_ |= 0x00040000; onChanged(); return this; } @@ -5258,7 +5551,7 @@ public Builder setChecksums(com.google.storage.v2.ObjectChecksums.Builder builde */ public Builder mergeChecksums(com.google.storage.v2.ObjectChecksums value) { if (checksumsBuilder_ == null) { - if (((bitField0_ & 0x00020000) != 0) + if (((bitField0_ & 0x00040000) != 0) && checksums_ != null && checksums_ != com.google.storage.v2.ObjectChecksums.getDefaultInstance()) { getChecksumsBuilder().mergeFrom(value); @@ -5269,7 +5562,7 @@ public Builder mergeChecksums(com.google.storage.v2.ObjectChecksums value) { checksumsBuilder_.mergeFrom(value); } if (checksums_ != null) { - bitField0_ |= 0x00020000; + bitField0_ |= 0x00040000; onChanged(); } return this; @@ -5290,7 +5583,7 @@ public Builder mergeChecksums(com.google.storage.v2.ObjectChecksums value) { * */ public Builder clearChecksums() { - bitField0_ = (bitField0_ & ~0x00020000); + bitField0_ = (bitField0_ & ~0x00040000); checksums_ = null; if (checksumsBuilder_ != null) { checksumsBuilder_.dispose(); @@ -5315,7 +5608,7 @@ public Builder clearChecksums() { * */ public com.google.storage.v2.ObjectChecksums.Builder getChecksumsBuilder() { - bitField0_ |= 0x00020000; + bitField0_ |= 0x00040000; onChanged(); return getChecksumsFieldBuilder().getBuilder(); } @@ -5400,7 +5693,7 @@ public com.google.storage.v2.ObjectChecksumsOrBuilder getChecksumsOrBuilder() { * @return Whether the updateTime field is set. */ public boolean hasUpdateTime() { - return ((bitField0_ & 0x00040000) != 0); + return ((bitField0_ & 0x00080000) != 0); } /** * @@ -5454,7 +5747,7 @@ public Builder setUpdateTime(com.google.protobuf.Timestamp value) { } else { updateTimeBuilder_.setMessage(value); } - bitField0_ |= 0x00040000; + bitField0_ |= 0x00080000; onChanged(); return this; } @@ -5480,7 +5773,7 @@ public Builder setUpdateTime(com.google.protobuf.Timestamp.Builder builderForVal } else { updateTimeBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00040000; + bitField0_ |= 0x00080000; onChanged(); return this; } @@ -5502,7 +5795,7 @@ public Builder setUpdateTime(com.google.protobuf.Timestamp.Builder builderForVal */ public Builder mergeUpdateTime(com.google.protobuf.Timestamp value) { if (updateTimeBuilder_ == null) { - if (((bitField0_ & 0x00040000) != 0) + if (((bitField0_ & 0x00080000) != 0) && updateTime_ != null && updateTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) { getUpdateTimeBuilder().mergeFrom(value); @@ -5513,7 +5806,7 @@ public Builder mergeUpdateTime(com.google.protobuf.Timestamp value) { updateTimeBuilder_.mergeFrom(value); } if (updateTime_ != null) { - bitField0_ |= 0x00040000; + bitField0_ |= 0x00080000; onChanged(); } return this; @@ -5535,7 +5828,7 @@ public Builder mergeUpdateTime(com.google.protobuf.Timestamp value) { * */ public Builder clearUpdateTime() { - bitField0_ = (bitField0_ & ~0x00040000); + bitField0_ = (bitField0_ & ~0x00080000); updateTime_ = null; if (updateTimeBuilder_ != null) { updateTimeBuilder_.dispose(); @@ -5561,7 +5854,7 @@ public Builder clearUpdateTime() { * */ public com.google.protobuf.Timestamp.Builder getUpdateTimeBuilder() { - bitField0_ |= 0x00040000; + bitField0_ |= 0x00080000; onChanged(); return getUpdateTimeFieldBuilder().getBuilder(); } @@ -5688,7 +5981,7 @@ public Builder setKmsKey(java.lang.String value) { throw new NullPointerException(); } kmsKey_ = value; - bitField0_ |= 0x00080000; + bitField0_ |= 0x00100000; onChanged(); return this; } @@ -5706,7 +5999,7 @@ public Builder setKmsKey(java.lang.String value) { */ public Builder clearKmsKey() { kmsKey_ = getDefaultInstance().getKmsKey(); - bitField0_ = (bitField0_ & ~0x00080000); + bitField0_ = (bitField0_ & ~0x00100000); onChanged(); return this; } @@ -5729,7 +6022,7 @@ public Builder setKmsKeyBytes(com.google.protobuf.ByteString value) { } checkByteStringIsUtf8(value); kmsKey_ = value; - bitField0_ |= 0x00080000; + bitField0_ |= 0x00100000; onChanged(); return this; } @@ -5755,7 +6048,7 @@ public Builder setKmsKeyBytes(com.google.protobuf.ByteString value) { * @return Whether the updateStorageClassTime field is set. */ public boolean hasUpdateStorageClassTime() { - return ((bitField0_ & 0x00100000) != 0); + return ((bitField0_ & 0x00200000) != 0); } /** * @@ -5801,7 +6094,7 @@ public Builder setUpdateStorageClassTime(com.google.protobuf.Timestamp value) { } else { updateStorageClassTimeBuilder_.setMessage(value); } - bitField0_ |= 0x00100000; + bitField0_ |= 0x00200000; onChanged(); return this; } @@ -5824,7 +6117,7 @@ public Builder setUpdateStorageClassTime( } else { updateStorageClassTimeBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00100000; + bitField0_ |= 0x00200000; onChanged(); return this; } @@ -5842,7 +6135,7 @@ public Builder setUpdateStorageClassTime( */ public Builder mergeUpdateStorageClassTime(com.google.protobuf.Timestamp value) { if (updateStorageClassTimeBuilder_ == null) { - if (((bitField0_ & 0x00100000) != 0) + if (((bitField0_ & 0x00200000) != 0) && updateStorageClassTime_ != null && updateStorageClassTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) { getUpdateStorageClassTimeBuilder().mergeFrom(value); @@ -5853,7 +6146,7 @@ public Builder mergeUpdateStorageClassTime(com.google.protobuf.Timestamp value) updateStorageClassTimeBuilder_.mergeFrom(value); } if (updateStorageClassTime_ != null) { - bitField0_ |= 0x00100000; + bitField0_ |= 0x00200000; onChanged(); } return this; @@ -5871,7 +6164,7 @@ public Builder mergeUpdateStorageClassTime(com.google.protobuf.Timestamp value) * */ public Builder clearUpdateStorageClassTime() { - bitField0_ = (bitField0_ & ~0x00100000); + bitField0_ = (bitField0_ & ~0x00200000); updateStorageClassTime_ = null; if (updateStorageClassTimeBuilder_ != null) { updateStorageClassTimeBuilder_.dispose(); @@ -5893,7 +6186,7 @@ public Builder clearUpdateStorageClassTime() { * */ public com.google.protobuf.Timestamp.Builder getUpdateStorageClassTimeBuilder() { - bitField0_ |= 0x00100000; + bitField0_ |= 0x00200000; onChanged(); return getUpdateStorageClassTimeFieldBuilder().getBuilder(); } @@ -5986,7 +6279,7 @@ public boolean getTemporaryHold() { public Builder setTemporaryHold(boolean value) { temporaryHold_ = value; - bitField0_ |= 0x00200000; + bitField0_ |= 0x00400000; onChanged(); return this; } @@ -6006,7 +6299,7 @@ public Builder setTemporaryHold(boolean value) { * @return This builder for chaining. */ public Builder clearTemporaryHold() { - bitField0_ = (bitField0_ & ~0x00200000); + bitField0_ = (bitField0_ & ~0x00400000); temporaryHold_ = false; onChanged(); return this; @@ -6036,7 +6329,7 @@ public Builder clearTemporaryHold() { * @return Whether the retentionExpireTime field is set. */ public boolean hasRetentionExpireTime() { - return ((bitField0_ & 0x00400000) != 0); + return ((bitField0_ & 0x00800000) != 0); } /** * @@ -6088,7 +6381,7 @@ public Builder setRetentionExpireTime(com.google.protobuf.Timestamp value) { } else { retentionExpireTimeBuilder_.setMessage(value); } - bitField0_ |= 0x00400000; + bitField0_ |= 0x00800000; onChanged(); return this; } @@ -6113,7 +6406,7 @@ public Builder setRetentionExpireTime(com.google.protobuf.Timestamp.Builder buil } else { retentionExpireTimeBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00400000; + bitField0_ |= 0x00800000; onChanged(); return this; } @@ -6134,7 +6427,7 @@ public Builder setRetentionExpireTime(com.google.protobuf.Timestamp.Builder buil */ public Builder mergeRetentionExpireTime(com.google.protobuf.Timestamp value) { if (retentionExpireTimeBuilder_ == null) { - if (((bitField0_ & 0x00400000) != 0) + if (((bitField0_ & 0x00800000) != 0) && retentionExpireTime_ != null && retentionExpireTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) { getRetentionExpireTimeBuilder().mergeFrom(value); @@ -6145,7 +6438,7 @@ public Builder mergeRetentionExpireTime(com.google.protobuf.Timestamp value) { retentionExpireTimeBuilder_.mergeFrom(value); } if (retentionExpireTime_ != null) { - bitField0_ |= 0x00400000; + bitField0_ |= 0x00800000; onChanged(); } return this; @@ -6166,7 +6459,7 @@ public Builder mergeRetentionExpireTime(com.google.protobuf.Timestamp value) { * .google.protobuf.Timestamp retention_expire_time = 21; */ public Builder clearRetentionExpireTime() { - bitField0_ = (bitField0_ & ~0x00400000); + bitField0_ = (bitField0_ & ~0x00800000); retentionExpireTime_ = null; if (retentionExpireTimeBuilder_ != null) { retentionExpireTimeBuilder_.dispose(); @@ -6191,7 +6484,7 @@ public Builder clearRetentionExpireTime() { * .google.protobuf.Timestamp retention_expire_time = 21; */ public com.google.protobuf.Timestamp.Builder getRetentionExpireTimeBuilder() { - bitField0_ |= 0x00400000; + bitField0_ |= 0x00800000; onChanged(); return getRetentionExpireTimeFieldBuilder().getBuilder(); } @@ -6269,7 +6562,7 @@ private com.google.protobuf.MapField interna if (!metadata_.isMutable()) { metadata_ = metadata_.copy(); } - bitField0_ |= 0x00800000; + bitField0_ |= 0x01000000; onChanged(); return metadata_; } @@ -6354,7 +6647,7 @@ public java.lang.String getMetadataOrThrow(java.lang.String key) { } public Builder clearMetadata() { - bitField0_ = (bitField0_ & ~0x00800000); + bitField0_ = (bitField0_ & ~0x01000000); internalGetMutableMetadata().getMutableMap().clear(); return this; } @@ -6377,7 +6670,7 @@ public Builder removeMetadata(java.lang.String key) { /** Use alternate mutation accessors instead. */ @java.lang.Deprecated public java.util.Map getMutableMetadata() { - bitField0_ |= 0x00800000; + bitField0_ |= 0x01000000; return internalGetMutableMetadata().getMutableMap(); } /** @@ -6397,7 +6690,7 @@ public Builder putMetadata(java.lang.String key, java.lang.String value) { throw new NullPointerException("map value"); } internalGetMutableMetadata().getMutableMap().put(key, value); - bitField0_ |= 0x00800000; + bitField0_ |= 0x01000000; return this; } /** @@ -6411,7 +6704,7 @@ public Builder putMetadata(java.lang.String key, java.lang.String value) { */ public Builder putAllMetadata(java.util.Map values) { internalGetMutableMetadata().getMutableMap().putAll(values); - bitField0_ |= 0x00800000; + bitField0_ |= 0x01000000; return this; } @@ -6439,7 +6732,7 @@ public Builder putAllMetadata(java.util.Map */ @java.lang.Override public boolean hasEventBasedHold() { - return ((bitField0_ & 0x01000000) != 0); + return ((bitField0_ & 0x02000000) != 0); } /** * @@ -6491,7 +6784,7 @@ public boolean getEventBasedHold() { public Builder setEventBasedHold(boolean value) { eventBasedHold_ = value; - bitField0_ |= 0x01000000; + bitField0_ |= 0x02000000; onChanged(); return this; } @@ -6517,7 +6810,7 @@ public Builder setEventBasedHold(boolean value) { * @return This builder for chaining. */ public Builder clearEventBasedHold() { - bitField0_ = (bitField0_ & ~0x01000000); + bitField0_ = (bitField0_ & ~0x02000000); eventBasedHold_ = false; onChanged(); return this; @@ -6543,7 +6836,7 @@ public Builder clearEventBasedHold() { * @return Whether the owner field is set. */ public boolean hasOwner() { - return ((bitField0_ & 0x02000000) != 0); + return ((bitField0_ & 0x04000000) != 0); } /** * @@ -6585,7 +6878,7 @@ public Builder setOwner(com.google.storage.v2.Owner value) { } else { ownerBuilder_.setMessage(value); } - bitField0_ |= 0x02000000; + bitField0_ |= 0x04000000; onChanged(); return this; } @@ -6606,7 +6899,7 @@ public Builder setOwner(com.google.storage.v2.Owner.Builder builderForValue) { } else { ownerBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x02000000; + bitField0_ |= 0x04000000; onChanged(); return this; } @@ -6623,7 +6916,7 @@ public Builder setOwner(com.google.storage.v2.Owner.Builder builderForValue) { */ public Builder mergeOwner(com.google.storage.v2.Owner value) { if (ownerBuilder_ == null) { - if (((bitField0_ & 0x02000000) != 0) + if (((bitField0_ & 0x04000000) != 0) && owner_ != null && owner_ != com.google.storage.v2.Owner.getDefaultInstance()) { getOwnerBuilder().mergeFrom(value); @@ -6634,7 +6927,7 @@ public Builder mergeOwner(com.google.storage.v2.Owner value) { ownerBuilder_.mergeFrom(value); } if (owner_ != null) { - bitField0_ |= 0x02000000; + bitField0_ |= 0x04000000; onChanged(); } return this; @@ -6651,7 +6944,7 @@ public Builder mergeOwner(com.google.storage.v2.Owner value) { * */ public Builder clearOwner() { - bitField0_ = (bitField0_ & ~0x02000000); + bitField0_ = (bitField0_ & ~0x04000000); owner_ = null; if (ownerBuilder_ != null) { ownerBuilder_.dispose(); @@ -6672,7 +6965,7 @@ public Builder clearOwner() { * */ public com.google.storage.v2.Owner.Builder getOwnerBuilder() { - bitField0_ |= 0x02000000; + bitField0_ |= 0x04000000; onChanged(); return getOwnerFieldBuilder().getBuilder(); } @@ -6741,7 +7034,7 @@ public com.google.storage.v2.OwnerOrBuilder getOwnerOrBuilder() { * @return Whether the customerEncryption field is set. */ public boolean hasCustomerEncryption() { - return ((bitField0_ & 0x04000000) != 0); + return ((bitField0_ & 0x08000000) != 0); } /** * @@ -6783,7 +7076,7 @@ public Builder setCustomerEncryption(com.google.storage.v2.CustomerEncryption va } else { customerEncryptionBuilder_.setMessage(value); } - bitField0_ |= 0x04000000; + bitField0_ |= 0x08000000; onChanged(); return this; } @@ -6804,7 +7097,7 @@ public Builder setCustomerEncryption( } else { customerEncryptionBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x04000000; + bitField0_ |= 0x08000000; onChanged(); return this; } @@ -6820,7 +7113,7 @@ public Builder setCustomerEncryption( */ public Builder mergeCustomerEncryption(com.google.storage.v2.CustomerEncryption value) { if (customerEncryptionBuilder_ == null) { - if (((bitField0_ & 0x04000000) != 0) + if (((bitField0_ & 0x08000000) != 0) && customerEncryption_ != null && customerEncryption_ != com.google.storage.v2.CustomerEncryption.getDefaultInstance()) { @@ -6832,7 +7125,7 @@ public Builder mergeCustomerEncryption(com.google.storage.v2.CustomerEncryption customerEncryptionBuilder_.mergeFrom(value); } if (customerEncryption_ != null) { - bitField0_ |= 0x04000000; + bitField0_ |= 0x08000000; onChanged(); } return this; @@ -6848,7 +7141,7 @@ public Builder mergeCustomerEncryption(com.google.storage.v2.CustomerEncryption * .google.storage.v2.CustomerEncryption customer_encryption = 25; */ public Builder clearCustomerEncryption() { - bitField0_ = (bitField0_ & ~0x04000000); + bitField0_ = (bitField0_ & ~0x08000000); customerEncryption_ = null; if (customerEncryptionBuilder_ != null) { customerEncryptionBuilder_.dispose(); @@ -6868,7 +7161,7 @@ public Builder clearCustomerEncryption() { * .google.storage.v2.CustomerEncryption customer_encryption = 25; */ public com.google.storage.v2.CustomerEncryption.Builder getCustomerEncryptionBuilder() { - bitField0_ |= 0x04000000; + bitField0_ |= 0x08000000; onChanged(); return getCustomerEncryptionFieldBuilder().getBuilder(); } @@ -6936,7 +7229,7 @@ public com.google.storage.v2.CustomerEncryptionOrBuilder getCustomerEncryptionOr * @return Whether the customTime field is set. */ public boolean hasCustomTime() { - return ((bitField0_ & 0x08000000) != 0); + return ((bitField0_ & 0x10000000) != 0); } /** * @@ -6976,7 +7269,7 @@ public Builder setCustomTime(com.google.protobuf.Timestamp value) { } else { customTimeBuilder_.setMessage(value); } - bitField0_ |= 0x08000000; + bitField0_ |= 0x10000000; onChanged(); return this; } @@ -6995,7 +7288,7 @@ public Builder setCustomTime(com.google.protobuf.Timestamp.Builder builderForVal } else { customTimeBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x08000000; + bitField0_ |= 0x10000000; onChanged(); return this; } @@ -7010,7 +7303,7 @@ public Builder setCustomTime(com.google.protobuf.Timestamp.Builder builderForVal */ public Builder mergeCustomTime(com.google.protobuf.Timestamp value) { if (customTimeBuilder_ == null) { - if (((bitField0_ & 0x08000000) != 0) + if (((bitField0_ & 0x10000000) != 0) && customTime_ != null && customTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) { getCustomTimeBuilder().mergeFrom(value); @@ -7021,7 +7314,7 @@ public Builder mergeCustomTime(com.google.protobuf.Timestamp value) { customTimeBuilder_.mergeFrom(value); } if (customTime_ != null) { - bitField0_ |= 0x08000000; + bitField0_ |= 0x10000000; onChanged(); } return this; @@ -7036,7 +7329,7 @@ public Builder mergeCustomTime(com.google.protobuf.Timestamp value) { * .google.protobuf.Timestamp custom_time = 26; */ public Builder clearCustomTime() { - bitField0_ = (bitField0_ & ~0x08000000); + bitField0_ = (bitField0_ & ~0x10000000); customTime_ = null; if (customTimeBuilder_ != null) { customTimeBuilder_.dispose(); @@ -7055,7 +7348,7 @@ public Builder clearCustomTime() { * .google.protobuf.Timestamp custom_time = 26; */ public com.google.protobuf.Timestamp.Builder getCustomTimeBuilder() { - bitField0_ |= 0x08000000; + bitField0_ |= 0x10000000; onChanged(); return getCustomTimeFieldBuilder().getBuilder(); } @@ -7126,7 +7419,7 @@ public com.google.protobuf.TimestampOrBuilder getCustomTimeOrBuilder() { * @return Whether the softDeleteTime field is set. */ public boolean hasSoftDeleteTime() { - return ((bitField0_ & 0x10000000) != 0); + return ((bitField0_ & 0x20000000) != 0); } /** * @@ -7176,7 +7469,7 @@ public Builder setSoftDeleteTime(com.google.protobuf.Timestamp value) { } else { softDeleteTimeBuilder_.setMessage(value); } - bitField0_ |= 0x10000000; + bitField0_ |= 0x20000000; onChanged(); return this; } @@ -7200,7 +7493,7 @@ public Builder setSoftDeleteTime(com.google.protobuf.Timestamp.Builder builderFo } else { softDeleteTimeBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x10000000; + bitField0_ |= 0x20000000; onChanged(); return this; } @@ -7220,7 +7513,7 @@ public Builder setSoftDeleteTime(com.google.protobuf.Timestamp.Builder builderFo */ public Builder mergeSoftDeleteTime(com.google.protobuf.Timestamp value) { if (softDeleteTimeBuilder_ == null) { - if (((bitField0_ & 0x10000000) != 0) + if (((bitField0_ & 0x20000000) != 0) && softDeleteTime_ != null && softDeleteTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) { getSoftDeleteTimeBuilder().mergeFrom(value); @@ -7231,7 +7524,7 @@ public Builder mergeSoftDeleteTime(com.google.protobuf.Timestamp value) { softDeleteTimeBuilder_.mergeFrom(value); } if (softDeleteTime_ != null) { - bitField0_ |= 0x10000000; + bitField0_ |= 0x20000000; onChanged(); } return this; @@ -7251,7 +7544,7 @@ public Builder mergeSoftDeleteTime(com.google.protobuf.Timestamp value) { * */ public Builder clearSoftDeleteTime() { - bitField0_ = (bitField0_ & ~0x10000000); + bitField0_ = (bitField0_ & ~0x20000000); softDeleteTime_ = null; if (softDeleteTimeBuilder_ != null) { softDeleteTimeBuilder_.dispose(); @@ -7275,7 +7568,7 @@ public Builder clearSoftDeleteTime() { * */ public com.google.protobuf.Timestamp.Builder getSoftDeleteTimeBuilder() { - bitField0_ |= 0x10000000; + bitField0_ |= 0x20000000; onChanged(); return getSoftDeleteTimeFieldBuilder().getBuilder(); } @@ -7356,7 +7649,7 @@ public com.google.protobuf.TimestampOrBuilder getSoftDeleteTimeOrBuilder() { * @return Whether the hardDeleteTime field is set. */ public boolean hasHardDeleteTime() { - return ((bitField0_ & 0x20000000) != 0); + return ((bitField0_ & 0x40000000) != 0); } /** * @@ -7406,7 +7699,7 @@ public Builder setHardDeleteTime(com.google.protobuf.Timestamp value) { } else { hardDeleteTimeBuilder_.setMessage(value); } - bitField0_ |= 0x20000000; + bitField0_ |= 0x40000000; onChanged(); return this; } @@ -7430,7 +7723,7 @@ public Builder setHardDeleteTime(com.google.protobuf.Timestamp.Builder builderFo } else { hardDeleteTimeBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x20000000; + bitField0_ |= 0x40000000; onChanged(); return this; } @@ -7450,7 +7743,7 @@ public Builder setHardDeleteTime(com.google.protobuf.Timestamp.Builder builderFo */ public Builder mergeHardDeleteTime(com.google.protobuf.Timestamp value) { if (hardDeleteTimeBuilder_ == null) { - if (((bitField0_ & 0x20000000) != 0) + if (((bitField0_ & 0x40000000) != 0) && hardDeleteTime_ != null && hardDeleteTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) { getHardDeleteTimeBuilder().mergeFrom(value); @@ -7461,7 +7754,7 @@ public Builder mergeHardDeleteTime(com.google.protobuf.Timestamp value) { hardDeleteTimeBuilder_.mergeFrom(value); } if (hardDeleteTime_ != null) { - bitField0_ |= 0x20000000; + bitField0_ |= 0x40000000; onChanged(); } return this; @@ -7481,7 +7774,7 @@ public Builder mergeHardDeleteTime(com.google.protobuf.Timestamp value) { * */ public Builder clearHardDeleteTime() { - bitField0_ = (bitField0_ & ~0x20000000); + bitField0_ = (bitField0_ & ~0x40000000); hardDeleteTime_ = null; if (hardDeleteTimeBuilder_ != null) { hardDeleteTimeBuilder_.dispose(); @@ -7505,7 +7798,7 @@ public Builder clearHardDeleteTime() { * */ public com.google.protobuf.Timestamp.Builder getHardDeleteTimeBuilder() { - bitField0_ |= 0x20000000; + bitField0_ |= 0x40000000; onChanged(); return getHardDeleteTimeFieldBuilder().getBuilder(); } diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectAccessControl.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectAccessControl.java index dfa56080d1..997c6e5824 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectAccessControl.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectAccessControl.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectAccessControlOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectAccessControlOrBuilder.java index a7d068f2f5..e925138a07 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectAccessControlOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectAccessControlOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectChecksums.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectChecksums.java index 383801043a..bf9ed36998 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectChecksums.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectChecksums.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectChecksumsOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectChecksumsOrBuilder.java index 1bbfeffe2d..00fddc22bd 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectChecksumsOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectChecksumsOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectOrBuilder.java index b2b3c42258..be8a8bbec6 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ObjectOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -448,6 +448,47 @@ public interface ObjectOrBuilder */ com.google.protobuf.TimestampOrBuilder getDeleteTimeOrBuilder(); + /** + * + * + *
+   * Output only. The time when the object was finalized.
+   * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return Whether the finalizeTime field is set. + */ + boolean hasFinalizeTime(); + /** + * + * + *
+   * Output only. The time when the object was finalized.
+   * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + * + * @return The finalizeTime. + */ + com.google.protobuf.Timestamp getFinalizeTime(); + /** + * + * + *
+   * Output only. The time when the object was finalized.
+   * 
+ * + * + * .google.protobuf.Timestamp finalize_time = 36 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * + */ + com.google.protobuf.TimestampOrBuilder getFinalizeTimeOrBuilder(); + /** * * diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Owner.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Owner.java index 4712466c21..a1482f9b0a 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Owner.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/Owner.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/OwnerOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/OwnerOrBuilder.java index 6548208f9f..f98698ebe4 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/OwnerOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/OwnerOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectName.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectName.java index 1788c480b4..4e28041852 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectName.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectName.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectTeam.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectTeam.java index a11aca1eba..1e3c756046 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectTeam.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectTeam.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectTeamOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectTeamOrBuilder.java index 9a0735db0a..18fc4b51ff 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectTeamOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ProjectTeamOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusRequest.java index 468a844a61..9565111a38 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusRequestOrBuilder.java index 6da5ceaecd..77d989a6c7 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusResponse.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusResponse.java index 3e1c91397c..678075896c 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusResponse.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusResponseOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusResponseOrBuilder.java index 306c66a3e5..774dcf4e06 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusResponseOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/QueryWriteStatusResponseOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectRequest.java index 961e826961..c229914c29 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectRequestOrBuilder.java index 8d8485a9c2..b9457f59db 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectResponse.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectResponse.java index 7193e17a2f..5db3dd5bc4 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectResponse.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectResponseOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectResponseOrBuilder.java index 7edc54d4b5..b4e00c6ff3 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectResponseOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ReadObjectResponseOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RestoreObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RestoreObjectRequest.java index 9307bff183..51f746efc1 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RestoreObjectRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RestoreObjectRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RestoreObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RestoreObjectRequestOrBuilder.java index 447085ec1b..add7e64bef 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RestoreObjectRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RestoreObjectRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequest.java index 57787fabce..9fc2438a75 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequestOrBuilder.java index b360fef113..dfe22cb6e3 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteObjectRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteResponse.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteResponse.java index 117fc23725..e14200ee15 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteResponse.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteResponseOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteResponseOrBuilder.java index 028ed12063..90da4c8b27 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteResponseOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/RewriteResponseOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ServiceConstants.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ServiceConstants.java index 8875b8c4de..e2755ccea9 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ServiceConstants.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ServiceConstants.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ServiceConstantsOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ServiceConstantsOrBuilder.java index 40679e23a5..aeb6938a5d 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ServiceConstantsOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/ServiceConstantsOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteRequest.java index 41fda05415..1368af0f58 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteRequestOrBuilder.java index 8d2ef58123..1c2c87b0f3 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteResponse.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteResponse.java index dff639cb93..1458f6946e 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteResponse.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteResponseOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteResponseOrBuilder.java index 3ba31a58aa..26ca3752f2 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteResponseOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/StartResumableWriteResponseOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. 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 d037495f96..4b728da794 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 @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -136,6 +136,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_storage_v2_RewriteResponse_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_storage_v2_RewriteResponse_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_storage_v2_MoveObjectRequest_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_storage_v2_MoveObjectRequest_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_storage_v2_StartResumableWriteRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -503,292 +507,316 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "onse\022\035\n\025total_bytes_rewritten\030\001 \001(\003\022\023\n\013o" + "bject_size\030\002 \001(\003\022\014\n\004done\030\003 \001(\010\022\025\n\rrewrit" + "e_token\030\004 \001(\t\022+\n\010resource\030\005 \001(\0132\031.google" - + ".storage.v2.Object\"\362\001\n\032StartResumableWri" - + "teRequest\022B\n\021write_object_spec\030\001 \001(\0132\".g" - + "oogle.storage.v2.WriteObjectSpecB\003\340A\002\022R\n" - + "\034common_object_request_params\030\003 \001(\0132,.go" - + "ogle.storage.v2.CommonObjectRequestParam" - + "s\022<\n\020object_checksums\030\005 \001(\0132\".google.sto" - + "rage.v2.ObjectChecksums\"0\n\033StartResumabl" - + "eWriteResponse\022\021\n\tupload_id\030\001 \001(\t\"\357\003\n\023Up" - + "dateObjectRequest\022.\n\006object\030\001 \001(\0132\031.goog" - + "le.storage.v2.ObjectB\003\340A\002\022 \n\023if_generati" - + "on_match\030\002 \001(\003H\000\210\001\001\022$\n\027if_generation_not" - + "_match\030\003 \001(\003H\001\210\001\001\022$\n\027if_metageneration_m" - + "atch\030\004 \001(\003H\002\210\001\001\022(\n\033if_metageneration_not" - + "_match\030\005 \001(\003H\003\210\001\001\022\026\n\016predefined_acl\030\n \001(" - + "\t\0224\n\013update_mask\030\007 \001(\0132\032.google.protobuf" - + ".FieldMaskB\003\340A\002\022R\n\034common_object_request" - + "_params\030\010 \001(\0132,.google.storage.v2.Common" - + "ObjectRequestParamsB\026\n\024_if_generation_ma" - + "tchB\032\n\030_if_generation_not_matchB\032\n\030_if_m" - + "etageneration_matchB\036\n\034_if_metageneratio" - + "n_not_match\"|\n\031CommonObjectRequestParams" - + "\022\034\n\024encryption_algorithm\030\001 \001(\t\022\034\n\024encryp" - + "tion_key_bytes\030\004 \001(\014\022#\n\033encryption_key_s" - + "ha256_bytes\030\005 \001(\014\"\312\005\n\020ServiceConstants\"\265" - + "\005\n\006Values\022\026\n\022VALUES_UNSPECIFIED\020\000\022\033\n\024MAX" - + "_READ_CHUNK_BYTES\020\200\200\200\001\022\034\n\025MAX_WRITE_CHUN" - + "K_BYTES\020\200\200\200\001\022\031\n\022MAX_OBJECT_SIZE_MB\020\200\200\300\002\022" - + ")\n$MAX_CUSTOM_METADATA_FIELD_NAME_BYTES\020" - + "\200\010\022*\n%MAX_CUSTOM_METADATA_FIELD_VALUE_BY" - + "TES\020\200 \022)\n$MAX_CUSTOM_METADATA_TOTAL_SIZE" - + "_BYTES\020\200@\022*\n$MAX_BUCKET_METADATA_TOTAL_S" - + "IZE_BYTES\020\200\240\001\022\'\n#MAX_NOTIFICATION_CONFIG" - + "S_PER_BUCKET\020d\022\"\n\036MAX_LIFECYCLE_RULES_PE" - + "R_BUCKET\020d\022&\n\"MAX_NOTIFICATION_CUSTOM_AT" - + "TRIBUTES\020\005\0221\n,MAX_NOTIFICATION_CUSTOM_AT" - + "TRIBUTE_KEY_LENGTH\020\200\002\0223\n.MAX_NOTIFICATIO" - + "N_CUSTOM_ATTRIBUTE_VALUE_LENGTH\020\200\010\022\034\n\030MA" - + "X_LABELS_ENTRIES_COUNT\020@\022\037\n\033MAX_LABELS_K" - + "EY_VALUE_LENGTH\020?\022\037\n\032MAX_LABELS_KEY_VALU" - + "E_BYTES\020\200\001\022.\n)MAX_OBJECT_IDS_PER_DELETE_" - + "OBJECTS_REQUEST\020\350\007\022\036\n\032SPLIT_TOKEN_MAX_VA" - + "LID_DAYS\020\016\032\002\020\001\"\243\034\n\006Bucket\022\021\n\004name\030\001 \001(\tB" - + "\003\340A\005\022\026\n\tbucket_id\030\002 \001(\tB\003\340A\003\022\014\n\004etag\030\035 \001" - + "(\t\022D\n\007project\030\003 \001(\tB3\340A\005\372A-\n+cloudresour" - + "cemanager.googleapis.com/Project\022\033\n\016meta" - + "generation\030\004 \001(\003B\003\340A\003\022\025\n\010location\030\005 \001(\tB" - + "\003\340A\005\022\032\n\rlocation_type\030\006 \001(\tB\003\340A\003\022\025\n\rstor" - + "age_class\030\007 \001(\t\022\013\n\003rpo\030\033 \001(\t\0223\n\003acl\030\010 \003(" - + "\0132&.google.storage.v2.BucketAccessContro" - + "l\022B\n\022default_object_acl\030\t \003(\0132&.google.s" - + "torage.v2.ObjectAccessControl\0226\n\tlifecyc" - + "le\030\n \001(\0132#.google.storage.v2.Bucket.Life" - + "cycle\0224\n\013create_time\030\013 \001(\0132\032.google.prot" - + "obuf.TimestampB\003\340A\003\022,\n\004cors\030\014 \003(\0132\036.goog" - + "le.storage.v2.Bucket.Cors\0224\n\013update_time" - + "\030\r \001(\0132\032.google.protobuf.TimestampB\003\340A\003\022" - + " \n\030default_event_based_hold\030\016 \001(\010\0225\n\006lab" - + "els\030\017 \003(\0132%.google.storage.v2.Bucket.Lab" - + "elsEntry\0222\n\007website\030\020 \001(\0132!.google.stora" - + "ge.v2.Bucket.Website\0228\n\nversioning\030\021 \001(\013" - + "2$.google.storage.v2.Bucket.Versioning\0222" - + "\n\007logging\030\022 \001(\0132!.google.storage.v2.Buck" - + "et.Logging\022,\n\005owner\030\023 \001(\0132\030.google.stora" - + "ge.v2.OwnerB\003\340A\003\0228\n\nencryption\030\024 \001(\0132$.g" - + "oogle.storage.v2.Bucket.Encryption\0222\n\007bi" - + "lling\030\025 \001(\0132!.google.storage.v2.Bucket.B" - + "illing\022C\n\020retention_policy\030\026 \001(\0132).googl" - + "e.storage.v2.Bucket.RetentionPolicy\0227\n\ni" - + "am_config\030\027 \001(\0132#.google.storage.v2.Buck" - + "et.IamConfig\022\025\n\rsatisfies_pzs\030\031 \001(\010\022P\n\027c" - + "ustom_placement_config\030\032 \001(\0132/.google.st" - + "orage.v2.Bucket.CustomPlacementConfig\0226\n" - + "\tautoclass\030\034 \001(\0132#.google.storage.v2.Buc" - + "ket.Autoclass\022T\n\026hierarchical_namespace\030" - + " \001(\0132/.google.storage.v2.Bucket.Hierarc" - + "hicalNamespaceB\003\340A\001\022K\n\022soft_delete_polic" - + "y\030\037 \001(\0132*.google.storage.v2.Bucket.SoftD" - + "eletePolicyB\003\340A\001\032!\n\007Billing\022\026\n\016requester" - + "_pays\030\001 \001(\010\032X\n\004Cors\022\016\n\006origin\030\001 \003(\t\022\016\n\006m" - + "ethod\030\002 \003(\t\022\027\n\017response_header\030\003 \003(\t\022\027\n\017" - + "max_age_seconds\030\004 \001(\005\032M\n\nEncryption\022?\n\017d" - + "efault_kms_key\030\001 \001(\tB&\372A#\n!cloudkms.goog" - + "leapis.com/CryptoKey\032\354\001\n\tIamConfig\022a\n\033un" - + "iform_bucket_level_access\030\001 \001(\0132<.google" - + ".storage.v2.Bucket.IamConfig.UniformBuck" - + "etLevelAccess\022 \n\030public_access_preventio" - + "n\030\003 \001(\t\032Z\n\030UniformBucketLevelAccess\022\017\n\007e" - + "nabled\030\001 \001(\010\022-\n\tlock_time\030\002 \001(\0132\032.google" - + ".protobuf.Timestamp\032\363\005\n\tLifecycle\0226\n\004rul" - + "e\030\001 \003(\0132(.google.storage.v2.Bucket.Lifec" - + "ycle.Rule\032\255\005\n\004Rule\022?\n\006action\030\001 \001(\0132/.goo" - + "gle.storage.v2.Bucket.Lifecycle.Rule.Act" - + "ion\022E\n\tcondition\030\002 \001(\01322.google.storage." - + "v2.Bucket.Lifecycle.Rule.Condition\032-\n\006Ac" - + "tion\022\014\n\004type\030\001 \001(\t\022\025\n\rstorage_class\030\002 \001(" - + "\t\032\355\003\n\tCondition\022\025\n\010age_days\030\001 \001(\005H\000\210\001\001\022)" - + "\n\016created_before\030\002 \001(\0132\021.google.type.Dat" - + "e\022\024\n\007is_live\030\003 \001(\010H\001\210\001\001\022\037\n\022num_newer_ver" - + "sions\030\004 \001(\005H\002\210\001\001\022\035\n\025matches_storage_clas" - + "s\030\005 \003(\t\022#\n\026days_since_custom_time\030\007 \001(\005H" - + "\003\210\001\001\022-\n\022custom_time_before\030\010 \001(\0132\021.googl" - + "e.type.Date\022\'\n\032days_since_noncurrent_tim" - + "e\030\t \001(\005H\004\210\001\001\0221\n\026noncurrent_time_before\030\n" - + " \001(\0132\021.google.type.Date\022\026\n\016matches_prefi" - + "x\030\013 \003(\t\022\026\n\016matches_suffix\030\014 \003(\tB\013\n\t_age_" - + "daysB\n\n\010_is_liveB\025\n\023_num_newer_versionsB" - + "\031\n\027_days_since_custom_timeB\035\n\033_days_sinc" - + "e_noncurrent_time\0328\n\007Logging\022\022\n\nlog_buck" - + "et\030\001 \001(\t\022\031\n\021log_object_prefix\030\002 \001(\t\032\217\001\n\017" - + "RetentionPolicy\0222\n\016effective_time\030\001 \001(\0132" - + "\032.google.protobuf.Timestamp\022\021\n\tis_locked" - + "\030\002 \001(\010\0225\n\022retention_duration\030\004 \001(\0132\031.goo" - + "gle.protobuf.Duration\032\261\001\n\020SoftDeletePoli" - + "cy\022:\n\022retention_duration\030\001 \001(\0132\031.google." - + "protobuf.DurationH\000\210\001\001\0227\n\016effective_time" - + "\030\002 \001(\0132\032.google.protobuf.TimestampH\001\210\001\001B" - + "\025\n\023_retention_durationB\021\n\017_effective_tim" - + "e\032\035\n\nVersioning\022\017\n\007enabled\030\001 \001(\010\032;\n\007Webs" - + "ite\022\030\n\020main_page_suffix\030\001 \001(\t\022\026\n\016not_fou" - + "nd_page\030\002 \001(\t\032/\n\025CustomPlacementConfig\022\026" - + "\n\016data_locations\030\001 \003(\t\032\213\002\n\tAutoclass\022\017\n\007" - + "enabled\030\001 \001(\010\0224\n\013toggle_time\030\002 \001(\0132\032.goo" - + "gle.protobuf.TimestampB\003\340A\003\022#\n\026terminal_" - + "storage_class\030\003 \001(\tH\000\210\001\001\022P\n\"terminal_sto" - + "rage_class_update_time\030\004 \001(\0132\032.google.pr" - + "otobuf.TimestampB\003\340A\003H\001\210\001\001B\031\n\027_terminal_" - + "storage_classB%\n#_terminal_storage_class" - + "_update_time\032-\n\025HierarchicalNamespace\022\024\n" - + "\007enabled\030\001 \001(\010B\003\340A\001\032-\n\013LabelsEntry\022\013\n\003ke" - + "y\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:X\352AU\n\035storage" - + ".googleapis.com/Bucket\022#projects/{projec" - + "t}/buckets/{bucket}*\007buckets2\006bucket\"\316\001\n" - + "\023BucketAccessControl\022\014\n\004role\030\001 \001(\t\022\n\n\002id" - + "\030\002 \001(\t\022\016\n\006entity\030\003 \001(\t\022\027\n\nentity_alt\030\t \001" - + "(\tB\003\340A\003\022\021\n\tentity_id\030\004 \001(\t\022\014\n\004etag\030\010 \001(\t" - + "\022\r\n\005email\030\005 \001(\t\022\016\n\006domain\030\006 \001(\t\0224\n\014proje" - + "ct_team\030\007 \001(\0132\036.google.storage.v2.Projec" - + "tTeam\"I\n\017ChecksummedData\022\026\n\007content\030\001 \001(" - + "\014B\005\010\001\340A\001\022\023\n\006crc32c\030\002 \001(\007H\000\210\001\001B\t\n\007_crc32c" - + "\"C\n\017ObjectChecksums\022\023\n\006crc32c\030\001 \001(\007H\000\210\001\001" - + "\022\020\n\010md5_hash\030\002 \001(\014B\t\n\007_crc32c\"L\n\022Custome" - + "rEncryption\022\034\n\024encryption_algorithm\030\001 \001(" - + "\t\022\030\n\020key_sha256_bytes\030\003 \001(\014\"\337\n\n\006Object\022\021" - + "\n\004name\030\001 \001(\tB\003\340A\005\0225\n\006bucket\030\002 \001(\tB%\340A\005\372A" - + "\037\n\035storage.googleapis.com/Bucket\022\014\n\004etag" - + "\030\033 \001(\t\022\027\n\ngeneration\030\003 \001(\003B\003\340A\005\022\037\n\rresto" - + "re_token\030# \001(\tB\003\340A\003H\000\210\001\001\022\033\n\016metagenerati" - + "on\030\004 \001(\003B\003\340A\003\022\025\n\rstorage_class\030\005 \001(\t\022\021\n\004" - + "size\030\006 \001(\003B\003\340A\003\022\030\n\020content_encoding\030\007 \001(" - + "\t\022\033\n\023content_disposition\030\010 \001(\t\022\025\n\rcache_" - + "control\030\t \001(\t\0223\n\003acl\030\n \003(\0132&.google.stor" - + "age.v2.ObjectAccessControl\022\030\n\020content_la" - + "nguage\030\013 \001(\t\0224\n\013delete_time\030\014 \001(\0132\032.goog" - + "le.protobuf.TimestampB\003\340A\003\022\024\n\014content_ty" - + "pe\030\r \001(\t\0224\n\013create_time\030\016 \001(\0132\032.google.p" - + "rotobuf.TimestampB\003\340A\003\022\034\n\017component_coun" - + "t\030\017 \001(\005B\003\340A\003\022:\n\tchecksums\030\020 \001(\0132\".google" - + ".storage.v2.ObjectChecksumsB\003\340A\003\0224\n\013upda" - + "te_time\030\021 \001(\0132\032.google.protobuf.Timestam" - + "pB\003\340A\003\0227\n\007kms_key\030\022 \001(\tB&\372A#\n!cloudkms.g" - + "oogleapis.com/CryptoKey\022B\n\031update_storag" - + "e_class_time\030\023 \001(\0132\032.google.protobuf.Tim" - + "estampB\003\340A\003\022\026\n\016temporary_hold\030\024 \001(\010\0229\n\025r" - + "etention_expire_time\030\025 \001(\0132\032.google.prot" - + "obuf.Timestamp\0229\n\010metadata\030\026 \003(\0132\'.googl" - + "e.storage.v2.Object.MetadataEntry\022\035\n\020eve" - + "nt_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\022B\n\023custom" - + "er_encryption\030\031 \001(\0132%.google.storage.v2." - + "CustomerEncryption\022/\n\013custom_time\030\032 \001(\0132" - + "\032.google.protobuf.Timestamp\022>\n\020soft_dele" - + "te_time\030\034 \001(\0132\032.google.protobuf.Timestam" - + "pB\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\032/\n\rM" - + "etadataEntry\022\013\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_h" - + "oldB\023\n\021_soft_delete_timeB\023\n\021_hard_delete" - + "_time\"\316\001\n\023ObjectAccessControl\022\014\n\004role\030\001 " - + "\001(\t\022\n\n\002id\030\002 \001(\t\022\016\n\006entity\030\003 \001(\t\022\027\n\nentit" - + "y_alt\030\t \001(\tB\003\340A\003\022\021\n\tentity_id\030\004 \001(\t\022\014\n\004e" - + "tag\030\010 \001(\t\022\r\n\005email\030\005 \001(\t\022\016\n\006domain\030\006 \001(\t" - + "\0224\n\014project_team\030\007 \001(\0132\036.google.storage.", - "v2.ProjectTeam\"l\n\023ListObjectsResponse\022*\n" - + "\007objects\030\001 \003(\0132\031.google.storage.v2.Objec" - + "t\022\020\n\010prefixes\030\002 \003(\t\022\027\n\017next_page_token\030\003" - + " \001(\t\"3\n\013ProjectTeam\022\026\n\016project_number\030\001 " - + "\001(\t\022\014\n\004team\030\002 \001(\t\"*\n\005Owner\022\016\n\006entity\030\001 \001" - + "(\t\022\021\n\tentity_id\030\002 \001(\t\"C\n\014ContentRange\022\r\n" - + "\005start\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\022\027\n\017complete_le" - + "ngth\030\003 \001(\0032\214\034\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" - + "\004name\022\013{bucket=**}\022o\n\tGetBucket\022#.google" - + ".storage.v2.GetBucketRequest\032\031.google.st" - + "orage.v2.Bucket\"\"\332A\004name\212\323\344\223\002\025\022\023\n\004name\022\013" - + "{bucket=**}\022\253\001\n\014CreateBucket\022&.google.st" - + "orage.v2.CreateBucketRequest\032\031.google.st" - + "orage.v2.Bucket\"X\332A\027parent,bucket,bucket" - + "_id\212\323\344\223\0028\022\026\n\006parent\022\014{project=**}\022\036\n\016buc" - + "ket.project\022\014{project=**}\022\205\001\n\013ListBucket" - + "s\022%.google.storage.v2.ListBucketsRequest" - + "\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" - + ".storage.v2.LockBucketRetentionPolicyReq" - + "uest\032\031.google.storage.v2.Bucket\"&\332A\006buck" - + "et\212\323\344\223\002\027\022\025\n\006bucket\022\013{bucket=**}\022u\n\014GetIa" - + "mPolicy\022\".google.iam.v1.GetIamPolicyRequ" - + "est\032\025.google.iam.v1.Policy\"*\332A\010resource\212" - + "\323\344\223\002\031\022\027\n\010resource\022\013{bucket=**}\022|\n\014SetIam" - + "Policy\022\".google.iam.v1.SetIamPolicyReque" - + "st\032\025.google.iam.v1.Policy\"1\332A\017resource,p" - + "olicy\212\323\344\223\002\031\022\027\n\010resource\022\013{bucket=**}\022\226\002\n" - + "\022TestIamPermissions\022(.google.iam.v1.Test" - + "IamPermissionsRequest\032).google.iam.v1.Te" - + "stIamPermissionsResponse\"\252\001\332A\024resource,p" - + "ermissions\212\323\344\223\002\214\001\022\027\n\010resource\022\013{bucket=*" - + "*}\0224\n\010resource\022({bucket=projects/*/bucke" - + "ts/*}/objects/**\022;\n\010resource\022/{bucket=pr" - + "ojects/*/buckets/*}/managedFolders/**\022\212\001" - + "\n\014UpdateBucket\022&.google.storage.v2.Updat" - + "eBucketRequest\032\031.google.storage.v2.Bucke" - + "t\"7\332A\022bucket,update_mask\212\323\344\223\002\034\022\032\n\013bucket" - + ".name\022\013{bucket=**}\022~\n\rComposeObject\022\'.go" - + "ogle.storage.v2.ComposeObjectRequest\032\031.g" - + "oogle.storage.v2.Object\")\212\323\344\223\002#\022!\n\022desti" - + "nation.bucket\022\013{bucket=**}\022\230\001\n\014DeleteObj" - + "ect\022&.google.storage.v2.DeleteObjectRequ" - + "est\032\026.google.protobuf.Empty\"H\332A\rbucket,o" - + "bject\332A\030bucket,object,generation\212\323\344\223\002\027\022\025" - + "\n\006bucket\022\013{bucket=**}\022\215\001\n\rRestoreObject\022" - + "\'.google.storage.v2.RestoreObjectRequest" - + "\032\031.google.storage.v2.Object\"8\332A\030bucket,o" - + "bject,generation\212\323\344\223\002\027\022\025\n\006bucket\022\013{bucke" - + "t=**}\022\272\001\n\024CancelResumableWrite\022..google." - + "storage.v2.CancelResumableWriteRequest\032/" - + ".google.storage.v2.CancelResumableWriteR" - + "esponse\"A\332A\tupload_id\212\323\344\223\002/\022-\n\tupload_id" - + "\022 {bucket=projects/*/buckets/*}/**\022\225\001\n\tG" - + "etObject\022#.google.storage.v2.GetObjectRe" - + "quest\032\031.google.storage.v2.Object\"H\332A\rbuc" - + "ket,object\332A\030bucket,object,generation\212\323\344" - + "\223\002\027\022\025\n\006bucket\022\013{bucket=**}\022\245\001\n\nReadObjec" - + "t\022$.google.storage.v2.ReadObjectRequest\032" - + "%.google.storage.v2.ReadObjectResponse\"H" - + "\332A\rbucket,object\332A\030bucket,object,generat" - + "ion\212\323\344\223\002\027\022\025\n\006bucket\022\013{bucket=**}0\001\022\214\001\n\014U" - + "pdateObject\022&.google.storage.v2.UpdateOb" - + "jectRequest\032\031.google.storage.v2.Object\"9" - + "\332A\022object,update_mask\212\323\344\223\002\036\022\034\n\robject.bu" - + "cket\022\013{bucket=**}\022`\n\013WriteObject\022%.googl" - + "e.storage.v2.WriteObjectRequest\032&.google" - + ".storage.v2.WriteObjectResponse\"\000(\001\022n\n\017B" - + "idiWriteObject\022).google.storage.v2.BidiW" - + "riteObjectRequest\032*.google.storage.v2.Bi" - + "diWriteObjectResponse\"\000(\0010\001\022\204\001\n\013ListObje" - + "cts\022%.google.storage.v2.ListObjectsReque" - + "st\032&.google.storage.v2.ListObjectsRespon" - + "se\"&\332A\006parent\212\323\344\223\002\027\022\025\n\006parent\022\013{bucket=*" - + "*}\022\230\001\n\rRewriteObject\022\'.google.storage.v2" - + ".RewriteObjectRequest\032\".google.storage.v" - + "2.RewriteResponse\":\212\323\344\223\0024\022\017\n\rsource_buck" - + "et\022!\n\022destination_bucket\022\013{bucket=**}\022\256\001" - + "\n\023StartResumableWrite\022-.google.storage.v" - + "2.StartResumableWriteRequest\032..google.st" - + "orage.v2.StartResumableWriteResponse\"8\212\323" - + "\344\223\0022\0220\n!write_object_spec.resource.bucke" - + "t\022\013{bucket=**}\022\256\001\n\020QueryWriteStatus\022*.go" - + "ogle.storage.v2.QueryWriteStatusRequest\032" - + "+.google.storage.v2.QueryWriteStatusResp" - + "onse\"A\332A\tupload_id\212\323\344\223\002/\022-\n\tupload_id\022 {" - + "bucket=projects/*/buckets/*}/**\032\247\002\312A\026sto" - + "rage.googleapis.com\322A\212\002https://www.googl" - + "eapis.com/auth/cloud-platform,https://ww" - + "w.googleapis.com/auth/cloud-platform.rea" - + "d-only,https://www.googleapis.com/auth/d" - + "evstorage.full_control,https://www.googl" - + "eapis.com/auth/devstorage.read_only,http" - + "s://www.googleapis.com/auth/devstorage.r" - + "ead_writeB\342\001\n\025com.google.storage.v2B\014Sto" - + "rageProtoP\001Z>cloud.google.com/go/storage" - + "/internal/apiv2/storagepb;storagepb\352Ax\n!" - + "cloudkms.googleapis.com/CryptoKey\022Sproje" - + "cts/{project}/locations/{location}/keyRi" - + "ngs/{key_ring}/cryptoKeys/{crypto_key}b\006" - + "proto3" + + ".storage.v2.Object\"\367\005\n\021MoveObjectRequest" + + "\0225\n\006bucket\030\001 \001(\tB%\340A\002\372A\037\n\035storage.google" + + "apis.com/Bucket\022\032\n\rsource_object\030\002 \001(\tB\003" + + "\340A\002\022\037\n\022destination_object\030\003 \001(\tB\003\340A\002\022,\n\032" + + "if_source_generation_match\030\004 \001(\003B\003\340A\001H\000\210" + + "\001\001\0220\n\036if_source_generation_not_match\030\005 \001" + + "(\003B\003\340A\001H\001\210\001\001\0220\n\036if_source_metageneration" + + "_match\030\006 \001(\003B\003\340A\001H\002\210\001\001\0224\n\"if_source_meta" + + "generation_not_match\030\007 \001(\003B\003\340A\001H\003\210\001\001\022%\n\023" + + "if_generation_match\030\010 \001(\003B\003\340A\001H\004\210\001\001\022)\n\027i" + + "f_generation_not_match\030\t \001(\003B\003\340A\001H\005\210\001\001\022)" + + "\n\027if_metageneration_match\030\n \001(\003B\003\340A\001H\006\210\001" + + "\001\022-\n\033if_metageneration_not_match\030\013 \001(\003B\003" + + "\340A\001H\007\210\001\001B\035\n\033_if_source_generation_matchB" + + "!\n\037_if_source_generation_not_matchB!\n\037_i" + + "f_source_metageneration_matchB%\n#_if_sou" + + "rce_metageneration_not_matchB\026\n\024_if_gene" + + "ration_matchB\032\n\030_if_generation_not_match" + + "B\032\n\030_if_metageneration_matchB\036\n\034_if_meta" + + "generation_not_match\"\362\001\n\032StartResumableW" + + "riteRequest\022B\n\021write_object_spec\030\001 \001(\0132\"" + + ".google.storage.v2.WriteObjectSpecB\003\340A\002\022" + + "R\n\034common_object_request_params\030\003 \001(\0132,." + + "google.storage.v2.CommonObjectRequestPar" + + "ams\022<\n\020object_checksums\030\005 \001(\0132\".google.s" + + "torage.v2.ObjectChecksums\"0\n\033StartResuma" + + "bleWriteResponse\022\021\n\tupload_id\030\001 \001(\t\"\357\003\n\023" + + "UpdateObjectRequest\022.\n\006object\030\001 \001(\0132\031.go" + + "ogle.storage.v2.ObjectB\003\340A\002\022 \n\023if_genera" + + "tion_match\030\002 \001(\003H\000\210\001\001\022$\n\027if_generation_n" + + "ot_match\030\003 \001(\003H\001\210\001\001\022$\n\027if_metageneration" + + "_match\030\004 \001(\003H\002\210\001\001\022(\n\033if_metageneration_n" + + "ot_match\030\005 \001(\003H\003\210\001\001\022\026\n\016predefined_acl\030\n " + + "\001(\t\0224\n\013update_mask\030\007 \001(\0132\032.google.protob" + + "uf.FieldMaskB\003\340A\002\022R\n\034common_object_reque" + + "st_params\030\010 \001(\0132,.google.storage.v2.Comm" + + "onObjectRequestParamsB\026\n\024_if_generation_" + + "matchB\032\n\030_if_generation_not_matchB\032\n\030_if" + + "_metageneration_matchB\036\n\034_if_metagenerat" + + "ion_not_match\"|\n\031CommonObjectRequestPara" + + "ms\022\034\n\024encryption_algorithm\030\001 \001(\t\022\034\n\024encr" + + "yption_key_bytes\030\004 \001(\014\022#\n\033encryption_key" + + "_sha256_bytes\030\005 \001(\014\"\312\005\n\020ServiceConstants" + + "\"\265\005\n\006Values\022\026\n\022VALUES_UNSPECIFIED\020\000\022\033\n\024M" + + "AX_READ_CHUNK_BYTES\020\200\200\200\001\022\034\n\025MAX_WRITE_CH" + + "UNK_BYTES\020\200\200\200\001\022\031\n\022MAX_OBJECT_SIZE_MB\020\200\200\300" + + "\002\022)\n$MAX_CUSTOM_METADATA_FIELD_NAME_BYTE" + + "S\020\200\010\022*\n%MAX_CUSTOM_METADATA_FIELD_VALUE_" + + "BYTES\020\200 \022)\n$MAX_CUSTOM_METADATA_TOTAL_SI" + + "ZE_BYTES\020\200@\022*\n$MAX_BUCKET_METADATA_TOTAL" + + "_SIZE_BYTES\020\200\240\001\022\'\n#MAX_NOTIFICATION_CONF" + + "IGS_PER_BUCKET\020d\022\"\n\036MAX_LIFECYCLE_RULES_" + + "PER_BUCKET\020d\022&\n\"MAX_NOTIFICATION_CUSTOM_" + + "ATTRIBUTES\020\005\0221\n,MAX_NOTIFICATION_CUSTOM_" + + "ATTRIBUTE_KEY_LENGTH\020\200\002\0223\n.MAX_NOTIFICAT" + + "ION_CUSTOM_ATTRIBUTE_VALUE_LENGTH\020\200\010\022\034\n\030" + + "MAX_LABELS_ENTRIES_COUNT\020@\022\037\n\033MAX_LABELS" + + "_KEY_VALUE_LENGTH\020?\022\037\n\032MAX_LABELS_KEY_VA" + + "LUE_BYTES\020\200\001\022.\n)MAX_OBJECT_IDS_PER_DELET" + + "E_OBJECTS_REQUEST\020\350\007\022\036\n\032SPLIT_TOKEN_MAX_" + + "VALID_DAYS\020\016\032\002\020\001\"\243\034\n\006Bucket\022\021\n\004name\030\001 \001(" + + "\tB\003\340A\005\022\026\n\tbucket_id\030\002 \001(\tB\003\340A\003\022\014\n\004etag\030\035" + + " \001(\t\022D\n\007project\030\003 \001(\tB3\340A\005\372A-\n+cloudreso" + + "urcemanager.googleapis.com/Project\022\033\n\016me" + + "tageneration\030\004 \001(\003B\003\340A\003\022\025\n\010location\030\005 \001(" + + "\tB\003\340A\005\022\032\n\rlocation_type\030\006 \001(\tB\003\340A\003\022\025\n\rst" + + "orage_class\030\007 \001(\t\022\013\n\003rpo\030\033 \001(\t\0223\n\003acl\030\010 " + + "\003(\0132&.google.storage.v2.BucketAccessCont" + + "rol\022B\n\022default_object_acl\030\t \003(\0132&.google" + + ".storage.v2.ObjectAccessControl\0226\n\tlifec" + + "ycle\030\n \001(\0132#.google.storage.v2.Bucket.Li" + + "fecycle\0224\n\013create_time\030\013 \001(\0132\032.google.pr" + + "otobuf.TimestampB\003\340A\003\022,\n\004cors\030\014 \003(\0132\036.go" + + "ogle.storage.v2.Bucket.Cors\0224\n\013update_ti" + + "me\030\r \001(\0132\032.google.protobuf.TimestampB\003\340A" + + "\003\022 \n\030default_event_based_hold\030\016 \001(\010\0225\n\006l" + + "abels\030\017 \003(\0132%.google.storage.v2.Bucket.L" + + "abelsEntry\0222\n\007website\030\020 \001(\0132!.google.sto" + + "rage.v2.Bucket.Website\0228\n\nversioning\030\021 \001" + + "(\0132$.google.storage.v2.Bucket.Versioning" + + "\0222\n\007logging\030\022 \001(\0132!.google.storage.v2.Bu" + + "cket.Logging\022,\n\005owner\030\023 \001(\0132\030.google.sto" + + "rage.v2.OwnerB\003\340A\003\0228\n\nencryption\030\024 \001(\0132$" + + ".google.storage.v2.Bucket.Encryption\0222\n\007" + + "billing\030\025 \001(\0132!.google.storage.v2.Bucket" + + ".Billing\022C\n\020retention_policy\030\026 \001(\0132).goo" + + "gle.storage.v2.Bucket.RetentionPolicy\0227\n" + + "\niam_config\030\027 \001(\0132#.google.storage.v2.Bu" + + "cket.IamConfig\022\025\n\rsatisfies_pzs\030\031 \001(\010\022P\n" + + "\027custom_placement_config\030\032 \001(\0132/.google." + + "storage.v2.Bucket.CustomPlacementConfig\022" + + "6\n\tautoclass\030\034 \001(\0132#.google.storage.v2.B" + + "ucket.Autoclass\022T\n\026hierarchical_namespac" + + "e\030 \001(\0132/.google.storage.v2.Bucket.Hiera" + + "rchicalNamespaceB\003\340A\001\022K\n\022soft_delete_pol" + + "icy\030\037 \001(\0132*.google.storage.v2.Bucket.Sof" + + "tDeletePolicyB\003\340A\001\032!\n\007Billing\022\026\n\016request" + + "er_pays\030\001 \001(\010\032X\n\004Cors\022\016\n\006origin\030\001 \003(\t\022\016\n" + + "\006method\030\002 \003(\t\022\027\n\017response_header\030\003 \003(\t\022\027" + + "\n\017max_age_seconds\030\004 \001(\005\032M\n\nEncryption\022?\n" + + "\017default_kms_key\030\001 \001(\tB&\372A#\n!cloudkms.go" + + "ogleapis.com/CryptoKey\032\354\001\n\tIamConfig\022a\n\033" + + "uniform_bucket_level_access\030\001 \001(\0132<.goog" + + "le.storage.v2.Bucket.IamConfig.UniformBu" + + "cketLevelAccess\022 \n\030public_access_prevent" + + "ion\030\003 \001(\t\032Z\n\030UniformBucketLevelAccess\022\017\n" + + "\007enabled\030\001 \001(\010\022-\n\tlock_time\030\002 \001(\0132\032.goog" + + "le.protobuf.Timestamp\032\363\005\n\tLifecycle\0226\n\004r" + + "ule\030\001 \003(\0132(.google.storage.v2.Bucket.Lif" + + "ecycle.Rule\032\255\005\n\004Rule\022?\n\006action\030\001 \001(\0132/.g" + + "oogle.storage.v2.Bucket.Lifecycle.Rule.A" + + "ction\022E\n\tcondition\030\002 \001(\01322.google.storag" + + "e.v2.Bucket.Lifecycle.Rule.Condition\032-\n\006" + + "Action\022\014\n\004type\030\001 \001(\t\022\025\n\rstorage_class\030\002 " + + "\001(\t\032\355\003\n\tCondition\022\025\n\010age_days\030\001 \001(\005H\000\210\001\001" + + "\022)\n\016created_before\030\002 \001(\0132\021.google.type.D" + + "ate\022\024\n\007is_live\030\003 \001(\010H\001\210\001\001\022\037\n\022num_newer_v" + + "ersions\030\004 \001(\005H\002\210\001\001\022\035\n\025matches_storage_cl" + + "ass\030\005 \003(\t\022#\n\026days_since_custom_time\030\007 \001(" + + "\005H\003\210\001\001\022-\n\022custom_time_before\030\010 \001(\0132\021.goo" + + "gle.type.Date\022\'\n\032days_since_noncurrent_t" + + "ime\030\t \001(\005H\004\210\001\001\0221\n\026noncurrent_time_before" + + "\030\n \001(\0132\021.google.type.Date\022\026\n\016matches_pre" + + "fix\030\013 \003(\t\022\026\n\016matches_suffix\030\014 \003(\tB\013\n\t_ag" + + "e_daysB\n\n\010_is_liveB\025\n\023_num_newer_version" + + "sB\031\n\027_days_since_custom_timeB\035\n\033_days_si" + + "nce_noncurrent_time\0328\n\007Logging\022\022\n\nlog_bu" + + "cket\030\001 \001(\t\022\031\n\021log_object_prefix\030\002 \001(\t\032\217\001" + + "\n\017RetentionPolicy\0222\n\016effective_time\030\001 \001(" + + "\0132\032.google.protobuf.Timestamp\022\021\n\tis_lock" + + "ed\030\002 \001(\010\0225\n\022retention_duration\030\004 \001(\0132\031.g" + + "oogle.protobuf.Duration\032\261\001\n\020SoftDeletePo" + + "licy\022:\n\022retention_duration\030\001 \001(\0132\031.googl" + + "e.protobuf.DurationH\000\210\001\001\0227\n\016effective_ti" + + "me\030\002 \001(\0132\032.google.protobuf.TimestampH\001\210\001" + + "\001B\025\n\023_retention_durationB\021\n\017_effective_t" + + "ime\032\035\n\nVersioning\022\017\n\007enabled\030\001 \001(\010\032;\n\007We" + + "bsite\022\030\n\020main_page_suffix\030\001 \001(\t\022\026\n\016not_f" + + "ound_page\030\002 \001(\t\032/\n\025CustomPlacementConfig" + + "\022\026\n\016data_locations\030\001 \003(\t\032\213\002\n\tAutoclass\022\017" + + "\n\007enabled\030\001 \001(\010\0224\n\013toggle_time\030\002 \001(\0132\032.g" + + "oogle.protobuf.TimestampB\003\340A\003\022#\n\026termina" + + "l_storage_class\030\003 \001(\tH\000\210\001\001\022P\n\"terminal_s" + + "torage_class_update_time\030\004 \001(\0132\032.google." + + "protobuf.TimestampB\003\340A\003H\001\210\001\001B\031\n\027_termina" + + "l_storage_classB%\n#_terminal_storage_cla" + + "ss_update_time\032-\n\025HierarchicalNamespace\022" + + "\024\n\007enabled\030\001 \001(\010B\003\340A\001\032-\n\013LabelsEntry\022\013\n\003" + + "key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:X\352AU\n\035stora" + + "ge.googleapis.com/Bucket\022#projects/{proj" + + "ect}/buckets/{bucket}*\007buckets2\006bucket\"\316" + + "\001\n\023BucketAccessControl\022\014\n\004role\030\001 \001(\t\022\n\n\002" + + "id\030\002 \001(\t\022\016\n\006entity\030\003 \001(\t\022\027\n\nentity_alt\030\t" + + " \001(\tB\003\340A\003\022\021\n\tentity_id\030\004 \001(\t\022\014\n\004etag\030\010 \001" + + "(\t\022\r\n\005email\030\005 \001(\t\022\016\n\006domain\030\006 \001(\t\0224\n\014pro" + + "ject_team\030\007 \001(\0132\036.google.storage.v2.Proj" + + "ectTeam\"I\n\017ChecksummedData\022\026\n\007content\030\001 " + + "\001(\014B\005\010\001\340A\001\022\023\n\006crc32c\030\002 \001(\007H\000\210\001\001B\t\n\007_crc3" + + "2c\"C\n\017ObjectChecksums\022\023\n\006crc32c\030\001 \001(\007H\000\210" + + "\001\001\022\020\n\010md5_hash\030\002 \001(\014B\t\n\007_crc32c\"L\n\022Custo" + + "merEncryption\022\034\n\024encryption_algorithm\030\001 " + + "\001(\t\022\030\n\020key_sha256_bytes\030\003 \001(\014\"\227\013\n\006Object" + + "\022\021\n\004name\030\001 \001(\tB\003\340A\005\0225\n\006bucket\030\002 \001(\tB%\340A\005" + + "\372A\037\n\035storage.googleapis.com/Bucket\022\014\n\004et" + + "ag\030\033 \001(\t\022\027\n\ngeneration\030\003 \001(\003B\003\340A\005\022\037\n\rres" + + "tore_token\030# \001(\tB\003\340A\003H\000\210\001\001\022\033\n\016metagenera" + + "tion\030\004 \001(\003B\003\340A\003\022\025\n\rstorage_class\030\005 \001(\t\022\021" + + "\n\004size\030\006 \001(\003B\003\340A\003\022\030\n\020content_encoding\030\007 " + + "\001(\t\022\033\n\023content_disposition\030\010 \001(\t\022\025\n\rcach" + + "e_control\030\t \001(\t\0223\n\003acl\030\n \003(\0132&.google.st" + + "orage.v2.ObjectAccessControl\022\030\n\020content_" + + "language\030\013 \001(\t\0224\n\013delete_time\030\014 \001(\0132\032.go" + + "ogle.protobuf.TimestampB\003\340A\003\0226\n\rfinalize" + + "_time\030$ \001(\0132\032.google.protobuf.TimestampB" + + "\003\340A\003\022\024\n\014content_type\030\r \001(\t\0224\n\013create_tim" + + "e\030\016 \001(\0132\032.google.protobuf.TimestampB\003\340A\003" + + "\022\034\n\017component_count\030\017 \001(\005B\003\340A\003\022:\n\tchecks" + + "ums\030\020 \001(\0132\".google.storage.v2.ObjectChec" + + "ksumsB\003\340A\003\0224\n\013update_time\030\021 \001(\0132\032.google" + + ".protobuf.TimestampB\003\340A\003\0227\n\007kms_key\030\022 \001(" + + "\tB&\372A#\n!cloudkms.googleapis.com/CryptoKe" + + "y\022B\n\031update_storage_class_time\030\023 \001(\0132\032.g", + "oogle.protobuf.TimestampB\003\340A\003\022\026\n\016tempora" + + "ry_hold\030\024 \001(\010\0229\n\025retention_expire_time\030\025" + + " \001(\0132\032.google.protobuf.Timestamp\0229\n\010meta" + + "data\030\026 \003(\0132\'.google.storage.v2.Object.Me" + + "tadataEntry\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.Ow" + + "nerB\003\340A\003\022B\n\023customer_encryption\030\031 \001(\0132%." + + "google.storage.v2.CustomerEncryption\022/\n\013" + + "custom_time\030\032 \001(\0132\032.google.protobuf.Time" + + "stamp\022>\n\020soft_delete_time\030\034 \001(\0132\032.google" + + ".protobuf.TimestampB\003\340A\003H\002\210\001\001\022>\n\020hard_de" + + "lete_time\030\035 \001(\0132\032.google.protobuf.Timest" + + "ampB\003\340A\003H\003\210\001\001\032/\n\rMetadataEntry\022\013\n\003key\030\001 " + + "\001(\t\022\r\n\005value\030\002 \001(\t:\0028\001B\020\n\016_restore_token" + + "B\023\n\021_event_based_holdB\023\n\021_soft_delete_ti" + + "meB\023\n\021_hard_delete_time\"\316\001\n\023ObjectAccess" + + "Control\022\014\n\004role\030\001 \001(\t\022\n\n\002id\030\002 \001(\t\022\016\n\006ent" + + "ity\030\003 \001(\t\022\027\n\nentity_alt\030\t \001(\tB\003\340A\003\022\021\n\ten" + + "tity_id\030\004 \001(\t\022\014\n\004etag\030\010 \001(\t\022\r\n\005email\030\005 \001" + + "(\t\022\016\n\006domain\030\006 \001(\t\0224\n\014project_team\030\007 \001(\013" + + "2\036.google.storage.v2.ProjectTeam\"l\n\023List" + + "ObjectsResponse\022*\n\007objects\030\001 \003(\0132\031.googl" + + "e.storage.v2.Object\022\020\n\010prefixes\030\002 \003(\t\022\027\n" + + "\017next_page_token\030\003 \001(\t\"3\n\013ProjectTeam\022\026\n" + + "\016project_number\030\001 \001(\t\022\014\n\004team\030\002 \001(\t\"*\n\005O" + + "wner\022\016\n\006entity\030\001 \001(\t\022\021\n\tentity_id\030\002 \001(\t\"" + + "C\n\014ContentRange\022\r\n\005start\030\001 \001(\003\022\013\n\003end\030\002 " + + "\001(\003\022\027\n\017complete_length\030\003 \001(\0032\245\035\n\007Storage" + + "\022r\n\014DeleteBucket\022&.google.storage.v2.Del" + + "eteBucketRequest\032\026.google.protobuf.Empty" + + "\"\"\332A\004name\212\323\344\223\002\025\022\023\n\004name\022\013{bucket=**}\022o\n\t" + + "GetBucket\022#.google.storage.v2.GetBucketR" + + "equest\032\031.google.storage.v2.Bucket\"\"\332A\004na" + + "me\212\323\344\223\002\025\022\023\n\004name\022\013{bucket=**}\022\253\001\n\014Create" + + "Bucket\022&.google.storage.v2.CreateBucketR" + + "equest\032\031.google.storage.v2.Bucket\"X\332A\027pa" + + "rent,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&.google.storage.v2.L" + + "istBucketsResponse\"\'\332A\006parent\212\323\344\223\002\030\022\026\n\006p" + + "arent\022\014{project=**}\022\223\001\n\031LockBucketRetent" + + "ionPolicy\0223.google.storage.v2.LockBucket" + + "RetentionPolicyRequest\032\031.google.storage." + + "v2.Bucket\"&\332A\006bucket\212\323\344\223\002\027\022\025\n\006bucket\022\013{b" + + "ucket=**}\022u\n\014GetIamPolicy\022\".google.iam.v" + + "1.GetIamPolicyRequest\032\025.google.iam.v1.Po" + + "licy\"*\332A\010resource\212\323\344\223\002\031\022\027\n\010resource\022\013{bu" + + "cket=**}\022|\n\014SetIamPolicy\022\".google.iam.v1" + + ".SetIamPolicyRequest\032\025.google.iam.v1.Pol" + + "icy\"1\332A\017resource,policy\212\323\344\223\002\031\022\027\n\010resourc" + + "e\022\013{bucket=**}\022\226\002\n\022TestIamPermissions\022(." + + "google.iam.v1.TestIamPermissionsRequest\032" + + ").google.iam.v1.TestIamPermissionsRespon" + + "se\"\252\001\332A\024resource,permissions\212\323\344\223\002\214\001\022\027\n\010r" + + "esource\022\013{bucket=**}\0224\n\010resource\022({bucke" + + "t=projects/*/buckets/*}/objects/**\022;\n\010re" + + "source\022/{bucket=projects/*/buckets/*}/ma" + + "nagedFolders/**\022\212\001\n\014UpdateBucket\022&.googl" + + "e.storage.v2.UpdateBucketRequest\032\031.googl" + + "e.storage.v2.Bucket\"7\332A\022bucket,update_ma" + + "sk\212\323\344\223\002\034\022\032\n\013bucket.name\022\013{bucket=**}\022~\n\r" + + "ComposeObject\022\'.google.storage.v2.Compos" + + "eObjectRequest\032\031.google.storage.v2.Objec" + + "t\")\212\323\344\223\002#\022!\n\022destination.bucket\022\013{bucket" + + "=**}\022\230\001\n\014DeleteObject\022&.google.storage.v" + + "2.DeleteObjectRequest\032\026.google.protobuf." + + "Empty\"H\332A\rbucket,object\332A\030bucket,object," + + "generation\212\323\344\223\002\027\022\025\n\006bucket\022\013{bucket=**}\022" + + "\215\001\n\rRestoreObject\022\'.google.storage.v2.Re" + + "storeObjectRequest\032\031.google.storage.v2.O" + + "bject\"8\332A\030bucket,object,generation\212\323\344\223\002\027" + + "\022\025\n\006bucket\022\013{bucket=**}\022\272\001\n\024CancelResuma" + + "bleWrite\022..google.storage.v2.CancelResum" + + "ableWriteRequest\032/.google.storage.v2.Can" + + "celResumableWriteResponse\"A\332A\tupload_id\212" + + "\323\344\223\002/\022-\n\tupload_id\022 {bucket=projects/*/b" + + "uckets/*}/**\022\225\001\n\tGetObject\022#.google.stor" + + "age.v2.GetObjectRequest\032\031.google.storage" + + ".v2.Object\"H\332A\rbucket,object\332A\030bucket,ob" + + "ject,generation\212\323\344\223\002\027\022\025\n\006bucket\022\013{bucket" + + "=**}\022\245\001\n\nReadObject\022$.google.storage.v2." + + "ReadObjectRequest\032%.google.storage.v2.Re" + + "adObjectResponse\"H\332A\rbucket,object\332A\030buc" + + "ket,object,generation\212\323\344\223\002\027\022\025\n\006bucket\022\013{" + + "bucket=**}0\001\022\214\001\n\014UpdateObject\022&.google.s" + + "torage.v2.UpdateObjectRequest\032\031.google.s" + + "torage.v2.Object\"9\332A\022object,update_mask\212" + + "\323\344\223\002\036\022\034\n\robject.bucket\022\013{bucket=**}\022`\n\013W" + + "riteObject\022%.google.storage.v2.WriteObje" + + "ctRequest\032&.google.storage.v2.WriteObjec" + + "tResponse\"\000(\001\022n\n\017BidiWriteObject\022).googl" + + "e.storage.v2.BidiWriteObjectRequest\032*.go" + + "ogle.storage.v2.BidiWriteObjectResponse\"" + + "\000(\0010\001\022\204\001\n\013ListObjects\022%.google.storage.v" + + "2.ListObjectsRequest\032&.google.storage.v2" + + ".ListObjectsResponse\"&\332A\006parent\212\323\344\223\002\027\022\025\n" + + "\006parent\022\013{bucket=**}\022\230\001\n\rRewriteObject\022\'" + + ".google.storage.v2.RewriteObjectRequest\032" + + "\".google.storage.v2.RewriteResponse\":\212\323\344" + + "\223\0024\022\017\n\rsource_bucket\022!\n\022destination_buck" + + "et\022\013{bucket=**}\022\256\001\n\023StartResumableWrite\022" + + "-.google.storage.v2.StartResumableWriteR" + + "equest\032..google.storage.v2.StartResumabl" + + "eWriteResponse\"8\212\323\344\223\0022\0220\n!write_object_s" + + "pec.resource.bucket\022\013{bucket=**}\022\256\001\n\020Que" + + "ryWriteStatus\022*.google.storage.v2.QueryW" + + "riteStatusRequest\032+.google.storage.v2.Qu" + + "eryWriteStatusResponse\"A\332A\tupload_id\212\323\344\223" + + "\002/\022-\n\tupload_id\022 {bucket=projects/*/buck" + + "ets/*}/**\022\226\001\n\nMoveObject\022$.google.storag" + + "e.v2.MoveObjectRequest\032\031.google.storage." + + "v2.Object\"G\332A\'bucket,source_object,desti" + + "nation_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-p" + + "latform.read-only,https://www.googleapis" + + ".com/auth/devstorage.full_control,https:" + + "//www.googleapis.com/auth/devstorage.rea" + + "d_only,https://www.googleapis.com/auth/d" + + "evstorage.read_writeB\342\001\n\025com.google.stor" + + "age.v2B\014StorageProtoP\001Z>cloud.google.com" + + "/go/storage/internal/apiv2/storagepb;sto" + + "ragepb\352Ax\n!cloudkms.googleapis.com/Crypt" + + "oKey\022Sprojects/{project}/locations/{loca" + + "tion}/keyRings/{key_ring}/cryptoKeys/{cr" + + "ypto_key}b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( @@ -1128,8 +1156,26 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "TotalBytesRewritten", "ObjectSize", "Done", "RewriteToken", "Resource", }); - internal_static_google_storage_v2_StartResumableWriteRequest_descriptor = + internal_static_google_storage_v2_MoveObjectRequest_descriptor = getDescriptor().getMessageTypes().get(25); + internal_static_google_storage_v2_MoveObjectRequest_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_storage_v2_MoveObjectRequest_descriptor, + new java.lang.String[] { + "Bucket", + "SourceObject", + "DestinationObject", + "IfSourceGenerationMatch", + "IfSourceGenerationNotMatch", + "IfSourceMetagenerationMatch", + "IfSourceMetagenerationNotMatch", + "IfGenerationMatch", + "IfGenerationNotMatch", + "IfMetagenerationMatch", + "IfMetagenerationNotMatch", + }); + internal_static_google_storage_v2_StartResumableWriteRequest_descriptor = + getDescriptor().getMessageTypes().get(26); internal_static_google_storage_v2_StartResumableWriteRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_StartResumableWriteRequest_descriptor, @@ -1137,7 +1183,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "WriteObjectSpec", "CommonObjectRequestParams", "ObjectChecksums", }); internal_static_google_storage_v2_StartResumableWriteResponse_descriptor = - getDescriptor().getMessageTypes().get(26); + getDescriptor().getMessageTypes().get(27); internal_static_google_storage_v2_StartResumableWriteResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_StartResumableWriteResponse_descriptor, @@ -1145,7 +1191,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "UploadId", }); internal_static_google_storage_v2_UpdateObjectRequest_descriptor = - getDescriptor().getMessageTypes().get(27); + getDescriptor().getMessageTypes().get(28); internal_static_google_storage_v2_UpdateObjectRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_UpdateObjectRequest_descriptor, @@ -1160,7 +1206,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "CommonObjectRequestParams", }); internal_static_google_storage_v2_CommonObjectRequestParams_descriptor = - getDescriptor().getMessageTypes().get(28); + getDescriptor().getMessageTypes().get(29); internal_static_google_storage_v2_CommonObjectRequestParams_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_CommonObjectRequestParams_descriptor, @@ -1168,12 +1214,12 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "EncryptionAlgorithm", "EncryptionKeyBytes", "EncryptionKeySha256Bytes", }); internal_static_google_storage_v2_ServiceConstants_descriptor = - getDescriptor().getMessageTypes().get(29); + getDescriptor().getMessageTypes().get(30); internal_static_google_storage_v2_ServiceConstants_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_ServiceConstants_descriptor, new java.lang.String[] {}); - internal_static_google_storage_v2_Bucket_descriptor = getDescriptor().getMessageTypes().get(30); + internal_static_google_storage_v2_Bucket_descriptor = getDescriptor().getMessageTypes().get(31); internal_static_google_storage_v2_Bucket_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_Bucket_descriptor, @@ -1364,7 +1410,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Key", "Value", }); internal_static_google_storage_v2_BucketAccessControl_descriptor = - getDescriptor().getMessageTypes().get(31); + getDescriptor().getMessageTypes().get(32); internal_static_google_storage_v2_BucketAccessControl_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_BucketAccessControl_descriptor, @@ -1380,7 +1426,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "ProjectTeam", }); internal_static_google_storage_v2_ChecksummedData_descriptor = - getDescriptor().getMessageTypes().get(32); + getDescriptor().getMessageTypes().get(33); internal_static_google_storage_v2_ChecksummedData_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_ChecksummedData_descriptor, @@ -1388,7 +1434,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Content", "Crc32C", }); internal_static_google_storage_v2_ObjectChecksums_descriptor = - getDescriptor().getMessageTypes().get(33); + getDescriptor().getMessageTypes().get(34); internal_static_google_storage_v2_ObjectChecksums_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_ObjectChecksums_descriptor, @@ -1396,14 +1442,14 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Crc32C", "Md5Hash", }); internal_static_google_storage_v2_CustomerEncryption_descriptor = - getDescriptor().getMessageTypes().get(34); + getDescriptor().getMessageTypes().get(35); internal_static_google_storage_v2_CustomerEncryption_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_CustomerEncryption_descriptor, new java.lang.String[] { "EncryptionAlgorithm", "KeySha256Bytes", }); - internal_static_google_storage_v2_Object_descriptor = getDescriptor().getMessageTypes().get(35); + internal_static_google_storage_v2_Object_descriptor = getDescriptor().getMessageTypes().get(36); internal_static_google_storage_v2_Object_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_Object_descriptor, @@ -1422,6 +1468,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Acl", "ContentLanguage", "DeleteTime", + "FinalizeTime", "ContentType", "CreateTime", "ComponentCount", @@ -1448,7 +1495,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Key", "Value", }); internal_static_google_storage_v2_ObjectAccessControl_descriptor = - getDescriptor().getMessageTypes().get(36); + getDescriptor().getMessageTypes().get(37); internal_static_google_storage_v2_ObjectAccessControl_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_ObjectAccessControl_descriptor, @@ -1464,7 +1511,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "ProjectTeam", }); internal_static_google_storage_v2_ListObjectsResponse_descriptor = - getDescriptor().getMessageTypes().get(37); + getDescriptor().getMessageTypes().get(38); internal_static_google_storage_v2_ListObjectsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_ListObjectsResponse_descriptor, @@ -1472,14 +1519,14 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Objects", "Prefixes", "NextPageToken", }); internal_static_google_storage_v2_ProjectTeam_descriptor = - getDescriptor().getMessageTypes().get(38); + getDescriptor().getMessageTypes().get(39); internal_static_google_storage_v2_ProjectTeam_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_ProjectTeam_descriptor, new java.lang.String[] { "ProjectNumber", "Team", }); - internal_static_google_storage_v2_Owner_descriptor = getDescriptor().getMessageTypes().get(39); + internal_static_google_storage_v2_Owner_descriptor = getDescriptor().getMessageTypes().get(40); internal_static_google_storage_v2_Owner_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_Owner_descriptor, @@ -1487,7 +1534,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "Entity", "EntityId", }); internal_static_google_storage_v2_ContentRange_descriptor = - getDescriptor().getMessageTypes().get(40); + getDescriptor().getMessageTypes().get(41); internal_static_google_storage_v2_ContentRange_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_storage_v2_ContentRange_descriptor, diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateBucketRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateBucketRequest.java index 25fe1a4206..b42b4823bd 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateBucketRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateBucketRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateBucketRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateBucketRequestOrBuilder.java index 1029b04567..105f198a85 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateBucketRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateBucketRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateObjectRequest.java index a2f5c29615..8d50c3083a 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateObjectRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateObjectRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateObjectRequestOrBuilder.java index 5805a1ce45..ff06c3cc92 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateObjectRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/UpdateObjectRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectRequest.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectRequest.java index c7220689c5..efecfdc737 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectRequest.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectRequestOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectRequestOrBuilder.java index 68c1cee687..d738f895da 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectRequestOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectRequestOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectResponse.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectResponse.java index f348d34f21..f18ce77388 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectResponse.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectResponseOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectResponseOrBuilder.java index 6dc8d0482d..2d223e7721 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectResponseOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectResponseOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectSpec.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectSpec.java index 80dfd5b0f9..70cef9ec7b 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectSpec.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectSpec.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectSpecOrBuilder.java b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectSpecOrBuilder.java index 285e849082..43de710bca 100644 --- a/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectSpecOrBuilder.java +++ b/proto-google-cloud-storage-v2/src/main/java/com/google/storage/v2/WriteObjectSpecOrBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. 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 c7229d4e96..2671acbc4a 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 @@ -379,6 +379,15 @@ service Storage { }; option (google.api.method_signature) = "upload_id"; } + + // Moves the source object to the destination object in the same bucket. + rpc MoveObject(MoveObjectRequest) returns (Object) { + option (google.api.routing) = { + routing_parameters { field: "bucket" path_template: "{bucket=**}" } + }; + option (google.api.method_signature) = + "bucket,source_object,destination_object"; + } } // Request message for DeleteBucket. @@ -990,7 +999,8 @@ message BidiWriteObjectRequest { // Checksums for the complete object. If the checksums computed by the service // don't match the specified checksums the call will fail. May only be - // provided in last request (with finish_write set). + // provided in the first request or the + // last request (with finish_write set). ObjectChecksums object_checksums = 6; // For each BidiWriteObjectRequest where state_lookup is `true` or the client @@ -1299,6 +1309,85 @@ message RewriteResponse { Object resource = 5; } +// Request message for MoveObject. +message MoveObjectRequest { + // Required. Name of the bucket in which the object resides. + string bucket = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { type: "storage.googleapis.com/Bucket" } + ]; + + // Required. Name of the source object. + string source_object = 2 [(google.api.field_behavior) = REQUIRED]; + + // Required. Name of the destination object. + string destination_object = 3 [(google.api.field_behavior) = REQUIRED]; + + // Optional. Makes the operation conditional on whether the source object's + // current generation matches the given value. `if_source_generation_match` + // and `if_source_generation_not_match` conditions are mutually exclusive: + // it's an error for both of them to be set in the request. + optional int64 if_source_generation_match = 4 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Makes the operation conditional on whether the source object's + // current generation does not match the given value. + // `if_source_generation_match` and `if_source_generation_not_match` + // conditions are mutually exclusive: it's an error for both of them to be set + // in the request. + optional int64 if_source_generation_not_match = 5 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Makes the operation conditional on whether the source object's + // current metageneration matches the given value. + // `if_source_metageneration_match` and `if_source_metageneration_not_match` + // conditions are mutually exclusive: it's an error for both of them to be set + // in the request. + optional int64 if_source_metageneration_match = 6 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Makes the operation conditional on whether the source object's + // current metageneration does not match the given value. + // `if_source_metageneration_match` and `if_source_metageneration_not_match` + // conditions are mutually exclusive: it's an error for both of them to be set + // in the request. + optional int64 if_source_metageneration_not_match = 7 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Makes the operation conditional on whether the destination + // object's current generation matches the given value. Setting to 0 makes the + // operation succeed only if there are no live versions of the object. + // `if_generation_match` and `if_generation_not_match` conditions are mutually + // exclusive: it's an error for both of them to be set in the request. + optional int64 if_generation_match = 8 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Makes the operation conditional on whether the destination + // object's current generation does not match the given value. If no live + // object exists, the precondition fails. Setting to 0 makes the operation + // succeed only if there is a live version of the object. + // `if_generation_match` and `if_generation_not_match` conditions are mutually + // exclusive: it's an error for both of them to be set in the request. + optional int64 if_generation_not_match = 9 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Makes the operation conditional on whether the destination + // object's current metageneration matches the given value. + // `if_metageneration_match` and `if_metageneration_not_match` conditions are + // mutually exclusive: it's an error for both of them to be set in the + // request. + optional int64 if_metageneration_match = 10 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Makes the operation conditional on whether the destination + // object's current metageneration does not match the given value. + // `if_metageneration_match` and `if_metageneration_not_match` conditions are + // mutually exclusive: it's an error for both of them to be set in the + // request. + optional int64 if_metageneration_not_match = 11 + [(google.api.field_behavior) = OPTIONAL]; +} + // Request message StartResumableWrite. message StartResumableWriteRequest { // Required. The destination bucket, object, and metadata, as well as any @@ -2055,6 +2144,10 @@ message Object { google.protobuf.Timestamp delete_time = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; + // Output only. The time when the object was finalized. + google.protobuf.Timestamp finalize_time = 36 + [(google.api.field_behavior) = OUTPUT_ONLY]; + // Content-Type of the object data, matching // [https://tools.ietf.org/html/rfc7231#section-3.1.1.5][RFC 7231 ยง3.1.1.5]. // If an object is stored without a Content-Type, it is served as From 980ac4ebe09636d0de255e89f747bde8cc9ce041 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 7 Jan 2025 21:50:49 +0100 Subject: [PATCH 13/17] deps: update gcr.io/cloud-devrel-public-resources/storage-testbench docker tag to v0.51.0 (#2860) --- .../com/google/cloud/storage/it/runner/registry/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-storage/src/test/resources/com/google/cloud/storage/it/runner/registry/Dockerfile b/google-cloud-storage/src/test/resources/com/google/cloud/storage/it/runner/registry/Dockerfile index b9a2c50546..0c005975bb 100644 --- a/google-cloud-storage/src/test/resources/com/google/cloud/storage/it/runner/registry/Dockerfile +++ b/google-cloud-storage/src/test/resources/com/google/cloud/storage/it/runner/registry/Dockerfile @@ -1 +1 @@ -FROM gcr.io/cloud-devrel-public-resources/storage-testbench:v0.50.0 +FROM gcr.io/cloud-devrel-public-resources/storage-testbench:v0.51.0 From 59441e9b2ce6372e591d76278981db9adb731d69 Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Wed, 8 Jan 2025 13:08:59 -0500 Subject: [PATCH 14/17] chore: capture failure when finalizing an upload for otel tracing (#2865) --- .../com/google/cloud/storage/OtelStorageDecorator.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/OtelStorageDecorator.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/OtelStorageDecorator.java index a1813a98c5..a281e8257d 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/OtelStorageDecorator.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/OtelStorageDecorator.java @@ -1613,6 +1613,10 @@ public boolean isOpen() { public void close() throws IOException { try { delegate.close(); + } catch (IOException | RuntimeException e) { + openSpan.recordException(e); + openSpan.setStatus(StatusCode.ERROR, e.getClass().getSimpleName()); + throw e; } finally { openSpan.end(); } @@ -1653,6 +1657,10 @@ public boolean isOpen() { public void close() throws IOException { try { delegate.close(); + } catch (IOException | RuntimeException e) { + openSpan.recordException(e); + openSpan.setStatus(StatusCode.ERROR, e.getClass().getSimpleName()); + throw e; } finally { openSpan.end(); } From b731c06b11186e9695fb89f32abf35988d558bc9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 8 Jan 2025 19:23:07 +0100 Subject: [PATCH 15/17] deps: update googleapis/sdk-platform-java action to v2.51.1 (#2864) --- .github/workflows/hermetic_library_generation.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 2a29a66968..8f4feed050 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -43,7 +43,7 @@ jobs: with: fetch-depth: 0 token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} - - uses: googleapis/sdk-platform-java/.github/scripts@v2.51.0 + - uses: googleapis/sdk-platform-java/.github/scripts@v2.51.1 if: env.SHOULD_RUN == 'true' with: base_ref: ${{ github.base_ref }} From 562df7f087b34db0f3d49c6e0b87643a606ef9c6 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 8 Jan 2025 19:45:29 +0100 Subject: [PATCH 16/17] deps: update sdk-platform-java dependencies (#2866) --- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-17.cfg | 2 +- .kokoro/presubmit/graalvm-native.cfg | 2 +- google-cloud-storage-bom/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 1219b65fb0..f60819437d 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.41.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.41.1 with: bom-path: google-cloud-storage-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index 8d44b2d396..0ba1a26db4 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.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.41.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.41.1" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index 2d954b40de..2c2ffa7e66 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.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.41.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.41.1" } env_vars: { diff --git a/google-cloud-storage-bom/pom.xml b/google-cloud-storage-bom/pom.xml index a904c8d173..c0e7287cd5 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.41.0 + 3.41.1 diff --git a/pom.xml b/pom.xml index 5754bf8fa1..205001342c 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.41.0 + 3.41.1 From 464670b52ca753fab5fd69ac0f34ef5f823b0334 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 14:24:32 -0500 Subject: [PATCH 17/17] chore(main): release 2.47.0 (#2854) --- CHANGELOG.md | 23 +++++++++++++++++++ README.md | 12 +++++----- 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, 71 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 044b3ad773..2c943f580f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## [2.47.0](https://github.com/googleapis/java-storage/compare/v2.46.0...v2.47.0) (2025-01-08) + + +### Features + +* Add MoveObject RPC ([34b8ac4](https://github.com/googleapis/java-storage/commit/34b8ac4239bab67b53c73050d2341615254a3ae0)) +* Introductory beta level support for OpenTelemetry tracing on c.g.c.storage.Storage methods ([#2837](https://github.com/googleapis/java-storage/issues/2837)) ([dd889ea](https://github.com/googleapis/java-storage/commit/dd889ea0d0a57490ef106ab92ba557f26d414406)) + + +### Bug Fixes + +* De-beta storage-v2 artifacts ([#2852](https://github.com/googleapis/java-storage/issues/2852)) ([77a2e8a](https://github.com/googleapis/java-storage/commit/77a2e8af341528a4ff3c34a880a7983f828b8cfd)) +* **deps:** Update the Java code generator (gapic-generator-java) to 2.51.0 ([34b8ac4](https://github.com/googleapis/java-storage/commit/34b8ac4239bab67b53c73050d2341615254a3ae0)) +* Fix interrupt spiral in grpc ReadObject drainQueue ([#2850](https://github.com/googleapis/java-storage/issues/2850)) ([c1dac83](https://github.com/googleapis/java-storage/commit/c1dac837387ffc40f00344c8fb0e86e09d009358)) +* Update request handling of gRPC based CopyWriter ([#2858](https://github.com/googleapis/java-storage/issues/2858)) ([093cb87](https://github.com/googleapis/java-storage/commit/093cb8759d5cfaafa6fd9df43de1bb91c1285f35)) + + +### Dependencies + +* Update gcr.io/cloud-devrel-public-resources/storage-testbench docker tag to v0.51.0 ([#2860](https://github.com/googleapis/java-storage/issues/2860)) ([980ac4e](https://github.com/googleapis/java-storage/commit/980ac4ebe09636d0de255e89f747bde8cc9ce041)) +* Update googleapis/sdk-platform-java action to v2.51.1 ([#2864](https://github.com/googleapis/java-storage/issues/2864)) ([b731c06](https://github.com/googleapis/java-storage/commit/b731c06b11186e9695fb89f32abf35988d558bc9)) +* Update sdk-platform-java dependencies ([#2866](https://github.com/googleapis/java-storage/issues/2866)) ([562df7f](https://github.com/googleapis/java-storage/commit/562df7f087b34db0f3d49c6e0b87643a606ef9c6)) + ## [2.46.0](https://github.com/googleapis/java-storage/compare/v2.45.0...v2.46.0) (2024-12-13) diff --git a/README.md b/README.md index b90bec3c65..58be7d52ed 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.51.0 + 26.52.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.45.0 + 2.46.0 com.google.cloud google-cloud-storage-control - 2.45.0 + 2.46.0 ``` @@ -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.46.0' +implementation 'com.google.cloud:google-cloud-storage:2.47.0' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-storage" % "2.46.0" +libraryDependencies += "com.google.cloud" % "google-cloud-storage" % "2.47.0" ``` ## Authentication @@ -514,7 +514,7 @@ Java is a registered trademark of Oracle and/or its affiliates. [kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-storage/java11.html [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.46.0 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-storage/2.47.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 260248eed4..b400d84187 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.46.1-SNAPSHOT + 2.47.0 gapic-google-cloud-storage-v2 GRPC library for gapic-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.46.1-SNAPSHOT + 2.47.0 diff --git a/google-cloud-storage-bom/pom.xml b/google-cloud-storage-bom/pom.xml index c0e7287cd5..588a6b4ab2 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.46.1-SNAPSHOT + 2.47.0 pom com.google.cloud @@ -69,37 +69,37 @@ com.google.cloud google-cloud-storage - 2.46.1-SNAPSHOT + 2.47.0 com.google.api.grpc gapic-google-cloud-storage-v2 - 2.46.1-SNAPSHOT + 2.47.0 com.google.api.grpc grpc-google-cloud-storage-v2 - 2.46.1-SNAPSHOT + 2.47.0 com.google.api.grpc proto-google-cloud-storage-v2 - 2.46.1-SNAPSHOT + 2.47.0 com.google.cloud google-cloud-storage-control - 2.46.1-SNAPSHOT + 2.47.0 com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.46.1-SNAPSHOT + 2.47.0 com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.46.1-SNAPSHOT + 2.47.0 diff --git a/google-cloud-storage-control/pom.xml b/google-cloud-storage-control/pom.xml index 6e4a088a1f..8661b49b41 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.46.1-SNAPSHOT + 2.47.0 google-cloud-storage-control GRPC library for google-cloud-storage-control com.google.cloud google-cloud-storage-parent - 2.46.1-SNAPSHOT + 2.47.0 diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml index a246beb313..4870af6f1a 100644 --- a/google-cloud-storage/pom.xml +++ b/google-cloud-storage/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-storage - 2.46.1-SNAPSHOT + 2.47.0 jar Google Cloud Storage https://github.com/googleapis/java-storage @@ -12,7 +12,7 @@ com.google.cloud google-cloud-storage-parent - 2.46.1-SNAPSHOT + 2.47.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 06e56634a9..85dce53918 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.46.1-SNAPSHOT + 2.47.0 grpc-google-cloud-storage-control-v2 GRPC library for google-cloud-storage com.google.cloud google-cloud-storage-parent - 2.46.1-SNAPSHOT + 2.47.0 diff --git a/grpc-google-cloud-storage-v2/pom.xml b/grpc-google-cloud-storage-v2/pom.xml index c7c7e50df9..8dd6ffd197 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.46.1-SNAPSHOT + 2.47.0 grpc-google-cloud-storage-v2 GRPC library for grpc-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.46.1-SNAPSHOT + 2.47.0 diff --git a/pom.xml b/pom.xml index 205001342c..fa043dcea5 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-storage-parent pom - 2.46.1-SNAPSHOT + 2.47.0 Storage Parent https://github.com/googleapis/java-storage @@ -123,7 +123,7 @@ com.google.cloud google-cloud-storage - 2.46.1-SNAPSHOT + 2.47.0 com.google.apis @@ -145,32 +145,32 @@ com.google.api.grpc proto-google-cloud-storage-v2 - 2.46.1-SNAPSHOT + 2.47.0 com.google.api.grpc grpc-google-cloud-storage-v2 - 2.46.1-SNAPSHOT + 2.47.0 com.google.api.grpc gapic-google-cloud-storage-v2 - 2.46.1-SNAPSHOT + 2.47.0 com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.46.1-SNAPSHOT + 2.47.0 com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.46.1-SNAPSHOT + 2.47.0 com.google.cloud google-cloud-storage-control - 2.46.1-SNAPSHOT + 2.47.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 414c51791d..31a4c5f31b 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.46.1-SNAPSHOT + 2.47.0 proto-google-cloud-storage-control-v2 Proto library for proto-google-cloud-storage-control-v2 com.google.cloud google-cloud-storage-parent - 2.46.1-SNAPSHOT + 2.47.0 diff --git a/proto-google-cloud-storage-v2/pom.xml b/proto-google-cloud-storage-v2/pom.xml index 477f45aa0a..1eefb465fc 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.46.1-SNAPSHOT + 2.47.0 proto-google-cloud-storage-v2 PROTO library for proto-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.46.1-SNAPSHOT + 2.47.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index bcd0d4ed1a..e1784a43a5 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,12 +28,12 @@ com.google.cloud google-cloud-storage - 2.46.1-SNAPSHOT + 2.47.0 com.google.cloud google-cloud-storage-control - 2.46.1-SNAPSHOT + 2.47.0 compile @@ -64,7 +64,7 @@ com.google.cloud google-cloud-storage - 2.46.1-SNAPSHOT + 2.47.0 tests test diff --git a/storage-shared-benchmarking/pom.xml b/storage-shared-benchmarking/pom.xml index 1c34f2316f..1e19157376 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.46.1-SNAPSHOT + 2.47.0 @@ -31,7 +31,7 @@ com.google.cloud google-cloud-storage - 2.46.1-SNAPSHOT + 2.47.0 tests diff --git a/versions.txt b/versions.txt index 77f664c89c..301dfce75a 100644 --- a/versions.txt +++ b/versions.txt @@ -1,10 +1,10 @@ # Format: # module:released-version:current-version -google-cloud-storage:2.46.0:2.46.1-SNAPSHOT -gapic-google-cloud-storage-v2:2.46.0:2.46.1-SNAPSHOT -grpc-google-cloud-storage-v2:2.46.0:2.46.1-SNAPSHOT -proto-google-cloud-storage-v2:2.46.0:2.46.1-SNAPSHOT -google-cloud-storage-control:2.46.0:2.46.1-SNAPSHOT -proto-google-cloud-storage-control-v2:2.46.0:2.46.1-SNAPSHOT -grpc-google-cloud-storage-control-v2:2.46.0:2.46.1-SNAPSHOT +google-cloud-storage:2.47.0:2.47.0 +gapic-google-cloud-storage-v2:2.47.0:2.47.0 +grpc-google-cloud-storage-v2:2.47.0:2.47.0 +proto-google-cloud-storage-v2:2.47.0:2.47.0 +google-cloud-storage-control:2.47.0:2.47.0 +proto-google-cloud-storage-control-v2:2.47.0:2.47.0 +grpc-google-cloud-storage-control-v2:2.47.0:2.47.0