From 30585e912c61a9177672fcf076cd63698e496a59 Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Thu, 6 Jan 2022 18:44:05 -0500 Subject: [PATCH 1/6] chore: test Gradle builds on generated libraries --- .github/workflows/ci.yaml | 17 +++++++++++++++++ WORKSPACE | 4 ++-- repositories.bzl | 4 ++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c65463a601..081be2c378 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -46,6 +46,23 @@ jobs: - name: Integration Tests run: bazel --batch test //test/integration/... + - name: Gradle Build Tests on Generated Libraries + run: | + echo "Building Storage lib from generated source..." + mkdir /tmp/java-storage + tar zxvf bazel-bin/test/integration/google-cloud-storage-v2-java.tar.gz -C /tmp/java-storage + pushd /tmp/java-storage/google-cloud-storage-v2-java + ./gradlew clean check publishToMavenLocal + popd + + echo "Building Compute lib from generated source..." + mkdir /tmp/java-compute + bazel --batch build @com_google_googleapis//google/cloud/compute/v1small:google-cloud-compute-small-v1-java + tar zxvf bazel-bin/external/com_google_googleapis/google/cloud/compute/v1small/google-cloud-compute-small-v1-java.tar.gz -C /tmp/java-compute + pushd /tmp/java-compute/google-cloud-compute-small-v1-java + ./gradlew clean check publishToMavenLocal + popd + - uses: actions/upload-artifact@v2 if: ${{ failure() }} with: diff --git a/WORKSPACE b/WORKSPACE index 9d27056728..c389bed58e 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -114,6 +114,6 @@ grpc_java_repositories() http_archive( name = "com_google_disco_to_proto3_converter", - strip_prefix = "disco-to-proto3-converter-4b0956884b1aa9b367cf41488b622dc12eb16652", - urls = ["https://github.com/googleapis/disco-to-proto3-converter/archive/4b0956884b1aa9b367cf41488b622dc12eb16652.zip"], + strip_prefix = "disco-to-proto3-converter-ce8d8732120cdfb5bf4847c3238b5be8acde87e3", + urls = ["https://github.com/googleapis/disco-to-proto3-converter/archive/ce8d8732120cdfb5bf4847c3238b5be8acde87e3.zip"], ) diff --git a/repositories.bzl b/repositories.bzl index d067d4e689..85dbf7e334 100644 --- a/repositories.bzl +++ b/repositories.bzl @@ -59,9 +59,9 @@ def gapic_generator_java_repositories(): _maybe( http_archive, name = "com_google_googleapis", - strip_prefix = "googleapis-ba30d8097582039ac4cc4e21b4e4baa426423075", + strip_prefix = "googleapis-0899ba0f4c053a4487ccf0b699df5f850e39a45f", urls = [ - "https://github.com/googleapis/googleapis/archive/ba30d8097582039ac4cc4e21b4e4baa426423075.zip", + "https://github.com/googleapis/googleapis/archive/0899ba0f4c053a4487ccf0b699df5f850e39a45f.zip", ], ) From 7348076dee548150611790f353e6a8d7ae767d5a Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Fri, 7 Jan 2022 11:34:57 -0500 Subject: [PATCH 2/6] chore: empty commit From 9fe872b8a1917aa928fd3fff9351c78eb913233c Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Fri, 7 Jan 2022 15:33:23 -0500 Subject: [PATCH 3/6] chore: sync googleapis and disco-to-proto3-converter repos --- WORKSPACE | 4 ++-- repositories.bzl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 9d27056728..c389bed58e 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -114,6 +114,6 @@ grpc_java_repositories() http_archive( name = "com_google_disco_to_proto3_converter", - strip_prefix = "disco-to-proto3-converter-4b0956884b1aa9b367cf41488b622dc12eb16652", - urls = ["https://github.com/googleapis/disco-to-proto3-converter/archive/4b0956884b1aa9b367cf41488b622dc12eb16652.zip"], + strip_prefix = "disco-to-proto3-converter-ce8d8732120cdfb5bf4847c3238b5be8acde87e3", + urls = ["https://github.com/googleapis/disco-to-proto3-converter/archive/ce8d8732120cdfb5bf4847c3238b5be8acde87e3.zip"], ) diff --git a/repositories.bzl b/repositories.bzl index d067d4e689..85dbf7e334 100644 --- a/repositories.bzl +++ b/repositories.bzl @@ -59,9 +59,9 @@ def gapic_generator_java_repositories(): _maybe( http_archive, name = "com_google_googleapis", - strip_prefix = "googleapis-ba30d8097582039ac4cc4e21b4e4baa426423075", + strip_prefix = "googleapis-0899ba0f4c053a4487ccf0b699df5f850e39a45f", urls = [ - "https://github.com/googleapis/googleapis/archive/ba30d8097582039ac4cc4e21b4e4baa426423075.zip", + "https://github.com/googleapis/googleapis/archive/0899ba0f4c053a4487ccf0b699df5f850e39a45f.zip", ], ) From fe95853a847e432551ae4ad821c37990499f8fbe Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Fri, 7 Jan 2022 17:47:10 -0500 Subject: [PATCH 4/6] chore: update integration golden files --- .../cloud/redis/v1beta1/CloudRedisClient.java | 25 +- .../redis/v1beta1/CloudRedisClientTest.java | 45 + .../cloud/redis/v1beta1/package-info.java | 6 +- .../com/google/storage/v2/BucketName.java | 191 + .../com/google/storage/v2/CryptoKeyName.java | 261 ++ .../google/storage/v2/MockStorageImpl.java | 522 +++ .../google/storage/v2/NotificationName.java | 223 ++ .../com/google/storage/v2/ProjectName.java | 168 + .../com/google/storage/v2/StorageClient.java | 3338 ++++++++++++++++- .../google/storage/v2/StorageClientTest.java | 2525 ++++++++++++- .../google/storage/v2/StorageSettings.java | 292 +- .../com/google/storage/v2/gapic_metadata.json | 75 + .../com/google/storage/v2/package-info.java | 25 +- .../storage/v2/stub/GrpcStorageStub.java | 665 ++++ .../google/storage/v2/stub/StorageStub.java | 164 + .../storage/v2/stub/StorageStubSettings.java | 886 ++++- 16 files changed, 9077 insertions(+), 334 deletions(-) create mode 100644 test/integration/goldens/storage/com/google/storage/v2/BucketName.java create mode 100644 test/integration/goldens/storage/com/google/storage/v2/CryptoKeyName.java create mode 100644 test/integration/goldens/storage/com/google/storage/v2/NotificationName.java create mode 100644 test/integration/goldens/storage/com/google/storage/v2/ProjectName.java diff --git a/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/CloudRedisClient.java b/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/CloudRedisClient.java index fe918026ed..8ac7dede9a 100644 --- a/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/CloudRedisClient.java +++ b/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/CloudRedisClient.java @@ -57,7 +57,7 @@ * `/projects/{project_id}/locations/{location_id}/instances/{instance_id}` * * - *

Note that location_id must be refering to a GCP `region`; for example: + *

