• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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