1 /* 2 * Copyright 2022 Google LLC 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.cloud.billing.v1.stub; 18 19 import static com.google.cloud.billing.v1.CloudBillingClient.ListBillingAccountsPagedResponse; 20 import static com.google.cloud.billing.v1.CloudBillingClient.ListProjectBillingInfoPagedResponse; 21 22 import com.google.api.core.ApiFunction; 23 import com.google.api.core.ApiFuture; 24 import com.google.api.core.BetaApi; 25 import com.google.api.gax.core.GaxProperties; 26 import com.google.api.gax.core.GoogleCredentialsProvider; 27 import com.google.api.gax.core.InstantiatingExecutorProvider; 28 import com.google.api.gax.grpc.GaxGrpcProperties; 29 import com.google.api.gax.grpc.GrpcTransportChannel; 30 import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; 31 import com.google.api.gax.httpjson.GaxHttpJsonProperties; 32 import com.google.api.gax.httpjson.HttpJsonTransportChannel; 33 import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; 34 import com.google.api.gax.retrying.RetrySettings; 35 import com.google.api.gax.rpc.ApiCallContext; 36 import com.google.api.gax.rpc.ApiClientHeaderProvider; 37 import com.google.api.gax.rpc.ClientContext; 38 import com.google.api.gax.rpc.PageContext; 39 import com.google.api.gax.rpc.PagedCallSettings; 40 import com.google.api.gax.rpc.PagedListDescriptor; 41 import com.google.api.gax.rpc.PagedListResponseFactory; 42 import com.google.api.gax.rpc.StatusCode; 43 import com.google.api.gax.rpc.StubSettings; 44 import com.google.api.gax.rpc.TransportChannelProvider; 45 import com.google.api.gax.rpc.UnaryCallSettings; 46 import com.google.api.gax.rpc.UnaryCallable; 47 import com.google.cloud.billing.v1.BillingAccount; 48 import com.google.cloud.billing.v1.CreateBillingAccountRequest; 49 import com.google.cloud.billing.v1.GetBillingAccountRequest; 50 import com.google.cloud.billing.v1.GetProjectBillingInfoRequest; 51 import com.google.cloud.billing.v1.ListBillingAccountsRequest; 52 import com.google.cloud.billing.v1.ListBillingAccountsResponse; 53 import com.google.cloud.billing.v1.ListProjectBillingInfoRequest; 54 import com.google.cloud.billing.v1.ListProjectBillingInfoResponse; 55 import com.google.cloud.billing.v1.ProjectBillingInfo; 56 import com.google.cloud.billing.v1.UpdateBillingAccountRequest; 57 import com.google.cloud.billing.v1.UpdateProjectBillingInfoRequest; 58 import com.google.common.collect.ImmutableList; 59 import com.google.common.collect.ImmutableMap; 60 import com.google.common.collect.ImmutableSet; 61 import com.google.common.collect.Lists; 62 import com.google.iam.v1.GetIamPolicyRequest; 63 import com.google.iam.v1.Policy; 64 import com.google.iam.v1.SetIamPolicyRequest; 65 import com.google.iam.v1.TestIamPermissionsRequest; 66 import com.google.iam.v1.TestIamPermissionsResponse; 67 import java.io.IOException; 68 import java.util.List; 69 import javax.annotation.Generated; 70 import org.threeten.bp.Duration; 71 72 // AUTO-GENERATED DOCUMENTATION AND CLASS. 73 /** 74 * Settings class to configure an instance of {@link CloudBillingStub}. 75 * 76 * <p>The default instance has everything set to sensible defaults: 77 * 78 * <ul> 79 * <li>The default service address (cloudbilling.googleapis.com) and default port (443) are used. 80 * <li>Credentials are acquired automatically through Application Default Credentials. 81 * <li>Retries are configured for idempotent methods but not for non-idempotent methods. 82 * </ul> 83 * 84 * <p>The builder of this class is recursive, so contained classes are themselves builders. When 85 * build() is called, the tree of builders is called to create the complete settings object. 86 * 87 * <p>For example, to set the total timeout of getBillingAccount to 30 seconds: 88 * 89 * <pre>{@code 90 * // This snippet has been automatically generated and should be regarded as a code template only. 91 * // It will require modifications to work: 92 * // - It may require correct/in-range values for request initialization. 93 * // - It may require specifying regional endpoints when creating the service client as shown in 94 * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library 95 * CloudBillingStubSettings.Builder cloudBillingSettingsBuilder = 96 * CloudBillingStubSettings.newBuilder(); 97 * cloudBillingSettingsBuilder 98 * .getBillingAccountSettings() 99 * .setRetrySettings( 100 * cloudBillingSettingsBuilder 101 * .getBillingAccountSettings() 102 * .getRetrySettings() 103 * .toBuilder() 104 * .setTotalTimeout(Duration.ofSeconds(30)) 105 * .build()); 106 * CloudBillingStubSettings cloudBillingSettings = cloudBillingSettingsBuilder.build(); 107 * }</pre> 108 */ 109 @Generated("by gapic-generator-java") 110 public class CloudBillingStubSettings extends StubSettings<CloudBillingStubSettings> { 111 /** The default scopes of the service. */ 112 private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES = 113 ImmutableList.<String>builder() 114 .add("https://www.googleapis.com/auth/cloud-billing") 115 .add("https://www.googleapis.com/auth/cloud-billing.readonly") 116 .add("https://www.googleapis.com/auth/cloud-platform") 117 .build(); 118 119 private final UnaryCallSettings<GetBillingAccountRequest, BillingAccount> 120 getBillingAccountSettings; 121 private final PagedCallSettings< 122 ListBillingAccountsRequest, ListBillingAccountsResponse, ListBillingAccountsPagedResponse> 123 listBillingAccountsSettings; 124 private final UnaryCallSettings<UpdateBillingAccountRequest, BillingAccount> 125 updateBillingAccountSettings; 126 private final UnaryCallSettings<CreateBillingAccountRequest, BillingAccount> 127 createBillingAccountSettings; 128 private final PagedCallSettings< 129 ListProjectBillingInfoRequest, 130 ListProjectBillingInfoResponse, 131 ListProjectBillingInfoPagedResponse> 132 listProjectBillingInfoSettings; 133 private final UnaryCallSettings<GetProjectBillingInfoRequest, ProjectBillingInfo> 134 getProjectBillingInfoSettings; 135 private final UnaryCallSettings<UpdateProjectBillingInfoRequest, ProjectBillingInfo> 136 updateProjectBillingInfoSettings; 137 private final UnaryCallSettings<GetIamPolicyRequest, Policy> getIamPolicySettings; 138 private final UnaryCallSettings<SetIamPolicyRequest, Policy> setIamPolicySettings; 139 private final UnaryCallSettings<TestIamPermissionsRequest, TestIamPermissionsResponse> 140 testIamPermissionsSettings; 141 142 private static final PagedListDescriptor< 143 ListBillingAccountsRequest, ListBillingAccountsResponse, BillingAccount> 144 LIST_BILLING_ACCOUNTS_PAGE_STR_DESC = 145 new PagedListDescriptor< 146 ListBillingAccountsRequest, ListBillingAccountsResponse, BillingAccount>() { 147 @Override 148 public String emptyToken() { 149 return ""; 150 } 151 152 @Override 153 public ListBillingAccountsRequest injectToken( 154 ListBillingAccountsRequest payload, String token) { 155 return ListBillingAccountsRequest.newBuilder(payload).setPageToken(token).build(); 156 } 157 158 @Override 159 public ListBillingAccountsRequest injectPageSize( 160 ListBillingAccountsRequest payload, int pageSize) { 161 return ListBillingAccountsRequest.newBuilder(payload).setPageSize(pageSize).build(); 162 } 163 164 @Override 165 public Integer extractPageSize(ListBillingAccountsRequest payload) { 166 return payload.getPageSize(); 167 } 168 169 @Override 170 public String extractNextToken(ListBillingAccountsResponse payload) { 171 return payload.getNextPageToken(); 172 } 173 174 @Override 175 public Iterable<BillingAccount> extractResources(ListBillingAccountsResponse payload) { 176 return payload.getBillingAccountsList() == null 177 ? ImmutableList.<BillingAccount>of() 178 : payload.getBillingAccountsList(); 179 } 180 }; 181 182 private static final PagedListDescriptor< 183 ListProjectBillingInfoRequest, ListProjectBillingInfoResponse, ProjectBillingInfo> 184 LIST_PROJECT_BILLING_INFO_PAGE_STR_DESC = 185 new PagedListDescriptor< 186 ListProjectBillingInfoRequest, ListProjectBillingInfoResponse, ProjectBillingInfo>() { 187 @Override 188 public String emptyToken() { 189 return ""; 190 } 191 192 @Override 193 public ListProjectBillingInfoRequest injectToken( 194 ListProjectBillingInfoRequest payload, String token) { 195 return ListProjectBillingInfoRequest.newBuilder(payload).setPageToken(token).build(); 196 } 197 198 @Override 199 public ListProjectBillingInfoRequest injectPageSize( 200 ListProjectBillingInfoRequest payload, int pageSize) { 201 return ListProjectBillingInfoRequest.newBuilder(payload) 202 .setPageSize(pageSize) 203 .build(); 204 } 205 206 @Override 207 public Integer extractPageSize(ListProjectBillingInfoRequest payload) { 208 return payload.getPageSize(); 209 } 210 211 @Override 212 public String extractNextToken(ListProjectBillingInfoResponse payload) { 213 return payload.getNextPageToken(); 214 } 215 216 @Override 217 public Iterable<ProjectBillingInfo> extractResources( 218 ListProjectBillingInfoResponse payload) { 219 return payload.getProjectBillingInfoList() == null 220 ? ImmutableList.<ProjectBillingInfo>of() 221 : payload.getProjectBillingInfoList(); 222 } 223 }; 224 225 private static final PagedListResponseFactory< 226 ListBillingAccountsRequest, ListBillingAccountsResponse, ListBillingAccountsPagedResponse> 227 LIST_BILLING_ACCOUNTS_PAGE_STR_FACT = 228 new PagedListResponseFactory< 229 ListBillingAccountsRequest, 230 ListBillingAccountsResponse, 231 ListBillingAccountsPagedResponse>() { 232 @Override 233 public ApiFuture<ListBillingAccountsPagedResponse> getFuturePagedResponse( 234 UnaryCallable<ListBillingAccountsRequest, ListBillingAccountsResponse> callable, 235 ListBillingAccountsRequest request, 236 ApiCallContext context, 237 ApiFuture<ListBillingAccountsResponse> futureResponse) { 238 PageContext<ListBillingAccountsRequest, ListBillingAccountsResponse, BillingAccount> 239 pageContext = 240 PageContext.create( 241 callable, LIST_BILLING_ACCOUNTS_PAGE_STR_DESC, request, context); 242 return ListBillingAccountsPagedResponse.createAsync(pageContext, futureResponse); 243 } 244 }; 245 246 private static final PagedListResponseFactory< 247 ListProjectBillingInfoRequest, 248 ListProjectBillingInfoResponse, 249 ListProjectBillingInfoPagedResponse> 250 LIST_PROJECT_BILLING_INFO_PAGE_STR_FACT = 251 new PagedListResponseFactory< 252 ListProjectBillingInfoRequest, 253 ListProjectBillingInfoResponse, 254 ListProjectBillingInfoPagedResponse>() { 255 @Override 256 public ApiFuture<ListProjectBillingInfoPagedResponse> getFuturePagedResponse( 257 UnaryCallable<ListProjectBillingInfoRequest, ListProjectBillingInfoResponse> 258 callable, 259 ListProjectBillingInfoRequest request, 260 ApiCallContext context, 261 ApiFuture<ListProjectBillingInfoResponse> futureResponse) { 262 PageContext< 263 ListProjectBillingInfoRequest, 264 ListProjectBillingInfoResponse, 265 ProjectBillingInfo> 266 pageContext = 267 PageContext.create( 268 callable, LIST_PROJECT_BILLING_INFO_PAGE_STR_DESC, request, context); 269 return ListProjectBillingInfoPagedResponse.createAsync(pageContext, futureResponse); 270 } 271 }; 272 273 /** Returns the object with the settings used for calls to getBillingAccount. */ getBillingAccountSettings()274 public UnaryCallSettings<GetBillingAccountRequest, BillingAccount> getBillingAccountSettings() { 275 return getBillingAccountSettings; 276 } 277 278 /** Returns the object with the settings used for calls to listBillingAccounts. */ 279 public PagedCallSettings< 280 ListBillingAccountsRequest, ListBillingAccountsResponse, ListBillingAccountsPagedResponse> listBillingAccountsSettings()281 listBillingAccountsSettings() { 282 return listBillingAccountsSettings; 283 } 284 285 /** Returns the object with the settings used for calls to updateBillingAccount. */ 286 public UnaryCallSettings<UpdateBillingAccountRequest, BillingAccount> updateBillingAccountSettings()287 updateBillingAccountSettings() { 288 return updateBillingAccountSettings; 289 } 290 291 /** Returns the object with the settings used for calls to createBillingAccount. */ 292 public UnaryCallSettings<CreateBillingAccountRequest, BillingAccount> createBillingAccountSettings()293 createBillingAccountSettings() { 294 return createBillingAccountSettings; 295 } 296 297 /** Returns the object with the settings used for calls to listProjectBillingInfo. */ 298 public PagedCallSettings< 299 ListProjectBillingInfoRequest, 300 ListProjectBillingInfoResponse, 301 ListProjectBillingInfoPagedResponse> listProjectBillingInfoSettings()302 listProjectBillingInfoSettings() { 303 return listProjectBillingInfoSettings; 304 } 305 306 /** Returns the object with the settings used for calls to getProjectBillingInfo. */ 307 public UnaryCallSettings<GetProjectBillingInfoRequest, ProjectBillingInfo> getProjectBillingInfoSettings()308 getProjectBillingInfoSettings() { 309 return getProjectBillingInfoSettings; 310 } 311 312 /** Returns the object with the settings used for calls to updateProjectBillingInfo. */ 313 public UnaryCallSettings<UpdateProjectBillingInfoRequest, ProjectBillingInfo> updateProjectBillingInfoSettings()314 updateProjectBillingInfoSettings() { 315 return updateProjectBillingInfoSettings; 316 } 317 318 /** Returns the object with the settings used for calls to getIamPolicy. */ getIamPolicySettings()319 public UnaryCallSettings<GetIamPolicyRequest, Policy> getIamPolicySettings() { 320 return getIamPolicySettings; 321 } 322 323 /** Returns the object with the settings used for calls to setIamPolicy. */ setIamPolicySettings()324 public UnaryCallSettings<SetIamPolicyRequest, Policy> setIamPolicySettings() { 325 return setIamPolicySettings; 326 } 327 328 /** Returns the object with the settings used for calls to testIamPermissions. */ 329 public UnaryCallSettings<TestIamPermissionsRequest, TestIamPermissionsResponse> testIamPermissionsSettings()330 testIamPermissionsSettings() { 331 return testIamPermissionsSettings; 332 } 333 createStub()334 public CloudBillingStub createStub() throws IOException { 335 if (getTransportChannelProvider() 336 .getTransportName() 337 .equals(GrpcTransportChannel.getGrpcTransportName())) { 338 return GrpcCloudBillingStub.create(this); 339 } 340 if (getTransportChannelProvider() 341 .getTransportName() 342 .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { 343 return HttpJsonCloudBillingStub.create(this); 344 } 345 throw new UnsupportedOperationException( 346 String.format( 347 "Transport not supported: %s", getTransportChannelProvider().getTransportName())); 348 } 349 350 /** Returns a builder for the default ExecutorProvider for this service. */ defaultExecutorProviderBuilder()351 public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { 352 return InstantiatingExecutorProvider.newBuilder(); 353 } 354 355 /** Returns the default service endpoint. */ getDefaultEndpoint()356 public static String getDefaultEndpoint() { 357 return "cloudbilling.googleapis.com:443"; 358 } 359 360 /** Returns the default mTLS service endpoint. */ getDefaultMtlsEndpoint()361 public static String getDefaultMtlsEndpoint() { 362 return "cloudbilling.mtls.googleapis.com:443"; 363 } 364 365 /** Returns the default service scopes. */ getDefaultServiceScopes()366 public static List<String> getDefaultServiceScopes() { 367 return DEFAULT_SERVICE_SCOPES; 368 } 369 370 /** Returns a builder for the default credentials for this service. */ defaultCredentialsProviderBuilder()371 public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { 372 return GoogleCredentialsProvider.newBuilder() 373 .setScopesToApply(DEFAULT_SERVICE_SCOPES) 374 .setUseJwtAccessWithScope(true); 375 } 376 377 /** Returns a builder for the default gRPC ChannelProvider for this service. */ defaultGrpcTransportProviderBuilder()378 public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { 379 return InstantiatingGrpcChannelProvider.newBuilder() 380 .setMaxInboundMessageSize(Integer.MAX_VALUE); 381 } 382 383 /** Returns a builder for the default REST ChannelProvider for this service. */ 384 @BetaApi 385 public static InstantiatingHttpJsonChannelProvider.Builder defaultHttpJsonTransportProviderBuilder()386 defaultHttpJsonTransportProviderBuilder() { 387 return InstantiatingHttpJsonChannelProvider.newBuilder(); 388 } 389 defaultTransportChannelProvider()390 public static TransportChannelProvider defaultTransportChannelProvider() { 391 return defaultGrpcTransportProviderBuilder().build(); 392 } 393 394 @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") defaultGrpcApiClientHeaderProviderBuilder()395 public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { 396 return ApiClientHeaderProvider.newBuilder() 397 .setGeneratedLibToken( 398 "gapic", GaxProperties.getLibraryVersion(CloudBillingStubSettings.class)) 399 .setTransportToken( 400 GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); 401 } 402 403 @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") defaultHttpJsonApiClientHeaderProviderBuilder()404 public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { 405 return ApiClientHeaderProvider.newBuilder() 406 .setGeneratedLibToken( 407 "gapic", GaxProperties.getLibraryVersion(CloudBillingStubSettings.class)) 408 .setTransportToken( 409 GaxHttpJsonProperties.getHttpJsonTokenName(), 410 GaxHttpJsonProperties.getHttpJsonVersion()); 411 } 412 defaultApiClientHeaderProviderBuilder()413 public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { 414 return CloudBillingStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); 415 } 416 417 /** Returns a new gRPC builder for this class. */ newBuilder()418 public static Builder newBuilder() { 419 return Builder.createDefault(); 420 } 421 422 /** Returns a new REST builder for this class. */ newHttpJsonBuilder()423 public static Builder newHttpJsonBuilder() { 424 return Builder.createHttpJsonDefault(); 425 } 426 427 /** Returns a new builder for this class. */ newBuilder(ClientContext clientContext)428 public static Builder newBuilder(ClientContext clientContext) { 429 return new Builder(clientContext); 430 } 431 432 /** Returns a builder containing all the values of this settings class. */ toBuilder()433 public Builder toBuilder() { 434 return new Builder(this); 435 } 436 CloudBillingStubSettings(Builder settingsBuilder)437 protected CloudBillingStubSettings(Builder settingsBuilder) throws IOException { 438 super(settingsBuilder); 439 440 getBillingAccountSettings = settingsBuilder.getBillingAccountSettings().build(); 441 listBillingAccountsSettings = settingsBuilder.listBillingAccountsSettings().build(); 442 updateBillingAccountSettings = settingsBuilder.updateBillingAccountSettings().build(); 443 createBillingAccountSettings = settingsBuilder.createBillingAccountSettings().build(); 444 listProjectBillingInfoSettings = settingsBuilder.listProjectBillingInfoSettings().build(); 445 getProjectBillingInfoSettings = settingsBuilder.getProjectBillingInfoSettings().build(); 446 updateProjectBillingInfoSettings = settingsBuilder.updateProjectBillingInfoSettings().build(); 447 getIamPolicySettings = settingsBuilder.getIamPolicySettings().build(); 448 setIamPolicySettings = settingsBuilder.setIamPolicySettings().build(); 449 testIamPermissionsSettings = settingsBuilder.testIamPermissionsSettings().build(); 450 } 451 452 /** Builder for CloudBillingStubSettings. */ 453 public static class Builder extends StubSettings.Builder<CloudBillingStubSettings, Builder> { 454 private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders; 455 private final UnaryCallSettings.Builder<GetBillingAccountRequest, BillingAccount> 456 getBillingAccountSettings; 457 private final PagedCallSettings.Builder< 458 ListBillingAccountsRequest, 459 ListBillingAccountsResponse, 460 ListBillingAccountsPagedResponse> 461 listBillingAccountsSettings; 462 private final UnaryCallSettings.Builder<UpdateBillingAccountRequest, BillingAccount> 463 updateBillingAccountSettings; 464 private final UnaryCallSettings.Builder<CreateBillingAccountRequest, BillingAccount> 465 createBillingAccountSettings; 466 private final PagedCallSettings.Builder< 467 ListProjectBillingInfoRequest, 468 ListProjectBillingInfoResponse, 469 ListProjectBillingInfoPagedResponse> 470 listProjectBillingInfoSettings; 471 private final UnaryCallSettings.Builder<GetProjectBillingInfoRequest, ProjectBillingInfo> 472 getProjectBillingInfoSettings; 473 private final UnaryCallSettings.Builder<UpdateProjectBillingInfoRequest, ProjectBillingInfo> 474 updateProjectBillingInfoSettings; 475 private final UnaryCallSettings.Builder<GetIamPolicyRequest, Policy> getIamPolicySettings; 476 private final UnaryCallSettings.Builder<SetIamPolicyRequest, Policy> setIamPolicySettings; 477 private final UnaryCallSettings.Builder<TestIamPermissionsRequest, TestIamPermissionsResponse> 478 testIamPermissionsSettings; 479 private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>> 480 RETRYABLE_CODE_DEFINITIONS; 481 482 static { 483 ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions = 484 ImmutableMap.builder(); 485 definitions.put( 486 "retry_policy_1_codes", 487 ImmutableSet.copyOf( 488 Lists.<StatusCode.Code>newArrayList( 489 StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE))); 490 definitions.put( 491 "no_retry_0_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList())); 492 RETRYABLE_CODE_DEFINITIONS = definitions.build(); 493 } 494 495 private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS; 496 497 static { 498 ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder(); 499 RetrySettings settings = null; 500 settings = 501 RetrySettings.newBuilder() 502 .setInitialRetryDelay(Duration.ofMillis(100L)) 503 .setRetryDelayMultiplier(1.3) 504 .setMaxRetryDelay(Duration.ofMillis(60000L)) 505 .setInitialRpcTimeout(Duration.ofMillis(60000L)) 506 .setRpcTimeoutMultiplier(1.0) 507 .setMaxRpcTimeout(Duration.ofMillis(60000L)) 508 .setTotalTimeout(Duration.ofMillis(60000L)) 509 .build(); 510 definitions.put("retry_policy_1_params", settings); 511 settings = 512 RetrySettings.newBuilder() 513 .setInitialRpcTimeout(Duration.ofMillis(60000L)) 514 .setRpcTimeoutMultiplier(1.0) 515 .setMaxRpcTimeout(Duration.ofMillis(60000L)) 516 .setTotalTimeout(Duration.ofMillis(60000L)) 517 .build(); 518 definitions.put("no_retry_0_params", settings); 519 RETRY_PARAM_DEFINITIONS = definitions.build(); 520 } 521 Builder()522 protected Builder() { 523 this(((ClientContext) null)); 524 } 525 Builder(ClientContext clientContext)526 protected Builder(ClientContext clientContext) { 527 super(clientContext); 528 529 getBillingAccountSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 530 listBillingAccountsSettings = 531 PagedCallSettings.newBuilder(LIST_BILLING_ACCOUNTS_PAGE_STR_FACT); 532 updateBillingAccountSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 533 createBillingAccountSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 534 listProjectBillingInfoSettings = 535 PagedCallSettings.newBuilder(LIST_PROJECT_BILLING_INFO_PAGE_STR_FACT); 536 getProjectBillingInfoSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 537 updateProjectBillingInfoSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 538 getIamPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 539 setIamPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 540 testIamPermissionsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); 541 542 unaryMethodSettingsBuilders = 543 ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( 544 getBillingAccountSettings, 545 listBillingAccountsSettings, 546 updateBillingAccountSettings, 547 createBillingAccountSettings, 548 listProjectBillingInfoSettings, 549 getProjectBillingInfoSettings, 550 updateProjectBillingInfoSettings, 551 getIamPolicySettings, 552 setIamPolicySettings, 553 testIamPermissionsSettings); 554 initDefaults(this); 555 } 556 Builder(CloudBillingStubSettings settings)557 protected Builder(CloudBillingStubSettings settings) { 558 super(settings); 559 560 getBillingAccountSettings = settings.getBillingAccountSettings.toBuilder(); 561 listBillingAccountsSettings = settings.listBillingAccountsSettings.toBuilder(); 562 updateBillingAccountSettings = settings.updateBillingAccountSettings.toBuilder(); 563 createBillingAccountSettings = settings.createBillingAccountSettings.toBuilder(); 564 listProjectBillingInfoSettings = settings.listProjectBillingInfoSettings.toBuilder(); 565 getProjectBillingInfoSettings = settings.getProjectBillingInfoSettings.toBuilder(); 566 updateProjectBillingInfoSettings = settings.updateProjectBillingInfoSettings.toBuilder(); 567 getIamPolicySettings = settings.getIamPolicySettings.toBuilder(); 568 setIamPolicySettings = settings.setIamPolicySettings.toBuilder(); 569 testIamPermissionsSettings = settings.testIamPermissionsSettings.toBuilder(); 570 571 unaryMethodSettingsBuilders = 572 ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( 573 getBillingAccountSettings, 574 listBillingAccountsSettings, 575 updateBillingAccountSettings, 576 createBillingAccountSettings, 577 listProjectBillingInfoSettings, 578 getProjectBillingInfoSettings, 579 updateProjectBillingInfoSettings, 580 getIamPolicySettings, 581 setIamPolicySettings, 582 testIamPermissionsSettings); 583 } 584 createDefault()585 private static Builder createDefault() { 586 Builder builder = new Builder(((ClientContext) null)); 587 588 builder.setTransportChannelProvider(defaultTransportChannelProvider()); 589 builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); 590 builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); 591 builder.setEndpoint(getDefaultEndpoint()); 592 builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); 593 builder.setSwitchToMtlsEndpointAllowed(true); 594 595 return initDefaults(builder); 596 } 597 createHttpJsonDefault()598 private static Builder createHttpJsonDefault() { 599 Builder builder = new Builder(((ClientContext) null)); 600 601 builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); 602 builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); 603 builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); 604 builder.setEndpoint(getDefaultEndpoint()); 605 builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); 606 builder.setSwitchToMtlsEndpointAllowed(true); 607 608 return initDefaults(builder); 609 } 610 initDefaults(Builder builder)611 private static Builder initDefaults(Builder builder) { 612 builder 613 .getBillingAccountSettings() 614 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) 615 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); 616 617 builder 618 .listBillingAccountsSettings() 619 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) 620 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); 621 622 builder 623 .updateBillingAccountSettings() 624 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) 625 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); 626 627 builder 628 .createBillingAccountSettings() 629 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_0_codes")) 630 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_0_params")); 631 632 builder 633 .listProjectBillingInfoSettings() 634 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) 635 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); 636 637 builder 638 .getProjectBillingInfoSettings() 639 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) 640 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); 641 642 builder 643 .updateProjectBillingInfoSettings() 644 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) 645 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); 646 647 builder 648 .getIamPolicySettings() 649 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) 650 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); 651 652 builder 653 .setIamPolicySettings() 654 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) 655 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); 656 657 builder 658 .testIamPermissionsSettings() 659 .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) 660 .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); 661 662 return builder; 663 } 664 665 /** 666 * Applies the given settings updater function to all of the unary API methods in this service. 667 * 668 * <p>Note: This method does not support applying settings to streaming methods. 669 */ applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)670 public Builder applyToAllUnaryMethods( 671 ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) { 672 super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); 673 return this; 674 } 675 unaryMethodSettingsBuilders()676 public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() { 677 return unaryMethodSettingsBuilders; 678 } 679 680 /** Returns the builder for the settings used for calls to getBillingAccount. */ 681 public UnaryCallSettings.Builder<GetBillingAccountRequest, BillingAccount> getBillingAccountSettings()682 getBillingAccountSettings() { 683 return getBillingAccountSettings; 684 } 685 686 /** Returns the builder for the settings used for calls to listBillingAccounts. */ 687 public PagedCallSettings.Builder< 688 ListBillingAccountsRequest, 689 ListBillingAccountsResponse, 690 ListBillingAccountsPagedResponse> listBillingAccountsSettings()691 listBillingAccountsSettings() { 692 return listBillingAccountsSettings; 693 } 694 695 /** Returns the builder for the settings used for calls to updateBillingAccount. */ 696 public UnaryCallSettings.Builder<UpdateBillingAccountRequest, BillingAccount> updateBillingAccountSettings()697 updateBillingAccountSettings() { 698 return updateBillingAccountSettings; 699 } 700 701 /** Returns the builder for the settings used for calls to createBillingAccount. */ 702 public UnaryCallSettings.Builder<CreateBillingAccountRequest, BillingAccount> createBillingAccountSettings()703 createBillingAccountSettings() { 704 return createBillingAccountSettings; 705 } 706 707 /** Returns the builder for the settings used for calls to listProjectBillingInfo. */ 708 public PagedCallSettings.Builder< 709 ListProjectBillingInfoRequest, 710 ListProjectBillingInfoResponse, 711 ListProjectBillingInfoPagedResponse> listProjectBillingInfoSettings()712 listProjectBillingInfoSettings() { 713 return listProjectBillingInfoSettings; 714 } 715 716 /** Returns the builder for the settings used for calls to getProjectBillingInfo. */ 717 public UnaryCallSettings.Builder<GetProjectBillingInfoRequest, ProjectBillingInfo> getProjectBillingInfoSettings()718 getProjectBillingInfoSettings() { 719 return getProjectBillingInfoSettings; 720 } 721 722 /** Returns the builder for the settings used for calls to updateProjectBillingInfo. */ 723 public UnaryCallSettings.Builder<UpdateProjectBillingInfoRequest, ProjectBillingInfo> updateProjectBillingInfoSettings()724 updateProjectBillingInfoSettings() { 725 return updateProjectBillingInfoSettings; 726 } 727 728 /** Returns the builder for the settings used for calls to getIamPolicy. */ getIamPolicySettings()729 public UnaryCallSettings.Builder<GetIamPolicyRequest, Policy> getIamPolicySettings() { 730 return getIamPolicySettings; 731 } 732 733 /** Returns the builder for the settings used for calls to setIamPolicy. */ setIamPolicySettings()734 public UnaryCallSettings.Builder<SetIamPolicyRequest, Policy> setIamPolicySettings() { 735 return setIamPolicySettings; 736 } 737 738 /** Returns the builder for the settings used for calls to testIamPermissions. */ 739 public UnaryCallSettings.Builder<TestIamPermissionsRequest, TestIamPermissionsResponse> testIamPermissionsSettings()740 testIamPermissionsSettings() { 741 return testIamPermissionsSettings; 742 } 743 744 @Override build()745 public CloudBillingStubSettings build() throws IOException { 746 return new CloudBillingStubSettings(this); 747 } 748 } 749 } 750