Note that location_id must be referring to a GCP `region`; for example: * *

    *
  • `projects/redpepper-1290/locations/us-central1/instances/my-redis` @@ -472,7 +472,7 @@ public final UnaryCallable getInstanceCallable() { * *

    The creation is executed asynchronously and callers may check the returned operation to * track its progress. Once the operation is completed the Redis instance will be fully - * functional. Completed longrunning.Operation will contain the new instance object in the + * functional. The completed longrunning.Operation will contain the new instance object in the * response field. * *

    The returned operation is automatically deleted after a few hours, so there is no need to @@ -524,7 +524,7 @@ public final OperationFuture createInstanceAsync( * *

    The creation is executed asynchronously and callers may check the returned operation to * track its progress. Once the operation is completed the Redis instance will be fully - * functional. Completed longrunning.Operation will contain the new instance object in the + * functional. The completed longrunning.Operation will contain the new instance object in the * response field. * *

    The returned operation is automatically deleted after a few hours, so there is no need to @@ -576,7 +576,7 @@ public final OperationFuture createInstanceAsync( * *

    The creation is executed asynchronously and callers may check the returned operation to * track its progress. Once the operation is completed the Redis instance will be fully - * functional. Completed longrunning.Operation will contain the new instance object in the + * functional. The completed longrunning.Operation will contain the new instance object in the * response field. * *

    The returned operation is automatically deleted after a few hours, so there is no need to @@ -612,7 +612,7 @@ public final OperationFuture createInstanceAsync(CreateInstanceRe * *

    The creation is executed asynchronously and callers may check the returned operation to * track its progress. Once the operation is completed the Redis instance will be fully - * functional. Completed longrunning.Operation will contain the new instance object in the + * functional. The completed longrunning.Operation will contain the new instance object in the * response field. * *

    The returned operation is automatically deleted after a few hours, so there is no need to @@ -649,7 +649,7 @@ public final OperationFuture createInstanceAsync(CreateInstanceRe * *

    The creation is executed asynchronously and callers may check the returned operation to * track its progress. Once the operation is completed the Redis instance will be fully - * functional. Completed longrunning.Operation will contain the new instance object in the + * functional. The completed longrunning.Operation will contain the new instance object in the * response field. * *

    The returned operation is automatically deleted after a few hours, so there is no need to @@ -696,7 +696,8 @@ public final UnaryCallable createInstanceCalla * @param updateMask Required. Mask of fields to update. At least one path must be supplied in * this field. The elements of the repeated paths field may only include these fields from * [Instance][google.cloud.redis.v1beta1.Instance]: - *

    * `displayName` * `labels` * `memorySizeGb` * `redisConfig` + *

    * `displayName` * `labels` * `memorySizeGb` * `redisConfig` * + * `replica_count` * @param instance Required. Update description. Only fields specified in update_mask are updated. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ @@ -1164,7 +1165,7 @@ public final UnaryCallable exportInstanceCalla // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Initiates a failover of the master node to current replica node for a specific STANDARD tier + * Initiates a failover of the primary node to current replica node for a specific STANDARD tier * Cloud Memorystore for Redis instance. * *

    Sample code: @@ -1197,7 +1198,7 @@ public final OperationFuture failoverInstanceAsync( // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Initiates a failover of the master node to current replica node for a specific STANDARD tier + * Initiates a failover of the primary node to current replica node for a specific STANDARD tier * Cloud Memorystore for Redis instance. * *

    Sample code: @@ -1230,7 +1231,7 @@ public final OperationFuture failoverInstanceAsync( // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Initiates a failover of the master node to current replica node for a specific STANDARD tier + * Initiates a failover of the primary node to current replica node for a specific STANDARD tier * Cloud Memorystore for Redis instance. * *

    Sample code: @@ -1255,7 +1256,7 @@ public final OperationFuture failoverInstanceAsync( // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Initiates a failover of the master node to current replica node for a specific STANDARD tier + * Initiates a failover of the primary node to current replica node for a specific STANDARD tier * Cloud Memorystore for Redis instance. * *

    Sample code: @@ -1280,7 +1281,7 @@ public final OperationFuture failoverInstanceAsync( // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Initiates a failover of the master node to current replica node for a specific STANDARD tier + * Initiates a failover of the primary node to current replica node for a specific STANDARD tier * Cloud Memorystore for Redis instance. * *

    Sample code: diff --git a/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/CloudRedisClientTest.java b/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/CloudRedisClientTest.java index 63665485a3..7da6090dc0 100644 --- a/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/CloudRedisClientTest.java +++ b/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/CloudRedisClientTest.java @@ -35,6 +35,7 @@ import com.google.protobuf.Timestamp; import io.grpc.StatusRuntimeException; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -194,6 +195,10 @@ public void getInstanceTest() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); mockCloudRedis.addResponse(expectedResponse); @@ -247,6 +252,10 @@ public void getInstanceTest2() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); mockCloudRedis.addResponse(expectedResponse); @@ -300,6 +309,10 @@ public void createInstanceTest() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); Operation resultOperation = Operation.newBuilder() @@ -367,6 +380,10 @@ public void createInstanceTest2() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); Operation resultOperation = Operation.newBuilder() @@ -434,6 +451,10 @@ public void updateInstanceTest() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); Operation resultOperation = Operation.newBuilder() @@ -498,6 +519,10 @@ public void upgradeInstanceTest() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); Operation resultOperation = Operation.newBuilder() @@ -562,6 +587,10 @@ public void upgradeInstanceTest2() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); Operation resultOperation = Operation.newBuilder() @@ -626,6 +655,10 @@ public void importInstanceTest() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); Operation resultOperation = Operation.newBuilder() @@ -690,6 +723,10 @@ public void exportInstanceTest() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); Operation resultOperation = Operation.newBuilder() @@ -754,6 +791,10 @@ public void failoverInstanceTest() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); Operation resultOperation = Operation.newBuilder() @@ -820,6 +861,10 @@ public void failoverInstanceTest2() throws Exception { .setMemorySizeGb(34199707) .setAuthorizedNetwork("authorizedNetwork1515554835") .setPersistenceIamIdentity("persistenceIamIdentity1464017428") + .setReplicaCount(564075208) + .addAllNodes(new ArrayList()) + .setReadEndpoint("readEndpoint294053195") + .setReadEndpointPort(-1676143102) .build(); Operation resultOperation = Operation.newBuilder() diff --git a/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/package-info.java b/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/package-info.java index d8d969e5e7..cd7feb7b8c 100644 --- a/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/package-info.java +++ b/test/integration/goldens/redis/com/google/cloud/redis/v1beta1/package-info.java @@ -15,7 +15,9 @@ */ /** - * The interfaces provided are listed below, along with usage samples. + * A client to Google Cloud Memorystore for Redis API + * + *

    The interfaces provided are listed below, along with usage samples. * *

    ======================= CloudRedisClient ======================= * @@ -34,7 +36,7 @@ * `/projects/{project_id}/locations/{location_id}/instances/{instance_id}` *

* - *

Note that location_id must be refering to a GCP `region`; for example: + *

Note that location_id must be referring to a GCP `region`; for example: * *

    *
  • `projects/redpepper-1290/locations/us-central1/instances/my-redis` diff --git a/test/integration/goldens/storage/com/google/storage/v2/BucketName.java b/test/integration/goldens/storage/com/google/storage/v2/BucketName.java new file mode 100644 index 0000000000..b7844cb7c8 --- /dev/null +++ b/test/integration/goldens/storage/com/google/storage/v2/BucketName.java @@ -0,0 +1,191 @@ +/* + * Copyright 2021 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. + */ + +package com.google.storage.v2; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +@Generated("by gapic-generator-java") +public class BucketName implements ResourceName { + private static final PathTemplate PROJECT_BUCKET = + PathTemplate.createWithoutUrlEncoding("projects/{project}/buckets/{bucket}"); + private volatile Map fieldValuesMap; + private final String project; + private final String bucket; + + @Deprecated + protected BucketName() { + project = null; + bucket = null; + } + + private BucketName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + bucket = Preconditions.checkNotNull(builder.getBucket()); + } + + public String getProject() { + return project; + } + + public String getBucket() { + return bucket; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static BucketName of(String project, String bucket) { + return newBuilder().setProject(project).setBucket(bucket).build(); + } + + public static String format(String project, String bucket) { + return newBuilder().setProject(project).setBucket(bucket).build().toString(); + } + + public static BucketName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT_BUCKET.validatedMatch( + formattedString, "BucketName.parse: formattedString not in valid format"); + return of(matchMap.get("project"), matchMap.get("bucket")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList<>(values.size()); + for (BucketName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT_BUCKET.matches(formattedString); + } + + @Override + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + if (project != null) { + fieldMapBuilder.put("project", project); + } + if (bucket != null) { + fieldMapBuilder.put("bucket", bucket); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT_BUCKET.instantiate("project", project, "bucket", bucket); + } + + @Override + public boolean equals(java.lang.Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + BucketName that = ((BucketName) o); + return Objects.equals(this.project, that.project) && Objects.equals(this.bucket, that.bucket); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + h *= 1000003; + h ^= Objects.hashCode(bucket); + return h; + } + + /** Builder for projects/{project}/buckets/{bucket}. */ + public static class Builder { + private String project; + private String bucket; + + protected Builder() {} + + public String getProject() { + return project; + } + + public String getBucket() { + return bucket; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setBucket(String bucket) { + this.bucket = bucket; + return this; + } + + private Builder(BucketName bucketName) { + this.project = bucketName.project; + this.bucket = bucketName.bucket; + } + + public BucketName build() { + return new BucketName(this); + } + } +} diff --git a/test/integration/goldens/storage/com/google/storage/v2/CryptoKeyName.java b/test/integration/goldens/storage/com/google/storage/v2/CryptoKeyName.java new file mode 100644 index 0000000000..ef9ff23e31 --- /dev/null +++ b/test/integration/goldens/storage/com/google/storage/v2/CryptoKeyName.java @@ -0,0 +1,261 @@ +/* + * Copyright 2021 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. + */ + +package com.google.storage.v2; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +@Generated("by gapic-generator-java") +public class CryptoKeyName implements ResourceName { + private static final PathTemplate PROJECT_LOCATION_KEY_RING_CRYPTO_KEY = + PathTemplate.createWithoutUrlEncoding( + "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}"); + private volatile Map fieldValuesMap; + private final String project; + private final String location; + private final String keyRing; + private final String cryptoKey; + + @Deprecated + protected CryptoKeyName() { + project = null; + location = null; + keyRing = null; + cryptoKey = null; + } + + private CryptoKeyName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + location = Preconditions.checkNotNull(builder.getLocation()); + keyRing = Preconditions.checkNotNull(builder.getKeyRing()); + cryptoKey = Preconditions.checkNotNull(builder.getCryptoKey()); + } + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public String getCryptoKey() { + return cryptoKey; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static CryptoKeyName of( + String project, String location, String keyRing, String cryptoKey) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .setCryptoKey(cryptoKey) + .build(); + } + + public static String format(String project, String location, String keyRing, String cryptoKey) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .setCryptoKey(cryptoKey) + .build() + .toString(); + } + + public static CryptoKeyName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT_LOCATION_KEY_RING_CRYPTO_KEY.validatedMatch( + formattedString, "CryptoKeyName.parse: formattedString not in valid format"); + return of( + matchMap.get("project"), + matchMap.get("location"), + matchMap.get("key_ring"), + matchMap.get("crypto_key")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList<>(values.size()); + for (CryptoKeyName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT_LOCATION_KEY_RING_CRYPTO_KEY.matches(formattedString); + } + + @Override + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + if (project != null) { + fieldMapBuilder.put("project", project); + } + if (location != null) { + fieldMapBuilder.put("location", location); + } + if (keyRing != null) { + fieldMapBuilder.put("key_ring", keyRing); + } + if (cryptoKey != null) { + fieldMapBuilder.put("crypto_key", cryptoKey); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT_LOCATION_KEY_RING_CRYPTO_KEY.instantiate( + "project", project, "location", location, "key_ring", keyRing, "crypto_key", cryptoKey); + } + + @Override + public boolean equals(java.lang.Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + CryptoKeyName that = ((CryptoKeyName) o); + return Objects.equals(this.project, that.project) + && Objects.equals(this.location, that.location) + && Objects.equals(this.keyRing, that.keyRing) + && Objects.equals(this.cryptoKey, that.cryptoKey); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + h *= 1000003; + h ^= Objects.hashCode(location); + h *= 1000003; + h ^= Objects.hashCode(keyRing); + h *= 1000003; + h ^= Objects.hashCode(cryptoKey); + return h; + } + + /** + * Builder for + * projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}. + */ + public static class Builder { + private String project; + private String location; + private String keyRing; + private String cryptoKey; + + protected Builder() {} + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public String getCryptoKey() { + return cryptoKey; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setLocation(String location) { + this.location = location; + return this; + } + + public Builder setKeyRing(String keyRing) { + this.keyRing = keyRing; + return this; + } + + public Builder setCryptoKey(String cryptoKey) { + this.cryptoKey = cryptoKey; + return this; + } + + private Builder(CryptoKeyName cryptoKeyName) { + this.project = cryptoKeyName.project; + this.location = cryptoKeyName.location; + this.keyRing = cryptoKeyName.keyRing; + this.cryptoKey = cryptoKeyName.cryptoKey; + } + + public CryptoKeyName build() { + return new CryptoKeyName(this); + } + } +} diff --git a/test/integration/goldens/storage/com/google/storage/v2/MockStorageImpl.java b/test/integration/goldens/storage/com/google/storage/v2/MockStorageImpl.java index a2787a85bd..7247ee766e 100644 --- a/test/integration/goldens/storage/com/google/storage/v2/MockStorageImpl.java +++ b/test/integration/goldens/storage/com/google/storage/v2/MockStorageImpl.java @@ -17,7 +17,13 @@ package com.google.storage.v2; import com.google.api.core.BetaApi; +import com.google.iam.v1.GetIamPolicyRequest; +import com.google.iam.v1.Policy; +import com.google.iam.v1.SetIamPolicyRequest; +import com.google.iam.v1.TestIamPermissionsRequest; +import com.google.iam.v1.TestIamPermissionsResponse; import com.google.protobuf.AbstractMessage; +import com.google.protobuf.Empty; import com.google.storage.v2.StorageGrpc.StorageImplBase; import io.grpc.stub.StreamObserver; import java.util.ArrayList; @@ -58,6 +64,335 @@ public void reset() { responses = new LinkedList<>(); } + @Override + public void deleteBucket(DeleteBucketRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Empty) { + requests.add(request); + responseObserver.onNext(((Empty) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method DeleteBucket, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Empty.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getBucket(GetBucketRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Bucket) { + requests.add(request); + responseObserver.onNext(((Bucket) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetBucket, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Bucket.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void createBucket(CreateBucketRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Bucket) { + requests.add(request); + responseObserver.onNext(((Bucket) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method CreateBucket, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Bucket.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void listBuckets( + ListBucketsRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof ListBucketsResponse) { + requests.add(request); + responseObserver.onNext(((ListBucketsResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ListBuckets, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + ListBucketsResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void lockBucketRetentionPolicy( + LockBucketRetentionPolicyRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Bucket) { + requests.add(request); + responseObserver.onNext(((Bucket) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method LockBucketRetentionPolicy, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Bucket.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getIamPolicy(GetIamPolicyRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Policy) { + requests.add(request); + responseObserver.onNext(((Policy) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetIamPolicy, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Policy.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void setIamPolicy(SetIamPolicyRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Policy) { + requests.add(request); + responseObserver.onNext(((Policy) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method SetIamPolicy, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Policy.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void testIamPermissions( + TestIamPermissionsRequest request, + StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof TestIamPermissionsResponse) { + requests.add(request); + responseObserver.onNext(((TestIamPermissionsResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method TestIamPermissions, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + TestIamPermissionsResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void updateBucket(UpdateBucketRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Bucket) { + requests.add(request); + responseObserver.onNext(((Bucket) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method UpdateBucket, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Bucket.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void deleteNotification( + DeleteNotificationRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Empty) { + requests.add(request); + responseObserver.onNext(((Empty) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method DeleteNotification, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Empty.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getNotification( + GetNotificationRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Notification) { + requests.add(request); + responseObserver.onNext(((Notification) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetNotification, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Notification.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void createNotification( + CreateNotificationRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Notification) { + requests.add(request); + responseObserver.onNext(((Notification) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method CreateNotification, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Notification.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void listNotifications( + ListNotificationsRequest request, + StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof ListNotificationsResponse) { + requests.add(request); + responseObserver.onNext(((ListNotificationsResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ListNotifications, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + ListNotificationsResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void composeObject(ComposeObjectRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Object) { + requests.add(request); + responseObserver.onNext(((Object) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ComposeObject, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Object.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void deleteObject(DeleteObjectRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Empty) { + requests.add(request); + responseObserver.onNext(((Empty) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method DeleteObject, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Empty.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getObject(GetObjectRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Object) { + requests.add(request); + responseObserver.onNext(((Object) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetObject, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Object.class.getName(), + Exception.class.getName()))); + } + } + @Override public void readObject( ReadObjectRequest request, StreamObserver responseObserver) { @@ -79,6 +414,26 @@ public void readObject( } } + @Override + public void updateObject(UpdateObjectRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Object) { + requests.add(request); + responseObserver.onNext(((Object) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method UpdateObject, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Object.class.getName(), + Exception.class.getName()))); + } + } + @Override public StreamObserver writeObject( final StreamObserver responseObserver) { @@ -116,6 +471,48 @@ public void onCompleted() { return requestObserver; } + @Override + public void listObjects( + ListObjectsRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof ListObjectsResponse) { + requests.add(request); + responseObserver.onNext(((ListObjectsResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ListObjects, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + ListObjectsResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void rewriteObject( + RewriteObjectRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof RewriteResponse) { + requests.add(request); + responseObserver.onNext(((RewriteResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method RewriteObject, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + RewriteResponse.class.getName(), + Exception.class.getName()))); + } + } + @Override public void startResumableWrite( StartResumableWriteRequest request, @@ -158,4 +555,129 @@ public void queryWriteStatus( Exception.class.getName()))); } } + + @Override + public void getServiceAccount( + GetServiceAccountRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof ServiceAccount) { + requests.add(request); + responseObserver.onNext(((ServiceAccount) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetServiceAccount, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + ServiceAccount.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void createHmacKey( + CreateHmacKeyRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof CreateHmacKeyResponse) { + requests.add(request); + responseObserver.onNext(((CreateHmacKeyResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method CreateHmacKey, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + CreateHmacKeyResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void deleteHmacKey(DeleteHmacKeyRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof Empty) { + requests.add(request); + responseObserver.onNext(((Empty) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method DeleteHmacKey, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + Empty.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getHmacKey( + GetHmacKeyRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof HmacKeyMetadata) { + requests.add(request); + responseObserver.onNext(((HmacKeyMetadata) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetHmacKey, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + HmacKeyMetadata.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void listHmacKeys( + ListHmacKeysRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof ListHmacKeysResponse) { + requests.add(request); + responseObserver.onNext(((ListHmacKeysResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ListHmacKeys, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + ListHmacKeysResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void updateHmacKey( + UpdateHmacKeyRequest request, StreamObserver responseObserver) { + java.lang.Object response = responses.poll(); + if (response instanceof HmacKeyMetadata) { + requests.add(request); + responseObserver.onNext(((HmacKeyMetadata) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method UpdateHmacKey, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + HmacKeyMetadata.class.getName(), + Exception.class.getName()))); + } + } } diff --git a/test/integration/goldens/storage/com/google/storage/v2/NotificationName.java b/test/integration/goldens/storage/com/google/storage/v2/NotificationName.java new file mode 100644 index 0000000000..3263f3bd12 --- /dev/null +++ b/test/integration/goldens/storage/com/google/storage/v2/NotificationName.java @@ -0,0 +1,223 @@ +/* + * Copyright 2021 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. + */ + +package com.google.storage.v2; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +@Generated("by gapic-generator-java") +public class NotificationName implements ResourceName { + private static final PathTemplate PROJECT_BUCKET_NOTIFICATION = + PathTemplate.createWithoutUrlEncoding( + "projects/{project}/buckets/{bucket}/notificationConfigs/{notification}"); + private volatile Map fieldValuesMap; + private final String project; + private final String bucket; + private final String notification; + + @Deprecated + protected NotificationName() { + project = null; + bucket = null; + notification = null; + } + + private NotificationName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + bucket = Preconditions.checkNotNull(builder.getBucket()); + notification = Preconditions.checkNotNull(builder.getNotification()); + } + + public String getProject() { + return project; + } + + public String getBucket() { + return bucket; + } + + public String getNotification() { + return notification; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static NotificationName of(String project, String bucket, String notification) { + return newBuilder().setProject(project).setBucket(bucket).setNotification(notification).build(); + } + + public static String format(String project, String bucket, String notification) { + return newBuilder() + .setProject(project) + .setBucket(bucket) + .setNotification(notification) + .build() + .toString(); + } + + public static NotificationName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT_BUCKET_NOTIFICATION.validatedMatch( + formattedString, "NotificationName.parse: formattedString not in valid format"); + return of(matchMap.get("project"), matchMap.get("bucket"), matchMap.get("notification")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList<>(values.size()); + for (NotificationName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT_BUCKET_NOTIFICATION.matches(formattedString); + } + + @Override + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + if (project != null) { + fieldMapBuilder.put("project", project); + } + if (bucket != null) { + fieldMapBuilder.put("bucket", bucket); + } + if (notification != null) { + fieldMapBuilder.put("notification", notification); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT_BUCKET_NOTIFICATION.instantiate( + "project", project, "bucket", bucket, "notification", notification); + } + + @Override + public boolean equals(java.lang.Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + NotificationName that = ((NotificationName) o); + return Objects.equals(this.project, that.project) + && Objects.equals(this.bucket, that.bucket) + && Objects.equals(this.notification, that.notification); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + h *= 1000003; + h ^= Objects.hashCode(bucket); + h *= 1000003; + h ^= Objects.hashCode(notification); + return h; + } + + /** Builder for projects/{project}/buckets/{bucket}/notificationConfigs/{notification}. */ + public static class Builder { + private String project; + private String bucket; + private String notification; + + protected Builder() {} + + public String getProject() { + return project; + } + + public String getBucket() { + return bucket; + } + + public String getNotification() { + return notification; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setBucket(String bucket) { + this.bucket = bucket; + return this; + } + + public Builder setNotification(String notification) { + this.notification = notification; + return this; + } + + private Builder(NotificationName notificationName) { + this.project = notificationName.project; + this.bucket = notificationName.bucket; + this.notification = notificationName.notification; + } + + public NotificationName build() { + return new NotificationName(this); + } + } +} diff --git a/test/integration/goldens/storage/com/google/storage/v2/ProjectName.java b/test/integration/goldens/storage/com/google/storage/v2/ProjectName.java new file mode 100644 index 0000000000..09495c6219 --- /dev/null +++ b/test/integration/goldens/storage/com/google/storage/v2/ProjectName.java @@ -0,0 +1,168 @@ +/* + * Copyright 2021 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. + */ + +package com.google.storage.v2; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +@Generated("by gapic-generator-java") +public class ProjectName implements ResourceName { + private static final PathTemplate PROJECT = + PathTemplate.createWithoutUrlEncoding("projects/{project}"); + private volatile Map fieldValuesMap; + private final String project; + + @Deprecated + protected ProjectName() { + project = null; + } + + private ProjectName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + } + + public String getProject() { + return project; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static ProjectName of(String project) { + return newBuilder().setProject(project).build(); + } + + public static String format(String project) { + return newBuilder().setProject(project).build().toString(); + } + + public static ProjectName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT.validatedMatch( + formattedString, "ProjectName.parse: formattedString not in valid format"); + return of(matchMap.get("project")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList<>(values.size()); + for (ProjectName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT.matches(formattedString); + } + + @Override + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + if (project != null) { + fieldMapBuilder.put("project", project); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT.instantiate("project", project); + } + + @Override + public boolean equals(java.lang.Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + ProjectName that = ((ProjectName) o); + return Objects.equals(this.project, that.project); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + return h; + } + + /** Builder for projects/{project}. */ + public static class Builder { + private String project; + + protected Builder() {} + + public String getProject() { + return project; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + private Builder(ProjectName projectName) { + this.project = projectName.project; + } + + public ProjectName build() { + return new ProjectName(this); + } + } +} diff --git a/test/integration/goldens/storage/com/google/storage/v2/StorageClient.java b/test/integration/goldens/storage/com/google/storage/v2/StorageClient.java index 78b7fd7e08..96f0286711 100644 --- a/test/integration/goldens/storage/com/google/storage/v2/StorageClient.java +++ b/test/integration/goldens/storage/com/google/storage/v2/StorageClient.java @@ -16,33 +16,58 @@ package com.google.storage.v2; +import com.google.api.core.ApiFuture; +import com.google.api.core.ApiFutures; import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.paging.AbstractFixedSizeCollection; +import com.google.api.gax.paging.AbstractPage; +import com.google.api.gax.paging.AbstractPagedListResponse; import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.PageContext; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; +import com.google.api.resourcenames.ResourceName; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.iam.v1.GetIamPolicyRequest; +import com.google.iam.v1.Policy; +import com.google.iam.v1.SetIamPolicyRequest; +import com.google.iam.v1.TestIamPermissionsRequest; +import com.google.iam.v1.TestIamPermissionsResponse; +import com.google.protobuf.Empty; +import com.google.protobuf.FieldMask; import com.google.storage.v2.stub.StorageStub; import com.google.storage.v2.stub.StorageStubSettings; import java.io.IOException; +import java.util.List; import java.util.concurrent.TimeUnit; import javax.annotation.Generated; // AUTO-GENERATED DOCUMENTATION AND CLASS. /** - * Service Description: Manages Google Cloud Storage resources. + * Service Description: ## API Overview and Naming Syntax + * + *

    The Cloud Storage gRPC API allows applications to read and write data through the abstractions + * of buckets and objects. For a description of these abstractions please see + * https://cloud.google.com/storage/docs. + * + *

    Resources are named as follows: - Projects are referred to as they are defined by the Resource + * Manager API, using strings like `projects/123456` or `projects/my-string-id`. - Buckets are named + * using string names of the form: `projects/{project}/buckets/{bucket}` For globally unique + * buckets, `_` may be substituted for the project. - Objects are uniquely identified by their name + * along with the name of the bucket they belong to, as separate strings in this API. For example: + * + *

    ReadObjectRequest { bucket: 'projects/_/buckets/my-bucket' object: 'my-object' } Note that + * object names can contain `/` characters, which are treated as any other character (no special + * directory semantics). * *

    This class provides the ability to make remote calls to the backing service through method * calls that map to API methods. Sample code to get started: * *

    {@code
      * try (StorageClient storageClient = StorageClient.create()) {
    - *   StartResumableWriteRequest request =
    - *       StartResumableWriteRequest.newBuilder()
    - *           .setWriteObjectSpec(WriteObjectSpec.newBuilder().build())
    - *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    - *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    - *           .build();
    - *   StartResumableWriteResponse response = storageClient.startResumableWrite(request);
    + *   BucketName name = BucketName.of("[PROJECT]", "[BUCKET]");
    + *   storageClient.deleteBucket(name);
      * }
      * }
    * @@ -144,285 +169,3246 @@ public StorageStub getStub() { // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Reads an object's data. + * Permanently deletes an empty bucket. * *

    Sample code: * *

    {@code
        * try (StorageClient storageClient = StorageClient.create()) {
    -   *   ReadObjectRequest request =
    -   *       ReadObjectRequest.newBuilder()
    -   *           .setBucket("bucket-1378203158")
    -   *           .setObject("object-1023368385")
    -   *           .setGeneration(305703192)
    -   *           .setReadOffset(-715377828)
    -   *           .setReadLimit(-164298798)
    -   *           .setIfGenerationMatch(-1086241088)
    -   *           .setIfGenerationNotMatch(1475720404)
    -   *           .setIfMetagenerationMatch(1043427781)
    -   *           .setIfMetagenerationNotMatch(1025430873)
    -   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    -   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    -   *           .setReadMask(FieldMask.newBuilder().build())
    -   *           .build();
    -   *   ServerStream stream = storageClient.readObjectCallable().call(request);
    -   *   for (ReadObjectResponse response : stream) {
    -   *     // Do something when a response is received.
    -   *   }
    +   *   BucketName name = BucketName.of("[PROJECT]", "[BUCKET]");
    +   *   storageClient.deleteBucket(name);
        * }
        * }
    + * + * @param name Required. Name of a bucket to delete. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - public final ServerStreamingCallable readObjectCallable() { - return stub.readObjectCallable(); + public final void deleteBucket(BucketName name) { + DeleteBucketRequest request = + DeleteBucketRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + deleteBucket(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Stores a new object and metadata. - * - *

    An object can be written either in a single message stream or in a resumable sequence of - * message streams. To write using a single stream, the client should include in the first message - * of the stream an `WriteObjectSpec` describing the destination bucket, object, and any - * preconditions. Additionally, the final message must set 'finish_write' to true, or else it is - * an error. - * - *

    For a resumable write, the client should instead call `StartResumableWrite()` and provide - * that method an `WriteObjectSpec.` They should then attach the returned `upload_id` to the first - * message of each following call to `Create`. If there is an error or the connection is broken - * during the resumable `Create()`, the client should check the status of the `Create()` by - * calling `QueryWriteStatus()` and continue writing from the returned `committed_size`. This may - * be less than the amount of data the client previously sent. - * - *

    The service will not view the object as complete until the client has sent a - * `WriteObjectRequest` with `finish_write` set to `true`. Sending any requests on a stream after - * sending a request with `finish_write` set to `true` will cause an error. The client - * **should** check the response it receives to determine how much data the - * service was able to commit and whether the service views the object as complete. + * Permanently deletes an empty bucket. * *

    Sample code: * *

    {@code
        * try (StorageClient storageClient = StorageClient.create()) {
    -   *   ApiStreamObserver responseObserver =
    -   *       new ApiStreamObserver() {
    -   *         {@literal @}Override
    -   *         public void onNext(WriteObjectResponse response) {
    -   *           // Do something when a response is received.
    -   *         }
    -   *
    -   *         {@literal @}Override
    -   *         public void onError(Throwable t) {
    -   *           // Add error-handling
    -   *         }
    -   *
    -   *         {@literal @}Override
    -   *         public void onCompleted() {
    -   *           // Do something when complete.
    -   *         }
    -   *       };
    -   *   ApiStreamObserver requestObserver =
    -   *       storageClient.writeObject().clientStreamingCall(responseObserver);
    -   *   WriteObjectRequest request =
    -   *       WriteObjectRequest.newBuilder()
    -   *           .setWriteOffset(-1559543565)
    -   *           .setObjectChecksums(ObjectChecksums.newBuilder().build())
    -   *           .setFinishWrite(true)
    -   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    -   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    -   *           .build();
    -   *   requestObserver.onNext(request);
    +   *   String name = BucketName.of("[PROJECT]", "[BUCKET]").toString();
    +   *   storageClient.deleteBucket(name);
        * }
        * }
    + * + * @param name Required. Name of a bucket to delete. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - public final ClientStreamingCallable - writeObjectCallable() { - return stub.writeObjectCallable(); + public final void deleteBucket(String name) { + DeleteBucketRequest request = DeleteBucketRequest.newBuilder().setName(name).build(); + deleteBucket(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Starts a resumable write. How long the write operation remains valid, and what happens when the - * write operation becomes invalid, are service-dependent. + * Permanently deletes an empty bucket. * *

    Sample code: * *

    {@code
        * try (StorageClient storageClient = StorageClient.create()) {
    -   *   StartResumableWriteRequest request =
    -   *       StartResumableWriteRequest.newBuilder()
    -   *           .setWriteObjectSpec(WriteObjectSpec.newBuilder().build())
    -   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *   DeleteBucketRequest request =
    +   *       DeleteBucketRequest.newBuilder()
    +   *           .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString())
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
        *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
        *           .build();
    -   *   StartResumableWriteResponse response = storageClient.startResumableWrite(request);
    +   *   storageClient.deleteBucket(request);
        * }
        * }
    * * @param request The request object containing all of the parameters for the API call. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - public final StartResumableWriteResponse startResumableWrite(StartResumableWriteRequest request) { - return startResumableWriteCallable().call(request); + public final void deleteBucket(DeleteBucketRequest request) { + deleteBucketCallable().call(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Starts a resumable write. How long the write operation remains valid, and what happens when the - * write operation becomes invalid, are service-dependent. + * Permanently deletes an empty bucket. * *

    Sample code: * *

    {@code
        * try (StorageClient storageClient = StorageClient.create()) {
    -   *   StartResumableWriteRequest request =
    -   *       StartResumableWriteRequest.newBuilder()
    -   *           .setWriteObjectSpec(WriteObjectSpec.newBuilder().build())
    -   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *   DeleteBucketRequest request =
    +   *       DeleteBucketRequest.newBuilder()
    +   *           .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString())
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
        *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
        *           .build();
    -   *   ApiFuture future =
    -   *       storageClient.startResumableWriteCallable().futureCall(request);
    +   *   ApiFuture future = storageClient.deleteBucketCallable().futureCall(request);
        *   // Do something.
    -   *   StartResumableWriteResponse response = future.get();
    +   *   future.get();
        * }
        * }
    */ - public final UnaryCallable - startResumableWriteCallable() { - return stub.startResumableWriteCallable(); + public final UnaryCallable deleteBucketCallable() { + return stub.deleteBucketCallable(); } // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Determines the `committed_size` for an object that is being written, which can then be used as - * the `write_offset` for the next `Write()` call. - * - *

    If the object does not exist (i.e., the object has been deleted, or the first `Write()` has - * not yet reached the service), this method returns the error `NOT_FOUND`. - * - *

    The client **may** call `QueryWriteStatus()` at any time to determine how - * much data has been processed for this object. This is useful if the client is buffering data - * and needs to know which data can be safely evicted. For any sequence of `QueryWriteStatus()` - * calls for a given object name, the sequence of returned `committed_size` values will be - * non-decreasing. + * Returns metadata for the specified bucket. * *

    Sample code: * *

    {@code
        * try (StorageClient storageClient = StorageClient.create()) {
    -   *   String uploadId = "uploadId1563990780";
    -   *   QueryWriteStatusResponse response = storageClient.queryWriteStatus(uploadId);
    +   *   BucketName name = BucketName.of("[PROJECT]", "[BUCKET]");
    +   *   Bucket response = storageClient.getBucket(name);
        * }
        * }
    * - * @param uploadId Required. The name of the resume token for the object whose write status is - * being requested. + * @param name Required. Name of a bucket. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - public final QueryWriteStatusResponse queryWriteStatus(String uploadId) { - QueryWriteStatusRequest request = - QueryWriteStatusRequest.newBuilder().setUploadId(uploadId).build(); - return queryWriteStatus(request); + public final Bucket getBucket(BucketName name) { + GetBucketRequest request = + GetBucketRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + return getBucket(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Determines the `committed_size` for an object that is being written, which can then be used as - * the `write_offset` for the next `Write()` call. + * Returns metadata for the specified bucket. * - *

    If the object does not exist (i.e., the object has been deleted, or the first `Write()` has - * not yet reached the service), this method returns the error `NOT_FOUND`. + *

    Sample code: * - *

    The client **may** call `QueryWriteStatus()` at any time to determine how - * much data has been processed for this object. This is useful if the client is buffering data - * and needs to know which data can be safely evicted. For any sequence of `QueryWriteStatus()` - * calls for a given object name, the sequence of returned `committed_size` values will be - * non-decreasing. + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String name = BucketName.of("[PROJECT]", "[BUCKET]").toString();
    +   *   Bucket response = storageClient.getBucket(name);
    +   * }
    +   * }
    + * + * @param name Required. Name of a bucket. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Bucket getBucket(String name) { + GetBucketRequest request = GetBucketRequest.newBuilder().setName(name).build(); + return getBucket(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for the specified bucket. * *

    Sample code: * *

    {@code
        * try (StorageClient storageClient = StorageClient.create()) {
    -   *   QueryWriteStatusRequest request =
    -   *       QueryWriteStatusRequest.newBuilder()
    -   *           .setUploadId("uploadId1563990780")
    -   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *   GetBucketRequest request =
    +   *       GetBucketRequest.newBuilder()
    +   *           .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString())
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
        *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .setReadMask(FieldMask.newBuilder().build())
        *           .build();
    -   *   QueryWriteStatusResponse response = storageClient.queryWriteStatus(request);
    +   *   Bucket response = storageClient.getBucket(request);
        * }
        * }
    * * @param request The request object containing all of the parameters for the API call. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ - public final QueryWriteStatusResponse queryWriteStatus(QueryWriteStatusRequest request) { - return queryWriteStatusCallable().call(request); + public final Bucket getBucket(GetBucketRequest request) { + return getBucketCallable().call(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD. /** - * Determines the `committed_size` for an object that is being written, which can then be used as - * the `write_offset` for the next `Write()` call. - * - *

    If the object does not exist (i.e., the object has been deleted, or the first `Write()` has - * not yet reached the service), this method returns the error `NOT_FOUND`. - * - *

    The client **may** call `QueryWriteStatus()` at any time to determine how - * much data has been processed for this object. This is useful if the client is buffering data - * and needs to know which data can be safely evicted. For any sequence of `QueryWriteStatus()` - * calls for a given object name, the sequence of returned `committed_size` values will be - * non-decreasing. + * Returns metadata for the specified bucket. * *

    Sample code: * *

    {@code
        * try (StorageClient storageClient = StorageClient.create()) {
    -   *   QueryWriteStatusRequest request =
    -   *       QueryWriteStatusRequest.newBuilder()
    -   *           .setUploadId("uploadId1563990780")
    -   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *   GetBucketRequest request =
    +   *       GetBucketRequest.newBuilder()
    +   *           .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString())
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
        *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .setReadMask(FieldMask.newBuilder().build())
        *           .build();
    -   *   ApiFuture future =
    -   *       storageClient.queryWriteStatusCallable().futureCall(request);
    +   *   ApiFuture future = storageClient.getBucketCallable().futureCall(request);
        *   // Do something.
    -   *   QueryWriteStatusResponse response = future.get();
    +   *   Bucket response = future.get();
        * }
        * }
    */ - public final UnaryCallable - queryWriteStatusCallable() { - return stub.queryWriteStatusCallable(); + public final UnaryCallable getBucketCallable() { + return stub.getBucketCallable(); } - @Override - public final void close() { - stub.close(); + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a new bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ProjectName parent = ProjectName.of("[PROJECT]");
    +   *   Bucket bucket = Bucket.newBuilder().build();
    +   *   String bucketId = "bucketId-1603305307";
    +   *   Bucket response = storageClient.createBucket(parent, bucket, bucketId);
    +   * }
    +   * }
    + * + * @param parent Required. The project to which this bucket will belong. + * @param bucket Required. Properties of the new bucket being inserted. The project and name of + * the bucket are specified in this request, not in the bucket resource. + * @param bucketId The ID to use for this bucket, which will become the final component of the + * bucket's resource name. For example, the value `foo` might result in a bucket with the name + * `projects/123456/buckets/foo`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Bucket createBucket(ProjectName parent, Bucket bucket, String bucketId) { + CreateBucketRequest request = + CreateBucketRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setBucket(bucket) + .setBucketId(bucketId) + .build(); + return createBucket(request); } - @Override - public void shutdown() { - stub.shutdown(); + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a new bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String parent = ProjectName.of("[PROJECT]").toString();
    +   *   Bucket bucket = Bucket.newBuilder().build();
    +   *   String bucketId = "bucketId-1603305307";
    +   *   Bucket response = storageClient.createBucket(parent, bucket, bucketId);
    +   * }
    +   * }
    + * + * @param parent Required. The project to which this bucket will belong. + * @param bucket Required. Properties of the new bucket being inserted. The project and name of + * the bucket are specified in this request, not in the bucket resource. + * @param bucketId The ID to use for this bucket, which will become the final component of the + * bucket's resource name. For example, the value `foo` might result in a bucket with the name + * `projects/123456/buckets/foo`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Bucket createBucket(String parent, Bucket bucket, String bucketId) { + CreateBucketRequest request = + CreateBucketRequest.newBuilder() + .setParent(parent) + .setBucket(bucket) + .setBucketId(bucketId) + .build(); + return createBucket(request); } - @Override - public boolean isShutdown() { - return stub.isShutdown(); + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a new bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   CreateBucketRequest request =
    +   *       CreateBucketRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setBucket(Bucket.newBuilder().build())
    +   *           .setBucketId("bucketId-1603305307")
    +   *           .setPredefinedAcl(PredefinedBucketAcl.forNumber(0))
    +   *           .setPredefinedDefaultObjectAcl(PredefinedObjectAcl.forNumber(0))
    +   *           .build();
    +   *   Bucket response = storageClient.createBucket(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Bucket createBucket(CreateBucketRequest request) { + return createBucketCallable().call(request); } - @Override - public boolean isTerminated() { - return stub.isTerminated(); + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a new bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   CreateBucketRequest request =
    +   *       CreateBucketRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setBucket(Bucket.newBuilder().build())
    +   *           .setBucketId("bucketId-1603305307")
    +   *           .setPredefinedAcl(PredefinedBucketAcl.forNumber(0))
    +   *           .setPredefinedDefaultObjectAcl(PredefinedObjectAcl.forNumber(0))
    +   *           .build();
    +   *   ApiFuture future = storageClient.createBucketCallable().futureCall(request);
    +   *   // Do something.
    +   *   Bucket response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable createBucketCallable() { + return stub.createBucketCallable(); } - @Override - public void shutdownNow() { - stub.shutdownNow(); + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of buckets for a given project. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ProjectName parent = ProjectName.of("[PROJECT]");
    +   *   for (Bucket element : storageClient.listBuckets(parent).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param parent Required. The project whose buckets we are listing. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListBucketsPagedResponse listBuckets(ProjectName parent) { + ListBucketsRequest request = + ListBucketsRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listBuckets(request); } - @Override - public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { - return stub.awaitTermination(duration, unit); + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of buckets for a given project. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String parent = ProjectName.of("[PROJECT]").toString();
    +   *   for (Bucket element : storageClient.listBuckets(parent).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param parent Required. The project whose buckets we are listing. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListBucketsPagedResponse listBuckets(String parent) { + ListBucketsRequest request = ListBucketsRequest.newBuilder().setParent(parent).build(); + return listBuckets(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of buckets for a given project. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListBucketsRequest request =
    +   *       ListBucketsRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .setPrefix("prefix-980110702")
    +   *           .setReadMask(FieldMask.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   for (Bucket element : storageClient.listBuckets(request).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListBucketsPagedResponse listBuckets(ListBucketsRequest request) { + return listBucketsPagedCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of buckets for a given project. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListBucketsRequest request =
    +   *       ListBucketsRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .setPrefix("prefix-980110702")
    +   *           .setReadMask(FieldMask.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.listBucketsPagedCallable().futureCall(request);
    +   *   // Do something.
    +   *   for (Bucket element : future.get().iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + */ + public final UnaryCallable + listBucketsPagedCallable() { + return stub.listBucketsPagedCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of buckets for a given project. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListBucketsRequest request =
    +   *       ListBucketsRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .setPrefix("prefix-980110702")
    +   *           .setReadMask(FieldMask.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   while (true) {
    +   *     ListBucketsResponse response = storageClient.listBucketsCallable().call(request);
    +   *     for (Bucket element : response.getResponsesList()) {
    +   *       // doThingsWith(element);
    +   *     }
    +   *     String nextPageToken = response.getNextPageToken();
    +   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
    +   *       request = request.toBuilder().setPageToken(nextPageToken).build();
    +   *     } else {
    +   *       break;
    +   *     }
    +   *   }
    +   * }
    +   * }
    + */ + public final UnaryCallable listBucketsCallable() { + return stub.listBucketsCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Locks retention policy on a bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   BucketName bucket = BucketName.of("[PROJECT]", "[BUCKET]");
    +   *   Bucket response = storageClient.lockBucketRetentionPolicy(bucket);
    +   * }
    +   * }
    + * + * @param bucket Required. Name of a bucket. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Bucket lockBucketRetentionPolicy(BucketName bucket) { + LockBucketRetentionPolicyRequest request = + LockBucketRetentionPolicyRequest.newBuilder() + .setBucket(bucket == null ? null : bucket.toString()) + .build(); + return lockBucketRetentionPolicy(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Locks retention policy on a bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String bucket = BucketName.of("[PROJECT]", "[BUCKET]").toString();
    +   *   Bucket response = storageClient.lockBucketRetentionPolicy(bucket);
    +   * }
    +   * }
    + * + * @param bucket Required. Name of a bucket. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Bucket lockBucketRetentionPolicy(String bucket) { + LockBucketRetentionPolicyRequest request = + LockBucketRetentionPolicyRequest.newBuilder().setBucket(bucket).build(); + return lockBucketRetentionPolicy(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Locks retention policy on a bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   LockBucketRetentionPolicyRequest request =
    +   *       LockBucketRetentionPolicyRequest.newBuilder()
    +   *           .setBucket(BucketName.of("[PROJECT]", "[BUCKET]").toString())
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   Bucket response = storageClient.lockBucketRetentionPolicy(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Bucket lockBucketRetentionPolicy(LockBucketRetentionPolicyRequest request) { + return lockBucketRetentionPolicyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Locks retention policy on a bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   LockBucketRetentionPolicyRequest request =
    +   *       LockBucketRetentionPolicyRequest.newBuilder()
    +   *           .setBucket(BucketName.of("[PROJECT]", "[BUCKET]").toString())
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future =
    +   *       storageClient.lockBucketRetentionPolicyCallable().futureCall(request);
    +   *   // Do something.
    +   *   Bucket response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable + lockBucketRetentionPolicyCallable() { + return stub.lockBucketRetentionPolicyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Gets the IAM policy for a specified bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ResourceName resource =
    +   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]");
    +   *   Policy response = storageClient.getIamPolicy(resource);
    +   * }
    +   * }
    + * + * @param resource REQUIRED: The resource for which the policy is being requested. See the + * operation documentation for the appropriate value for this field. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Policy getIamPolicy(ResourceName resource) { + GetIamPolicyRequest request = + GetIamPolicyRequest.newBuilder() + .setResource(resource == null ? null : resource.toString()) + .build(); + return getIamPolicy(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Gets the IAM policy for a specified bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String resource =
    +   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]").toString();
    +   *   Policy response = storageClient.getIamPolicy(resource);
    +   * }
    +   * }
    + * + * @param resource REQUIRED: The resource for which the policy is being requested. See the + * operation documentation for the appropriate value for this field. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Policy getIamPolicy(String resource) { + GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder().setResource(resource).build(); + return getIamPolicy(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Gets the IAM policy for a specified bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   GetIamPolicyRequest request =
    +   *       GetIamPolicyRequest.newBuilder()
    +   *           .setResource(
    +   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
    +   *                   .toString())
    +   *           .setOptions(GetPolicyOptions.newBuilder().build())
    +   *           .build();
    +   *   Policy response = storageClient.getIamPolicy(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Policy getIamPolicy(GetIamPolicyRequest request) { + return getIamPolicyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Gets the IAM policy for a specified bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   GetIamPolicyRequest request =
    +   *       GetIamPolicyRequest.newBuilder()
    +   *           .setResource(
    +   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
    +   *                   .toString())
    +   *           .setOptions(GetPolicyOptions.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.getIamPolicyCallable().futureCall(request);
    +   *   // Do something.
    +   *   Policy response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable getIamPolicyCallable() { + return stub.getIamPolicyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates an IAM policy for the specified bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ResourceName resource =
    +   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]");
    +   *   Policy policy = Policy.newBuilder().build();
    +   *   Policy response = storageClient.setIamPolicy(resource, policy);
    +   * }
    +   * }
    + * + * @param resource REQUIRED: The resource for which the policy is being specified. See the + * operation documentation for the appropriate value for this field. + * @param policy REQUIRED: The complete policy to be applied to the `resource`. The size of the + * policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud + * Platform services (such as Projects) might reject them. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Policy setIamPolicy(ResourceName resource, Policy policy) { + SetIamPolicyRequest request = + SetIamPolicyRequest.newBuilder() + .setResource(resource == null ? null : resource.toString()) + .setPolicy(policy) + .build(); + return setIamPolicy(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates an IAM policy for the specified bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String resource =
    +   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]").toString();
    +   *   Policy policy = Policy.newBuilder().build();
    +   *   Policy response = storageClient.setIamPolicy(resource, policy);
    +   * }
    +   * }
    + * + * @param resource REQUIRED: The resource for which the policy is being specified. See the + * operation documentation for the appropriate value for this field. + * @param policy REQUIRED: The complete policy to be applied to the `resource`. The size of the + * policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud + * Platform services (such as Projects) might reject them. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Policy setIamPolicy(String resource, Policy policy) { + SetIamPolicyRequest request = + SetIamPolicyRequest.newBuilder().setResource(resource).setPolicy(policy).build(); + return setIamPolicy(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates an IAM policy for the specified bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   SetIamPolicyRequest request =
    +   *       SetIamPolicyRequest.newBuilder()
    +   *           .setResource(
    +   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
    +   *                   .toString())
    +   *           .setPolicy(Policy.newBuilder().build())
    +   *           .build();
    +   *   Policy response = storageClient.setIamPolicy(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Policy setIamPolicy(SetIamPolicyRequest request) { + return setIamPolicyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates an IAM policy for the specified bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   SetIamPolicyRequest request =
    +   *       SetIamPolicyRequest.newBuilder()
    +   *           .setResource(
    +   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
    +   *                   .toString())
    +   *           .setPolicy(Policy.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.setIamPolicyCallable().futureCall(request);
    +   *   // Do something.
    +   *   Policy response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable setIamPolicyCallable() { + return stub.setIamPolicyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Tests a set of permissions on the given bucket to see which, if any, are held by the caller. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ResourceName resource =
    +   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]");
    +   *   List permissions = new ArrayList<>();
    +   *   TestIamPermissionsResponse response = storageClient.testIamPermissions(resource, permissions);
    +   * }
    +   * }
    + * + * @param resource REQUIRED: The resource for which the policy detail is being requested. See the + * operation documentation for the appropriate value for this field. + * @param permissions The set of permissions to check for the `resource`. Permissions with + * wildcards (such as '*' or 'storage.*') are not allowed. For more information see + * [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final TestIamPermissionsResponse testIamPermissions( + ResourceName resource, List permissions) { + TestIamPermissionsRequest request = + TestIamPermissionsRequest.newBuilder() + .setResource(resource == null ? null : resource.toString()) + .addAllPermissions(permissions) + .build(); + return testIamPermissions(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Tests a set of permissions on the given bucket to see which, if any, are held by the caller. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String resource =
    +   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]").toString();
    +   *   List permissions = new ArrayList<>();
    +   *   TestIamPermissionsResponse response = storageClient.testIamPermissions(resource, permissions);
    +   * }
    +   * }
    + * + * @param resource REQUIRED: The resource for which the policy detail is being requested. See the + * operation documentation for the appropriate value for this field. + * @param permissions The set of permissions to check for the `resource`. Permissions with + * wildcards (such as '*' or 'storage.*') are not allowed. For more information see + * [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final TestIamPermissionsResponse testIamPermissions( + String resource, List permissions) { + TestIamPermissionsRequest request = + TestIamPermissionsRequest.newBuilder() + .setResource(resource) + .addAllPermissions(permissions) + .build(); + return testIamPermissions(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Tests a set of permissions on the given bucket to see which, if any, are held by the caller. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   TestIamPermissionsRequest request =
    +   *       TestIamPermissionsRequest.newBuilder()
    +   *           .setResource(
    +   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
    +   *                   .toString())
    +   *           .addAllPermissions(new ArrayList())
    +   *           .build();
    +   *   TestIamPermissionsResponse response = storageClient.testIamPermissions(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final TestIamPermissionsResponse testIamPermissions(TestIamPermissionsRequest request) { + return testIamPermissionsCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Tests a set of permissions on the given bucket to see which, if any, are held by the caller. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   TestIamPermissionsRequest request =
    +   *       TestIamPermissionsRequest.newBuilder()
    +   *           .setResource(
    +   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
    +   *                   .toString())
    +   *           .addAllPermissions(new ArrayList())
    +   *           .build();
    +   *   ApiFuture future =
    +   *       storageClient.testIamPermissionsCallable().futureCall(request);
    +   *   // Do something.
    +   *   TestIamPermissionsResponse response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable + testIamPermissionsCallable() { + return stub.testIamPermissionsCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates a bucket. Equivalent to JSON API's storage.buckets.patch method. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   Bucket bucket = Bucket.newBuilder().build();
    +   *   FieldMask updateMask = FieldMask.newBuilder().build();
    +   *   Bucket response = storageClient.updateBucket(bucket, updateMask);
    +   * }
    +   * }
    + * + * @param bucket The bucket to update. The bucket's `name` field will be used to identify the + * bucket. + * @param updateMask List of fields to be updated. + *

    To specify ALL fields, equivalent to the JSON API's "update" function, specify a single + * field with the value `*`. Note: not recommended. If a new field is introduced at a + * later time, an older client updating with the `*` may accidentally reset the new + * field's value. + *

    Not specifying any fields is an error. Not specifying a field while setting that field + * to a non-default value is an error. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Bucket updateBucket(Bucket bucket, FieldMask updateMask) { + UpdateBucketRequest request = + UpdateBucketRequest.newBuilder().setBucket(bucket).setUpdateMask(updateMask).build(); + return updateBucket(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates a bucket. Equivalent to JSON API's storage.buckets.patch method. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   UpdateBucketRequest request =
    +   *       UpdateBucketRequest.newBuilder()
    +   *           .setBucket(Bucket.newBuilder().build())
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setPredefinedAcl(PredefinedBucketAcl.forNumber(0))
    +   *           .setPredefinedDefaultObjectAcl(PredefinedObjectAcl.forNumber(0))
    +   *           .setUpdateMask(FieldMask.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   Bucket response = storageClient.updateBucket(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Bucket updateBucket(UpdateBucketRequest request) { + return updateBucketCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates a bucket. Equivalent to JSON API's storage.buckets.patch method. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   UpdateBucketRequest request =
    +   *       UpdateBucketRequest.newBuilder()
    +   *           .setBucket(Bucket.newBuilder().build())
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setPredefinedAcl(PredefinedBucketAcl.forNumber(0))
    +   *           .setPredefinedDefaultObjectAcl(PredefinedObjectAcl.forNumber(0))
    +   *           .setUpdateMask(FieldMask.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.updateBucketCallable().futureCall(request);
    +   *   // Do something.
    +   *   Bucket response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable updateBucketCallable() { + return stub.updateBucketCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Permanently deletes a notification subscription. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   NotificationName name = NotificationName.of("[PROJECT]", "[BUCKET]", "[NOTIFICATION]");
    +   *   storageClient.deleteNotification(name);
    +   * }
    +   * }
    + * + * @param name Required. The parent bucket of the notification. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteNotification(NotificationName name) { + DeleteNotificationRequest request = + DeleteNotificationRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .build(); + deleteNotification(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Permanently deletes a notification subscription. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String name = NotificationName.of("[PROJECT]", "[BUCKET]", "[NOTIFICATION]").toString();
    +   *   storageClient.deleteNotification(name);
    +   * }
    +   * }
    + * + * @param name Required. The parent bucket of the notification. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteNotification(String name) { + DeleteNotificationRequest request = + DeleteNotificationRequest.newBuilder().setName(name).build(); + deleteNotification(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Permanently deletes a notification subscription. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   DeleteNotificationRequest request =
    +   *       DeleteNotificationRequest.newBuilder()
    +   *           .setName(NotificationName.of("[PROJECT]", "[BUCKET]", "[NOTIFICATION]").toString())
    +   *           .build();
    +   *   storageClient.deleteNotification(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteNotification(DeleteNotificationRequest request) { + deleteNotificationCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Permanently deletes a notification subscription. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   DeleteNotificationRequest request =
    +   *       DeleteNotificationRequest.newBuilder()
    +   *           .setName(NotificationName.of("[PROJECT]", "[BUCKET]", "[NOTIFICATION]").toString())
    +   *           .build();
    +   *   ApiFuture future = storageClient.deleteNotificationCallable().futureCall(request);
    +   *   // Do something.
    +   *   future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable deleteNotificationCallable() { + return stub.deleteNotificationCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * View a notification config. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   BucketName name = BucketName.of("[PROJECT]", "[BUCKET]");
    +   *   Notification response = storageClient.getNotification(name);
    +   * }
    +   * }
    + * + * @param name Required. The parent bucket of the notification. Format: + * `projects/{project}/buckets/{bucket}/notificationConfigs/{notification}` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Notification getNotification(BucketName name) { + GetNotificationRequest request = + GetNotificationRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + return getNotification(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * View a notification config. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String name = BucketName.of("[PROJECT]", "[BUCKET]").toString();
    +   *   Notification response = storageClient.getNotification(name);
    +   * }
    +   * }
    + * + * @param name Required. The parent bucket of the notification. Format: + * `projects/{project}/buckets/{bucket}/notificationConfigs/{notification}` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Notification getNotification(String name) { + GetNotificationRequest request = GetNotificationRequest.newBuilder().setName(name).build(); + return getNotification(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * View a notification config. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   GetNotificationRequest request =
    +   *       GetNotificationRequest.newBuilder()
    +   *           .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString())
    +   *           .build();
    +   *   Notification response = storageClient.getNotification(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Notification getNotification(GetNotificationRequest request) { + return getNotificationCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * View a notification config. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   GetNotificationRequest request =
    +   *       GetNotificationRequest.newBuilder()
    +   *           .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString())
    +   *           .build();
    +   *   ApiFuture future = storageClient.getNotificationCallable().futureCall(request);
    +   *   // Do something.
    +   *   Notification response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable getNotificationCallable() { + return stub.getNotificationCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a notification subscription for a given bucket. These notifications, when triggered, + * publish messages to the specified Pub/Sub topics. See + * https://cloud.google.com/storage/docs/pubsub-notifications. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ProjectName parent = ProjectName.of("[PROJECT]");
    +   *   Notification notification = Notification.newBuilder().build();
    +   *   Notification response = storageClient.createNotification(parent, notification);
    +   * }
    +   * }
    + * + * @param parent Required. The bucket to which this notification belongs. + * @param notification Required. Properties of the notification to be inserted. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Notification createNotification(ProjectName parent, Notification notification) { + CreateNotificationRequest request = + CreateNotificationRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setNotification(notification) + .build(); + return createNotification(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a notification subscription for a given bucket. These notifications, when triggered, + * publish messages to the specified Pub/Sub topics. See + * https://cloud.google.com/storage/docs/pubsub-notifications. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String parent = ProjectName.of("[PROJECT]").toString();
    +   *   Notification notification = Notification.newBuilder().build();
    +   *   Notification response = storageClient.createNotification(parent, notification);
    +   * }
    +   * }
    + * + * @param parent Required. The bucket to which this notification belongs. + * @param notification Required. Properties of the notification to be inserted. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Notification createNotification(String parent, Notification notification) { + CreateNotificationRequest request = + CreateNotificationRequest.newBuilder() + .setParent(parent) + .setNotification(notification) + .build(); + return createNotification(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a notification subscription for a given bucket. These notifications, when triggered, + * publish messages to the specified Pub/Sub topics. See + * https://cloud.google.com/storage/docs/pubsub-notifications. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   CreateNotificationRequest request =
    +   *       CreateNotificationRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setNotification(Notification.newBuilder().build())
    +   *           .build();
    +   *   Notification response = storageClient.createNotification(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Notification createNotification(CreateNotificationRequest request) { + return createNotificationCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a notification subscription for a given bucket. These notifications, when triggered, + * publish messages to the specified Pub/Sub topics. See + * https://cloud.google.com/storage/docs/pubsub-notifications. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   CreateNotificationRequest request =
    +   *       CreateNotificationRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setNotification(Notification.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future =
    +   *       storageClient.createNotificationCallable().futureCall(request);
    +   *   // Do something.
    +   *   Notification response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable createNotificationCallable() { + return stub.createNotificationCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of notification subscriptions for a given bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ProjectName parent = ProjectName.of("[PROJECT]");
    +   *   for (Notification element : storageClient.listNotifications(parent).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param parent Required. Name of a Google Cloud Storage bucket. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListNotificationsPagedResponse listNotifications(ProjectName parent) { + ListNotificationsRequest request = + ListNotificationsRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listNotifications(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of notification subscriptions for a given bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String parent = ProjectName.of("[PROJECT]").toString();
    +   *   for (Notification element : storageClient.listNotifications(parent).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param parent Required. Name of a Google Cloud Storage bucket. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListNotificationsPagedResponse listNotifications(String parent) { + ListNotificationsRequest request = + ListNotificationsRequest.newBuilder().setParent(parent).build(); + return listNotifications(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of notification subscriptions for a given bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListNotificationsRequest request =
    +   *       ListNotificationsRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .build();
    +   *   for (Notification element : storageClient.listNotifications(request).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListNotificationsPagedResponse listNotifications(ListNotificationsRequest request) { + return listNotificationsPagedCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of notification subscriptions for a given bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListNotificationsRequest request =
    +   *       ListNotificationsRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .build();
    +   *   ApiFuture future =
    +   *       storageClient.listNotificationsPagedCallable().futureCall(request);
    +   *   // Do something.
    +   *   for (Notification element : future.get().iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + */ + public final UnaryCallable + listNotificationsPagedCallable() { + return stub.listNotificationsPagedCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of notification subscriptions for a given bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListNotificationsRequest request =
    +   *       ListNotificationsRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .build();
    +   *   while (true) {
    +   *     ListNotificationsResponse response =
    +   *         storageClient.listNotificationsCallable().call(request);
    +   *     for (Notification element : response.getResponsesList()) {
    +   *       // doThingsWith(element);
    +   *     }
    +   *     String nextPageToken = response.getNextPageToken();
    +   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
    +   *       request = request.toBuilder().setPageToken(nextPageToken).build();
    +   *     } else {
    +   *       break;
    +   *     }
    +   *   }
    +   * }
    +   * }
    + */ + public final UnaryCallable + listNotificationsCallable() { + return stub.listNotificationsCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Concatenates a list of existing objects into a new object in the same bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ComposeObjectRequest request =
    +   *       ComposeObjectRequest.newBuilder()
    +   *           .setDestination(Object.newBuilder().build())
    +   *           .addAllSourceObjects(new ArrayList())
    +   *           .setDestinationPredefinedAcl(PredefinedObjectAcl.forNumber(0))
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setKmsKey(
    +   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
    +   *                   .toString())
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   Object response = storageClient.composeObject(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Object composeObject(ComposeObjectRequest request) { + return composeObjectCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Concatenates a list of existing objects into a new object in the same bucket. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ComposeObjectRequest request =
    +   *       ComposeObjectRequest.newBuilder()
    +   *           .setDestination(Object.newBuilder().build())
    +   *           .addAllSourceObjects(new ArrayList())
    +   *           .setDestinationPredefinedAcl(PredefinedObjectAcl.forNumber(0))
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setKmsKey(
    +   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
    +   *                   .toString())
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.composeObjectCallable().futureCall(request);
    +   *   // Do something.
    +   *   Object response = future.get();
    +   * }
    +   * }
    +   */
    +  public final UnaryCallable composeObjectCallable() {
    +    return stub.composeObjectCallable();
    +  }
    +
    +  // AUTO-GENERATED DOCUMENTATION AND METHOD.
    +  /**
    +   * Deletes an object and its metadata. Deletions are permanent if versioning is not enabled for
    +   * the bucket, or if the `generation` parameter is used.
    +   *
    +   * 

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String bucket = "bucket-1378203158";
    +   *   String object = "object-1023368385";
    +   *   storageClient.deleteObject(bucket, object);
    +   * }
    +   * }
    + * + * @param bucket Required. Name of the bucket in which the object resides. + * @param object Required. The name of the object to delete (when not using a resumable write). + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteObject(String bucket, String object) { + DeleteObjectRequest request = + DeleteObjectRequest.newBuilder().setBucket(bucket).setObject(object).build(); + deleteObject(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes an object and its metadata. Deletions are permanent if versioning is not enabled for + * the bucket, or if the `generation` parameter is used. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String bucket = "bucket-1378203158";
    +   *   String object = "object-1023368385";
    +   *   long generation = 305703192;
    +   *   storageClient.deleteObject(bucket, object, generation);
    +   * }
    +   * }
    + * + * @param bucket Required. Name of the bucket in which the object resides. + * @param object Required. The name of the object to delete (when not using a resumable write). + * @param generation If present, permanently deletes a specific revision of this object (as + * opposed to the latest version, the default). + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteObject(String bucket, String object, long generation) { + DeleteObjectRequest request = + DeleteObjectRequest.newBuilder() + .setBucket(bucket) + .setObject(object) + .setGeneration(generation) + .build(); + deleteObject(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes an object and its metadata. Deletions are permanent if versioning is not enabled for + * the bucket, or if the `generation` parameter is used. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   DeleteObjectRequest request =
    +   *       DeleteObjectRequest.newBuilder()
    +   *           .setBucket("bucket-1378203158")
    +   *           .setObject("object-1023368385")
    +   *           .setUploadId("uploadId1563990780")
    +   *           .setGeneration(305703192)
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfGenerationNotMatch(1475720404)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   storageClient.deleteObject(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteObject(DeleteObjectRequest request) { + deleteObjectCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes an object and its metadata. Deletions are permanent if versioning is not enabled for + * the bucket, or if the `generation` parameter is used. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   DeleteObjectRequest request =
    +   *       DeleteObjectRequest.newBuilder()
    +   *           .setBucket("bucket-1378203158")
    +   *           .setObject("object-1023368385")
    +   *           .setUploadId("uploadId1563990780")
    +   *           .setGeneration(305703192)
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfGenerationNotMatch(1475720404)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.deleteObjectCallable().futureCall(request);
    +   *   // Do something.
    +   *   future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable deleteObjectCallable() { + return stub.deleteObjectCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves an object's metadata. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String bucket = "bucket-1378203158";
    +   *   String object = "object-1023368385";
    +   *   Object response = storageClient.getObject(bucket, object);
    +   * }
    +   * }
    + * + * @param bucket Required. Name of the bucket in which the object resides. + * @param object Required. Name of the object. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Object getObject(String bucket, String object) { + GetObjectRequest request = + GetObjectRequest.newBuilder().setBucket(bucket).setObject(object).build(); + return getObject(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves an object's metadata. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String bucket = "bucket-1378203158";
    +   *   String object = "object-1023368385";
    +   *   long generation = 305703192;
    +   *   Object response = storageClient.getObject(bucket, object, generation);
    +   * }
    +   * }
    + * + * @param bucket Required. Name of the bucket in which the object resides. + * @param object Required. Name of the object. + * @param generation If present, selects a specific revision of this object (as opposed to the + * latest version, the default). + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Object getObject(String bucket, String object, long generation) { + GetObjectRequest request = + GetObjectRequest.newBuilder() + .setBucket(bucket) + .setObject(object) + .setGeneration(generation) + .build(); + return getObject(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves an object's metadata. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   GetObjectRequest request =
    +   *       GetObjectRequest.newBuilder()
    +   *           .setBucket("bucket-1378203158")
    +   *           .setObject("object-1023368385")
    +   *           .setGeneration(305703192)
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfGenerationNotMatch(1475720404)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .setReadMask(FieldMask.newBuilder().build())
    +   *           .build();
    +   *   Object response = storageClient.getObject(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Object getObject(GetObjectRequest request) { + return getObjectCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves an object's metadata. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   GetObjectRequest request =
    +   *       GetObjectRequest.newBuilder()
    +   *           .setBucket("bucket-1378203158")
    +   *           .setObject("object-1023368385")
    +   *           .setGeneration(305703192)
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfGenerationNotMatch(1475720404)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .setReadMask(FieldMask.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.getObjectCallable().futureCall(request);
    +   *   // Do something.
    +   *   Object response = future.get();
    +   * }
    +   * }
    +   */
    +  public final UnaryCallable getObjectCallable() {
    +    return stub.getObjectCallable();
    +  }
    +
    +  // AUTO-GENERATED DOCUMENTATION AND METHOD.
    +  /**
    +   * Reads an object's data.
    +   *
    +   * 

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ReadObjectRequest request =
    +   *       ReadObjectRequest.newBuilder()
    +   *           .setBucket("bucket-1378203158")
    +   *           .setObject("object-1023368385")
    +   *           .setGeneration(305703192)
    +   *           .setReadOffset(-715377828)
    +   *           .setReadLimit(-164298798)
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfGenerationNotMatch(1475720404)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .setReadMask(FieldMask.newBuilder().build())
    +   *           .build();
    +   *   ServerStream stream = storageClient.readObjectCallable().call(request);
    +   *   for (ReadObjectResponse response : stream) {
    +   *     // Do something when a response is received.
    +   *   }
    +   * }
    +   * }
    + */ + public final ServerStreamingCallable readObjectCallable() { + return stub.readObjectCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates an object's metadata. Equivalent to JSON API's storage.objects.patch. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   Object object = Object.newBuilder().build();
    +   *   FieldMask updateMask = FieldMask.newBuilder().build();
    +   *   Object response = storageClient.updateObject(object, updateMask);
    +   * }
    +   * }
    + * + * @param object The object to update. The object's bucket and name fields are used to identify + * the object to update. If present, the object's generation field selects a specific revision + * of this object whose metadata should be updated. Otherwise, assumes the current, live + * version of the object. + * @param updateMask List of fields to be updated. + *

    To specify ALL fields, equivalent to the JSON API's "update" function, specify a single + * field with the value `*`. Note: not recommended. If a new field is introduced at a + * later time, an older client updating with the `*` may accidentally reset the new + * field's value. + *

    Not specifying any fields is an error. Not specifying a field while setting that field + * to a non-default value is an error. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Object updateObject(Object object, FieldMask updateMask) { + UpdateObjectRequest request = + UpdateObjectRequest.newBuilder().setObject(object).setUpdateMask(updateMask).build(); + return updateObject(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates an object's metadata. Equivalent to JSON API's storage.objects.patch. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   UpdateObjectRequest request =
    +   *       UpdateObjectRequest.newBuilder()
    +   *           .setObject(Object.newBuilder().build())
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfGenerationNotMatch(1475720404)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setPredefinedAcl(PredefinedObjectAcl.forNumber(0))
    +   *           .setUpdateMask(FieldMask.newBuilder().build())
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   Object response = storageClient.updateObject(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Object updateObject(UpdateObjectRequest request) { + return updateObjectCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates an object's metadata. Equivalent to JSON API's storage.objects.patch. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   UpdateObjectRequest request =
    +   *       UpdateObjectRequest.newBuilder()
    +   *           .setObject(Object.newBuilder().build())
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfGenerationNotMatch(1475720404)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setPredefinedAcl(PredefinedObjectAcl.forNumber(0))
    +   *           .setUpdateMask(FieldMask.newBuilder().build())
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.updateObjectCallable().futureCall(request);
    +   *   // Do something.
    +   *   Object response = future.get();
    +   * }
    +   * }
    +   */
    +  public final UnaryCallable updateObjectCallable() {
    +    return stub.updateObjectCallable();
    +  }
    +
    +  // AUTO-GENERATED DOCUMENTATION AND METHOD.
    +  /**
    +   * Stores a new object and metadata.
    +   *
    +   * 

    An object can be written either in a single message stream or in a resumable sequence of + * message streams. To write using a single stream, the client should include in the first message + * of the stream an `WriteObjectSpec` describing the destination bucket, object, and any + * preconditions. Additionally, the final message must set 'finish_write' to true, or else it is + * an error. + * + *

    For a resumable write, the client should instead call `StartResumableWrite()` and provide + * that method an `WriteObjectSpec.` They should then attach the returned `upload_id` to the first + * message of each following call to `Create`. If there is an error or the connection is broken + * during the resumable `Create()`, the client should check the status of the `Create()` by + * calling `QueryWriteStatus()` and continue writing from the returned `persisted_size`. This may + * be less than the amount of data the client previously sent. + * + *

    The service will not view the object as complete until the client has sent a + * `WriteObjectRequest` with `finish_write` set to `true`. Sending any requests on a stream after + * sending a request with `finish_write` set to `true` will cause an error. The client + * **should** check the response it receives to determine how much data the + * service was able to commit and whether the service views the object as complete. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ApiStreamObserver responseObserver =
    +   *       new ApiStreamObserver() {
    +   *         {@literal @}Override
    +   *         public void onNext(WriteObjectResponse response) {
    +   *           // Do something when a response is received.
    +   *         }
    +   *
    +   *         {@literal @}Override
    +   *         public void onError(Throwable t) {
    +   *           // Add error-handling
    +   *         }
    +   *
    +   *         {@literal @}Override
    +   *         public void onCompleted() {
    +   *           // Do something when complete.
    +   *         }
    +   *       };
    +   *   ApiStreamObserver requestObserver =
    +   *       storageClient.writeObject().clientStreamingCall(responseObserver);
    +   *   WriteObjectRequest request =
    +   *       WriteObjectRequest.newBuilder()
    +   *           .setWriteOffset(-1559543565)
    +   *           .setObjectChecksums(ObjectChecksums.newBuilder().build())
    +   *           .setFinishWrite(true)
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   requestObserver.onNext(request);
    +   * }
    +   * }
    + */ + public final ClientStreamingCallable + writeObjectCallable() { + return stub.writeObjectCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of objects matching the criteria. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ProjectName parent = ProjectName.of("[PROJECT]");
    +   *   for (Object element : storageClient.listObjects(parent).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param parent Required. Name of the bucket in which to look for objects. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListObjectsPagedResponse listObjects(ProjectName parent) { + ListObjectsRequest request = + ListObjectsRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listObjects(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of objects matching the criteria. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String parent = ProjectName.of("[PROJECT]").toString();
    +   *   for (Object element : storageClient.listObjects(parent).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param parent Required. Name of the bucket in which to look for objects. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListObjectsPagedResponse listObjects(String parent) { + ListObjectsRequest request = ListObjectsRequest.newBuilder().setParent(parent).build(); + return listObjects(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of objects matching the criteria. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListObjectsRequest request =
    +   *       ListObjectsRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .setDelimiter("delimiter-250518009")
    +   *           .setIncludeTrailingDelimiter(true)
    +   *           .setPrefix("prefix-980110702")
    +   *           .setVersions(true)
    +   *           .setReadMask(FieldMask.newBuilder().build())
    +   *           .setLexicographicStart("lexicographicStart-2093413008")
    +   *           .setLexicographicEnd("lexicographicEnd1646968169")
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   for (Object element : storageClient.listObjects(request).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListObjectsPagedResponse listObjects(ListObjectsRequest request) { + return listObjectsPagedCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves a list of objects matching the criteria. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListObjectsRequest request =
    +   *       ListObjectsRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .setDelimiter("delimiter-250518009")
    +   *           .setIncludeTrailingDelimiter(true)
    +   *           .setPrefix("prefix-980110702")
    +   *           .setVersions(true)
    +   *           .setReadMask(FieldMask.newBuilder().build())
    +   *           .setLexicographicStart("lexicographicStart-2093413008")
    +   *           .setLexicographicEnd("lexicographicEnd1646968169")
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.listObjectsPagedCallable().futureCall(request);
    +   *   // Do something.
    +   *   for (Object element : future.get().iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    +   */
    +  public final UnaryCallable
    +      listObjectsPagedCallable() {
    +    return stub.listObjectsPagedCallable();
    +  }
    +
    +  // AUTO-GENERATED DOCUMENTATION AND METHOD.
    +  /**
    +   * Retrieves a list of objects matching the criteria.
    +   *
    +   * 

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListObjectsRequest request =
    +   *       ListObjectsRequest.newBuilder()
    +   *           .setParent(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .setDelimiter("delimiter-250518009")
    +   *           .setIncludeTrailingDelimiter(true)
    +   *           .setPrefix("prefix-980110702")
    +   *           .setVersions(true)
    +   *           .setReadMask(FieldMask.newBuilder().build())
    +   *           .setLexicographicStart("lexicographicStart-2093413008")
    +   *           .setLexicographicEnd("lexicographicEnd1646968169")
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   while (true) {
    +   *     ListObjectsResponse response = storageClient.listObjectsCallable().call(request);
    +   *     for (Object element : response.getResponsesList()) {
    +   *       // doThingsWith(element);
    +   *     }
    +   *     String nextPageToken = response.getNextPageToken();
    +   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
    +   *       request = request.toBuilder().setPageToken(nextPageToken).build();
    +   *     } else {
    +   *       break;
    +   *     }
    +   *   }
    +   * }
    +   * }
    + */ + public final UnaryCallable listObjectsCallable() { + return stub.listObjectsCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Rewrites a source object to a destination object. Optionally overrides metadata. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   RewriteObjectRequest request =
    +   *       RewriteObjectRequest.newBuilder()
    +   *           .setDestination(Object.newBuilder().build())
    +   *           .setRewriteMask(FieldMask.newBuilder().build())
    +   *           .setSourceBucket("sourceBucket841604581")
    +   *           .setSourceObject("sourceObject1196439354")
    +   *           .setSourceGeneration(1232209852)
    +   *           .setRewriteToken("rewriteToken80654285")
    +   *           .setDestinationPredefinedAcl(PredefinedObjectAcl.forNumber(0))
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfGenerationNotMatch(1475720404)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setIfSourceGenerationMatch(-1427877280)
    +   *           .setIfSourceGenerationNotMatch(1575612532)
    +   *           .setIfSourceMetagenerationMatch(1143319909)
    +   *           .setIfSourceMetagenerationNotMatch(1900822777)
    +   *           .setMaxBytesRewrittenPerCall(1178170730)
    +   *           .setCopySourceEncryptionAlgorithm("copySourceEncryptionAlgorithm-1524952548")
    +   *           .setCopySourceEncryptionKeyBytes(ByteString.EMPTY)
    +   *           .setCopySourceEncryptionKeySha256Bytes(ByteString.EMPTY)
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   RewriteResponse response = storageClient.rewriteObject(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final RewriteResponse rewriteObject(RewriteObjectRequest request) { + return rewriteObjectCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Rewrites a source object to a destination object. Optionally overrides metadata. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   RewriteObjectRequest request =
    +   *       RewriteObjectRequest.newBuilder()
    +   *           .setDestination(Object.newBuilder().build())
    +   *           .setRewriteMask(FieldMask.newBuilder().build())
    +   *           .setSourceBucket("sourceBucket841604581")
    +   *           .setSourceObject("sourceObject1196439354")
    +   *           .setSourceGeneration(1232209852)
    +   *           .setRewriteToken("rewriteToken80654285")
    +   *           .setDestinationPredefinedAcl(PredefinedObjectAcl.forNumber(0))
    +   *           .setIfGenerationMatch(-1086241088)
    +   *           .setIfGenerationNotMatch(1475720404)
    +   *           .setIfMetagenerationMatch(1043427781)
    +   *           .setIfMetagenerationNotMatch(1025430873)
    +   *           .setIfSourceGenerationMatch(-1427877280)
    +   *           .setIfSourceGenerationNotMatch(1575612532)
    +   *           .setIfSourceMetagenerationMatch(1143319909)
    +   *           .setIfSourceMetagenerationNotMatch(1900822777)
    +   *           .setMaxBytesRewrittenPerCall(1178170730)
    +   *           .setCopySourceEncryptionAlgorithm("copySourceEncryptionAlgorithm-1524952548")
    +   *           .setCopySourceEncryptionKeyBytes(ByteString.EMPTY)
    +   *           .setCopySourceEncryptionKeySha256Bytes(ByteString.EMPTY)
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.rewriteObjectCallable().futureCall(request);
    +   *   // Do something.
    +   *   RewriteResponse response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable rewriteObjectCallable() { + return stub.rewriteObjectCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Starts a resumable write. How long the write operation remains valid, and what happens when the + * write operation becomes invalid, are service-dependent. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   StartResumableWriteRequest request =
    +   *       StartResumableWriteRequest.newBuilder()
    +   *           .setWriteObjectSpec(WriteObjectSpec.newBuilder().build())
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   StartResumableWriteResponse response = storageClient.startResumableWrite(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final StartResumableWriteResponse startResumableWrite(StartResumableWriteRequest request) { + return startResumableWriteCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Starts a resumable write. How long the write operation remains valid, and what happens when the + * write operation becomes invalid, are service-dependent. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   StartResumableWriteRequest request =
    +   *       StartResumableWriteRequest.newBuilder()
    +   *           .setWriteObjectSpec(WriteObjectSpec.newBuilder().build())
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future =
    +   *       storageClient.startResumableWriteCallable().futureCall(request);
    +   *   // Do something.
    +   *   StartResumableWriteResponse response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable + startResumableWriteCallable() { + return stub.startResumableWriteCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Determines the `persisted_size` for an object that is being written, which can then be used as + * the `write_offset` for the next `Write()` call. + * + *

    If the object does not exist (i.e., the object has been deleted, or the first `Write()` has + * not yet reached the service), this method returns the error `NOT_FOUND`. + * + *

    The client **may** call `QueryWriteStatus()` at any time to determine how + * much data has been processed for this object. This is useful if the client is buffering data + * and needs to know which data can be safely evicted. For any sequence of `QueryWriteStatus()` + * calls for a given object name, the sequence of returned `persisted_size` values will be + * non-decreasing. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String uploadId = "uploadId1563990780";
    +   *   QueryWriteStatusResponse response = storageClient.queryWriteStatus(uploadId);
    +   * }
    +   * }
    + * + * @param uploadId Required. The name of the resume token for the object whose write status is + * being requested. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final QueryWriteStatusResponse queryWriteStatus(String uploadId) { + QueryWriteStatusRequest request = + QueryWriteStatusRequest.newBuilder().setUploadId(uploadId).build(); + return queryWriteStatus(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Determines the `persisted_size` for an object that is being written, which can then be used as + * the `write_offset` for the next `Write()` call. + * + *

    If the object does not exist (i.e., the object has been deleted, or the first `Write()` has + * not yet reached the service), this method returns the error `NOT_FOUND`. + * + *

    The client **may** call `QueryWriteStatus()` at any time to determine how + * much data has been processed for this object. This is useful if the client is buffering data + * and needs to know which data can be safely evicted. For any sequence of `QueryWriteStatus()` + * calls for a given object name, the sequence of returned `persisted_size` values will be + * non-decreasing. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   QueryWriteStatusRequest request =
    +   *       QueryWriteStatusRequest.newBuilder()
    +   *           .setUploadId("uploadId1563990780")
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   QueryWriteStatusResponse response = storageClient.queryWriteStatus(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final QueryWriteStatusResponse queryWriteStatus(QueryWriteStatusRequest request) { + return queryWriteStatusCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Determines the `persisted_size` for an object that is being written, which can then be used as + * the `write_offset` for the next `Write()` call. + * + *

    If the object does not exist (i.e., the object has been deleted, or the first `Write()` has + * not yet reached the service), this method returns the error `NOT_FOUND`. + * + *

    The client **may** call `QueryWriteStatus()` at any time to determine how + * much data has been processed for this object. This is useful if the client is buffering data + * and needs to know which data can be safely evicted. For any sequence of `QueryWriteStatus()` + * calls for a given object name, the sequence of returned `persisted_size` values will be + * non-decreasing. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   QueryWriteStatusRequest request =
    +   *       QueryWriteStatusRequest.newBuilder()
    +   *           .setUploadId("uploadId1563990780")
    +   *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future =
    +   *       storageClient.queryWriteStatusCallable().futureCall(request);
    +   *   // Do something.
    +   *   QueryWriteStatusResponse response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable + queryWriteStatusCallable() { + return stub.queryWriteStatusCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves the name of a project's Google Cloud Storage service account. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ProjectName project = ProjectName.of("[PROJECT]");
    +   *   ServiceAccount response = storageClient.getServiceAccount(project);
    +   * }
    +   * }
    + * + * @param project Required. Project ID. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ServiceAccount getServiceAccount(ProjectName project) { + GetServiceAccountRequest request = + GetServiceAccountRequest.newBuilder() + .setProject(project == null ? null : project.toString()) + .build(); + return getServiceAccount(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves the name of a project's Google Cloud Storage service account. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String project = ProjectName.of("[PROJECT]").toString();
    +   *   ServiceAccount response = storageClient.getServiceAccount(project);
    +   * }
    +   * }
    + * + * @param project Required. Project ID. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ServiceAccount getServiceAccount(String project) { + GetServiceAccountRequest request = + GetServiceAccountRequest.newBuilder().setProject(project).build(); + return getServiceAccount(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves the name of a project's Google Cloud Storage service account. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   GetServiceAccountRequest request =
    +   *       GetServiceAccountRequest.newBuilder()
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ServiceAccount response = storageClient.getServiceAccount(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ServiceAccount getServiceAccount(GetServiceAccountRequest request) { + return getServiceAccountCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Retrieves the name of a project's Google Cloud Storage service account. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   GetServiceAccountRequest request =
    +   *       GetServiceAccountRequest.newBuilder()
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future =
    +   *       storageClient.getServiceAccountCallable().futureCall(request);
    +   *   // Do something.
    +   *   ServiceAccount response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable getServiceAccountCallable() { + return stub.getServiceAccountCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a new HMAC key for the given service account. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ProjectName project = ProjectName.of("[PROJECT]");
    +   *   String serviceAccountEmail = "serviceAccountEmail1825953988";
    +   *   CreateHmacKeyResponse response = storageClient.createHmacKey(project, serviceAccountEmail);
    +   * }
    +   * }
    + * + * @param project Required. The project that the HMAC-owning service account lives in. + * @param serviceAccountEmail Required. The service account to create the HMAC for. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CreateHmacKeyResponse createHmacKey( + ProjectName project, String serviceAccountEmail) { + CreateHmacKeyRequest request = + CreateHmacKeyRequest.newBuilder() + .setProject(project == null ? null : project.toString()) + .setServiceAccountEmail(serviceAccountEmail) + .build(); + return createHmacKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a new HMAC key for the given service account. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String project = ProjectName.of("[PROJECT]").toString();
    +   *   String serviceAccountEmail = "serviceAccountEmail1825953988";
    +   *   CreateHmacKeyResponse response = storageClient.createHmacKey(project, serviceAccountEmail);
    +   * }
    +   * }
    + * + * @param project Required. The project that the HMAC-owning service account lives in. + * @param serviceAccountEmail Required. The service account to create the HMAC for. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CreateHmacKeyResponse createHmacKey(String project, String serviceAccountEmail) { + CreateHmacKeyRequest request = + CreateHmacKeyRequest.newBuilder() + .setProject(project) + .setServiceAccountEmail(serviceAccountEmail) + .build(); + return createHmacKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a new HMAC key for the given service account. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   CreateHmacKeyRequest request =
    +   *       CreateHmacKeyRequest.newBuilder()
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setServiceAccountEmail("serviceAccountEmail1825953988")
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   CreateHmacKeyResponse response = storageClient.createHmacKey(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CreateHmacKeyResponse createHmacKey(CreateHmacKeyRequest request) { + return createHmacKeyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Creates a new HMAC key for the given service account. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   CreateHmacKeyRequest request =
    +   *       CreateHmacKeyRequest.newBuilder()
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setServiceAccountEmail("serviceAccountEmail1825953988")
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future =
    +   *       storageClient.createHmacKeyCallable().futureCall(request);
    +   *   // Do something.
    +   *   CreateHmacKeyResponse response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable createHmacKeyCallable() { + return stub.createHmacKeyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes a given HMAC key. Key must be in an INACTIVE state. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String accessId = "accessId-2146437729";
    +   *   ProjectName project = ProjectName.of("[PROJECT]");
    +   *   storageClient.deleteHmacKey(accessId, project);
    +   * }
    +   * }
    + * + * @param accessId Required. The identifying key for the HMAC to delete. + * @param project Required. The project id the HMAC key lies in. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteHmacKey(String accessId, ProjectName project) { + DeleteHmacKeyRequest request = + DeleteHmacKeyRequest.newBuilder() + .setAccessId(accessId) + .setProject(project == null ? null : project.toString()) + .build(); + deleteHmacKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes a given HMAC key. Key must be in an INACTIVE state. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String accessId = "accessId-2146437729";
    +   *   String project = ProjectName.of("[PROJECT]").toString();
    +   *   storageClient.deleteHmacKey(accessId, project);
    +   * }
    +   * }
    + * + * @param accessId Required. The identifying key for the HMAC to delete. + * @param project Required. The project id the HMAC key lies in. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteHmacKey(String accessId, String project) { + DeleteHmacKeyRequest request = + DeleteHmacKeyRequest.newBuilder().setAccessId(accessId).setProject(project).build(); + deleteHmacKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes a given HMAC key. Key must be in an INACTIVE state. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   DeleteHmacKeyRequest request =
    +   *       DeleteHmacKeyRequest.newBuilder()
    +   *           .setAccessId("accessId-2146437729")
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   storageClient.deleteHmacKey(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteHmacKey(DeleteHmacKeyRequest request) { + deleteHmacKeyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Deletes a given HMAC key. Key must be in an INACTIVE state. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   DeleteHmacKeyRequest request =
    +   *       DeleteHmacKeyRequest.newBuilder()
    +   *           .setAccessId("accessId-2146437729")
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.deleteHmacKeyCallable().futureCall(request);
    +   *   // Do something.
    +   *   future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable deleteHmacKeyCallable() { + return stub.deleteHmacKeyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Gets an existing HMAC key metadata for the given id. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String accessId = "accessId-2146437729";
    +   *   ProjectName project = ProjectName.of("[PROJECT]");
    +   *   HmacKeyMetadata response = storageClient.getHmacKey(accessId, project);
    +   * }
    +   * }
    + * + * @param accessId Required. The identifying key for the HMAC to delete. + * @param project Required. The project id the HMAC key lies in. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final HmacKeyMetadata getHmacKey(String accessId, ProjectName project) { + GetHmacKeyRequest request = + GetHmacKeyRequest.newBuilder() + .setAccessId(accessId) + .setProject(project == null ? null : project.toString()) + .build(); + return getHmacKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Gets an existing HMAC key metadata for the given id. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String accessId = "accessId-2146437729";
    +   *   String project = ProjectName.of("[PROJECT]").toString();
    +   *   HmacKeyMetadata response = storageClient.getHmacKey(accessId, project);
    +   * }
    +   * }
    + * + * @param accessId Required. The identifying key for the HMAC to delete. + * @param project Required. The project id the HMAC key lies in. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final HmacKeyMetadata getHmacKey(String accessId, String project) { + GetHmacKeyRequest request = + GetHmacKeyRequest.newBuilder().setAccessId(accessId).setProject(project).build(); + return getHmacKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Gets an existing HMAC key metadata for the given id. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   GetHmacKeyRequest request =
    +   *       GetHmacKeyRequest.newBuilder()
    +   *           .setAccessId("accessId-2146437729")
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   HmacKeyMetadata response = storageClient.getHmacKey(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final HmacKeyMetadata getHmacKey(GetHmacKeyRequest request) { + return getHmacKeyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Gets an existing HMAC key metadata for the given id. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   GetHmacKeyRequest request =
    +   *       GetHmacKeyRequest.newBuilder()
    +   *           .setAccessId("accessId-2146437729")
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.getHmacKeyCallable().futureCall(request);
    +   *   // Do something.
    +   *   HmacKeyMetadata response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable getHmacKeyCallable() { + return stub.getHmacKeyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists HMAC keys under a given project with the additional filters provided. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ProjectName project = ProjectName.of("[PROJECT]");
    +   *   for (HmacKeyMetadata element : storageClient.listHmacKeys(project).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param project Required. The project id to list HMAC keys for. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListHmacKeysPagedResponse listHmacKeys(ProjectName project) { + ListHmacKeysRequest request = + ListHmacKeysRequest.newBuilder() + .setProject(project == null ? null : project.toString()) + .build(); + return listHmacKeys(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists HMAC keys under a given project with the additional filters provided. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   String project = ProjectName.of("[PROJECT]").toString();
    +   *   for (HmacKeyMetadata element : storageClient.listHmacKeys(project).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param project Required. The project id to list HMAC keys for. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListHmacKeysPagedResponse listHmacKeys(String project) { + ListHmacKeysRequest request = ListHmacKeysRequest.newBuilder().setProject(project).build(); + return listHmacKeys(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists HMAC keys under a given project with the additional filters provided. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListHmacKeysRequest request =
    +   *       ListHmacKeysRequest.newBuilder()
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .setServiceAccountEmail("serviceAccountEmail1825953988")
    +   *           .setShowDeletedKeys(true)
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   for (HmacKeyMetadata element : storageClient.listHmacKeys(request).iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListHmacKeysPagedResponse listHmacKeys(ListHmacKeysRequest request) { + return listHmacKeysPagedCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists HMAC keys under a given project with the additional filters provided. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListHmacKeysRequest request =
    +   *       ListHmacKeysRequest.newBuilder()
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .setServiceAccountEmail("serviceAccountEmail1825953988")
    +   *           .setShowDeletedKeys(true)
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future =
    +   *       storageClient.listHmacKeysPagedCallable().futureCall(request);
    +   *   // Do something.
    +   *   for (HmacKeyMetadata element : future.get().iterateAll()) {
    +   *     // doThingsWith(element);
    +   *   }
    +   * }
    +   * }
    + */ + public final UnaryCallable + listHmacKeysPagedCallable() { + return stub.listHmacKeysPagedCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists HMAC keys under a given project with the additional filters provided. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   ListHmacKeysRequest request =
    +   *       ListHmacKeysRequest.newBuilder()
    +   *           .setProject(ProjectName.of("[PROJECT]").toString())
    +   *           .setPageSize(883849137)
    +   *           .setPageToken("pageToken873572522")
    +   *           .setServiceAccountEmail("serviceAccountEmail1825953988")
    +   *           .setShowDeletedKeys(true)
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .build();
    +   *   while (true) {
    +   *     ListHmacKeysResponse response = storageClient.listHmacKeysCallable().call(request);
    +   *     for (HmacKeyMetadata element : response.getResponsesList()) {
    +   *       // doThingsWith(element);
    +   *     }
    +   *     String nextPageToken = response.getNextPageToken();
    +   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
    +   *       request = request.toBuilder().setPageToken(nextPageToken).build();
    +   *     } else {
    +   *       break;
    +   *     }
    +   *   }
    +   * }
    +   * }
    + */ + public final UnaryCallable listHmacKeysCallable() { + return stub.listHmacKeysCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates a given HMAC key state between ACTIVE and INACTIVE. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   HmacKeyMetadata hmacKey = HmacKeyMetadata.newBuilder().build();
    +   *   FieldMask updateMask = FieldMask.newBuilder().build();
    +   *   HmacKeyMetadata response = storageClient.updateHmacKey(hmacKey, updateMask);
    +   * }
    +   * }
    + * + * @param hmacKey Required. The HMAC key to update. If present, the hmac_key's `id` field will be + * used to identify the key. Otherwise, the hmac_key's access_id and project fields will be + * used to identify the key. + * @param updateMask Update mask for hmac_key. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final HmacKeyMetadata updateHmacKey(HmacKeyMetadata hmacKey, FieldMask updateMask) { + UpdateHmacKeyRequest request = + UpdateHmacKeyRequest.newBuilder().setHmacKey(hmacKey).setUpdateMask(updateMask).build(); + return updateHmacKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates a given HMAC key state between ACTIVE and INACTIVE. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   UpdateHmacKeyRequest request =
    +   *       UpdateHmacKeyRequest.newBuilder()
    +   *           .setHmacKey(HmacKeyMetadata.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .setUpdateMask(FieldMask.newBuilder().build())
    +   *           .build();
    +   *   HmacKeyMetadata response = storageClient.updateHmacKey(request);
    +   * }
    +   * }
    + * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final HmacKeyMetadata updateHmacKey(UpdateHmacKeyRequest request) { + return updateHmacKeyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Updates a given HMAC key state between ACTIVE and INACTIVE. + * + *

    Sample code: + * + *

    {@code
    +   * try (StorageClient storageClient = StorageClient.create()) {
    +   *   UpdateHmacKeyRequest request =
    +   *       UpdateHmacKeyRequest.newBuilder()
    +   *           .setHmacKey(HmacKeyMetadata.newBuilder().build())
    +   *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    +   *           .setUpdateMask(FieldMask.newBuilder().build())
    +   *           .build();
    +   *   ApiFuture future = storageClient.updateHmacKeyCallable().futureCall(request);
    +   *   // Do something.
    +   *   HmacKeyMetadata response = future.get();
    +   * }
    +   * }
    + */ + public final UnaryCallable updateHmacKeyCallable() { + return stub.updateHmacKeyCallable(); + } + + @Override + public final void close() { + stub.close(); + } + + @Override + public void shutdown() { + stub.shutdown(); + } + + @Override + public boolean isShutdown() { + return stub.isShutdown(); + } + + @Override + public boolean isTerminated() { + return stub.isTerminated(); + } + + @Override + public void shutdownNow() { + stub.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return stub.awaitTermination(duration, unit); + } + + public static class ListBucketsPagedResponse + extends AbstractPagedListResponse< + ListBucketsRequest, + ListBucketsResponse, + Bucket, + ListBucketsPage, + ListBucketsFixedSizeCollection> { + + public static ApiFuture createAsync( + PageContext context, + ApiFuture futureResponse) { + ApiFuture futurePage = + ListBucketsPage.createEmptyPage().createPageAsync(context, futureResponse); + return ApiFutures.transform( + futurePage, input -> new ListBucketsPagedResponse(input), MoreExecutors.directExecutor()); + } + + private ListBucketsPagedResponse(ListBucketsPage page) { + super(page, ListBucketsFixedSizeCollection.createEmptyCollection()); + } + } + + public static class ListBucketsPage + extends AbstractPage { + + private ListBucketsPage( + PageContext context, + ListBucketsResponse response) { + super(context, response); + } + + private static ListBucketsPage createEmptyPage() { + return new ListBucketsPage(null, null); + } + + @Override + protected ListBucketsPage createPage( + PageContext context, + ListBucketsResponse response) { + return new ListBucketsPage(context, response); + } + + @Override + public ApiFuture createPageAsync( + PageContext context, + ApiFuture futureResponse) { + return super.createPageAsync(context, futureResponse); + } + } + + public static class ListBucketsFixedSizeCollection + extends AbstractFixedSizeCollection< + ListBucketsRequest, + ListBucketsResponse, + Bucket, + ListBucketsPage, + ListBucketsFixedSizeCollection> { + + private ListBucketsFixedSizeCollection(List pages, int collectionSize) { + super(pages, collectionSize); + } + + private static ListBucketsFixedSizeCollection createEmptyCollection() { + return new ListBucketsFixedSizeCollection(null, 0); + } + + @Override + protected ListBucketsFixedSizeCollection createCollection( + List pages, int collectionSize) { + return new ListBucketsFixedSizeCollection(pages, collectionSize); + } + } + + public static class ListNotificationsPagedResponse + extends AbstractPagedListResponse< + ListNotificationsRequest, + ListNotificationsResponse, + Notification, + ListNotificationsPage, + ListNotificationsFixedSizeCollection> { + + public static ApiFuture createAsync( + PageContext context, + ApiFuture futureResponse) { + ApiFuture futurePage = + ListNotificationsPage.createEmptyPage().createPageAsync(context, futureResponse); + return ApiFutures.transform( + futurePage, + input -> new ListNotificationsPagedResponse(input), + MoreExecutors.directExecutor()); + } + + private ListNotificationsPagedResponse(ListNotificationsPage page) { + super(page, ListNotificationsFixedSizeCollection.createEmptyCollection()); + } + } + + public static class ListNotificationsPage + extends AbstractPage< + ListNotificationsRequest, + ListNotificationsResponse, + Notification, + ListNotificationsPage> { + + private ListNotificationsPage( + PageContext context, + ListNotificationsResponse response) { + super(context, response); + } + + private static ListNotificationsPage createEmptyPage() { + return new ListNotificationsPage(null, null); + } + + @Override + protected ListNotificationsPage createPage( + PageContext context, + ListNotificationsResponse response) { + return new ListNotificationsPage(context, response); + } + + @Override + public ApiFuture createPageAsync( + PageContext context, + ApiFuture futureResponse) { + return super.createPageAsync(context, futureResponse); + } + } + + public static class ListNotificationsFixedSizeCollection + extends AbstractFixedSizeCollection< + ListNotificationsRequest, + ListNotificationsResponse, + Notification, + ListNotificationsPage, + ListNotificationsFixedSizeCollection> { + + private ListNotificationsFixedSizeCollection( + List pages, int collectionSize) { + super(pages, collectionSize); + } + + private static ListNotificationsFixedSizeCollection createEmptyCollection() { + return new ListNotificationsFixedSizeCollection(null, 0); + } + + @Override + protected ListNotificationsFixedSizeCollection createCollection( + List pages, int collectionSize) { + return new ListNotificationsFixedSizeCollection(pages, collectionSize); + } + } + + public static class ListObjectsPagedResponse + extends AbstractPagedListResponse< + ListObjectsRequest, + ListObjectsResponse, + Object, + ListObjectsPage, + ListObjectsFixedSizeCollection> { + + public static ApiFuture createAsync( + PageContext context, + ApiFuture futureResponse) { + ApiFuture futurePage = + ListObjectsPage.createEmptyPage().createPageAsync(context, futureResponse); + return ApiFutures.transform( + futurePage, input -> new ListObjectsPagedResponse(input), MoreExecutors.directExecutor()); + } + + private ListObjectsPagedResponse(ListObjectsPage page) { + super(page, ListObjectsFixedSizeCollection.createEmptyCollection()); + } + } + + public static class ListObjectsPage + extends AbstractPage { + + private ListObjectsPage( + PageContext context, + ListObjectsResponse response) { + super(context, response); + } + + private static ListObjectsPage createEmptyPage() { + return new ListObjectsPage(null, null); + } + + @Override + protected ListObjectsPage createPage( + PageContext context, + ListObjectsResponse response) { + return new ListObjectsPage(context, response); + } + + @Override + public ApiFuture createPageAsync( + PageContext context, + ApiFuture futureResponse) { + return super.createPageAsync(context, futureResponse); + } + } + + public static class ListObjectsFixedSizeCollection + extends AbstractFixedSizeCollection< + ListObjectsRequest, + ListObjectsResponse, + Object, + ListObjectsPage, + ListObjectsFixedSizeCollection> { + + private ListObjectsFixedSizeCollection(List pages, int collectionSize) { + super(pages, collectionSize); + } + + private static ListObjectsFixedSizeCollection createEmptyCollection() { + return new ListObjectsFixedSizeCollection(null, 0); + } + + @Override + protected ListObjectsFixedSizeCollection createCollection( + List pages, int collectionSize) { + return new ListObjectsFixedSizeCollection(pages, collectionSize); + } + } + + public static class ListHmacKeysPagedResponse + extends AbstractPagedListResponse< + ListHmacKeysRequest, + ListHmacKeysResponse, + HmacKeyMetadata, + ListHmacKeysPage, + ListHmacKeysFixedSizeCollection> { + + public static ApiFuture createAsync( + PageContext context, + ApiFuture futureResponse) { + ApiFuture futurePage = + ListHmacKeysPage.createEmptyPage().createPageAsync(context, futureResponse); + return ApiFutures.transform( + futurePage, + input -> new ListHmacKeysPagedResponse(input), + MoreExecutors.directExecutor()); + } + + private ListHmacKeysPagedResponse(ListHmacKeysPage page) { + super(page, ListHmacKeysFixedSizeCollection.createEmptyCollection()); + } + } + + public static class ListHmacKeysPage + extends AbstractPage< + ListHmacKeysRequest, ListHmacKeysResponse, HmacKeyMetadata, ListHmacKeysPage> { + + private ListHmacKeysPage( + PageContext context, + ListHmacKeysResponse response) { + super(context, response); + } + + private static ListHmacKeysPage createEmptyPage() { + return new ListHmacKeysPage(null, null); + } + + @Override + protected ListHmacKeysPage createPage( + PageContext context, + ListHmacKeysResponse response) { + return new ListHmacKeysPage(context, response); + } + + @Override + public ApiFuture createPageAsync( + PageContext context, + ApiFuture futureResponse) { + return super.createPageAsync(context, futureResponse); + } + } + + public static class ListHmacKeysFixedSizeCollection + extends AbstractFixedSizeCollection< + ListHmacKeysRequest, + ListHmacKeysResponse, + HmacKeyMetadata, + ListHmacKeysPage, + ListHmacKeysFixedSizeCollection> { + + private ListHmacKeysFixedSizeCollection(List pages, int collectionSize) { + super(pages, collectionSize); + } + + private static ListHmacKeysFixedSizeCollection createEmptyCollection() { + return new ListHmacKeysFixedSizeCollection(null, 0); + } + + @Override + protected ListHmacKeysFixedSizeCollection createCollection( + List pages, int collectionSize) { + return new ListHmacKeysFixedSizeCollection(pages, collectionSize); + } } } diff --git a/test/integration/goldens/storage/com/google/storage/v2/StorageClientTest.java b/test/integration/goldens/storage/com/google/storage/v2/StorageClientTest.java index 6374e98e7a..fe991b4e06 100644 --- a/test/integration/goldens/storage/com/google/storage/v2/StorageClientTest.java +++ b/test/integration/goldens/storage/com/google/storage/v2/StorageClientTest.java @@ -16,6 +16,11 @@ package com.google.storage.v2; +import static com.google.storage.v2.StorageClient.ListBucketsPagedResponse; +import static com.google.storage.v2.StorageClient.ListHmacKeysPagedResponse; +import static com.google.storage.v2.StorageClient.ListNotificationsPagedResponse; +import static com.google.storage.v2.StorageClient.ListObjectsPagedResponse; + import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.grpc.GaxGrpcProperties; import com.google.api.gax.grpc.testing.LocalChannelProvider; @@ -28,11 +33,24 @@ import com.google.api.gax.rpc.InvalidArgumentException; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.StatusCode; +import com.google.api.resourcenames.ResourceName; +import com.google.common.collect.Lists; +import com.google.iam.v1.Binding; +import com.google.iam.v1.GetIamPolicyRequest; +import com.google.iam.v1.Policy; +import com.google.iam.v1.SetIamPolicyRequest; +import com.google.iam.v1.TestIamPermissionsRequest; +import com.google.iam.v1.TestIamPermissionsResponse; import com.google.protobuf.AbstractMessage; +import com.google.protobuf.ByteString; +import com.google.protobuf.Empty; import com.google.protobuf.FieldMask; +import com.google.protobuf.Timestamp; import io.grpc.StatusRuntimeException; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; import java.util.UUID; import java.util.concurrent.ExecutionException; @@ -83,162 +101,246 @@ public void tearDown() throws Exception { } @Test - public void readObjectTest() throws Exception { - ReadObjectResponse expectedResponse = - ReadObjectResponse.newBuilder() - .setChecksummedData(ChecksummedData.newBuilder().build()) - .setObjectChecksums(ObjectChecksums.newBuilder().build()) - .setContentRange(ContentRange.newBuilder().build()) - .setMetadata(Object.newBuilder().build()) - .build(); + public void deleteBucketTest() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); mockStorage.addResponse(expectedResponse); - ReadObjectRequest request = - ReadObjectRequest.newBuilder() - .setBucket("bucket-1378203158") - .setObject("object-1023368385") - .setGeneration(305703192) - .setReadOffset(-715377828) - .setReadLimit(-164298798) - .setIfGenerationMatch(-1086241088) - .setIfGenerationNotMatch(1475720404) - .setIfMetagenerationMatch(1043427781) - .setIfMetagenerationNotMatch(1025430873) - .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) - .setCommonRequestParams(CommonRequestParams.newBuilder().build()) - .setReadMask(FieldMask.newBuilder().build()) - .build(); - MockStreamObserver responseObserver = new MockStreamObserver<>(); + BucketName name = BucketName.of("[PROJECT]", "[BUCKET]"); - ServerStreamingCallable callable = - client.readObjectCallable(); - callable.serverStreamingCall(request, responseObserver); + client.deleteBucket(name); - List actualResponses = responseObserver.future().get(); - Assert.assertEquals(1, actualResponses.size()); - Assert.assertEquals(expectedResponse, actualResponses.get(0)); + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DeleteBucketRequest actualRequest = ((DeleteBucketRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); } @Test - public void readObjectExceptionTest() throws Exception { + public void deleteBucketExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockStorage.addException(exception); - ReadObjectRequest request = - ReadObjectRequest.newBuilder() - .setBucket("bucket-1378203158") - .setObject("object-1023368385") - .setGeneration(305703192) - .setReadOffset(-715377828) - .setReadLimit(-164298798) - .setIfGenerationMatch(-1086241088) - .setIfGenerationNotMatch(1475720404) - .setIfMetagenerationMatch(1043427781) - .setIfMetagenerationNotMatch(1025430873) - .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) - .setCommonRequestParams(CommonRequestParams.newBuilder().build()) - .setReadMask(FieldMask.newBuilder().build()) - .build(); - MockStreamObserver responseObserver = new MockStreamObserver<>(); + try { + BucketName name = BucketName.of("[PROJECT]", "[BUCKET]"); + client.deleteBucket(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } - ServerStreamingCallable callable = - client.readObjectCallable(); - callable.serverStreamingCall(request, responseObserver); + @Test + public void deleteBucketTest2() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); + mockStorage.addResponse(expectedResponse); + + String name = "name3373707"; + + client.deleteBucket(name); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DeleteBucketRequest actualRequest = ((DeleteBucketRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void deleteBucketExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); try { - List actualResponses = responseObserver.future().get(); - Assert.fail("No exception thrown"); - } catch (ExecutionException e) { - Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); - InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); - Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + String name = "name3373707"; + client.deleteBucket(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. } } @Test - public void writeObjectTest() throws Exception { - WriteObjectResponse expectedResponse = WriteObjectResponse.newBuilder().build(); - mockStorage.addResponse(expectedResponse); - WriteObjectRequest request = - WriteObjectRequest.newBuilder() - .setWriteOffset(-1559543565) - .setObjectChecksums(ObjectChecksums.newBuilder().build()) - .setFinishWrite(true) - .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) - .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + public void getBucketTest() throws Exception { + Bucket expectedResponse = + Bucket.newBuilder() + .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setBucketId("bucketId-1603305307") + .setProject(ProjectName.of("[PROJECT]").toString()) + .setMetageneration(1048558813) + .setLocation("location1901043637") + .setLocationType("locationType-58277745") + .setStorageClass("storageClass871353277") + .setRpo("rpo113137") + .addAllAcl(new ArrayList()) + .addAllDefaultObjectAcl(new ArrayList()) + .setLifecycle(Bucket.Lifecycle.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .addAllCors(new ArrayList()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setDefaultEventBasedHold(true) + .putAllLabels(new HashMap()) + .setWebsite(Bucket.Website.newBuilder().build()) + .setVersioning(Bucket.Versioning.newBuilder().build()) + .setLogging(Bucket.Logging.newBuilder().build()) + .setOwner(Owner.newBuilder().build()) + .setEncryption(Bucket.Encryption.newBuilder().build()) + .setBilling(Bucket.Billing.newBuilder().build()) + .setRetentionPolicy(Bucket.RetentionPolicy.newBuilder().build()) + .setIamConfig(Bucket.IamConfig.newBuilder().build()) + .setSatisfiesPzs(true) + .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build()) .build(); + mockStorage.addResponse(expectedResponse); - MockStreamObserver responseObserver = new MockStreamObserver<>(); + BucketName name = BucketName.of("[PROJECT]", "[BUCKET]"); - ClientStreamingCallable callable = - client.writeObjectCallable(); - ApiStreamObserver requestObserver = - callable.clientStreamingCall(responseObserver); + Bucket actualResponse = client.getBucket(name); + Assert.assertEquals(expectedResponse, actualResponse); - requestObserver.onNext(request); - requestObserver.onCompleted(); + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetBucketRequest actualRequest = ((GetBucketRequest) actualRequests.get(0)); - List actualResponses = responseObserver.future().get(); - Assert.assertEquals(1, actualResponses.size()); - Assert.assertEquals(expectedResponse, actualResponses.get(0)); + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); } @Test - public void writeObjectExceptionTest() throws Exception { + public void getBucketExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockStorage.addException(exception); - WriteObjectRequest request = - WriteObjectRequest.newBuilder() - .setWriteOffset(-1559543565) - .setObjectChecksums(ObjectChecksums.newBuilder().build()) - .setFinishWrite(true) - .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) - .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + + try { + BucketName name = BucketName.of("[PROJECT]", "[BUCKET]"); + client.getBucket(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getBucketTest2() throws Exception { + Bucket expectedResponse = + Bucket.newBuilder() + .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setBucketId("bucketId-1603305307") + .setProject(ProjectName.of("[PROJECT]").toString()) + .setMetageneration(1048558813) + .setLocation("location1901043637") + .setLocationType("locationType-58277745") + .setStorageClass("storageClass871353277") + .setRpo("rpo113137") + .addAllAcl(new ArrayList()) + .addAllDefaultObjectAcl(new ArrayList()) + .setLifecycle(Bucket.Lifecycle.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .addAllCors(new ArrayList()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setDefaultEventBasedHold(true) + .putAllLabels(new HashMap()) + .setWebsite(Bucket.Website.newBuilder().build()) + .setVersioning(Bucket.Versioning.newBuilder().build()) + .setLogging(Bucket.Logging.newBuilder().build()) + .setOwner(Owner.newBuilder().build()) + .setEncryption(Bucket.Encryption.newBuilder().build()) + .setBilling(Bucket.Billing.newBuilder().build()) + .setRetentionPolicy(Bucket.RetentionPolicy.newBuilder().build()) + .setIamConfig(Bucket.IamConfig.newBuilder().build()) + .setSatisfiesPzs(true) + .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build()) .build(); + mockStorage.addResponse(expectedResponse); - MockStreamObserver responseObserver = new MockStreamObserver<>(); + String name = "name3373707"; - ClientStreamingCallable callable = - client.writeObjectCallable(); - ApiStreamObserver requestObserver = - callable.clientStreamingCall(responseObserver); + Bucket actualResponse = client.getBucket(name); + Assert.assertEquals(expectedResponse, actualResponse); - requestObserver.onNext(request); + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetBucketRequest actualRequest = ((GetBucketRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getBucketExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); try { - List actualResponses = responseObserver.future().get(); - Assert.fail("No exception thrown"); - } catch (ExecutionException e) { - Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); - InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); - Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + String name = "name3373707"; + client.getBucket(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. } } @Test - public void startResumableWriteTest() throws Exception { - StartResumableWriteResponse expectedResponse = - StartResumableWriteResponse.newBuilder().setUploadId("uploadId1563990780").build(); + public void createBucketTest() throws Exception { + Bucket expectedResponse = + Bucket.newBuilder() + .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setBucketId("bucketId-1603305307") + .setProject(ProjectName.of("[PROJECT]").toString()) + .setMetageneration(1048558813) + .setLocation("location1901043637") + .setLocationType("locationType-58277745") + .setStorageClass("storageClass871353277") + .setRpo("rpo113137") + .addAllAcl(new ArrayList()) + .addAllDefaultObjectAcl(new ArrayList()) + .setLifecycle(Bucket.Lifecycle.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .addAllCors(new ArrayList()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setDefaultEventBasedHold(true) + .putAllLabels(new HashMap()) + .setWebsite(Bucket.Website.newBuilder().build()) + .setVersioning(Bucket.Versioning.newBuilder().build()) + .setLogging(Bucket.Logging.newBuilder().build()) + .setOwner(Owner.newBuilder().build()) + .setEncryption(Bucket.Encryption.newBuilder().build()) + .setBilling(Bucket.Billing.newBuilder().build()) + .setRetentionPolicy(Bucket.RetentionPolicy.newBuilder().build()) + .setIamConfig(Bucket.IamConfig.newBuilder().build()) + .setSatisfiesPzs(true) + .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build()) + .build(); mockStorage.addResponse(expectedResponse); - StartResumableWriteRequest request = - StartResumableWriteRequest.newBuilder() - .setWriteObjectSpec(WriteObjectSpec.newBuilder().build()) - .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) - .setCommonRequestParams(CommonRequestParams.newBuilder().build()) - .build(); + ProjectName parent = ProjectName.of("[PROJECT]"); + Bucket bucket = Bucket.newBuilder().build(); + String bucketId = "bucketId-1603305307"; - StartResumableWriteResponse actualResponse = client.startResumableWrite(request); + Bucket actualResponse = client.createBucket(parent, bucket, bucketId); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockStorage.getRequests(); Assert.assertEquals(1, actualRequests.size()); - StartResumableWriteRequest actualRequest = ((StartResumableWriteRequest) actualRequests.get(0)); + CreateBucketRequest actualRequest = ((CreateBucketRequest) actualRequests.get(0)); - Assert.assertEquals(request.getWriteObjectSpec(), actualRequest.getWriteObjectSpec()); - Assert.assertEquals( - request.getCommonObjectRequestParams(), actualRequest.getCommonObjectRequestParams()); - Assert.assertEquals(request.getCommonRequestParams(), actualRequest.getCommonRequestParams()); + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertEquals(bucket, actualRequest.getBucket()); + Assert.assertEquals(bucketId, actualRequest.getBucketId()); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -246,18 +348,15 @@ public void startResumableWriteTest() throws Exception { } @Test - public void startResumableWriteExceptionTest() throws Exception { + public void createBucketExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockStorage.addException(exception); try { - StartResumableWriteRequest request = - StartResumableWriteRequest.newBuilder() - .setWriteObjectSpec(WriteObjectSpec.newBuilder().build()) - .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) - .setCommonRequestParams(CommonRequestParams.newBuilder().build()) - .build(); - client.startResumableWrite(request); + ProjectName parent = ProjectName.of("[PROJECT]"); + Bucket bucket = Bucket.newBuilder().build(); + String bucketId = "bucketId-1603305307"; + client.createBucket(parent, bucket, bucketId); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception. @@ -265,20 +364,52 @@ public void startResumableWriteExceptionTest() throws Exception { } @Test - public void queryWriteStatusTest() throws Exception { - QueryWriteStatusResponse expectedResponse = QueryWriteStatusResponse.newBuilder().build(); + public void createBucketTest2() throws Exception { + Bucket expectedResponse = + Bucket.newBuilder() + .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setBucketId("bucketId-1603305307") + .setProject(ProjectName.of("[PROJECT]").toString()) + .setMetageneration(1048558813) + .setLocation("location1901043637") + .setLocationType("locationType-58277745") + .setStorageClass("storageClass871353277") + .setRpo("rpo113137") + .addAllAcl(new ArrayList()) + .addAllDefaultObjectAcl(new ArrayList()) + .setLifecycle(Bucket.Lifecycle.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .addAllCors(new ArrayList()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setDefaultEventBasedHold(true) + .putAllLabels(new HashMap()) + .setWebsite(Bucket.Website.newBuilder().build()) + .setVersioning(Bucket.Versioning.newBuilder().build()) + .setLogging(Bucket.Logging.newBuilder().build()) + .setOwner(Owner.newBuilder().build()) + .setEncryption(Bucket.Encryption.newBuilder().build()) + .setBilling(Bucket.Billing.newBuilder().build()) + .setRetentionPolicy(Bucket.RetentionPolicy.newBuilder().build()) + .setIamConfig(Bucket.IamConfig.newBuilder().build()) + .setSatisfiesPzs(true) + .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build()) + .build(); mockStorage.addResponse(expectedResponse); - String uploadId = "uploadId1563990780"; + String parent = "parent-995424086"; + Bucket bucket = Bucket.newBuilder().build(); + String bucketId = "bucketId-1603305307"; - QueryWriteStatusResponse actualResponse = client.queryWriteStatus(uploadId); + Bucket actualResponse = client.createBucket(parent, bucket, bucketId); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockStorage.getRequests(); Assert.assertEquals(1, actualRequests.size()); - QueryWriteStatusRequest actualRequest = ((QueryWriteStatusRequest) actualRequests.get(0)); + CreateBucketRequest actualRequest = ((CreateBucketRequest) actualRequests.get(0)); - Assert.assertEquals(uploadId, actualRequest.getUploadId()); + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertEquals(bucket, actualRequest.getBucket()); + Assert.assertEquals(bucketId, actualRequest.getBucketId()); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -286,13 +417,2151 @@ public void queryWriteStatusTest() throws Exception { } @Test - public void queryWriteStatusExceptionTest() throws Exception { + public void createBucketExceptionTest2() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); mockStorage.addException(exception); try { - String uploadId = "uploadId1563990780"; - client.queryWriteStatus(uploadId); + String parent = "parent-995424086"; + Bucket bucket = Bucket.newBuilder().build(); + String bucketId = "bucketId-1603305307"; + client.createBucket(parent, bucket, bucketId); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listBucketsTest() throws Exception { + Bucket responsesElement = Bucket.newBuilder().build(); + ListBucketsResponse expectedResponse = + ListBucketsResponse.newBuilder() + .setNextPageToken("") + .addAllBuckets(Arrays.asList(responsesElement)) + .build(); + mockStorage.addResponse(expectedResponse); + + ProjectName parent = ProjectName.of("[PROJECT]"); + + ListBucketsPagedResponse pagedListResponse = client.listBuckets(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getBucketsList().get(0), resources.get(0)); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListBucketsRequest actualRequest = ((ListBucketsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listBucketsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ProjectName parent = ProjectName.of("[PROJECT]"); + client.listBuckets(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listBucketsTest2() throws Exception { + Bucket responsesElement = Bucket.newBuilder().build(); + ListBucketsResponse expectedResponse = + ListBucketsResponse.newBuilder() + .setNextPageToken("") + .addAllBuckets(Arrays.asList(responsesElement)) + .build(); + mockStorage.addResponse(expectedResponse); + + String parent = "parent-995424086"; + + ListBucketsPagedResponse pagedListResponse = client.listBuckets(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getBucketsList().get(0), resources.get(0)); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListBucketsRequest actualRequest = ((ListBucketsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listBucketsExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String parent = "parent-995424086"; + client.listBuckets(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void lockBucketRetentionPolicyTest() throws Exception { + Bucket expectedResponse = + Bucket.newBuilder() + .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setBucketId("bucketId-1603305307") + .setProject(ProjectName.of("[PROJECT]").toString()) + .setMetageneration(1048558813) + .setLocation("location1901043637") + .setLocationType("locationType-58277745") + .setStorageClass("storageClass871353277") + .setRpo("rpo113137") + .addAllAcl(new ArrayList()) + .addAllDefaultObjectAcl(new ArrayList()) + .setLifecycle(Bucket.Lifecycle.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .addAllCors(new ArrayList()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setDefaultEventBasedHold(true) + .putAllLabels(new HashMap()) + .setWebsite(Bucket.Website.newBuilder().build()) + .setVersioning(Bucket.Versioning.newBuilder().build()) + .setLogging(Bucket.Logging.newBuilder().build()) + .setOwner(Owner.newBuilder().build()) + .setEncryption(Bucket.Encryption.newBuilder().build()) + .setBilling(Bucket.Billing.newBuilder().build()) + .setRetentionPolicy(Bucket.RetentionPolicy.newBuilder().build()) + .setIamConfig(Bucket.IamConfig.newBuilder().build()) + .setSatisfiesPzs(true) + .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + BucketName bucket = BucketName.of("[PROJECT]", "[BUCKET]"); + + Bucket actualResponse = client.lockBucketRetentionPolicy(bucket); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + LockBucketRetentionPolicyRequest actualRequest = + ((LockBucketRetentionPolicyRequest) actualRequests.get(0)); + + Assert.assertEquals(bucket.toString(), actualRequest.getBucket()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void lockBucketRetentionPolicyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + BucketName bucket = BucketName.of("[PROJECT]", "[BUCKET]"); + client.lockBucketRetentionPolicy(bucket); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void lockBucketRetentionPolicyTest2() throws Exception { + Bucket expectedResponse = + Bucket.newBuilder() + .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setBucketId("bucketId-1603305307") + .setProject(ProjectName.of("[PROJECT]").toString()) + .setMetageneration(1048558813) + .setLocation("location1901043637") + .setLocationType("locationType-58277745") + .setStorageClass("storageClass871353277") + .setRpo("rpo113137") + .addAllAcl(new ArrayList()) + .addAllDefaultObjectAcl(new ArrayList()) + .setLifecycle(Bucket.Lifecycle.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .addAllCors(new ArrayList()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setDefaultEventBasedHold(true) + .putAllLabels(new HashMap()) + .setWebsite(Bucket.Website.newBuilder().build()) + .setVersioning(Bucket.Versioning.newBuilder().build()) + .setLogging(Bucket.Logging.newBuilder().build()) + .setOwner(Owner.newBuilder().build()) + .setEncryption(Bucket.Encryption.newBuilder().build()) + .setBilling(Bucket.Billing.newBuilder().build()) + .setRetentionPolicy(Bucket.RetentionPolicy.newBuilder().build()) + .setIamConfig(Bucket.IamConfig.newBuilder().build()) + .setSatisfiesPzs(true) + .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + String bucket = "bucket-1378203158"; + + Bucket actualResponse = client.lockBucketRetentionPolicy(bucket); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + LockBucketRetentionPolicyRequest actualRequest = + ((LockBucketRetentionPolicyRequest) actualRequests.get(0)); + + Assert.assertEquals(bucket, actualRequest.getBucket()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void lockBucketRetentionPolicyExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String bucket = "bucket-1378203158"; + client.lockBucketRetentionPolicy(bucket); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getIamPolicyTest() throws Exception { + Policy expectedResponse = + Policy.newBuilder() + .setVersion(351608024) + .addAllBindings(new ArrayList()) + .setEtag(ByteString.EMPTY) + .build(); + mockStorage.addResponse(expectedResponse); + + ResourceName resource = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + + Policy actualResponse = client.getIamPolicy(resource); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetIamPolicyRequest actualRequest = ((GetIamPolicyRequest) actualRequests.get(0)); + + Assert.assertEquals(resource.toString(), actualRequest.getResource()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getIamPolicyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ResourceName resource = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + client.getIamPolicy(resource); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getIamPolicyTest2() throws Exception { + Policy expectedResponse = + Policy.newBuilder() + .setVersion(351608024) + .addAllBindings(new ArrayList()) + .setEtag(ByteString.EMPTY) + .build(); + mockStorage.addResponse(expectedResponse); + + String resource = "resource-341064690"; + + Policy actualResponse = client.getIamPolicy(resource); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetIamPolicyRequest actualRequest = ((GetIamPolicyRequest) actualRequests.get(0)); + + Assert.assertEquals(resource, actualRequest.getResource()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getIamPolicyExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String resource = "resource-341064690"; + client.getIamPolicy(resource); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void setIamPolicyTest() throws Exception { + Policy expectedResponse = + Policy.newBuilder() + .setVersion(351608024) + .addAllBindings(new ArrayList()) + .setEtag(ByteString.EMPTY) + .build(); + mockStorage.addResponse(expectedResponse); + + ResourceName resource = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + Policy policy = Policy.newBuilder().build(); + + Policy actualResponse = client.setIamPolicy(resource, policy); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + SetIamPolicyRequest actualRequest = ((SetIamPolicyRequest) actualRequests.get(0)); + + Assert.assertEquals(resource.toString(), actualRequest.getResource()); + Assert.assertEquals(policy, actualRequest.getPolicy()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void setIamPolicyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ResourceName resource = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + Policy policy = Policy.newBuilder().build(); + client.setIamPolicy(resource, policy); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void setIamPolicyTest2() throws Exception { + Policy expectedResponse = + Policy.newBuilder() + .setVersion(351608024) + .addAllBindings(new ArrayList()) + .setEtag(ByteString.EMPTY) + .build(); + mockStorage.addResponse(expectedResponse); + + String resource = "resource-341064690"; + Policy policy = Policy.newBuilder().build(); + + Policy actualResponse = client.setIamPolicy(resource, policy); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + SetIamPolicyRequest actualRequest = ((SetIamPolicyRequest) actualRequests.get(0)); + + Assert.assertEquals(resource, actualRequest.getResource()); + Assert.assertEquals(policy, actualRequest.getPolicy()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void setIamPolicyExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String resource = "resource-341064690"; + Policy policy = Policy.newBuilder().build(); + client.setIamPolicy(resource, policy); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void testIamPermissionsTest() throws Exception { + TestIamPermissionsResponse expectedResponse = + TestIamPermissionsResponse.newBuilder().addAllPermissions(new ArrayList()).build(); + mockStorage.addResponse(expectedResponse); + + ResourceName resource = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + List permissions = new ArrayList<>(); + + TestIamPermissionsResponse actualResponse = client.testIamPermissions(resource, permissions); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + TestIamPermissionsRequest actualRequest = ((TestIamPermissionsRequest) actualRequests.get(0)); + + Assert.assertEquals(resource.toString(), actualRequest.getResource()); + Assert.assertEquals(permissions, actualRequest.getPermissionsList()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void testIamPermissionsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ResourceName resource = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + List permissions = new ArrayList<>(); + client.testIamPermissions(resource, permissions); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void testIamPermissionsTest2() throws Exception { + TestIamPermissionsResponse expectedResponse = + TestIamPermissionsResponse.newBuilder().addAllPermissions(new ArrayList()).build(); + mockStorage.addResponse(expectedResponse); + + String resource = "resource-341064690"; + List permissions = new ArrayList<>(); + + TestIamPermissionsResponse actualResponse = client.testIamPermissions(resource, permissions); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + TestIamPermissionsRequest actualRequest = ((TestIamPermissionsRequest) actualRequests.get(0)); + + Assert.assertEquals(resource, actualRequest.getResource()); + Assert.assertEquals(permissions, actualRequest.getPermissionsList()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void testIamPermissionsExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String resource = "resource-341064690"; + List permissions = new ArrayList<>(); + client.testIamPermissions(resource, permissions); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void updateBucketTest() throws Exception { + Bucket expectedResponse = + Bucket.newBuilder() + .setName(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setBucketId("bucketId-1603305307") + .setProject(ProjectName.of("[PROJECT]").toString()) + .setMetageneration(1048558813) + .setLocation("location1901043637") + .setLocationType("locationType-58277745") + .setStorageClass("storageClass871353277") + .setRpo("rpo113137") + .addAllAcl(new ArrayList()) + .addAllDefaultObjectAcl(new ArrayList()) + .setLifecycle(Bucket.Lifecycle.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .addAllCors(new ArrayList()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setDefaultEventBasedHold(true) + .putAllLabels(new HashMap()) + .setWebsite(Bucket.Website.newBuilder().build()) + .setVersioning(Bucket.Versioning.newBuilder().build()) + .setLogging(Bucket.Logging.newBuilder().build()) + .setOwner(Owner.newBuilder().build()) + .setEncryption(Bucket.Encryption.newBuilder().build()) + .setBilling(Bucket.Billing.newBuilder().build()) + .setRetentionPolicy(Bucket.RetentionPolicy.newBuilder().build()) + .setIamConfig(Bucket.IamConfig.newBuilder().build()) + .setSatisfiesPzs(true) + .setCustomPlacementConfig(Bucket.CustomPlacementConfig.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + Bucket bucket = Bucket.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + + Bucket actualResponse = client.updateBucket(bucket, updateMask); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + UpdateBucketRequest actualRequest = ((UpdateBucketRequest) actualRequests.get(0)); + + Assert.assertEquals(bucket, actualRequest.getBucket()); + Assert.assertEquals(updateMask, actualRequest.getUpdateMask()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void updateBucketExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + Bucket bucket = Bucket.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + client.updateBucket(bucket, updateMask); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void deleteNotificationTest() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); + mockStorage.addResponse(expectedResponse); + + NotificationName name = NotificationName.of("[PROJECT]", "[BUCKET]", "[NOTIFICATION]"); + + client.deleteNotification(name); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DeleteNotificationRequest actualRequest = ((DeleteNotificationRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void deleteNotificationExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + NotificationName name = NotificationName.of("[PROJECT]", "[BUCKET]", "[NOTIFICATION]"); + client.deleteNotification(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void deleteNotificationTest2() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); + mockStorage.addResponse(expectedResponse); + + String name = "name3373707"; + + client.deleteNotification(name); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DeleteNotificationRequest actualRequest = ((DeleteNotificationRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void deleteNotificationExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String name = "name3373707"; + client.deleteNotification(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getNotificationTest() throws Exception { + Notification expectedResponse = + Notification.newBuilder() + .setName(NotificationName.of("[PROJECT]", "[BUCKET]", "[NOTIFICATION]").toString()) + .setTopic("topic110546223") + .addAllEventTypes(new ArrayList()) + .putAllCustomAttributes(new HashMap()) + .setObjectNamePrefix("objectNamePrefix-1978236516") + .setPayloadFormat("payloadFormat-2140609755") + .build(); + mockStorage.addResponse(expectedResponse); + + BucketName name = BucketName.of("[PROJECT]", "[BUCKET]"); + + Notification actualResponse = client.getNotification(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetNotificationRequest actualRequest = ((GetNotificationRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getNotificationExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + BucketName name = BucketName.of("[PROJECT]", "[BUCKET]"); + client.getNotification(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getNotificationTest2() throws Exception { + Notification expectedResponse = + Notification.newBuilder() + .setName(NotificationName.of("[PROJECT]", "[BUCKET]", "[NOTIFICATION]").toString()) + .setTopic("topic110546223") + .addAllEventTypes(new ArrayList()) + .putAllCustomAttributes(new HashMap()) + .setObjectNamePrefix("objectNamePrefix-1978236516") + .setPayloadFormat("payloadFormat-2140609755") + .build(); + mockStorage.addResponse(expectedResponse); + + String name = "name3373707"; + + Notification actualResponse = client.getNotification(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetNotificationRequest actualRequest = ((GetNotificationRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getNotificationExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String name = "name3373707"; + client.getNotification(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createNotificationTest() throws Exception { + Notification expectedResponse = + Notification.newBuilder() + .setName(NotificationName.of("[PROJECT]", "[BUCKET]", "[NOTIFICATION]").toString()) + .setTopic("topic110546223") + .addAllEventTypes(new ArrayList()) + .putAllCustomAttributes(new HashMap()) + .setObjectNamePrefix("objectNamePrefix-1978236516") + .setPayloadFormat("payloadFormat-2140609755") + .build(); + mockStorage.addResponse(expectedResponse); + + ProjectName parent = ProjectName.of("[PROJECT]"); + Notification notification = Notification.newBuilder().build(); + + Notification actualResponse = client.createNotification(parent, notification); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateNotificationRequest actualRequest = ((CreateNotificationRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertEquals(notification, actualRequest.getNotification()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createNotificationExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ProjectName parent = ProjectName.of("[PROJECT]"); + Notification notification = Notification.newBuilder().build(); + client.createNotification(parent, notification); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createNotificationTest2() throws Exception { + Notification expectedResponse = + Notification.newBuilder() + .setName(NotificationName.of("[PROJECT]", "[BUCKET]", "[NOTIFICATION]").toString()) + .setTopic("topic110546223") + .addAllEventTypes(new ArrayList()) + .putAllCustomAttributes(new HashMap()) + .setObjectNamePrefix("objectNamePrefix-1978236516") + .setPayloadFormat("payloadFormat-2140609755") + .build(); + mockStorage.addResponse(expectedResponse); + + String parent = "parent-995424086"; + Notification notification = Notification.newBuilder().build(); + + Notification actualResponse = client.createNotification(parent, notification); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateNotificationRequest actualRequest = ((CreateNotificationRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertEquals(notification, actualRequest.getNotification()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createNotificationExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String parent = "parent-995424086"; + Notification notification = Notification.newBuilder().build(); + client.createNotification(parent, notification); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listNotificationsTest() throws Exception { + Notification responsesElement = Notification.newBuilder().build(); + ListNotificationsResponse expectedResponse = + ListNotificationsResponse.newBuilder() + .setNextPageToken("") + .addAllNotifications(Arrays.asList(responsesElement)) + .build(); + mockStorage.addResponse(expectedResponse); + + ProjectName parent = ProjectName.of("[PROJECT]"); + + ListNotificationsPagedResponse pagedListResponse = client.listNotifications(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getNotificationsList().get(0), resources.get(0)); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListNotificationsRequest actualRequest = ((ListNotificationsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listNotificationsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ProjectName parent = ProjectName.of("[PROJECT]"); + client.listNotifications(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listNotificationsTest2() throws Exception { + Notification responsesElement = Notification.newBuilder().build(); + ListNotificationsResponse expectedResponse = + ListNotificationsResponse.newBuilder() + .setNextPageToken("") + .addAllNotifications(Arrays.asList(responsesElement)) + .build(); + mockStorage.addResponse(expectedResponse); + + String parent = "parent-995424086"; + + ListNotificationsPagedResponse pagedListResponse = client.listNotifications(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getNotificationsList().get(0), resources.get(0)); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListNotificationsRequest actualRequest = ((ListNotificationsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listNotificationsExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String parent = "parent-995424086"; + client.listNotifications(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void composeObjectTest() throws Exception { + Object expectedResponse = + Object.newBuilder() + .setName("name3373707") + .setBucket(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setGeneration(305703192) + .setMetageneration(1048558813) + .setStorageClass("storageClass871353277") + .setSize(3530753) + .setContentEncoding("contentEncoding-160088852") + .setContentDisposition("contentDisposition1034341758") + .setCacheControl("cacheControl-1336592517") + .addAllAcl(new ArrayList()) + .setContentLanguage("contentLanguage810066673") + .setDeleteTime(Timestamp.newBuilder().build()) + .setContentType("contentType-389131437") + .setCreateTime(Timestamp.newBuilder().build()) + .setComponentCount(-485073075) + .setChecksums(ObjectChecksums.newBuilder().build()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setKmsKey( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setUpdateStorageClassTime(Timestamp.newBuilder().build()) + .setTemporaryHold(true) + .setRetentionExpireTime(Timestamp.newBuilder().build()) + .putAllMetadata(new HashMap()) + .setEventBasedHold(true) + .setOwner(Owner.newBuilder().build()) + .setCustomerEncryption(Object.CustomerEncryption.newBuilder().build()) + .setCustomTime(Timestamp.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + ComposeObjectRequest request = + ComposeObjectRequest.newBuilder() + .setDestination(Object.newBuilder().build()) + .addAllSourceObjects(new ArrayList()) + .setDestinationPredefinedAcl(PredefinedObjectAcl.forNumber(0)) + .setIfGenerationMatch(-1086241088) + .setIfMetagenerationMatch(1043427781) + .setKmsKey( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) + .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + .build(); + + Object actualResponse = client.composeObject(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ComposeObjectRequest actualRequest = ((ComposeObjectRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getDestination(), actualRequest.getDestination()); + Assert.assertEquals(request.getSourceObjectsList(), actualRequest.getSourceObjectsList()); + Assert.assertEquals( + request.getDestinationPredefinedAcl(), actualRequest.getDestinationPredefinedAcl()); + Assert.assertEquals(request.getIfGenerationMatch(), actualRequest.getIfGenerationMatch()); + Assert.assertEquals( + request.getIfMetagenerationMatch(), actualRequest.getIfMetagenerationMatch()); + Assert.assertEquals(request.getKmsKey(), actualRequest.getKmsKey()); + Assert.assertEquals( + request.getCommonObjectRequestParams(), actualRequest.getCommonObjectRequestParams()); + Assert.assertEquals(request.getCommonRequestParams(), actualRequest.getCommonRequestParams()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void composeObjectExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ComposeObjectRequest request = + ComposeObjectRequest.newBuilder() + .setDestination(Object.newBuilder().build()) + .addAllSourceObjects(new ArrayList()) + .setDestinationPredefinedAcl(PredefinedObjectAcl.forNumber(0)) + .setIfGenerationMatch(-1086241088) + .setIfMetagenerationMatch(1043427781) + .setKmsKey( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) + .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + .build(); + client.composeObject(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void deleteObjectTest() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); + mockStorage.addResponse(expectedResponse); + + String bucket = "bucket-1378203158"; + String object = "object-1023368385"; + + client.deleteObject(bucket, object); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DeleteObjectRequest actualRequest = ((DeleteObjectRequest) actualRequests.get(0)); + + Assert.assertEquals(bucket, actualRequest.getBucket()); + Assert.assertEquals(object, actualRequest.getObject()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void deleteObjectExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String bucket = "bucket-1378203158"; + String object = "object-1023368385"; + client.deleteObject(bucket, object); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void deleteObjectTest2() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); + mockStorage.addResponse(expectedResponse); + + String bucket = "bucket-1378203158"; + String object = "object-1023368385"; + long generation = 305703192; + + client.deleteObject(bucket, object, generation); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DeleteObjectRequest actualRequest = ((DeleteObjectRequest) actualRequests.get(0)); + + Assert.assertEquals(bucket, actualRequest.getBucket()); + Assert.assertEquals(object, actualRequest.getObject()); + Assert.assertEquals(generation, actualRequest.getGeneration()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void deleteObjectExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String bucket = "bucket-1378203158"; + String object = "object-1023368385"; + long generation = 305703192; + client.deleteObject(bucket, object, generation); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getObjectTest() throws Exception { + Object expectedResponse = + Object.newBuilder() + .setName("name3373707") + .setBucket(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setGeneration(305703192) + .setMetageneration(1048558813) + .setStorageClass("storageClass871353277") + .setSize(3530753) + .setContentEncoding("contentEncoding-160088852") + .setContentDisposition("contentDisposition1034341758") + .setCacheControl("cacheControl-1336592517") + .addAllAcl(new ArrayList()) + .setContentLanguage("contentLanguage810066673") + .setDeleteTime(Timestamp.newBuilder().build()) + .setContentType("contentType-389131437") + .setCreateTime(Timestamp.newBuilder().build()) + .setComponentCount(-485073075) + .setChecksums(ObjectChecksums.newBuilder().build()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setKmsKey( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setUpdateStorageClassTime(Timestamp.newBuilder().build()) + .setTemporaryHold(true) + .setRetentionExpireTime(Timestamp.newBuilder().build()) + .putAllMetadata(new HashMap()) + .setEventBasedHold(true) + .setOwner(Owner.newBuilder().build()) + .setCustomerEncryption(Object.CustomerEncryption.newBuilder().build()) + .setCustomTime(Timestamp.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + String bucket = "bucket-1378203158"; + String object = "object-1023368385"; + + Object actualResponse = client.getObject(bucket, object); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetObjectRequest actualRequest = ((GetObjectRequest) actualRequests.get(0)); + + Assert.assertEquals(bucket, actualRequest.getBucket()); + Assert.assertEquals(object, actualRequest.getObject()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getObjectExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String bucket = "bucket-1378203158"; + String object = "object-1023368385"; + client.getObject(bucket, object); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getObjectTest2() throws Exception { + Object expectedResponse = + Object.newBuilder() + .setName("name3373707") + .setBucket(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setGeneration(305703192) + .setMetageneration(1048558813) + .setStorageClass("storageClass871353277") + .setSize(3530753) + .setContentEncoding("contentEncoding-160088852") + .setContentDisposition("contentDisposition1034341758") + .setCacheControl("cacheControl-1336592517") + .addAllAcl(new ArrayList()) + .setContentLanguage("contentLanguage810066673") + .setDeleteTime(Timestamp.newBuilder().build()) + .setContentType("contentType-389131437") + .setCreateTime(Timestamp.newBuilder().build()) + .setComponentCount(-485073075) + .setChecksums(ObjectChecksums.newBuilder().build()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setKmsKey( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setUpdateStorageClassTime(Timestamp.newBuilder().build()) + .setTemporaryHold(true) + .setRetentionExpireTime(Timestamp.newBuilder().build()) + .putAllMetadata(new HashMap()) + .setEventBasedHold(true) + .setOwner(Owner.newBuilder().build()) + .setCustomerEncryption(Object.CustomerEncryption.newBuilder().build()) + .setCustomTime(Timestamp.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + String bucket = "bucket-1378203158"; + String object = "object-1023368385"; + long generation = 305703192; + + Object actualResponse = client.getObject(bucket, object, generation); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetObjectRequest actualRequest = ((GetObjectRequest) actualRequests.get(0)); + + Assert.assertEquals(bucket, actualRequest.getBucket()); + Assert.assertEquals(object, actualRequest.getObject()); + Assert.assertEquals(generation, actualRequest.getGeneration()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getObjectExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String bucket = "bucket-1378203158"; + String object = "object-1023368385"; + long generation = 305703192; + client.getObject(bucket, object, generation); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void readObjectTest() throws Exception { + ReadObjectResponse expectedResponse = + ReadObjectResponse.newBuilder() + .setChecksummedData(ChecksummedData.newBuilder().build()) + .setObjectChecksums(ObjectChecksums.newBuilder().build()) + .setContentRange(ContentRange.newBuilder().build()) + .setMetadata(Object.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + ReadObjectRequest request = + ReadObjectRequest.newBuilder() + .setBucket("bucket-1378203158") + .setObject("object-1023368385") + .setGeneration(305703192) + .setReadOffset(-715377828) + .setReadLimit(-164298798) + .setIfGenerationMatch(-1086241088) + .setIfGenerationNotMatch(1475720404) + .setIfMetagenerationMatch(1043427781) + .setIfMetagenerationNotMatch(1025430873) + .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) + .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + .setReadMask(FieldMask.newBuilder().build()) + .build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + ServerStreamingCallable callable = + client.readObjectCallable(); + callable.serverStreamingCall(request, responseObserver); + + List actualResponses = responseObserver.future().get(); + Assert.assertEquals(1, actualResponses.size()); + Assert.assertEquals(expectedResponse, actualResponses.get(0)); + } + + @Test + public void readObjectExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + ReadObjectRequest request = + ReadObjectRequest.newBuilder() + .setBucket("bucket-1378203158") + .setObject("object-1023368385") + .setGeneration(305703192) + .setReadOffset(-715377828) + .setReadLimit(-164298798) + .setIfGenerationMatch(-1086241088) + .setIfGenerationNotMatch(1475720404) + .setIfMetagenerationMatch(1043427781) + .setIfMetagenerationNotMatch(1025430873) + .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) + .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + .setReadMask(FieldMask.newBuilder().build()) + .build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + ServerStreamingCallable callable = + client.readObjectCallable(); + callable.serverStreamingCall(request, responseObserver); + + try { + List actualResponses = responseObserver.future().get(); + Assert.fail("No exception thrown"); + } catch (ExecutionException e) { + Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + + @Test + public void updateObjectTest() throws Exception { + Object expectedResponse = + Object.newBuilder() + .setName("name3373707") + .setBucket(BucketName.of("[PROJECT]", "[BUCKET]").toString()) + .setGeneration(305703192) + .setMetageneration(1048558813) + .setStorageClass("storageClass871353277") + .setSize(3530753) + .setContentEncoding("contentEncoding-160088852") + .setContentDisposition("contentDisposition1034341758") + .setCacheControl("cacheControl-1336592517") + .addAllAcl(new ArrayList()) + .setContentLanguage("contentLanguage810066673") + .setDeleteTime(Timestamp.newBuilder().build()) + .setContentType("contentType-389131437") + .setCreateTime(Timestamp.newBuilder().build()) + .setComponentCount(-485073075) + .setChecksums(ObjectChecksums.newBuilder().build()) + .setUpdateTime(Timestamp.newBuilder().build()) + .setKmsKey( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setUpdateStorageClassTime(Timestamp.newBuilder().build()) + .setTemporaryHold(true) + .setRetentionExpireTime(Timestamp.newBuilder().build()) + .putAllMetadata(new HashMap()) + .setEventBasedHold(true) + .setOwner(Owner.newBuilder().build()) + .setCustomerEncryption(Object.CustomerEncryption.newBuilder().build()) + .setCustomTime(Timestamp.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + Object object = Object.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + + Object actualResponse = client.updateObject(object, updateMask); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + UpdateObjectRequest actualRequest = ((UpdateObjectRequest) actualRequests.get(0)); + + Assert.assertEquals(object, actualRequest.getObject()); + Assert.assertEquals(updateMask, actualRequest.getUpdateMask()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void updateObjectExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + Object object = Object.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + client.updateObject(object, updateMask); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void writeObjectTest() throws Exception { + WriteObjectResponse expectedResponse = WriteObjectResponse.newBuilder().build(); + mockStorage.addResponse(expectedResponse); + WriteObjectRequest request = + WriteObjectRequest.newBuilder() + .setWriteOffset(-1559543565) + .setObjectChecksums(ObjectChecksums.newBuilder().build()) + .setFinishWrite(true) + .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) + .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + .build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + ClientStreamingCallable callable = + client.writeObjectCallable(); + ApiStreamObserver requestObserver = + callable.clientStreamingCall(responseObserver); + + requestObserver.onNext(request); + requestObserver.onCompleted(); + + List actualResponses = responseObserver.future().get(); + Assert.assertEquals(1, actualResponses.size()); + Assert.assertEquals(expectedResponse, actualResponses.get(0)); + } + + @Test + public void writeObjectExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + WriteObjectRequest request = + WriteObjectRequest.newBuilder() + .setWriteOffset(-1559543565) + .setObjectChecksums(ObjectChecksums.newBuilder().build()) + .setFinishWrite(true) + .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) + .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + .build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + ClientStreamingCallable callable = + client.writeObjectCallable(); + ApiStreamObserver requestObserver = + callable.clientStreamingCall(responseObserver); + + requestObserver.onNext(request); + + try { + List actualResponses = responseObserver.future().get(); + Assert.fail("No exception thrown"); + } catch (ExecutionException e) { + Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + + @Test + public void listObjectsTest() throws Exception { + Object responsesElement = Object.newBuilder().build(); + ListObjectsResponse expectedResponse = + ListObjectsResponse.newBuilder() + .setNextPageToken("") + .addAllObjects(Arrays.asList(responsesElement)) + .build(); + mockStorage.addResponse(expectedResponse); + + ProjectName parent = ProjectName.of("[PROJECT]"); + + ListObjectsPagedResponse pagedListResponse = client.listObjects(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getObjectsList().get(0), resources.get(0)); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListObjectsRequest actualRequest = ((ListObjectsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listObjectsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ProjectName parent = ProjectName.of("[PROJECT]"); + client.listObjects(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listObjectsTest2() throws Exception { + Object responsesElement = Object.newBuilder().build(); + ListObjectsResponse expectedResponse = + ListObjectsResponse.newBuilder() + .setNextPageToken("") + .addAllObjects(Arrays.asList(responsesElement)) + .build(); + mockStorage.addResponse(expectedResponse); + + String parent = "parent-995424086"; + + ListObjectsPagedResponse pagedListResponse = client.listObjects(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getObjectsList().get(0), resources.get(0)); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListObjectsRequest actualRequest = ((ListObjectsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listObjectsExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String parent = "parent-995424086"; + client.listObjects(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void rewriteObjectTest() throws Exception { + RewriteResponse expectedResponse = + RewriteResponse.newBuilder() + .setTotalBytesRewritten(-1109205579) + .setObjectSize(-1277221631) + .setDone(true) + .setRewriteToken("rewriteToken80654285") + .setResource(Object.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + RewriteObjectRequest request = + RewriteObjectRequest.newBuilder() + .setDestination(Object.newBuilder().build()) + .setRewriteMask(FieldMask.newBuilder().build()) + .setSourceBucket("sourceBucket841604581") + .setSourceObject("sourceObject1196439354") + .setSourceGeneration(1232209852) + .setRewriteToken("rewriteToken80654285") + .setDestinationPredefinedAcl(PredefinedObjectAcl.forNumber(0)) + .setIfGenerationMatch(-1086241088) + .setIfGenerationNotMatch(1475720404) + .setIfMetagenerationMatch(1043427781) + .setIfMetagenerationNotMatch(1025430873) + .setIfSourceGenerationMatch(-1427877280) + .setIfSourceGenerationNotMatch(1575612532) + .setIfSourceMetagenerationMatch(1143319909) + .setIfSourceMetagenerationNotMatch(1900822777) + .setMaxBytesRewrittenPerCall(1178170730) + .setCopySourceEncryptionAlgorithm("copySourceEncryptionAlgorithm-1524952548") + .setCopySourceEncryptionKeyBytes(ByteString.EMPTY) + .setCopySourceEncryptionKeySha256Bytes(ByteString.EMPTY) + .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) + .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + .build(); + + RewriteResponse actualResponse = client.rewriteObject(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + RewriteObjectRequest actualRequest = ((RewriteObjectRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getDestination(), actualRequest.getDestination()); + Assert.assertEquals(request.getRewriteMask(), actualRequest.getRewriteMask()); + Assert.assertEquals(request.getSourceBucket(), actualRequest.getSourceBucket()); + Assert.assertEquals(request.getSourceObject(), actualRequest.getSourceObject()); + Assert.assertEquals(request.getSourceGeneration(), actualRequest.getSourceGeneration()); + Assert.assertEquals(request.getRewriteToken(), actualRequest.getRewriteToken()); + Assert.assertEquals( + request.getDestinationPredefinedAcl(), actualRequest.getDestinationPredefinedAcl()); + Assert.assertEquals(request.getIfGenerationMatch(), actualRequest.getIfGenerationMatch()); + Assert.assertEquals(request.getIfGenerationNotMatch(), actualRequest.getIfGenerationNotMatch()); + Assert.assertEquals( + request.getIfMetagenerationMatch(), actualRequest.getIfMetagenerationMatch()); + Assert.assertEquals( + request.getIfMetagenerationNotMatch(), actualRequest.getIfMetagenerationNotMatch()); + Assert.assertEquals( + request.getIfSourceGenerationMatch(), actualRequest.getIfSourceGenerationMatch()); + Assert.assertEquals( + request.getIfSourceGenerationNotMatch(), actualRequest.getIfSourceGenerationNotMatch()); + Assert.assertEquals( + request.getIfSourceMetagenerationMatch(), actualRequest.getIfSourceMetagenerationMatch()); + Assert.assertEquals( + request.getIfSourceMetagenerationNotMatch(), + actualRequest.getIfSourceMetagenerationNotMatch()); + Assert.assertEquals( + request.getMaxBytesRewrittenPerCall(), actualRequest.getMaxBytesRewrittenPerCall()); + Assert.assertEquals( + request.getCopySourceEncryptionAlgorithm(), + actualRequest.getCopySourceEncryptionAlgorithm()); + Assert.assertEquals( + request.getCopySourceEncryptionKeyBytes(), actualRequest.getCopySourceEncryptionKeyBytes()); + Assert.assertEquals( + request.getCopySourceEncryptionKeySha256Bytes(), + actualRequest.getCopySourceEncryptionKeySha256Bytes()); + Assert.assertEquals( + request.getCommonObjectRequestParams(), actualRequest.getCommonObjectRequestParams()); + Assert.assertEquals(request.getCommonRequestParams(), actualRequest.getCommonRequestParams()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void rewriteObjectExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + RewriteObjectRequest request = + RewriteObjectRequest.newBuilder() + .setDestination(Object.newBuilder().build()) + .setRewriteMask(FieldMask.newBuilder().build()) + .setSourceBucket("sourceBucket841604581") + .setSourceObject("sourceObject1196439354") + .setSourceGeneration(1232209852) + .setRewriteToken("rewriteToken80654285") + .setDestinationPredefinedAcl(PredefinedObjectAcl.forNumber(0)) + .setIfGenerationMatch(-1086241088) + .setIfGenerationNotMatch(1475720404) + .setIfMetagenerationMatch(1043427781) + .setIfMetagenerationNotMatch(1025430873) + .setIfSourceGenerationMatch(-1427877280) + .setIfSourceGenerationNotMatch(1575612532) + .setIfSourceMetagenerationMatch(1143319909) + .setIfSourceMetagenerationNotMatch(1900822777) + .setMaxBytesRewrittenPerCall(1178170730) + .setCopySourceEncryptionAlgorithm("copySourceEncryptionAlgorithm-1524952548") + .setCopySourceEncryptionKeyBytes(ByteString.EMPTY) + .setCopySourceEncryptionKeySha256Bytes(ByteString.EMPTY) + .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) + .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + .build(); + client.rewriteObject(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void startResumableWriteTest() throws Exception { + StartResumableWriteResponse expectedResponse = + StartResumableWriteResponse.newBuilder().setUploadId("uploadId1563990780").build(); + mockStorage.addResponse(expectedResponse); + + StartResumableWriteRequest request = + StartResumableWriteRequest.newBuilder() + .setWriteObjectSpec(WriteObjectSpec.newBuilder().build()) + .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) + .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + .build(); + + StartResumableWriteResponse actualResponse = client.startResumableWrite(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + StartResumableWriteRequest actualRequest = ((StartResumableWriteRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getWriteObjectSpec(), actualRequest.getWriteObjectSpec()); + Assert.assertEquals( + request.getCommonObjectRequestParams(), actualRequest.getCommonObjectRequestParams()); + Assert.assertEquals(request.getCommonRequestParams(), actualRequest.getCommonRequestParams()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void startResumableWriteExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + StartResumableWriteRequest request = + StartResumableWriteRequest.newBuilder() + .setWriteObjectSpec(WriteObjectSpec.newBuilder().build()) + .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build()) + .setCommonRequestParams(CommonRequestParams.newBuilder().build()) + .build(); + client.startResumableWrite(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void queryWriteStatusTest() throws Exception { + QueryWriteStatusResponse expectedResponse = QueryWriteStatusResponse.newBuilder().build(); + mockStorage.addResponse(expectedResponse); + + String uploadId = "uploadId1563990780"; + + QueryWriteStatusResponse actualResponse = client.queryWriteStatus(uploadId); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + QueryWriteStatusRequest actualRequest = ((QueryWriteStatusRequest) actualRequests.get(0)); + + Assert.assertEquals(uploadId, actualRequest.getUploadId()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void queryWriteStatusExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String uploadId = "uploadId1563990780"; + client.queryWriteStatus(uploadId); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getServiceAccountTest() throws Exception { + ServiceAccount expectedResponse = + ServiceAccount.newBuilder().setEmailAddress("emailAddress-1070931784").build(); + mockStorage.addResponse(expectedResponse); + + ProjectName project = ProjectName.of("[PROJECT]"); + + ServiceAccount actualResponse = client.getServiceAccount(project); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetServiceAccountRequest actualRequest = ((GetServiceAccountRequest) actualRequests.get(0)); + + Assert.assertEquals(project.toString(), actualRequest.getProject()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getServiceAccountExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ProjectName project = ProjectName.of("[PROJECT]"); + client.getServiceAccount(project); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getServiceAccountTest2() throws Exception { + ServiceAccount expectedResponse = + ServiceAccount.newBuilder().setEmailAddress("emailAddress-1070931784").build(); + mockStorage.addResponse(expectedResponse); + + String project = "project-309310695"; + + ServiceAccount actualResponse = client.getServiceAccount(project); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetServiceAccountRequest actualRequest = ((GetServiceAccountRequest) actualRequests.get(0)); + + Assert.assertEquals(project, actualRequest.getProject()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getServiceAccountExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String project = "project-309310695"; + client.getServiceAccount(project); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createHmacKeyTest() throws Exception { + CreateHmacKeyResponse expectedResponse = + CreateHmacKeyResponse.newBuilder() + .setMetadata(HmacKeyMetadata.newBuilder().build()) + .setSecretKeyBytes(ByteString.EMPTY) + .build(); + mockStorage.addResponse(expectedResponse); + + ProjectName project = ProjectName.of("[PROJECT]"); + String serviceAccountEmail = "serviceAccountEmail1825953988"; + + CreateHmacKeyResponse actualResponse = client.createHmacKey(project, serviceAccountEmail); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateHmacKeyRequest actualRequest = ((CreateHmacKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(project.toString(), actualRequest.getProject()); + Assert.assertEquals(serviceAccountEmail, actualRequest.getServiceAccountEmail()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createHmacKeyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ProjectName project = ProjectName.of("[PROJECT]"); + String serviceAccountEmail = "serviceAccountEmail1825953988"; + client.createHmacKey(project, serviceAccountEmail); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createHmacKeyTest2() throws Exception { + CreateHmacKeyResponse expectedResponse = + CreateHmacKeyResponse.newBuilder() + .setMetadata(HmacKeyMetadata.newBuilder().build()) + .setSecretKeyBytes(ByteString.EMPTY) + .build(); + mockStorage.addResponse(expectedResponse); + + String project = "project-309310695"; + String serviceAccountEmail = "serviceAccountEmail1825953988"; + + CreateHmacKeyResponse actualResponse = client.createHmacKey(project, serviceAccountEmail); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateHmacKeyRequest actualRequest = ((CreateHmacKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(project, actualRequest.getProject()); + Assert.assertEquals(serviceAccountEmail, actualRequest.getServiceAccountEmail()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createHmacKeyExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String project = "project-309310695"; + String serviceAccountEmail = "serviceAccountEmail1825953988"; + client.createHmacKey(project, serviceAccountEmail); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void deleteHmacKeyTest() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); + mockStorage.addResponse(expectedResponse); + + String accessId = "accessId-2146437729"; + ProjectName project = ProjectName.of("[PROJECT]"); + + client.deleteHmacKey(accessId, project); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DeleteHmacKeyRequest actualRequest = ((DeleteHmacKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(accessId, actualRequest.getAccessId()); + Assert.assertEquals(project.toString(), actualRequest.getProject()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void deleteHmacKeyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String accessId = "accessId-2146437729"; + ProjectName project = ProjectName.of("[PROJECT]"); + client.deleteHmacKey(accessId, project); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void deleteHmacKeyTest2() throws Exception { + Empty expectedResponse = Empty.newBuilder().build(); + mockStorage.addResponse(expectedResponse); + + String accessId = "accessId-2146437729"; + String project = "project-309310695"; + + client.deleteHmacKey(accessId, project); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DeleteHmacKeyRequest actualRequest = ((DeleteHmacKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(accessId, actualRequest.getAccessId()); + Assert.assertEquals(project, actualRequest.getProject()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void deleteHmacKeyExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String accessId = "accessId-2146437729"; + String project = "project-309310695"; + client.deleteHmacKey(accessId, project); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getHmacKeyTest() throws Exception { + HmacKeyMetadata expectedResponse = + HmacKeyMetadata.newBuilder() + .setId("id3355") + .setAccessId("accessId-2146437729") + .setProject(ProjectName.of("[PROJECT]").toString()) + .setServiceAccountEmail("serviceAccountEmail1825953988") + .setState("state109757585") + .setCreateTime(Timestamp.newBuilder().build()) + .setUpdateTime(Timestamp.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + String accessId = "accessId-2146437729"; + ProjectName project = ProjectName.of("[PROJECT]"); + + HmacKeyMetadata actualResponse = client.getHmacKey(accessId, project); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetHmacKeyRequest actualRequest = ((GetHmacKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(accessId, actualRequest.getAccessId()); + Assert.assertEquals(project.toString(), actualRequest.getProject()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getHmacKeyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String accessId = "accessId-2146437729"; + ProjectName project = ProjectName.of("[PROJECT]"); + client.getHmacKey(accessId, project); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getHmacKeyTest2() throws Exception { + HmacKeyMetadata expectedResponse = + HmacKeyMetadata.newBuilder() + .setId("id3355") + .setAccessId("accessId-2146437729") + .setProject(ProjectName.of("[PROJECT]").toString()) + .setServiceAccountEmail("serviceAccountEmail1825953988") + .setState("state109757585") + .setCreateTime(Timestamp.newBuilder().build()) + .setUpdateTime(Timestamp.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + String accessId = "accessId-2146437729"; + String project = "project-309310695"; + + HmacKeyMetadata actualResponse = client.getHmacKey(accessId, project); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetHmacKeyRequest actualRequest = ((GetHmacKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(accessId, actualRequest.getAccessId()); + Assert.assertEquals(project, actualRequest.getProject()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getHmacKeyExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String accessId = "accessId-2146437729"; + String project = "project-309310695"; + client.getHmacKey(accessId, project); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listHmacKeysTest() throws Exception { + HmacKeyMetadata responsesElement = HmacKeyMetadata.newBuilder().build(); + ListHmacKeysResponse expectedResponse = + ListHmacKeysResponse.newBuilder() + .setNextPageToken("") + .addAllHmacKeys(Arrays.asList(responsesElement)) + .build(); + mockStorage.addResponse(expectedResponse); + + ProjectName project = ProjectName.of("[PROJECT]"); + + ListHmacKeysPagedResponse pagedListResponse = client.listHmacKeys(project); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getHmacKeysList().get(0), resources.get(0)); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListHmacKeysRequest actualRequest = ((ListHmacKeysRequest) actualRequests.get(0)); + + Assert.assertEquals(project.toString(), actualRequest.getProject()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listHmacKeysExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + ProjectName project = ProjectName.of("[PROJECT]"); + client.listHmacKeys(project); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listHmacKeysTest2() throws Exception { + HmacKeyMetadata responsesElement = HmacKeyMetadata.newBuilder().build(); + ListHmacKeysResponse expectedResponse = + ListHmacKeysResponse.newBuilder() + .setNextPageToken("") + .addAllHmacKeys(Arrays.asList(responsesElement)) + .build(); + mockStorage.addResponse(expectedResponse); + + String project = "project-309310695"; + + ListHmacKeysPagedResponse pagedListResponse = client.listHmacKeys(project); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getHmacKeysList().get(0), resources.get(0)); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListHmacKeysRequest actualRequest = ((ListHmacKeysRequest) actualRequests.get(0)); + + Assert.assertEquals(project, actualRequest.getProject()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listHmacKeysExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + String project = "project-309310695"; + client.listHmacKeys(project); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void updateHmacKeyTest() throws Exception { + HmacKeyMetadata expectedResponse = + HmacKeyMetadata.newBuilder() + .setId("id3355") + .setAccessId("accessId-2146437729") + .setProject(ProjectName.of("[PROJECT]").toString()) + .setServiceAccountEmail("serviceAccountEmail1825953988") + .setState("state109757585") + .setCreateTime(Timestamp.newBuilder().build()) + .setUpdateTime(Timestamp.newBuilder().build()) + .build(); + mockStorage.addResponse(expectedResponse); + + HmacKeyMetadata hmacKey = HmacKeyMetadata.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + + HmacKeyMetadata actualResponse = client.updateHmacKey(hmacKey, updateMask); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockStorage.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + UpdateHmacKeyRequest actualRequest = ((UpdateHmacKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(hmacKey, actualRequest.getHmacKey()); + Assert.assertEquals(updateMask, actualRequest.getUpdateMask()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void updateHmacKeyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockStorage.addException(exception); + + try { + HmacKeyMetadata hmacKey = HmacKeyMetadata.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + client.updateHmacKey(hmacKey, updateMask); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception. diff --git a/test/integration/goldens/storage/com/google/storage/v2/StorageSettings.java b/test/integration/goldens/storage/com/google/storage/v2/StorageSettings.java index 8cbe00e72f..eb8158dd3d 100644 --- a/test/integration/goldens/storage/com/google/storage/v2/StorageSettings.java +++ b/test/integration/goldens/storage/com/google/storage/v2/StorageSettings.java @@ -16,6 +16,11 @@ package com.google.storage.v2; +import static com.google.storage.v2.StorageClient.ListBucketsPagedResponse; +import static com.google.storage.v2.StorageClient.ListHmacKeysPagedResponse; +import static com.google.storage.v2.StorageClient.ListNotificationsPagedResponse; +import static com.google.storage.v2.StorageClient.ListObjectsPagedResponse; + import com.google.api.core.ApiFunction; import com.google.api.core.BetaApi; import com.google.api.gax.core.GoogleCredentialsProvider; @@ -24,11 +29,18 @@ import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.PagedCallSettings; import com.google.api.gax.rpc.ServerStreamingCallSettings; import com.google.api.gax.rpc.StreamingCallSettings; import com.google.api.gax.rpc.StubSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.iam.v1.GetIamPolicyRequest; +import com.google.iam.v1.Policy; +import com.google.iam.v1.SetIamPolicyRequest; +import com.google.iam.v1.TestIamPermissionsRequest; +import com.google.iam.v1.TestIamPermissionsResponse; +import com.google.protobuf.Empty; import com.google.storage.v2.stub.StorageStubSettings; import java.io.IOException; import java.util.List; @@ -49,15 +61,15 @@ *

    The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. * - *

    For example, to set the total timeout of startResumableWrite to 30 seconds: + *

    For example, to set the total timeout of deleteBucket to 30 seconds: * *

    {@code
      * StorageSettings.Builder storageSettingsBuilder = StorageSettings.newBuilder();
      * storageSettingsBuilder
    - *     .startResumableWriteSettings()
    + *     .deleteBucketSettings()
      *     .setRetrySettings(
      *         storageSettingsBuilder
    - *             .startResumableWriteSettings()
    + *             .deleteBucketSettings()
      *             .getRetrySettings()
      *             .toBuilder()
      *             .setTotalTimeout(Duration.ofSeconds(30))
    @@ -68,16 +80,117 @@
     @Generated("by gapic-generator-java")
     public class StorageSettings extends ClientSettings {
     
    +  /** Returns the object with the settings used for calls to deleteBucket. */
    +  public UnaryCallSettings deleteBucketSettings() {
    +    return ((StorageStubSettings) getStubSettings()).deleteBucketSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to getBucket. */
    +  public UnaryCallSettings getBucketSettings() {
    +    return ((StorageStubSettings) getStubSettings()).getBucketSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to createBucket. */
    +  public UnaryCallSettings createBucketSettings() {
    +    return ((StorageStubSettings) getStubSettings()).createBucketSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to listBuckets. */
    +  public PagedCallSettings
    +      listBucketsSettings() {
    +    return ((StorageStubSettings) getStubSettings()).listBucketsSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to lockBucketRetentionPolicy. */
    +  public UnaryCallSettings
    +      lockBucketRetentionPolicySettings() {
    +    return ((StorageStubSettings) getStubSettings()).lockBucketRetentionPolicySettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to getIamPolicy. */
    +  public UnaryCallSettings getIamPolicySettings() {
    +    return ((StorageStubSettings) getStubSettings()).getIamPolicySettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to setIamPolicy. */
    +  public UnaryCallSettings setIamPolicySettings() {
    +    return ((StorageStubSettings) getStubSettings()).setIamPolicySettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to testIamPermissions. */
    +  public UnaryCallSettings
    +      testIamPermissionsSettings() {
    +    return ((StorageStubSettings) getStubSettings()).testIamPermissionsSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to updateBucket. */
    +  public UnaryCallSettings updateBucketSettings() {
    +    return ((StorageStubSettings) getStubSettings()).updateBucketSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to deleteNotification. */
    +  public UnaryCallSettings deleteNotificationSettings() {
    +    return ((StorageStubSettings) getStubSettings()).deleteNotificationSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to getNotification. */
    +  public UnaryCallSettings getNotificationSettings() {
    +    return ((StorageStubSettings) getStubSettings()).getNotificationSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to createNotification. */
    +  public UnaryCallSettings createNotificationSettings() {
    +    return ((StorageStubSettings) getStubSettings()).createNotificationSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to listNotifications. */
    +  public PagedCallSettings<
    +          ListNotificationsRequest, ListNotificationsResponse, ListNotificationsPagedResponse>
    +      listNotificationsSettings() {
    +    return ((StorageStubSettings) getStubSettings()).listNotificationsSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to composeObject. */
    +  public UnaryCallSettings composeObjectSettings() {
    +    return ((StorageStubSettings) getStubSettings()).composeObjectSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to deleteObject. */
    +  public UnaryCallSettings deleteObjectSettings() {
    +    return ((StorageStubSettings) getStubSettings()).deleteObjectSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to getObject. */
    +  public UnaryCallSettings getObjectSettings() {
    +    return ((StorageStubSettings) getStubSettings()).getObjectSettings();
    +  }
    +
       /** Returns the object with the settings used for calls to readObject. */
       public ServerStreamingCallSettings readObjectSettings() {
         return ((StorageStubSettings) getStubSettings()).readObjectSettings();
       }
     
    +  /** Returns the object with the settings used for calls to updateObject. */
    +  public UnaryCallSettings updateObjectSettings() {
    +    return ((StorageStubSettings) getStubSettings()).updateObjectSettings();
    +  }
    +
       /** Returns the object with the settings used for calls to writeObject. */
       public StreamingCallSettings writeObjectSettings() {
         return ((StorageStubSettings) getStubSettings()).writeObjectSettings();
       }
     
    +  /** Returns the object with the settings used for calls to listObjects. */
    +  public PagedCallSettings
    +      listObjectsSettings() {
    +    return ((StorageStubSettings) getStubSettings()).listObjectsSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to rewriteObject. */
    +  public UnaryCallSettings rewriteObjectSettings() {
    +    return ((StorageStubSettings) getStubSettings()).rewriteObjectSettings();
    +  }
    +
       /** Returns the object with the settings used for calls to startResumableWrite. */
       public UnaryCallSettings
           startResumableWriteSettings() {
    @@ -90,6 +203,37 @@ public StreamingCallSettings writeObjec
         return ((StorageStubSettings) getStubSettings()).queryWriteStatusSettings();
       }
     
    +  /** Returns the object with the settings used for calls to getServiceAccount. */
    +  public UnaryCallSettings getServiceAccountSettings() {
    +    return ((StorageStubSettings) getStubSettings()).getServiceAccountSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to createHmacKey. */
    +  public UnaryCallSettings createHmacKeySettings() {
    +    return ((StorageStubSettings) getStubSettings()).createHmacKeySettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to deleteHmacKey. */
    +  public UnaryCallSettings deleteHmacKeySettings() {
    +    return ((StorageStubSettings) getStubSettings()).deleteHmacKeySettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to getHmacKey. */
    +  public UnaryCallSettings getHmacKeySettings() {
    +    return ((StorageStubSettings) getStubSettings()).getHmacKeySettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to listHmacKeys. */
    +  public PagedCallSettings
    +      listHmacKeysSettings() {
    +    return ((StorageStubSettings) getStubSettings()).listHmacKeysSettings();
    +  }
    +
    +  /** Returns the object with the settings used for calls to updateHmacKey. */
    +  public UnaryCallSettings updateHmacKeySettings() {
    +    return ((StorageStubSettings) getStubSettings()).updateHmacKeySettings();
    +  }
    +
       public static final StorageSettings create(StorageStubSettings stub) throws IOException {
         return new StorageSettings.Builder(stub.toBuilder()).build();
       }
    @@ -186,18 +330,125 @@ public Builder applyToAllUnaryMethods(
           return this;
         }
     
    +    /** Returns the builder for the settings used for calls to deleteBucket. */
    +    public UnaryCallSettings.Builder deleteBucketSettings() {
    +      return getStubSettingsBuilder().deleteBucketSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to getBucket. */
    +    public UnaryCallSettings.Builder getBucketSettings() {
    +      return getStubSettingsBuilder().getBucketSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to createBucket. */
    +    public UnaryCallSettings.Builder createBucketSettings() {
    +      return getStubSettingsBuilder().createBucketSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to listBuckets. */
    +    public PagedCallSettings.Builder<
    +            ListBucketsRequest, ListBucketsResponse, ListBucketsPagedResponse>
    +        listBucketsSettings() {
    +      return getStubSettingsBuilder().listBucketsSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to lockBucketRetentionPolicy. */
    +    public UnaryCallSettings.Builder
    +        lockBucketRetentionPolicySettings() {
    +      return getStubSettingsBuilder().lockBucketRetentionPolicySettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to getIamPolicy. */
    +    public UnaryCallSettings.Builder getIamPolicySettings() {
    +      return getStubSettingsBuilder().getIamPolicySettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to setIamPolicy. */
    +    public UnaryCallSettings.Builder setIamPolicySettings() {
    +      return getStubSettingsBuilder().setIamPolicySettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to testIamPermissions. */
    +    public UnaryCallSettings.Builder
    +        testIamPermissionsSettings() {
    +      return getStubSettingsBuilder().testIamPermissionsSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to updateBucket. */
    +    public UnaryCallSettings.Builder updateBucketSettings() {
    +      return getStubSettingsBuilder().updateBucketSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to deleteNotification. */
    +    public UnaryCallSettings.Builder
    +        deleteNotificationSettings() {
    +      return getStubSettingsBuilder().deleteNotificationSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to getNotification. */
    +    public UnaryCallSettings.Builder
    +        getNotificationSettings() {
    +      return getStubSettingsBuilder().getNotificationSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to createNotification. */
    +    public UnaryCallSettings.Builder
    +        createNotificationSettings() {
    +      return getStubSettingsBuilder().createNotificationSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to listNotifications. */
    +    public PagedCallSettings.Builder<
    +            ListNotificationsRequest, ListNotificationsResponse, ListNotificationsPagedResponse>
    +        listNotificationsSettings() {
    +      return getStubSettingsBuilder().listNotificationsSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to composeObject. */
    +    public UnaryCallSettings.Builder composeObjectSettings() {
    +      return getStubSettingsBuilder().composeObjectSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to deleteObject. */
    +    public UnaryCallSettings.Builder deleteObjectSettings() {
    +      return getStubSettingsBuilder().deleteObjectSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to getObject. */
    +    public UnaryCallSettings.Builder getObjectSettings() {
    +      return getStubSettingsBuilder().getObjectSettings();
    +    }
    +
         /** Returns the builder for the settings used for calls to readObject. */
         public ServerStreamingCallSettings.Builder
             readObjectSettings() {
           return getStubSettingsBuilder().readObjectSettings();
         }
     
    +    /** Returns the builder for the settings used for calls to updateObject. */
    +    public UnaryCallSettings.Builder updateObjectSettings() {
    +      return getStubSettingsBuilder().updateObjectSettings();
    +    }
    +
         /** Returns the builder for the settings used for calls to writeObject. */
         public StreamingCallSettings.Builder
             writeObjectSettings() {
           return getStubSettingsBuilder().writeObjectSettings();
         }
     
    +    /** Returns the builder for the settings used for calls to listObjects. */
    +    public PagedCallSettings.Builder<
    +            ListObjectsRequest, ListObjectsResponse, ListObjectsPagedResponse>
    +        listObjectsSettings() {
    +      return getStubSettingsBuilder().listObjectsSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to rewriteObject. */
    +    public UnaryCallSettings.Builder
    +        rewriteObjectSettings() {
    +      return getStubSettingsBuilder().rewriteObjectSettings();
    +    }
    +
         /** Returns the builder for the settings used for calls to startResumableWrite. */
         public UnaryCallSettings.Builder
             startResumableWriteSettings() {
    @@ -210,6 +461,41 @@ public Builder applyToAllUnaryMethods(
           return getStubSettingsBuilder().queryWriteStatusSettings();
         }
     
    +    /** Returns the builder for the settings used for calls to getServiceAccount. */
    +    public UnaryCallSettings.Builder
    +        getServiceAccountSettings() {
    +      return getStubSettingsBuilder().getServiceAccountSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to createHmacKey. */
    +    public UnaryCallSettings.Builder
    +        createHmacKeySettings() {
    +      return getStubSettingsBuilder().createHmacKeySettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to deleteHmacKey. */
    +    public UnaryCallSettings.Builder deleteHmacKeySettings() {
    +      return getStubSettingsBuilder().deleteHmacKeySettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to getHmacKey. */
    +    public UnaryCallSettings.Builder getHmacKeySettings() {
    +      return getStubSettingsBuilder().getHmacKeySettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to listHmacKeys. */
    +    public PagedCallSettings.Builder<
    +            ListHmacKeysRequest, ListHmacKeysResponse, ListHmacKeysPagedResponse>
    +        listHmacKeysSettings() {
    +      return getStubSettingsBuilder().listHmacKeysSettings();
    +    }
    +
    +    /** Returns the builder for the settings used for calls to updateHmacKey. */
    +    public UnaryCallSettings.Builder
    +        updateHmacKeySettings() {
    +      return getStubSettingsBuilder().updateHmacKeySettings();
    +    }
    +
         @Override
         public StorageSettings build() throws IOException {
           return new StorageSettings(this);
    diff --git a/test/integration/goldens/storage/com/google/storage/v2/gapic_metadata.json b/test/integration/goldens/storage/com/google/storage/v2/gapic_metadata.json
    index a9899e16f9..5d16f3131d 100644
    --- a/test/integration/goldens/storage/com/google/storage/v2/gapic_metadata.json
    +++ b/test/integration/goldens/storage/com/google/storage/v2/gapic_metadata.json
    @@ -10,15 +10,90 @@
             "grpc": {
               "libraryClient": "StorageClient",
               "rpcs": {
    +            "ComposeObject": {
    +              "methods": ["composeObject", "composeObjectCallable"]
    +            },
    +            "CreateBucket": {
    +              "methods": ["createBucket", "createBucket", "createBucket", "createBucketCallable"]
    +            },
    +            "CreateHmacKey": {
    +              "methods": ["createHmacKey", "createHmacKey", "createHmacKey", "createHmacKeyCallable"]
    +            },
    +            "CreateNotification": {
    +              "methods": ["createNotification", "createNotification", "createNotification", "createNotificationCallable"]
    +            },
    +            "DeleteBucket": {
    +              "methods": ["deleteBucket", "deleteBucket", "deleteBucket", "deleteBucketCallable"]
    +            },
    +            "DeleteHmacKey": {
    +              "methods": ["deleteHmacKey", "deleteHmacKey", "deleteHmacKey", "deleteHmacKeyCallable"]
    +            },
    +            "DeleteNotification": {
    +              "methods": ["deleteNotification", "deleteNotification", "deleteNotification", "deleteNotificationCallable"]
    +            },
    +            "DeleteObject": {
    +              "methods": ["deleteObject", "deleteObject", "deleteObject", "deleteObjectCallable"]
    +            },
    +            "GetBucket": {
    +              "methods": ["getBucket", "getBucket", "getBucket", "getBucketCallable"]
    +            },
    +            "GetHmacKey": {
    +              "methods": ["getHmacKey", "getHmacKey", "getHmacKey", "getHmacKeyCallable"]
    +            },
    +            "GetIamPolicy": {
    +              "methods": ["getIamPolicy", "getIamPolicy", "getIamPolicy", "getIamPolicyCallable"]
    +            },
    +            "GetNotification": {
    +              "methods": ["getNotification", "getNotification", "getNotification", "getNotificationCallable"]
    +            },
    +            "GetObject": {
    +              "methods": ["getObject", "getObject", "getObject", "getObjectCallable"]
    +            },
    +            "GetServiceAccount": {
    +              "methods": ["getServiceAccount", "getServiceAccount", "getServiceAccount", "getServiceAccountCallable"]
    +            },
    +            "ListBuckets": {
    +              "methods": ["listBuckets", "listBuckets", "listBuckets", "listBucketsPagedCallable", "listBucketsCallable"]
    +            },
    +            "ListHmacKeys": {
    +              "methods": ["listHmacKeys", "listHmacKeys", "listHmacKeys", "listHmacKeysPagedCallable", "listHmacKeysCallable"]
    +            },
    +            "ListNotifications": {
    +              "methods": ["listNotifications", "listNotifications", "listNotifications", "listNotificationsPagedCallable", "listNotificationsCallable"]
    +            },
    +            "ListObjects": {
    +              "methods": ["listObjects", "listObjects", "listObjects", "listObjectsPagedCallable", "listObjectsCallable"]
    +            },
    +            "LockBucketRetentionPolicy": {
    +              "methods": ["lockBucketRetentionPolicy", "lockBucketRetentionPolicy", "lockBucketRetentionPolicy", "lockBucketRetentionPolicyCallable"]
    +            },
                 "QueryWriteStatus": {
                   "methods": ["queryWriteStatus", "queryWriteStatus", "queryWriteStatusCallable"]
                 },
                 "ReadObject": {
                   "methods": ["readObjectCallable"]
                 },
    +            "RewriteObject": {
    +              "methods": ["rewriteObject", "rewriteObjectCallable"]
    +            },
    +            "SetIamPolicy": {
    +              "methods": ["setIamPolicy", "setIamPolicy", "setIamPolicy", "setIamPolicyCallable"]
    +            },
                 "StartResumableWrite": {
                   "methods": ["startResumableWrite", "startResumableWriteCallable"]
                 },
    +            "TestIamPermissions": {
    +              "methods": ["testIamPermissions", "testIamPermissions", "testIamPermissions", "testIamPermissionsCallable"]
    +            },
    +            "UpdateBucket": {
    +              "methods": ["updateBucket", "updateBucket", "updateBucketCallable"]
    +            },
    +            "UpdateHmacKey": {
    +              "methods": ["updateHmacKey", "updateHmacKey", "updateHmacKeyCallable"]
    +            },
    +            "UpdateObject": {
    +              "methods": ["updateObject", "updateObject", "updateObjectCallable"]
    +            },
                 "WriteObject": {
                   "methods": ["writeObjectCallable"]
                 }
    diff --git a/test/integration/goldens/storage/com/google/storage/v2/package-info.java b/test/integration/goldens/storage/com/google/storage/v2/package-info.java
    index bfb389cc80..b1536036d7 100644
    --- a/test/integration/goldens/storage/com/google/storage/v2/package-info.java
    +++ b/test/integration/goldens/storage/com/google/storage/v2/package-info.java
    @@ -19,19 +19,28 @@
      *
      * 

    ======================= StorageClient ======================= * - *

    Service Description: Manages Google Cloud Storage resources. + *

    Service Description: ## API Overview and Naming Syntax + * + *

    The Cloud Storage gRPC API allows applications to read and write data through the abstractions + * of buckets and objects. For a description of these abstractions please see + * https://cloud.google.com/storage/docs. + * + *

    Resources are named as follows: - Projects are referred to as they are defined by the Resource + * Manager API, using strings like `projects/123456` or `projects/my-string-id`. - Buckets are named + * using string names of the form: `projects/{project}/buckets/{bucket}` For globally unique + * buckets, `_` may be substituted for the project. - Objects are uniquely identified by their name + * along with the name of the bucket they belong to, as separate strings in this API. For example: + * + *

    ReadObjectRequest { bucket: 'projects/_/buckets/my-bucket' object: 'my-object' } Note that + * object names can contain `/` characters, which are treated as any other character (no special + * directory semantics). * *

    Sample for StorageClient: * *

    {@code
      * try (StorageClient storageClient = StorageClient.create()) {
    - *   StartResumableWriteRequest request =
    - *       StartResumableWriteRequest.newBuilder()
    - *           .setWriteObjectSpec(WriteObjectSpec.newBuilder().build())
    - *           .setCommonObjectRequestParams(CommonObjectRequestParams.newBuilder().build())
    - *           .setCommonRequestParams(CommonRequestParams.newBuilder().build())
    - *           .build();
    - *   StartResumableWriteResponse response = storageClient.startResumableWrite(request);
    + *   BucketName name = BucketName.of("[PROJECT]", "[BUCKET]");
    + *   storageClient.deleteBucket(name);
      * }
      * }
    */ diff --git a/test/integration/goldens/storage/com/google/storage/v2/stub/GrpcStorageStub.java b/test/integration/goldens/storage/com/google/storage/v2/stub/GrpcStorageStub.java index 3097e32c82..3229694d5c 100644 --- a/test/integration/goldens/storage/com/google/storage/v2/stub/GrpcStorageStub.java +++ b/test/integration/goldens/storage/com/google/storage/v2/stub/GrpcStorageStub.java @@ -16,6 +16,11 @@ package com.google.storage.v2.stub; +import static com.google.storage.v2.StorageClient.ListBucketsPagedResponse; +import static com.google.storage.v2.StorageClient.ListHmacKeysPagedResponse; +import static com.google.storage.v2.StorageClient.ListNotificationsPagedResponse; +import static com.google.storage.v2.StorageClient.ListObjectsPagedResponse; + import com.google.api.gax.core.BackgroundResource; import com.google.api.gax.core.BackgroundResourceAggregation; import com.google.api.gax.grpc.GrpcCallSettings; @@ -24,13 +29,52 @@ import com.google.api.gax.rpc.ClientStreamingCallable; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; +import com.google.iam.v1.GetIamPolicyRequest; +import com.google.iam.v1.Policy; +import com.google.iam.v1.SetIamPolicyRequest; +import com.google.iam.v1.TestIamPermissionsRequest; +import com.google.iam.v1.TestIamPermissionsResponse; import com.google.longrunning.stub.GrpcOperationsStub; +import com.google.protobuf.Empty; +import com.google.storage.v2.Bucket; +import com.google.storage.v2.ComposeObjectRequest; +import com.google.storage.v2.CreateBucketRequest; +import com.google.storage.v2.CreateHmacKeyRequest; +import com.google.storage.v2.CreateHmacKeyResponse; +import com.google.storage.v2.CreateNotificationRequest; +import com.google.storage.v2.DeleteBucketRequest; +import com.google.storage.v2.DeleteHmacKeyRequest; +import com.google.storage.v2.DeleteNotificationRequest; +import com.google.storage.v2.DeleteObjectRequest; +import com.google.storage.v2.GetBucketRequest; +import com.google.storage.v2.GetHmacKeyRequest; +import com.google.storage.v2.GetNotificationRequest; +import com.google.storage.v2.GetObjectRequest; +import com.google.storage.v2.GetServiceAccountRequest; +import com.google.storage.v2.HmacKeyMetadata; +import com.google.storage.v2.ListBucketsRequest; +import com.google.storage.v2.ListBucketsResponse; +import com.google.storage.v2.ListHmacKeysRequest; +import com.google.storage.v2.ListHmacKeysResponse; +import com.google.storage.v2.ListNotificationsRequest; +import com.google.storage.v2.ListNotificationsResponse; +import com.google.storage.v2.ListObjectsRequest; +import com.google.storage.v2.ListObjectsResponse; +import com.google.storage.v2.LockBucketRetentionPolicyRequest; +import com.google.storage.v2.Notification; +import com.google.storage.v2.Object; import com.google.storage.v2.QueryWriteStatusRequest; import com.google.storage.v2.QueryWriteStatusResponse; import com.google.storage.v2.ReadObjectRequest; import com.google.storage.v2.ReadObjectResponse; +import com.google.storage.v2.RewriteObjectRequest; +import com.google.storage.v2.RewriteResponse; +import com.google.storage.v2.ServiceAccount; import com.google.storage.v2.StartResumableWriteRequest; import com.google.storage.v2.StartResumableWriteResponse; +import com.google.storage.v2.UpdateBucketRequest; +import com.google.storage.v2.UpdateHmacKeyRequest; +import com.google.storage.v2.UpdateObjectRequest; import com.google.storage.v2.WriteObjectRequest; import com.google.storage.v2.WriteObjectResponse; import io.grpc.MethodDescriptor; @@ -47,6 +91,152 @@ */ @Generated("by gapic-generator-java") public class GrpcStorageStub extends StorageStub { + private static final MethodDescriptor deleteBucketMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/DeleteBucket") + .setRequestMarshaller(ProtoUtils.marshaller(DeleteBucketRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance())) + .build(); + + private static final MethodDescriptor getBucketMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/GetBucket") + .setRequestMarshaller(ProtoUtils.marshaller(GetBucketRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Bucket.getDefaultInstance())) + .build(); + + private static final MethodDescriptor createBucketMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/CreateBucket") + .setRequestMarshaller(ProtoUtils.marshaller(CreateBucketRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Bucket.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + listBucketsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/ListBuckets") + .setRequestMarshaller(ProtoUtils.marshaller(ListBucketsRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ListBucketsResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + lockBucketRetentionPolicyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/LockBucketRetentionPolicy") + .setRequestMarshaller( + ProtoUtils.marshaller(LockBucketRetentionPolicyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Bucket.getDefaultInstance())) + .build(); + + private static final MethodDescriptor getIamPolicyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/GetIamPolicy") + .setRequestMarshaller(ProtoUtils.marshaller(GetIamPolicyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Policy.getDefaultInstance())) + .build(); + + private static final MethodDescriptor setIamPolicyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/SetIamPolicy") + .setRequestMarshaller(ProtoUtils.marshaller(SetIamPolicyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Policy.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + testIamPermissionsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/TestIamPermissions") + .setRequestMarshaller( + ProtoUtils.marshaller(TestIamPermissionsRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(TestIamPermissionsResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor updateBucketMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/UpdateBucket") + .setRequestMarshaller(ProtoUtils.marshaller(UpdateBucketRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Bucket.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + deleteNotificationMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/DeleteNotification") + .setRequestMarshaller( + ProtoUtils.marshaller(DeleteNotificationRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + getNotificationMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/GetNotification") + .setRequestMarshaller( + ProtoUtils.marshaller(GetNotificationRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Notification.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + createNotificationMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/CreateNotification") + .setRequestMarshaller( + ProtoUtils.marshaller(CreateNotificationRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Notification.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + listNotificationsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/ListNotifications") + .setRequestMarshaller( + ProtoUtils.marshaller(ListNotificationsRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ListNotificationsResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + composeObjectMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/ComposeObject") + .setRequestMarshaller( + ProtoUtils.marshaller(ComposeObjectRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Object.getDefaultInstance())) + .build(); + + private static final MethodDescriptor deleteObjectMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/DeleteObject") + .setRequestMarshaller(ProtoUtils.marshaller(DeleteObjectRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance())) + .build(); + + private static final MethodDescriptor getObjectMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/GetObject") + .setRequestMarshaller(ProtoUtils.marshaller(GetObjectRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Object.getDefaultInstance())) + .build(); + private static final MethodDescriptor readObjectMethodDescriptor = MethodDescriptor.newBuilder() @@ -56,6 +246,14 @@ public class GrpcStorageStub extends StorageStub { .setResponseMarshaller(ProtoUtils.marshaller(ReadObjectResponse.getDefaultInstance())) .build(); + private static final MethodDescriptor updateObjectMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/UpdateObject") + .setRequestMarshaller(ProtoUtils.marshaller(UpdateObjectRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Object.getDefaultInstance())) + .build(); + private static final MethodDescriptor writeObjectMethodDescriptor = MethodDescriptor.newBuilder() @@ -66,6 +264,26 @@ public class GrpcStorageStub extends StorageStub { ProtoUtils.marshaller(WriteObjectResponse.getDefaultInstance())) .build(); + private static final MethodDescriptor + listObjectsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/ListObjects") + .setRequestMarshaller(ProtoUtils.marshaller(ListObjectsRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ListObjectsResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + rewriteObjectMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/RewriteObject") + .setRequestMarshaller( + ProtoUtils.marshaller(RewriteObjectRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(RewriteResponse.getDefaultInstance())) + .build(); + private static final MethodDescriptor startResumableWriteMethodDescriptor = MethodDescriptor.newBuilder() @@ -88,13 +306,107 @@ public class GrpcStorageStub extends StorageStub { ProtoUtils.marshaller(QueryWriteStatusResponse.getDefaultInstance())) .build(); + private static final MethodDescriptor + getServiceAccountMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/GetServiceAccount") + .setRequestMarshaller( + ProtoUtils.marshaller(GetServiceAccountRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(ServiceAccount.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + createHmacKeyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/CreateHmacKey") + .setRequestMarshaller( + ProtoUtils.marshaller(CreateHmacKeyRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(CreateHmacKeyResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor deleteHmacKeyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/DeleteHmacKey") + .setRequestMarshaller(ProtoUtils.marshaller(DeleteHmacKeyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + getHmacKeyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/GetHmacKey") + .setRequestMarshaller(ProtoUtils.marshaller(GetHmacKeyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(HmacKeyMetadata.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + listHmacKeysMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/ListHmacKeys") + .setRequestMarshaller(ProtoUtils.marshaller(ListHmacKeysRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ListHmacKeysResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + updateHmacKeyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.storage.v2.Storage/UpdateHmacKey") + .setRequestMarshaller( + ProtoUtils.marshaller(UpdateHmacKeyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(HmacKeyMetadata.getDefaultInstance())) + .build(); + + private final UnaryCallable deleteBucketCallable; + private final UnaryCallable getBucketCallable; + private final UnaryCallable createBucketCallable; + private final UnaryCallable listBucketsCallable; + private final UnaryCallable + listBucketsPagedCallable; + private final UnaryCallable + lockBucketRetentionPolicyCallable; + private final UnaryCallable getIamPolicyCallable; + private final UnaryCallable setIamPolicyCallable; + private final UnaryCallable + testIamPermissionsCallable; + private final UnaryCallable updateBucketCallable; + private final UnaryCallable deleteNotificationCallable; + private final UnaryCallable getNotificationCallable; + private final UnaryCallable createNotificationCallable; + private final UnaryCallable + listNotificationsCallable; + private final UnaryCallable + listNotificationsPagedCallable; + private final UnaryCallable composeObjectCallable; + private final UnaryCallable deleteObjectCallable; + private final UnaryCallable getObjectCallable; private final ServerStreamingCallable readObjectCallable; + private final UnaryCallable updateObjectCallable; private final ClientStreamingCallable writeObjectCallable; + private final UnaryCallable listObjectsCallable; + private final UnaryCallable + listObjectsPagedCallable; + private final UnaryCallable rewriteObjectCallable; private final UnaryCallable startResumableWriteCallable; private final UnaryCallable queryWriteStatusCallable; + private final UnaryCallable getServiceAccountCallable; + private final UnaryCallable createHmacKeyCallable; + private final UnaryCallable deleteHmacKeyCallable; + private final UnaryCallable getHmacKeyCallable; + private final UnaryCallable listHmacKeysCallable; + private final UnaryCallable + listHmacKeysPagedCallable; + private final UnaryCallable updateHmacKeyCallable; private final BackgroundResource backgroundResources; private final GrpcOperationsStub operationsStub; @@ -135,14 +447,93 @@ protected GrpcStorageStub( this.callableFactory = callableFactory; this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory); + GrpcCallSettings deleteBucketTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(deleteBucketMethodDescriptor) + .build(); + GrpcCallSettings getBucketTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getBucketMethodDescriptor) + .build(); + GrpcCallSettings createBucketTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(createBucketMethodDescriptor) + .build(); + GrpcCallSettings listBucketsTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(listBucketsMethodDescriptor) + .build(); + GrpcCallSettings + lockBucketRetentionPolicyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(lockBucketRetentionPolicyMethodDescriptor) + .build(); + GrpcCallSettings getIamPolicyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getIamPolicyMethodDescriptor) + .build(); + GrpcCallSettings setIamPolicyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(setIamPolicyMethodDescriptor) + .build(); + GrpcCallSettings + testIamPermissionsTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(testIamPermissionsMethodDescriptor) + .build(); + GrpcCallSettings updateBucketTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(updateBucketMethodDescriptor) + .build(); + GrpcCallSettings deleteNotificationTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(deleteNotificationMethodDescriptor) + .build(); + GrpcCallSettings getNotificationTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getNotificationMethodDescriptor) + .build(); + GrpcCallSettings createNotificationTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(createNotificationMethodDescriptor) + .build(); + GrpcCallSettings + listNotificationsTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(listNotificationsMethodDescriptor) + .build(); + GrpcCallSettings composeObjectTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(composeObjectMethodDescriptor) + .build(); + GrpcCallSettings deleteObjectTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(deleteObjectMethodDescriptor) + .build(); + GrpcCallSettings getObjectTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getObjectMethodDescriptor) + .build(); GrpcCallSettings readObjectTransportSettings = GrpcCallSettings.newBuilder() .setMethodDescriptor(readObjectMethodDescriptor) .build(); + GrpcCallSettings updateObjectTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(updateObjectMethodDescriptor) + .build(); GrpcCallSettings writeObjectTransportSettings = GrpcCallSettings.newBuilder() .setMethodDescriptor(writeObjectMethodDescriptor) .build(); + GrpcCallSettings listObjectsTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(listObjectsMethodDescriptor) + .build(); + GrpcCallSettings rewriteObjectTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(rewriteObjectMethodDescriptor) + .build(); GrpcCallSettings startResumableWriteTransportSettings = GrpcCallSettings.newBuilder() @@ -153,13 +544,115 @@ protected GrpcStorageStub( GrpcCallSettings.newBuilder() .setMethodDescriptor(queryWriteStatusMethodDescriptor) .build(); + GrpcCallSettings getServiceAccountTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getServiceAccountMethodDescriptor) + .build(); + GrpcCallSettings createHmacKeyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(createHmacKeyMethodDescriptor) + .build(); + GrpcCallSettings deleteHmacKeyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(deleteHmacKeyMethodDescriptor) + .build(); + GrpcCallSettings getHmacKeyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getHmacKeyMethodDescriptor) + .build(); + GrpcCallSettings listHmacKeysTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(listHmacKeysMethodDescriptor) + .build(); + GrpcCallSettings updateHmacKeyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(updateHmacKeyMethodDescriptor) + .build(); + this.deleteBucketCallable = + callableFactory.createUnaryCallable( + deleteBucketTransportSettings, settings.deleteBucketSettings(), clientContext); + this.getBucketCallable = + callableFactory.createUnaryCallable( + getBucketTransportSettings, settings.getBucketSettings(), clientContext); + this.createBucketCallable = + callableFactory.createUnaryCallable( + createBucketTransportSettings, settings.createBucketSettings(), clientContext); + this.listBucketsCallable = + callableFactory.createUnaryCallable( + listBucketsTransportSettings, settings.listBucketsSettings(), clientContext); + this.listBucketsPagedCallable = + callableFactory.createPagedCallable( + listBucketsTransportSettings, settings.listBucketsSettings(), clientContext); + this.lockBucketRetentionPolicyCallable = + callableFactory.createUnaryCallable( + lockBucketRetentionPolicyTransportSettings, + settings.lockBucketRetentionPolicySettings(), + clientContext); + this.getIamPolicyCallable = + callableFactory.createUnaryCallable( + getIamPolicyTransportSettings, settings.getIamPolicySettings(), clientContext); + this.setIamPolicyCallable = + callableFactory.createUnaryCallable( + setIamPolicyTransportSettings, settings.setIamPolicySettings(), clientContext); + this.testIamPermissionsCallable = + callableFactory.createUnaryCallable( + testIamPermissionsTransportSettings, + settings.testIamPermissionsSettings(), + clientContext); + this.updateBucketCallable = + callableFactory.createUnaryCallable( + updateBucketTransportSettings, settings.updateBucketSettings(), clientContext); + this.deleteNotificationCallable = + callableFactory.createUnaryCallable( + deleteNotificationTransportSettings, + settings.deleteNotificationSettings(), + clientContext); + this.getNotificationCallable = + callableFactory.createUnaryCallable( + getNotificationTransportSettings, settings.getNotificationSettings(), clientContext); + this.createNotificationCallable = + callableFactory.createUnaryCallable( + createNotificationTransportSettings, + settings.createNotificationSettings(), + clientContext); + this.listNotificationsCallable = + callableFactory.createUnaryCallable( + listNotificationsTransportSettings, + settings.listNotificationsSettings(), + clientContext); + this.listNotificationsPagedCallable = + callableFactory.createPagedCallable( + listNotificationsTransportSettings, + settings.listNotificationsSettings(), + clientContext); + this.composeObjectCallable = + callableFactory.createUnaryCallable( + composeObjectTransportSettings, settings.composeObjectSettings(), clientContext); + this.deleteObjectCallable = + callableFactory.createUnaryCallable( + deleteObjectTransportSettings, settings.deleteObjectSettings(), clientContext); + this.getObjectCallable = + callableFactory.createUnaryCallable( + getObjectTransportSettings, settings.getObjectSettings(), clientContext); this.readObjectCallable = callableFactory.createServerStreamingCallable( readObjectTransportSettings, settings.readObjectSettings(), clientContext); + this.updateObjectCallable = + callableFactory.createUnaryCallable( + updateObjectTransportSettings, settings.updateObjectSettings(), clientContext); this.writeObjectCallable = callableFactory.createClientStreamingCallable( writeObjectTransportSettings, settings.writeObjectSettings(), clientContext); + this.listObjectsCallable = + callableFactory.createUnaryCallable( + listObjectsTransportSettings, settings.listObjectsSettings(), clientContext); + this.listObjectsPagedCallable = + callableFactory.createPagedCallable( + listObjectsTransportSettings, settings.listObjectsSettings(), clientContext); + this.rewriteObjectCallable = + callableFactory.createUnaryCallable( + rewriteObjectTransportSettings, settings.rewriteObjectSettings(), clientContext); this.startResumableWriteCallable = callableFactory.createUnaryCallable( startResumableWriteTransportSettings, @@ -168,6 +661,29 @@ protected GrpcStorageStub( this.queryWriteStatusCallable = callableFactory.createUnaryCallable( queryWriteStatusTransportSettings, settings.queryWriteStatusSettings(), clientContext); + this.getServiceAccountCallable = + callableFactory.createUnaryCallable( + getServiceAccountTransportSettings, + settings.getServiceAccountSettings(), + clientContext); + this.createHmacKeyCallable = + callableFactory.createUnaryCallable( + createHmacKeyTransportSettings, settings.createHmacKeySettings(), clientContext); + this.deleteHmacKeyCallable = + callableFactory.createUnaryCallable( + deleteHmacKeyTransportSettings, settings.deleteHmacKeySettings(), clientContext); + this.getHmacKeyCallable = + callableFactory.createUnaryCallable( + getHmacKeyTransportSettings, settings.getHmacKeySettings(), clientContext); + this.listHmacKeysCallable = + callableFactory.createUnaryCallable( + listHmacKeysTransportSettings, settings.listHmacKeysSettings(), clientContext); + this.listHmacKeysPagedCallable = + callableFactory.createPagedCallable( + listHmacKeysTransportSettings, settings.listHmacKeysSettings(), clientContext); + this.updateHmacKeyCallable = + callableFactory.createUnaryCallable( + updateHmacKeyTransportSettings, settings.updateHmacKeySettings(), clientContext); this.backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources()); @@ -177,16 +693,130 @@ public GrpcOperationsStub getOperationsStub() { return operationsStub; } + @Override + public UnaryCallable deleteBucketCallable() { + return deleteBucketCallable; + } + + @Override + public UnaryCallable getBucketCallable() { + return getBucketCallable; + } + + @Override + public UnaryCallable createBucketCallable() { + return createBucketCallable; + } + + @Override + public UnaryCallable listBucketsCallable() { + return listBucketsCallable; + } + + @Override + public UnaryCallable listBucketsPagedCallable() { + return listBucketsPagedCallable; + } + + @Override + public UnaryCallable + lockBucketRetentionPolicyCallable() { + return lockBucketRetentionPolicyCallable; + } + + @Override + public UnaryCallable getIamPolicyCallable() { + return getIamPolicyCallable; + } + + @Override + public UnaryCallable setIamPolicyCallable() { + return setIamPolicyCallable; + } + + @Override + public UnaryCallable + testIamPermissionsCallable() { + return testIamPermissionsCallable; + } + + @Override + public UnaryCallable updateBucketCallable() { + return updateBucketCallable; + } + + @Override + public UnaryCallable deleteNotificationCallable() { + return deleteNotificationCallable; + } + + @Override + public UnaryCallable getNotificationCallable() { + return getNotificationCallable; + } + + @Override + public UnaryCallable createNotificationCallable() { + return createNotificationCallable; + } + + @Override + public UnaryCallable + listNotificationsCallable() { + return listNotificationsCallable; + } + + @Override + public UnaryCallable + listNotificationsPagedCallable() { + return listNotificationsPagedCallable; + } + + @Override + public UnaryCallable composeObjectCallable() { + return composeObjectCallable; + } + + @Override + public UnaryCallable deleteObjectCallable() { + return deleteObjectCallable; + } + + @Override + public UnaryCallable getObjectCallable() { + return getObjectCallable; + } + @Override public ServerStreamingCallable readObjectCallable() { return readObjectCallable; } + @Override + public UnaryCallable updateObjectCallable() { + return updateObjectCallable; + } + @Override public ClientStreamingCallable writeObjectCallable() { return writeObjectCallable; } + @Override + public UnaryCallable listObjectsCallable() { + return listObjectsCallable; + } + + @Override + public UnaryCallable listObjectsPagedCallable() { + return listObjectsPagedCallable; + } + + @Override + public UnaryCallable rewriteObjectCallable() { + return rewriteObjectCallable; + } + @Override public UnaryCallable startResumableWriteCallable() { @@ -199,6 +829,41 @@ public ClientStreamingCallable writeObj return queryWriteStatusCallable; } + @Override + public UnaryCallable getServiceAccountCallable() { + return getServiceAccountCallable; + } + + @Override + public UnaryCallable createHmacKeyCallable() { + return createHmacKeyCallable; + } + + @Override + public UnaryCallable deleteHmacKeyCallable() { + return deleteHmacKeyCallable; + } + + @Override + public UnaryCallable getHmacKeyCallable() { + return getHmacKeyCallable; + } + + @Override + public UnaryCallable listHmacKeysCallable() { + return listHmacKeysCallable; + } + + @Override + public UnaryCallable listHmacKeysPagedCallable() { + return listHmacKeysPagedCallable; + } + + @Override + public UnaryCallable updateHmacKeyCallable() { + return updateHmacKeyCallable; + } + @Override public final void close() { try { diff --git a/test/integration/goldens/storage/com/google/storage/v2/stub/StorageStub.java b/test/integration/goldens/storage/com/google/storage/v2/stub/StorageStub.java index 06ee713906..1257db961d 100644 --- a/test/integration/goldens/storage/com/google/storage/v2/stub/StorageStub.java +++ b/test/integration/goldens/storage/com/google/storage/v2/stub/StorageStub.java @@ -16,16 +16,60 @@ package com.google.storage.v2.stub; +import static com.google.storage.v2.StorageClient.ListBucketsPagedResponse; +import static com.google.storage.v2.StorageClient.ListHmacKeysPagedResponse; +import static com.google.storage.v2.StorageClient.ListNotificationsPagedResponse; +import static com.google.storage.v2.StorageClient.ListObjectsPagedResponse; + import com.google.api.gax.core.BackgroundResource; import com.google.api.gax.rpc.ClientStreamingCallable; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; +import com.google.iam.v1.GetIamPolicyRequest; +import com.google.iam.v1.Policy; +import com.google.iam.v1.SetIamPolicyRequest; +import com.google.iam.v1.TestIamPermissionsRequest; +import com.google.iam.v1.TestIamPermissionsResponse; +import com.google.protobuf.Empty; +import com.google.storage.v2.Bucket; +import com.google.storage.v2.ComposeObjectRequest; +import com.google.storage.v2.CreateBucketRequest; +import com.google.storage.v2.CreateHmacKeyRequest; +import com.google.storage.v2.CreateHmacKeyResponse; +import com.google.storage.v2.CreateNotificationRequest; +import com.google.storage.v2.DeleteBucketRequest; +import com.google.storage.v2.DeleteHmacKeyRequest; +import com.google.storage.v2.DeleteNotificationRequest; +import com.google.storage.v2.DeleteObjectRequest; +import com.google.storage.v2.GetBucketRequest; +import com.google.storage.v2.GetHmacKeyRequest; +import com.google.storage.v2.GetNotificationRequest; +import com.google.storage.v2.GetObjectRequest; +import com.google.storage.v2.GetServiceAccountRequest; +import com.google.storage.v2.HmacKeyMetadata; +import com.google.storage.v2.ListBucketsRequest; +import com.google.storage.v2.ListBucketsResponse; +import com.google.storage.v2.ListHmacKeysRequest; +import com.google.storage.v2.ListHmacKeysResponse; +import com.google.storage.v2.ListNotificationsRequest; +import com.google.storage.v2.ListNotificationsResponse; +import com.google.storage.v2.ListObjectsRequest; +import com.google.storage.v2.ListObjectsResponse; +import com.google.storage.v2.LockBucketRetentionPolicyRequest; +import com.google.storage.v2.Notification; +import com.google.storage.v2.Object; import com.google.storage.v2.QueryWriteStatusRequest; import com.google.storage.v2.QueryWriteStatusResponse; import com.google.storage.v2.ReadObjectRequest; import com.google.storage.v2.ReadObjectResponse; +import com.google.storage.v2.RewriteObjectRequest; +import com.google.storage.v2.RewriteResponse; +import com.google.storage.v2.ServiceAccount; import com.google.storage.v2.StartResumableWriteRequest; import com.google.storage.v2.StartResumableWriteResponse; +import com.google.storage.v2.UpdateBucketRequest; +import com.google.storage.v2.UpdateHmacKeyRequest; +import com.google.storage.v2.UpdateObjectRequest; import com.google.storage.v2.WriteObjectRequest; import com.google.storage.v2.WriteObjectResponse; import javax.annotation.Generated; @@ -39,14 +83,106 @@ @Generated("by gapic-generator-java") public abstract class StorageStub implements BackgroundResource { + public UnaryCallable deleteBucketCallable() { + throw new UnsupportedOperationException("Not implemented: deleteBucketCallable()"); + } + + public UnaryCallable getBucketCallable() { + throw new UnsupportedOperationException("Not implemented: getBucketCallable()"); + } + + public UnaryCallable createBucketCallable() { + throw new UnsupportedOperationException("Not implemented: createBucketCallable()"); + } + + public UnaryCallable listBucketsPagedCallable() { + throw new UnsupportedOperationException("Not implemented: listBucketsPagedCallable()"); + } + + public UnaryCallable listBucketsCallable() { + throw new UnsupportedOperationException("Not implemented: listBucketsCallable()"); + } + + public UnaryCallable + lockBucketRetentionPolicyCallable() { + throw new UnsupportedOperationException("Not implemented: lockBucketRetentionPolicyCallable()"); + } + + public UnaryCallable getIamPolicyCallable() { + throw new UnsupportedOperationException("Not implemented: getIamPolicyCallable()"); + } + + public UnaryCallable setIamPolicyCallable() { + throw new UnsupportedOperationException("Not implemented: setIamPolicyCallable()"); + } + + public UnaryCallable + testIamPermissionsCallable() { + throw new UnsupportedOperationException("Not implemented: testIamPermissionsCallable()"); + } + + public UnaryCallable updateBucketCallable() { + throw new UnsupportedOperationException("Not implemented: updateBucketCallable()"); + } + + public UnaryCallable deleteNotificationCallable() { + throw new UnsupportedOperationException("Not implemented: deleteNotificationCallable()"); + } + + public UnaryCallable getNotificationCallable() { + throw new UnsupportedOperationException("Not implemented: getNotificationCallable()"); + } + + public UnaryCallable createNotificationCallable() { + throw new UnsupportedOperationException("Not implemented: createNotificationCallable()"); + } + + public UnaryCallable + listNotificationsPagedCallable() { + throw new UnsupportedOperationException("Not implemented: listNotificationsPagedCallable()"); + } + + public UnaryCallable + listNotificationsCallable() { + throw new UnsupportedOperationException("Not implemented: listNotificationsCallable()"); + } + + public UnaryCallable composeObjectCallable() { + throw new UnsupportedOperationException("Not implemented: composeObjectCallable()"); + } + + public UnaryCallable deleteObjectCallable() { + throw new UnsupportedOperationException("Not implemented: deleteObjectCallable()"); + } + + public UnaryCallable getObjectCallable() { + throw new UnsupportedOperationException("Not implemented: getObjectCallable()"); + } + public ServerStreamingCallable readObjectCallable() { throw new UnsupportedOperationException("Not implemented: readObjectCallable()"); } + public UnaryCallable updateObjectCallable() { + throw new UnsupportedOperationException("Not implemented: updateObjectCallable()"); + } + public ClientStreamingCallable writeObjectCallable() { throw new UnsupportedOperationException("Not implemented: writeObjectCallable()"); } + public UnaryCallable listObjectsPagedCallable() { + throw new UnsupportedOperationException("Not implemented: listObjectsPagedCallable()"); + } + + public UnaryCallable listObjectsCallable() { + throw new UnsupportedOperationException("Not implemented: listObjectsCallable()"); + } + + public UnaryCallable rewriteObjectCallable() { + throw new UnsupportedOperationException("Not implemented: rewriteObjectCallable()"); + } + public UnaryCallable startResumableWriteCallable() { throw new UnsupportedOperationException("Not implemented: startResumableWriteCallable()"); @@ -57,6 +193,34 @@ public ClientStreamingCallable writeObj throw new UnsupportedOperationException("Not implemented: queryWriteStatusCallable()"); } + public UnaryCallable getServiceAccountCallable() { + throw new UnsupportedOperationException("Not implemented: getServiceAccountCallable()"); + } + + public UnaryCallable createHmacKeyCallable() { + throw new UnsupportedOperationException("Not implemented: createHmacKeyCallable()"); + } + + public UnaryCallable deleteHmacKeyCallable() { + throw new UnsupportedOperationException("Not implemented: deleteHmacKeyCallable()"); + } + + public UnaryCallable getHmacKeyCallable() { + throw new UnsupportedOperationException("Not implemented: getHmacKeyCallable()"); + } + + public UnaryCallable listHmacKeysPagedCallable() { + throw new UnsupportedOperationException("Not implemented: listHmacKeysPagedCallable()"); + } + + public UnaryCallable listHmacKeysCallable() { + throw new UnsupportedOperationException("Not implemented: listHmacKeysCallable()"); + } + + public UnaryCallable updateHmacKeyCallable() { + throw new UnsupportedOperationException("Not implemented: updateHmacKeyCallable()"); + } + @Override public abstract void close(); } diff --git a/test/integration/goldens/storage/com/google/storage/v2/stub/StorageStubSettings.java b/test/integration/goldens/storage/com/google/storage/v2/stub/StorageStubSettings.java index 85c8639848..227af4a374 100644 --- a/test/integration/goldens/storage/com/google/storage/v2/stub/StorageStubSettings.java +++ b/test/integration/goldens/storage/com/google/storage/v2/stub/StorageStubSettings.java @@ -16,7 +16,13 @@ package com.google.storage.v2.stub; +import static com.google.storage.v2.StorageClient.ListBucketsPagedResponse; +import static com.google.storage.v2.StorageClient.ListHmacKeysPagedResponse; +import static com.google.storage.v2.StorageClient.ListNotificationsPagedResponse; +import static com.google.storage.v2.StorageClient.ListObjectsPagedResponse; + import com.google.api.core.ApiFunction; +import com.google.api.core.ApiFuture; import com.google.api.core.BetaApi; import com.google.api.gax.core.GaxProperties; import com.google.api.gax.core.GoogleCredentialsProvider; @@ -25,24 +31,69 @@ import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.api.gax.retrying.RetrySettings; +import com.google.api.gax.rpc.ApiCallContext; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.PageContext; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.PagedListDescriptor; +import com.google.api.gax.rpc.PagedListResponseFactory; import com.google.api.gax.rpc.ServerStreamingCallSettings; import com.google.api.gax.rpc.StatusCode; import com.google.api.gax.rpc.StreamingCallSettings; import com.google.api.gax.rpc.StubSettings; import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; +import com.google.iam.v1.GetIamPolicyRequest; +import com.google.iam.v1.Policy; +import com.google.iam.v1.SetIamPolicyRequest; +import com.google.iam.v1.TestIamPermissionsRequest; +import com.google.iam.v1.TestIamPermissionsResponse; +import com.google.protobuf.Empty; +import com.google.storage.v2.Bucket; +import com.google.storage.v2.ComposeObjectRequest; +import com.google.storage.v2.CreateBucketRequest; +import com.google.storage.v2.CreateHmacKeyRequest; +import com.google.storage.v2.CreateHmacKeyResponse; +import com.google.storage.v2.CreateNotificationRequest; +import com.google.storage.v2.DeleteBucketRequest; +import com.google.storage.v2.DeleteHmacKeyRequest; +import com.google.storage.v2.DeleteNotificationRequest; +import com.google.storage.v2.DeleteObjectRequest; +import com.google.storage.v2.GetBucketRequest; +import com.google.storage.v2.GetHmacKeyRequest; +import com.google.storage.v2.GetNotificationRequest; +import com.google.storage.v2.GetObjectRequest; +import com.google.storage.v2.GetServiceAccountRequest; +import com.google.storage.v2.HmacKeyMetadata; +import com.google.storage.v2.ListBucketsRequest; +import com.google.storage.v2.ListBucketsResponse; +import com.google.storage.v2.ListHmacKeysRequest; +import com.google.storage.v2.ListHmacKeysResponse; +import com.google.storage.v2.ListNotificationsRequest; +import com.google.storage.v2.ListNotificationsResponse; +import com.google.storage.v2.ListObjectsRequest; +import com.google.storage.v2.ListObjectsResponse; +import com.google.storage.v2.LockBucketRetentionPolicyRequest; +import com.google.storage.v2.Notification; +import com.google.storage.v2.Object; import com.google.storage.v2.QueryWriteStatusRequest; import com.google.storage.v2.QueryWriteStatusResponse; import com.google.storage.v2.ReadObjectRequest; import com.google.storage.v2.ReadObjectResponse; +import com.google.storage.v2.RewriteObjectRequest; +import com.google.storage.v2.RewriteResponse; +import com.google.storage.v2.ServiceAccount; import com.google.storage.v2.StartResumableWriteRequest; import com.google.storage.v2.StartResumableWriteResponse; +import com.google.storage.v2.UpdateBucketRequest; +import com.google.storage.v2.UpdateHmacKeyRequest; +import com.google.storage.v2.UpdateObjectRequest; import com.google.storage.v2.WriteObjectRequest; import com.google.storage.v2.WriteObjectResponse; import java.io.IOException; @@ -65,15 +116,15 @@ *

    The builder of this class is recursive, so contained classes are themselves builders. When * build() is called, the tree of builders is called to create the complete settings object. * - *

    For example, to set the total timeout of startResumableWrite to 30 seconds: + *

    For example, to set the total timeout of deleteBucket to 30 seconds: * *

    {@code
      * StorageStubSettings.Builder storageSettingsBuilder = StorageStubSettings.newBuilder();
      * storageSettingsBuilder
    - *     .startResumableWriteSettings()
    + *     .deleteBucketSettings()
      *     .setRetrySettings(
      *         storageSettingsBuilder
    - *             .startResumableWriteSettings()
    + *             .deleteBucketSettings()
      *             .getRetrySettings()
      *             .toBuilder()
      *             .setTotalTimeout(Duration.ofSeconds(30))
    @@ -93,24 +144,382 @@ public class StorageStubSettings extends StubSettings {
               .add("https://www.googleapis.com/auth/devstorage.read_write")
               .build();
     
    +  private final UnaryCallSettings deleteBucketSettings;
    +  private final UnaryCallSettings getBucketSettings;
    +  private final UnaryCallSettings createBucketSettings;
    +  private final PagedCallSettings
    +      listBucketsSettings;
    +  private final UnaryCallSettings
    +      lockBucketRetentionPolicySettings;
    +  private final UnaryCallSettings getIamPolicySettings;
    +  private final UnaryCallSettings setIamPolicySettings;
    +  private final UnaryCallSettings
    +      testIamPermissionsSettings;
    +  private final UnaryCallSettings updateBucketSettings;
    +  private final UnaryCallSettings deleteNotificationSettings;
    +  private final UnaryCallSettings getNotificationSettings;
    +  private final UnaryCallSettings
    +      createNotificationSettings;
    +  private final PagedCallSettings<
    +          ListNotificationsRequest, ListNotificationsResponse, ListNotificationsPagedResponse>
    +      listNotificationsSettings;
    +  private final UnaryCallSettings composeObjectSettings;
    +  private final UnaryCallSettings deleteObjectSettings;
    +  private final UnaryCallSettings getObjectSettings;
       private final ServerStreamingCallSettings
           readObjectSettings;
    +  private final UnaryCallSettings updateObjectSettings;
       private final StreamingCallSettings writeObjectSettings;
    +  private final PagedCallSettings
    +      listObjectsSettings;
    +  private final UnaryCallSettings rewriteObjectSettings;
       private final UnaryCallSettings
           startResumableWriteSettings;
       private final UnaryCallSettings
           queryWriteStatusSettings;
    +  private final UnaryCallSettings
    +      getServiceAccountSettings;
    +  private final UnaryCallSettings
    +      createHmacKeySettings;
    +  private final UnaryCallSettings deleteHmacKeySettings;
    +  private final UnaryCallSettings getHmacKeySettings;
    +  private final PagedCallSettings<
    +          ListHmacKeysRequest, ListHmacKeysResponse, ListHmacKeysPagedResponse>
    +      listHmacKeysSettings;
    +  private final UnaryCallSettings updateHmacKeySettings;
    +
    +  private static final PagedListDescriptor
    +      LIST_BUCKETS_PAGE_STR_DESC =
    +          new PagedListDescriptor() {
    +            @Override
    +            public String emptyToken() {
    +              return "";
    +            }
    +
    +            @Override
    +            public ListBucketsRequest injectToken(ListBucketsRequest payload, String token) {
    +              return ListBucketsRequest.newBuilder(payload).setPageToken(token).build();
    +            }
    +
    +            @Override
    +            public ListBucketsRequest injectPageSize(ListBucketsRequest payload, int pageSize) {
    +              return ListBucketsRequest.newBuilder(payload).setPageSize(pageSize).build();
    +            }
    +
    +            @Override
    +            public Integer extractPageSize(ListBucketsRequest payload) {
    +              return payload.getPageSize();
    +            }
    +
    +            @Override
    +            public String extractNextToken(ListBucketsResponse payload) {
    +              return payload.getNextPageToken();
    +            }
    +
    +            @Override
    +            public Iterable extractResources(ListBucketsResponse payload) {
    +              return payload.getBucketsList() == null
    +                  ? ImmutableList.of()
    +                  : payload.getBucketsList();
    +            }
    +          };
    +
    +  private static final PagedListDescriptor<
    +          ListNotificationsRequest, ListNotificationsResponse, Notification>
    +      LIST_NOTIFICATIONS_PAGE_STR_DESC =
    +          new PagedListDescriptor<
    +              ListNotificationsRequest, ListNotificationsResponse, Notification>() {
    +            @Override
    +            public String emptyToken() {
    +              return "";
    +            }
    +
    +            @Override
    +            public ListNotificationsRequest injectToken(
    +                ListNotificationsRequest payload, String token) {
    +              return ListNotificationsRequest.newBuilder(payload).setPageToken(token).build();
    +            }
    +
    +            @Override
    +            public ListNotificationsRequest injectPageSize(
    +                ListNotificationsRequest payload, int pageSize) {
    +              return ListNotificationsRequest.newBuilder(payload).setPageSize(pageSize).build();
    +            }
    +
    +            @Override
    +            public Integer extractPageSize(ListNotificationsRequest payload) {
    +              return payload.getPageSize();
    +            }
    +
    +            @Override
    +            public String extractNextToken(ListNotificationsResponse payload) {
    +              return payload.getNextPageToken();
    +            }
    +
    +            @Override
    +            public Iterable extractResources(ListNotificationsResponse payload) {
    +              return payload.getNotificationsList() == null
    +                  ? ImmutableList.of()
    +                  : payload.getNotificationsList();
    +            }
    +          };
    +
    +  private static final PagedListDescriptor
    +      LIST_OBJECTS_PAGE_STR_DESC =
    +          new PagedListDescriptor() {
    +            @Override
    +            public String emptyToken() {
    +              return "";
    +            }
    +
    +            @Override
    +            public ListObjectsRequest injectToken(ListObjectsRequest payload, String token) {
    +              return ListObjectsRequest.newBuilder(payload).setPageToken(token).build();
    +            }
    +
    +            @Override
    +            public ListObjectsRequest injectPageSize(ListObjectsRequest payload, int pageSize) {
    +              return ListObjectsRequest.newBuilder(payload).setPageSize(pageSize).build();
    +            }
    +
    +            @Override
    +            public Integer extractPageSize(ListObjectsRequest payload) {
    +              return payload.getPageSize();
    +            }
    +
    +            @Override
    +            public String extractNextToken(ListObjectsResponse payload) {
    +              return payload.getNextPageToken();
    +            }
    +
    +            @Override
    +            public Iterable extractResources(ListObjectsResponse payload) {
    +              return payload.getObjectsList() == null
    +                  ? ImmutableList.of()
    +                  : payload.getObjectsList();
    +            }
    +          };
    +
    +  private static final PagedListDescriptor<
    +          ListHmacKeysRequest, ListHmacKeysResponse, HmacKeyMetadata>
    +      LIST_HMAC_KEYS_PAGE_STR_DESC =
    +          new PagedListDescriptor() {
    +            @Override
    +            public String emptyToken() {
    +              return "";
    +            }
    +
    +            @Override
    +            public ListHmacKeysRequest injectToken(ListHmacKeysRequest payload, String token) {
    +              return ListHmacKeysRequest.newBuilder(payload).setPageToken(token).build();
    +            }
    +
    +            @Override
    +            public ListHmacKeysRequest injectPageSize(ListHmacKeysRequest payload, int pageSize) {
    +              return ListHmacKeysRequest.newBuilder(payload).setPageSize(pageSize).build();
    +            }
    +
    +            @Override
    +            public Integer extractPageSize(ListHmacKeysRequest payload) {
    +              return payload.getPageSize();
    +            }
    +
    +            @Override
    +            public String extractNextToken(ListHmacKeysResponse payload) {
    +              return payload.getNextPageToken();
    +            }
    +
    +            @Override
    +            public Iterable extractResources(ListHmacKeysResponse payload) {
    +              return payload.getHmacKeysList() == null
    +                  ? ImmutableList.of()
    +                  : payload.getHmacKeysList();
    +            }
    +          };
    +
    +  private static final PagedListResponseFactory<
    +          ListBucketsRequest, ListBucketsResponse, ListBucketsPagedResponse>
    +      LIST_BUCKETS_PAGE_STR_FACT =
    +          new PagedListResponseFactory<
    +              ListBucketsRequest, ListBucketsResponse, ListBucketsPagedResponse>() {
    +            @Override
    +            public ApiFuture getFuturePagedResponse(
    +                UnaryCallable callable,
    +                ListBucketsRequest request,
    +                ApiCallContext context,
    +                ApiFuture futureResponse) {
    +              PageContext pageContext =
    +                  PageContext.create(callable, LIST_BUCKETS_PAGE_STR_DESC, request, context);
    +              return ListBucketsPagedResponse.createAsync(pageContext, futureResponse);
    +            }
    +          };
    +
    +  private static final PagedListResponseFactory<
    +          ListNotificationsRequest, ListNotificationsResponse, ListNotificationsPagedResponse>
    +      LIST_NOTIFICATIONS_PAGE_STR_FACT =
    +          new PagedListResponseFactory<
    +              ListNotificationsRequest,
    +              ListNotificationsResponse,
    +              ListNotificationsPagedResponse>() {
    +            @Override
    +            public ApiFuture getFuturePagedResponse(
    +                UnaryCallable callable,
    +                ListNotificationsRequest request,
    +                ApiCallContext context,
    +                ApiFuture futureResponse) {
    +              PageContext
    +                  pageContext =
    +                      PageContext.create(
    +                          callable, LIST_NOTIFICATIONS_PAGE_STR_DESC, request, context);
    +              return ListNotificationsPagedResponse.createAsync(pageContext, futureResponse);
    +            }
    +          };
    +
    +  private static final PagedListResponseFactory<
    +          ListObjectsRequest, ListObjectsResponse, ListObjectsPagedResponse>
    +      LIST_OBJECTS_PAGE_STR_FACT =
    +          new PagedListResponseFactory<
    +              ListObjectsRequest, ListObjectsResponse, ListObjectsPagedResponse>() {
    +            @Override
    +            public ApiFuture getFuturePagedResponse(
    +                UnaryCallable callable,
    +                ListObjectsRequest request,
    +                ApiCallContext context,
    +                ApiFuture futureResponse) {
    +              PageContext pageContext =
    +                  PageContext.create(callable, LIST_OBJECTS_PAGE_STR_DESC, request, context);
    +              return ListObjectsPagedResponse.createAsync(pageContext, futureResponse);
    +            }
    +          };
    +
    +  private static final PagedListResponseFactory<
    +          ListHmacKeysRequest, ListHmacKeysResponse, ListHmacKeysPagedResponse>
    +      LIST_HMAC_KEYS_PAGE_STR_FACT =
    +          new PagedListResponseFactory<
    +              ListHmacKeysRequest, ListHmacKeysResponse, ListHmacKeysPagedResponse>() {
    +            @Override
    +            public ApiFuture getFuturePagedResponse(
    +                UnaryCallable callable,
    +                ListHmacKeysRequest request,
    +                ApiCallContext context,
    +                ApiFuture futureResponse) {
    +              PageContext pageContext =
    +                  PageContext.create(callable, LIST_HMAC_KEYS_PAGE_STR_DESC, request, context);
    +              return ListHmacKeysPagedResponse.createAsync(pageContext, futureResponse);
    +            }
    +          };
    +
    +  /** Returns the object with the settings used for calls to deleteBucket. */
    +  public UnaryCallSettings deleteBucketSettings() {
    +    return deleteBucketSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to getBucket. */
    +  public UnaryCallSettings getBucketSettings() {
    +    return getBucketSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to createBucket. */
    +  public UnaryCallSettings createBucketSettings() {
    +    return createBucketSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to listBuckets. */
    +  public PagedCallSettings
    +      listBucketsSettings() {
    +    return listBucketsSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to lockBucketRetentionPolicy. */
    +  public UnaryCallSettings
    +      lockBucketRetentionPolicySettings() {
    +    return lockBucketRetentionPolicySettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to getIamPolicy. */
    +  public UnaryCallSettings getIamPolicySettings() {
    +    return getIamPolicySettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to setIamPolicy. */
    +  public UnaryCallSettings setIamPolicySettings() {
    +    return setIamPolicySettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to testIamPermissions. */
    +  public UnaryCallSettings
    +      testIamPermissionsSettings() {
    +    return testIamPermissionsSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to updateBucket. */
    +  public UnaryCallSettings updateBucketSettings() {
    +    return updateBucketSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to deleteNotification. */
    +  public UnaryCallSettings deleteNotificationSettings() {
    +    return deleteNotificationSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to getNotification. */
    +  public UnaryCallSettings getNotificationSettings() {
    +    return getNotificationSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to createNotification. */
    +  public UnaryCallSettings createNotificationSettings() {
    +    return createNotificationSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to listNotifications. */
    +  public PagedCallSettings<
    +          ListNotificationsRequest, ListNotificationsResponse, ListNotificationsPagedResponse>
    +      listNotificationsSettings() {
    +    return listNotificationsSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to composeObject. */
    +  public UnaryCallSettings composeObjectSettings() {
    +    return composeObjectSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to deleteObject. */
    +  public UnaryCallSettings deleteObjectSettings() {
    +    return deleteObjectSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to getObject. */
    +  public UnaryCallSettings getObjectSettings() {
    +    return getObjectSettings;
    +  }
     
       /** Returns the object with the settings used for calls to readObject. */
       public ServerStreamingCallSettings readObjectSettings() {
         return readObjectSettings;
       }
     
    +  /** Returns the object with the settings used for calls to updateObject. */
    +  public UnaryCallSettings updateObjectSettings() {
    +    return updateObjectSettings;
    +  }
    +
       /** Returns the object with the settings used for calls to writeObject. */
       public StreamingCallSettings writeObjectSettings() {
         return writeObjectSettings;
       }
     
    +  /** Returns the object with the settings used for calls to listObjects. */
    +  public PagedCallSettings
    +      listObjectsSettings() {
    +    return listObjectsSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to rewriteObject. */
    +  public UnaryCallSettings rewriteObjectSettings() {
    +    return rewriteObjectSettings;
    +  }
    +
       /** Returns the object with the settings used for calls to startResumableWrite. */
       public UnaryCallSettings
           startResumableWriteSettings() {
    @@ -123,6 +532,37 @@ public StreamingCallSettings writeObjec
         return queryWriteStatusSettings;
       }
     
    +  /** Returns the object with the settings used for calls to getServiceAccount. */
    +  public UnaryCallSettings getServiceAccountSettings() {
    +    return getServiceAccountSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to createHmacKey. */
    +  public UnaryCallSettings createHmacKeySettings() {
    +    return createHmacKeySettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to deleteHmacKey. */
    +  public UnaryCallSettings deleteHmacKeySettings() {
    +    return deleteHmacKeySettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to getHmacKey. */
    +  public UnaryCallSettings getHmacKeySettings() {
    +    return getHmacKeySettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to listHmacKeys. */
    +  public PagedCallSettings
    +      listHmacKeysSettings() {
    +    return listHmacKeysSettings;
    +  }
    +
    +  /** Returns the object with the settings used for calls to updateHmacKey. */
    +  public UnaryCallSettings updateHmacKeySettings() {
    +    return updateHmacKeySettings;
    +  }
    +
       @BetaApi("A restructuring of stub classes is planned, so this may break in the future")
       public StorageStub createStub() throws IOException {
         if (getTransportChannelProvider()
    @@ -198,23 +638,90 @@ public Builder toBuilder() {
       protected StorageStubSettings(Builder settingsBuilder) throws IOException {
         super(settingsBuilder);
     
    +    deleteBucketSettings = settingsBuilder.deleteBucketSettings().build();
    +    getBucketSettings = settingsBuilder.getBucketSettings().build();
    +    createBucketSettings = settingsBuilder.createBucketSettings().build();
    +    listBucketsSettings = settingsBuilder.listBucketsSettings().build();
    +    lockBucketRetentionPolicySettings = settingsBuilder.lockBucketRetentionPolicySettings().build();
    +    getIamPolicySettings = settingsBuilder.getIamPolicySettings().build();
    +    setIamPolicySettings = settingsBuilder.setIamPolicySettings().build();
    +    testIamPermissionsSettings = settingsBuilder.testIamPermissionsSettings().build();
    +    updateBucketSettings = settingsBuilder.updateBucketSettings().build();
    +    deleteNotificationSettings = settingsBuilder.deleteNotificationSettings().build();
    +    getNotificationSettings = settingsBuilder.getNotificationSettings().build();
    +    createNotificationSettings = settingsBuilder.createNotificationSettings().build();
    +    listNotificationsSettings = settingsBuilder.listNotificationsSettings().build();
    +    composeObjectSettings = settingsBuilder.composeObjectSettings().build();
    +    deleteObjectSettings = settingsBuilder.deleteObjectSettings().build();
    +    getObjectSettings = settingsBuilder.getObjectSettings().build();
         readObjectSettings = settingsBuilder.readObjectSettings().build();
    +    updateObjectSettings = settingsBuilder.updateObjectSettings().build();
         writeObjectSettings = settingsBuilder.writeObjectSettings().build();
    +    listObjectsSettings = settingsBuilder.listObjectsSettings().build();
    +    rewriteObjectSettings = settingsBuilder.rewriteObjectSettings().build();
         startResumableWriteSettings = settingsBuilder.startResumableWriteSettings().build();
         queryWriteStatusSettings = settingsBuilder.queryWriteStatusSettings().build();
    +    getServiceAccountSettings = settingsBuilder.getServiceAccountSettings().build();
    +    createHmacKeySettings = settingsBuilder.createHmacKeySettings().build();
    +    deleteHmacKeySettings = settingsBuilder.deleteHmacKeySettings().build();
    +    getHmacKeySettings = settingsBuilder.getHmacKeySettings().build();
    +    listHmacKeysSettings = settingsBuilder.listHmacKeysSettings().build();
    +    updateHmacKeySettings = settingsBuilder.updateHmacKeySettings().build();
       }
     
       /** Builder for StorageStubSettings. */
       public static class Builder extends StubSettings.Builder {
         private final ImmutableList> unaryMethodSettingsBuilders;
    +    private final UnaryCallSettings.Builder deleteBucketSettings;
    +    private final UnaryCallSettings.Builder getBucketSettings;
    +    private final UnaryCallSettings.Builder createBucketSettings;
    +    private final PagedCallSettings.Builder<
    +            ListBucketsRequest, ListBucketsResponse, ListBucketsPagedResponse>
    +        listBucketsSettings;
    +    private final UnaryCallSettings.Builder
    +        lockBucketRetentionPolicySettings;
    +    private final UnaryCallSettings.Builder getIamPolicySettings;
    +    private final UnaryCallSettings.Builder setIamPolicySettings;
    +    private final UnaryCallSettings.Builder
    +        testIamPermissionsSettings;
    +    private final UnaryCallSettings.Builder updateBucketSettings;
    +    private final UnaryCallSettings.Builder
    +        deleteNotificationSettings;
    +    private final UnaryCallSettings.Builder
    +        getNotificationSettings;
    +    private final UnaryCallSettings.Builder
    +        createNotificationSettings;
    +    private final PagedCallSettings.Builder<
    +            ListNotificationsRequest, ListNotificationsResponse, ListNotificationsPagedResponse>
    +        listNotificationsSettings;
    +    private final UnaryCallSettings.Builder composeObjectSettings;
    +    private final UnaryCallSettings.Builder deleteObjectSettings;
    +    private final UnaryCallSettings.Builder getObjectSettings;
         private final ServerStreamingCallSettings.Builder
             readObjectSettings;
    +    private final UnaryCallSettings.Builder updateObjectSettings;
         private final StreamingCallSettings.Builder
             writeObjectSettings;
    +    private final PagedCallSettings.Builder<
    +            ListObjectsRequest, ListObjectsResponse, ListObjectsPagedResponse>
    +        listObjectsSettings;
    +    private final UnaryCallSettings.Builder
    +        rewriteObjectSettings;
         private final UnaryCallSettings.Builder
             startResumableWriteSettings;
         private final UnaryCallSettings.Builder
             queryWriteStatusSettings;
    +    private final UnaryCallSettings.Builder
    +        getServiceAccountSettings;
    +    private final UnaryCallSettings.Builder
    +        createHmacKeySettings;
    +    private final UnaryCallSettings.Builder deleteHmacKeySettings;
    +    private final UnaryCallSettings.Builder getHmacKeySettings;
    +    private final PagedCallSettings.Builder<
    +            ListHmacKeysRequest, ListHmacKeysResponse, ListHmacKeysPagedResponse>
    +        listHmacKeysSettings;
    +    private final UnaryCallSettings.Builder
    +        updateHmacKeySettings;
         private static final ImmutableMap>
             RETRYABLE_CODE_DEFINITIONS;
     
    @@ -255,28 +762,130 @@ protected Builder() {
         protected Builder(ClientContext clientContext) {
           super(clientContext);
     
    +      deleteBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      getBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      createBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      listBucketsSettings = PagedCallSettings.newBuilder(LIST_BUCKETS_PAGE_STR_FACT);
    +      lockBucketRetentionPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      getIamPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      setIamPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      testIamPermissionsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      updateBucketSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      deleteNotificationSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      getNotificationSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      createNotificationSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      listNotificationsSettings = PagedCallSettings.newBuilder(LIST_NOTIFICATIONS_PAGE_STR_FACT);
    +      composeObjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      deleteObjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      getObjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
           readObjectSettings = ServerStreamingCallSettings.newBuilder();
    +      updateObjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
           writeObjectSettings = StreamingCallSettings.newBuilder();
    +      listObjectsSettings = PagedCallSettings.newBuilder(LIST_OBJECTS_PAGE_STR_FACT);
    +      rewriteObjectSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
           startResumableWriteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
           queryWriteStatusSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      getServiceAccountSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      createHmacKeySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      deleteHmacKeySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      getHmacKeySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
    +      listHmacKeysSettings = PagedCallSettings.newBuilder(LIST_HMAC_KEYS_PAGE_STR_FACT);
    +      updateHmacKeySettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
     
           unaryMethodSettingsBuilders =
               ImmutableList.>of(
    -              startResumableWriteSettings, queryWriteStatusSettings);
    +              deleteBucketSettings,
    +              getBucketSettings,
    +              createBucketSettings,
    +              listBucketsSettings,
    +              lockBucketRetentionPolicySettings,
    +              getIamPolicySettings,
    +              setIamPolicySettings,
    +              testIamPermissionsSettings,
    +              updateBucketSettings,
    +              deleteNotificationSettings,
    +              getNotificationSettings,
    +              createNotificationSettings,
    +              listNotificationsSettings,
    +              composeObjectSettings,
    +              deleteObjectSettings,
    +              getObjectSettings,
    +              updateObjectSettings,
    +              listObjectsSettings,
    +              rewriteObjectSettings,
    +              startResumableWriteSettings,
    +              queryWriteStatusSettings,
    +              getServiceAccountSettings,
    +              createHmacKeySettings,
    +              deleteHmacKeySettings,
    +              getHmacKeySettings,
    +              listHmacKeysSettings,
    +              updateHmacKeySettings);
           initDefaults(this);
         }
     
         protected Builder(StorageStubSettings settings) {
           super(settings);
     
    +      deleteBucketSettings = settings.deleteBucketSettings.toBuilder();
    +      getBucketSettings = settings.getBucketSettings.toBuilder();
    +      createBucketSettings = settings.createBucketSettings.toBuilder();
    +      listBucketsSettings = settings.listBucketsSettings.toBuilder();
    +      lockBucketRetentionPolicySettings = settings.lockBucketRetentionPolicySettings.toBuilder();
    +      getIamPolicySettings = settings.getIamPolicySettings.toBuilder();
    +      setIamPolicySettings = settings.setIamPolicySettings.toBuilder();
    +      testIamPermissionsSettings = settings.testIamPermissionsSettings.toBuilder();
    +      updateBucketSettings = settings.updateBucketSettings.toBuilder();
    +      deleteNotificationSettings = settings.deleteNotificationSettings.toBuilder();
    +      getNotificationSettings = settings.getNotificationSettings.toBuilder();
    +      createNotificationSettings = settings.createNotificationSettings.toBuilder();
    +      listNotificationsSettings = settings.listNotificationsSettings.toBuilder();
    +      composeObjectSettings = settings.composeObjectSettings.toBuilder();
    +      deleteObjectSettings = settings.deleteObjectSettings.toBuilder();
    +      getObjectSettings = settings.getObjectSettings.toBuilder();
           readObjectSettings = settings.readObjectSettings.toBuilder();
    +      updateObjectSettings = settings.updateObjectSettings.toBuilder();
           writeObjectSettings = settings.writeObjectSettings.toBuilder();
    +      listObjectsSettings = settings.listObjectsSettings.toBuilder();
    +      rewriteObjectSettings = settings.rewriteObjectSettings.toBuilder();
           startResumableWriteSettings = settings.startResumableWriteSettings.toBuilder();
           queryWriteStatusSettings = settings.queryWriteStatusSettings.toBuilder();
    +      getServiceAccountSettings = settings.getServiceAccountSettings.toBuilder();
    +      createHmacKeySettings = settings.createHmacKeySettings.toBuilder();
    +      deleteHmacKeySettings = settings.deleteHmacKeySettings.toBuilder();
    +      getHmacKeySettings = settings.getHmacKeySettings.toBuilder();
    +      listHmacKeysSettings = settings.listHmacKeysSettings.toBuilder();
    +      updateHmacKeySettings = settings.updateHmacKeySettings.toBuilder();
     
           unaryMethodSettingsBuilders =
               ImmutableList.>of(
    -              startResumableWriteSettings, queryWriteStatusSettings);
    +              deleteBucketSettings,
    +              getBucketSettings,
    +              createBucketSettings,
    +              listBucketsSettings,
    +              lockBucketRetentionPolicySettings,
    +              getIamPolicySettings,
    +              setIamPolicySettings,
    +              testIamPermissionsSettings,
    +              updateBucketSettings,
    +              deleteNotificationSettings,
    +              getNotificationSettings,
    +              createNotificationSettings,
    +              listNotificationsSettings,
    +              composeObjectSettings,
    +              deleteObjectSettings,
    +              getObjectSettings,
    +              updateObjectSettings,
    +              listObjectsSettings,
    +              rewriteObjectSettings,
    +              startResumableWriteSettings,
    +              queryWriteStatusSettings,
    +              getServiceAccountSettings,
    +              createHmacKeySettings,
    +              deleteHmacKeySettings,
    +              getHmacKeySettings,
    +              listHmacKeysSettings,
    +              updateHmacKeySettings);
         }
     
         private static Builder createDefault() {
    @@ -293,11 +902,106 @@ private static Builder createDefault() {
         }
     
         private static Builder initDefaults(Builder builder) {
    +      builder
    +          .deleteBucketSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .getBucketSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .createBucketSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .listBucketsSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .lockBucketRetentionPolicySettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .getIamPolicySettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .setIamPolicySettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .testIamPermissionsSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .updateBucketSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .deleteNotificationSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .getNotificationSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .createNotificationSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .listNotificationsSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .composeObjectSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .deleteObjectSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .getObjectSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
           builder
               .readObjectSettings()
               .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
               .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
     
    +      builder
    +          .updateObjectSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .listObjectsSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .rewriteObjectSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
           builder
               .startResumableWriteSettings()
               .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    @@ -308,6 +1012,36 @@ private static Builder initDefaults(Builder builder) {
               .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
               .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
     
    +      builder
    +          .getServiceAccountSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .createHmacKeySettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .deleteHmacKeySettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .getHmacKeySettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .listHmacKeysSettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
    +      builder
    +          .updateHmacKeySettings()
    +          .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
    +          .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
    +
           return builder;
         }
     
    @@ -326,18 +1060,125 @@ public Builder applyToAllUnaryMethods(
           return unaryMethodSettingsBuilders;
         }
     
    +    /** Returns the builder for the settings used for calls to deleteBucket. */
    +    public UnaryCallSettings.Builder deleteBucketSettings() {
    +      return deleteBucketSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to getBucket. */
    +    public UnaryCallSettings.Builder getBucketSettings() {
    +      return getBucketSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to createBucket. */
    +    public UnaryCallSettings.Builder createBucketSettings() {
    +      return createBucketSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to listBuckets. */
    +    public PagedCallSettings.Builder<
    +            ListBucketsRequest, ListBucketsResponse, ListBucketsPagedResponse>
    +        listBucketsSettings() {
    +      return listBucketsSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to lockBucketRetentionPolicy. */
    +    public UnaryCallSettings.Builder
    +        lockBucketRetentionPolicySettings() {
    +      return lockBucketRetentionPolicySettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to getIamPolicy. */
    +    public UnaryCallSettings.Builder getIamPolicySettings() {
    +      return getIamPolicySettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to setIamPolicy. */
    +    public UnaryCallSettings.Builder setIamPolicySettings() {
    +      return setIamPolicySettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to testIamPermissions. */
    +    public UnaryCallSettings.Builder
    +        testIamPermissionsSettings() {
    +      return testIamPermissionsSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to updateBucket. */
    +    public UnaryCallSettings.Builder updateBucketSettings() {
    +      return updateBucketSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to deleteNotification. */
    +    public UnaryCallSettings.Builder
    +        deleteNotificationSettings() {
    +      return deleteNotificationSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to getNotification. */
    +    public UnaryCallSettings.Builder
    +        getNotificationSettings() {
    +      return getNotificationSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to createNotification. */
    +    public UnaryCallSettings.Builder
    +        createNotificationSettings() {
    +      return createNotificationSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to listNotifications. */
    +    public PagedCallSettings.Builder<
    +            ListNotificationsRequest, ListNotificationsResponse, ListNotificationsPagedResponse>
    +        listNotificationsSettings() {
    +      return listNotificationsSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to composeObject. */
    +    public UnaryCallSettings.Builder composeObjectSettings() {
    +      return composeObjectSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to deleteObject. */
    +    public UnaryCallSettings.Builder deleteObjectSettings() {
    +      return deleteObjectSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to getObject. */
    +    public UnaryCallSettings.Builder getObjectSettings() {
    +      return getObjectSettings;
    +    }
    +
         /** Returns the builder for the settings used for calls to readObject. */
         public ServerStreamingCallSettings.Builder
             readObjectSettings() {
           return readObjectSettings;
         }
     
    +    /** Returns the builder for the settings used for calls to updateObject. */
    +    public UnaryCallSettings.Builder updateObjectSettings() {
    +      return updateObjectSettings;
    +    }
    +
         /** Returns the builder for the settings used for calls to writeObject. */
         public StreamingCallSettings.Builder
             writeObjectSettings() {
           return writeObjectSettings;
         }
     
    +    /** Returns the builder for the settings used for calls to listObjects. */
    +    public PagedCallSettings.Builder<
    +            ListObjectsRequest, ListObjectsResponse, ListObjectsPagedResponse>
    +        listObjectsSettings() {
    +      return listObjectsSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to rewriteObject. */
    +    public UnaryCallSettings.Builder
    +        rewriteObjectSettings() {
    +      return rewriteObjectSettings;
    +    }
    +
         /** Returns the builder for the settings used for calls to startResumableWrite. */
         public UnaryCallSettings.Builder
             startResumableWriteSettings() {
    @@ -350,6 +1191,41 @@ public Builder applyToAllUnaryMethods(
           return queryWriteStatusSettings;
         }
     
    +    /** Returns the builder for the settings used for calls to getServiceAccount. */
    +    public UnaryCallSettings.Builder
    +        getServiceAccountSettings() {
    +      return getServiceAccountSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to createHmacKey. */
    +    public UnaryCallSettings.Builder
    +        createHmacKeySettings() {
    +      return createHmacKeySettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to deleteHmacKey. */
    +    public UnaryCallSettings.Builder deleteHmacKeySettings() {
    +      return deleteHmacKeySettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to getHmacKey. */
    +    public UnaryCallSettings.Builder getHmacKeySettings() {
    +      return getHmacKeySettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to listHmacKeys. */
    +    public PagedCallSettings.Builder<
    +            ListHmacKeysRequest, ListHmacKeysResponse, ListHmacKeysPagedResponse>
    +        listHmacKeysSettings() {
    +      return listHmacKeysSettings;
    +    }
    +
    +    /** Returns the builder for the settings used for calls to updateHmacKey. */
    +    public UnaryCallSettings.Builder
    +        updateHmacKeySettings() {
    +      return updateHmacKeySettings;
    +    }
    +
         @Override
         public StorageStubSettings build() throws IOException {
           return new StorageStubSettings(this);
    
    From 64f884315ab0fb425fbbc20ce686728778c1ef4e Mon Sep 17 00:00:00 2001
    From: Chanseok Oh 
    Date: Mon, 10 Jan 2022 15:42:19 -0500
    Subject: [PATCH 5/6] chore: ./gradle build instead of ./gradlew check
    
    ---
     .github/workflows/ci.yaml | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
    index 081be2c378..28438db6f4 100644
    --- a/.github/workflows/ci.yaml
    +++ b/.github/workflows/ci.yaml
    @@ -52,7 +52,7 @@ jobs:
               mkdir /tmp/java-storage
               tar zxvf bazel-bin/test/integration/google-cloud-storage-v2-java.tar.gz -C /tmp/java-storage
               pushd /tmp/java-storage/google-cloud-storage-v2-java
    -          ./gradlew clean check publishToMavenLocal
    +          ./gradlew clean build publishToMavenLocal
               popd
     
               echo "Building Compute lib from generated source..."
    @@ -60,7 +60,7 @@ jobs:
               bazel --batch build @com_google_googleapis//google/cloud/compute/v1small:google-cloud-compute-small-v1-java
               tar zxvf bazel-bin/external/com_google_googleapis/google/cloud/compute/v1small/google-cloud-compute-small-v1-java.tar.gz -C /tmp/java-compute
               pushd /tmp/java-compute/google-cloud-compute-small-v1-java
    -          ./gradlew clean check publishToMavenLocal
    +          ./gradlew clean build publishToMavenLocal
               popd
     
           - uses: actions/upload-artifact@v2
    
    From fbb90803061f5594cc32bf115b744e123c1d1efd Mon Sep 17 00:00:00 2001
    From: Chanseok Oh 
    Date: Tue, 11 Jan 2022 09:55:38 -0500
    Subject: [PATCH 6/6] chore: split into two steps
    
    ---
     .github/workflows/ci.yaml | 4 +++-
     1 file changed, 3 insertions(+), 1 deletion(-)
    
    diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
    index 28438db6f4..594e2aa13e 100644
    --- a/.github/workflows/ci.yaml
    +++ b/.github/workflows/ci.yaml
    @@ -46,7 +46,7 @@ jobs:
           - name: Integration Tests
             run: bazel --batch test //test/integration/...
     
    -      - name: Gradle Build Tests on Generated Libraries
    +      - name: Gradle Build Generated Storage Client Library
             run: |
               echo "Building Storage lib from generated source..."
               mkdir /tmp/java-storage
    @@ -55,6 +55,8 @@ jobs:
               ./gradlew clean build publishToMavenLocal
               popd
     
    +      - name: Gradle Build Generated Compute Client Library
    +        run: |
               echo "Building Compute lib from generated source..."
               mkdir /tmp/java-compute
               bazel --batch build @com_google_googleapis//google/cloud/compute/v1small:google-cloud-compute-small-v1-java